#bbs

2021-03-01
whitefloor 15:39:42
文件中的router,正要問的時候就突然看到,給各位參考
/v1/users/{{user_id}}/articles
Amos Chang 21:21:13
Hi,
這個 PR 還缺一個 reviewer,還請有空的人幫忙看一下~
https://github.com/Ptt-official-app/Ptt-backend/pull/87
and repository.BBSPopularArticleRecord since go-bbs has not implemented it yet *:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/86|#86> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/50|#50> *:pick: 變更內容 / Details of Changes* • add `BBSPopularArticleRecord` to mock `bbs.PopularArticleRecord` since go-bbs has not implemented it yet • add `GetPopularArticles()` to interface `Repository`
Amos Chang 22:27:22
等等,雖然我看 #107 沒有 assignee,所以開口要了這個 issue
然後再看母 issue 的時候赫然發現,開 issue 的 linmechu 本人說他想要寫看看 delivery/http:
https://github.com/Ptt-official-app/Ptt-backend/issues/50#issuecomment-780408877
  • 😮1
Amos Chang 2021-03-02 11:16:52
啊抱歉我錯頻了…
Amos Chang 2021-03-02 11:20:04
本來是要pm @pichuchen 的,
那你有要做這個沒錯吧?
那就還給你囉?
好喔!!
感恩
我把#107 Assignment 過去了
🙏
Amos Chang 22:28:40
如果不小心搶了他的 issue 可以還給他
2021-03-02
j31422210 02:31:09
@j31422210 has joined the channel
kuo-chuan weng 11:06:43
我可以幫忙 我會去issue 底下留言
MCLin 11:15:49
Amos Chang 11:16:52
啊抱歉我錯頻了…
Amos Chang 11:20:04
本來是要pm @pichuchen 的,
那你有要做這個沒錯吧?
那就還給你囉?
MCLin 11:27:53
好喔!!
MCLin 11:27:59
感恩
陳昱廷 11:38:34
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/88|#88> *:pick: 變更內容 / Details of Changes* 1. 增加了 1.16 的 ci 測試 2. 將上個星期的 development 的 code 合併進 development _enalbe_lint 3. 移除空白跟 id to ID
陳昱廷 11:38:58
把上個星期的的合併進去
pichuchen 11:44:51
我把#107 Assignment 過去了
MCLin 11:45:04
🙏
whitefloor 14:16:06
好der 感謝
陳昱廷 15:32:06
development to development_enable_lint 單向同步好了
陳昱廷 15:32:18
有空可以重拉
陳昱廷 15:32:35
然後現在有一個 issue 需要有人幫忙
陳昱廷 15:32:40
*實作細節 / Details of Implement* internal\delivery\http\route_users.go:76 - getUserFavorites 此 route 尚未實作測試 *期程 / Schedule* • 討論時間:一天 • 實作時間:三天 • 確認時間:一天 *相關文件 / Documents* 可參考 <https://github.com/Ptt-official-app/Ptt-backend/issues/45|#45> *備註* 開發前請先參考 FOR_TEST_DEVELOPERS.md 裡的說明
陳昱廷 15:33:56
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/110|#110> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/109|#109> *:pick: 變更內容 / Details of Changes* 增加 route_users 相關的註解
陳昱廷 15:34:01
這個 pr 則是需要討論
go docs 好像有關於註解的範例,基本上 golang 註解沒有 i18n 因此我對於要使用中文還是英文註解有點困擾,最後我的結論是使用英文註解,但是要確保註解內容直接丟到 Google 翻譯上轉成中文是通順的。
通常第一個字會是這個 method 或是 class 的名稱
然後描述每個參數的用途以及回傳的資訊
然後 Testcase 的註解不一定要是這種格式
https://golang.org/src/database/sql/sql_test.go?s=40292:40342#L1340

他可能會針對為什麼要有這個 test 而寫註解
pichuchen 19:06:37
這週的影片連結發出了,然後和大家提醒一下,我們有個每週的影片和問卷,如果不知道我在講什麼的請私訊我然後告訴我你的 email
pichuchen 19:09:05
go docs 好像有關於註解的範例,基本上 golang 註解沒有 i18n 因此我對於要使用中文還是英文註解有點困擾,最後我的結論是使用英文註解,但是要確保註解內容直接丟到 Google 翻譯上轉成中文是通順的。
pichuchen 19:09:55
通常第一個字會是這個 method 或是 class 的名稱
pichuchen 19:10:23
然後描述每個參數的用途以及回傳的資訊
pichuchen 19:11:36
然後 Testcase 的註解不一定要是這種格式
pichuchen 19:12:21
https://golang.org/src/database/sql/sql_test.go?s=40292:40342#L1340

他可能會針對為什麼要有這個 test 而寫註解
MCLin 20:52:55
大家晚安!
麻煩幫忙 review 一下!! 🙏
https://github.com/Ptt-official-app/Ptt-backend/pull/113
*:clap: 解決掉的 issue / Resolved Issues* • closed <https://github.com/Ptt-official-app/Ptt-backend/issues/107|#107> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/83|#83> • <https://github.com/Ptt-official-app/Ptt-backend/issues/86|#86> *:pick: 變更內容 / Details of Changes* • 實作熱門文章的 http 套件
@gn01842919
要幫忙 review 一下嗎 哈哈哈哈哈
Amos Chang 2021-03-02 21:15:30
好啊
那你也幫我看一下好了XD
https://github.com/Ptt-official-app/Ptt-backend/pull/87

MCLin 20:53:27
@gn01842919
要幫忙 review 一下嗎 哈哈哈哈哈
Amos Chang 21:15:30
好啊
那你也幫我看一下好了XD
https://github.com/Ptt-official-app/Ptt-backend/pull/87
MCLin 21:28:40

pichuchen 22:12:37
下次的g0v大松在3/20 歡迎大家報名
  • 👀1
2021-03-03
whitefloor 12:27:59
我整理一下現在的進度
whitefloor 12:31:03
1. ptt-backend的repository需要go-bbs解析,但go-bbs尚未實作
2. 決定與go-bbs一起實作,這樣在ptt-backend就不需要做mock
3. 在go-bbs實作時需要開issue
4. ptt-backend串接go-bbs時需要在go.mod增加版本號碼0.2.5 > 0.2.6
whitefloor 22:30:14
@xboxa5105
whitefloor 22:30:18
issue開好了
whitefloor 22:41:58
可能要請你過去留個言pichu才能assign給你 我沒權限
whitefloor 22:42:03
如果有問題再跟我說~
whitefloor 22:46:55
hi~可以請問https://github.com/Ptt-official-app/go-bbs/issues/59 有文件或是類似的段落可以參考嗎
  • 👀1
這個好像沒寫清楚是 http 還是 usecase的
whitefloor 2021-03-04 19:48:19
好的 我改一下
whitefloor 2021-03-04 19:52:05
是針對repository的
等等,兩個 issue 剛好同個 ID ...
go-bbs 應該不用處理歷史文章? 應該是交由 Ptt-backend 的 usecase去處理?
whitefloor 2021-03-04 20:39:36
我看一下有沒有query
whitefloor 2021-03-04 20:47:29
我有看到GetBoardArticleRecords
whitefloor 2021-03-04 20:48:06
我是想直接撈到userID的所有文章,還是說在這之前要先用看板分類?
因為目前 PTT 的資料庫並沒有存某個 userID 的所有文章
所以可能要先用看板分類掃過一輪這樣
whitefloor 2021-03-04 20:52:50
原來是這樣
whitefloor 2021-03-04 20:52:53
那我可以請問
whitefloor 2021-03-04 20:53:31
有哪裡可以參考data structure
whitefloor 2021-03-04 20:54:04
因為這樣跟一般的RDB處理不一樣
whitefloor 2021-03-04 20:56:42
我沒處理過這種的,所以query就不太了解,抱歉
2021-03-04
kuo-chuan weng 10:15:40
好的
pichuchen 19:42:35
https://github.com/Ptt-official-app/go-bbs/runs/2030664432?check_suite_focus=true#step:6:45

遇到小狀況了,SHM在 GitHub 上面跑 test 可能會有問題
pichuchen 19:47:36
這個好像沒寫清楚是 http 還是 usecase的
whitefloor 19:48:19
好的 我改一下
whitefloor 19:52:05
是針對repository的
pichuchen 20:02:21
等等,兩個 issue 剛好同個 ID ...
pichuchen 20:05:19
go-bbs 應該不用處理歷史文章? 應該是交由 Ptt-backend 的 usecase去處理?
pichuchen 20:24:34
踩到雷了 shmid_ds 在 linux 和 darwin 的狀況不一樣
whitefloor 20:39:36
我看一下有沒有query
whitefloor 20:47:29
我有看到GetBoardArticleRecords
whitefloor 20:48:06
我是想直接撈到userID的所有文章,還是說在這之前要先用看板分類?
pichuchen 20:50:50
因為目前 PTT 的資料庫並沒有存某個 userID 的所有文章
pichuchen 20:51:03
所以可能要先用看板分類掃過一輪這樣
whitefloor 20:52:50
原來是這樣
whitefloor 20:52:53
那我可以請問
whitefloor 20:53:31
有哪裡可以參考data structure
jk82421723 20:54:00
@jk82421723 has joined the channel
whitefloor 20:54:04
因為這樣跟一般的RDB處理不一樣
whitefloor 20:56:42
我沒處理過這種的,所以query就不太了解,抱歉
jk82421723 21:18:35
大家好 ~

*怎麼知道這個專案的?*
soft_job

*您平常的活動或是工作?*
software engineer 工作內容偏全端+AWS

*平常出沒的區域?*
新北 / 台北

*您有興趣或者是關心的主題?*
System Design / Backend / Infra
  • 👋1
好久不見的新手介紹
jk82421723 2021-03-04 21:25:23
hihi 剛剛才下完 go build 打完 /v1/token api
但對 go 不熟, 我要先看著專案惡補一下 Go 的基本語法了 XD
再來去認領 issue 了 XD
Timo Chiang 2021-03-05 09:37:58
Hi 歡迎加入!
這邊有些issue需要幫忙,有興趣的話歡迎認領唷!☺️
https://github.com/Ptt-official-app/Ptt-backend/issues/60
https://github.com/Ptt-official-app/Ptt-backend/issues/61
Timo 極力宣傳中!
Timo Chiang 2021-03-05 14:27:09
你要不要也來幫幫忙😆
好啊
Timo Chiang 2021-03-05 14:38:32
感恩!再麻煩在issue底下留言認領哦~
pichuchen 21:23:32
好久不見的新手介紹
pichuchen 21:24:25
我發現 ipc_perm 的部分我可能不用cgo 很難安全地寫出來,因為實際上系統的狀況和 man 裡面的狀況會有出入
jk82421723 21:25:23
hihi 剛剛才下完 go build 打完 /v1/token api
但對 go 不熟, 我要先看著專案惡補一下 Go 的基本語法了 XD
再來去認領 issue 了 XD
pichuchen 21:25:32
這是man 的 ,後面是實際上 source code 的
截圖 2021-03-04 下午9.24.44.png
截圖 2021-03-04 下午9.25.10.png
  • 👀2
2021-03-05
Timo Chiang 09:37:58
Hi 歡迎加入!
這邊有些issue需要幫忙,有興趣的話歡迎認領唷!☺️
https://github.com/Ptt-official-app/Ptt-backend/issues/60
https://github.com/Ptt-official-app/Ptt-backend/issues/61
MCLin 11:19:01
Timo 極力宣傳中!
Timo Chiang 14:27:09
你要不要也來幫幫忙😆
MCLin 14:28:09
好啊
Timo Chiang 14:38:32
感恩!再麻煩在issue底下留言認領哦~
2021-03-06
titaneric 10:10:08
需要幫忙review以下PR,謝謝https://github.com/Ptt-official-app/go-bbs/pull/54
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/52|#52> • close <https://github.com/Ptt-official-app/go-bbs/issues/53|#53> *:pick: 變更內容 / Details of Changes* • 縮寫命名 • JSON • UI • ID • 一致的receiver命名 • Error命名 • increment (E.g., idx++) • unreachable code • typo • PosOf省略bbs名稱
jk82421723 12:27:31
好奇想請教問一下, 用 intellij 裝 GoLand plugin 去寫的話, 跟本身直接用 GoLand 有什麼差別嗎
kira 15:05:30
Hi all, 有空的人幫忙 review 一下 PR
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/38|#38> *:memo: 相關的 issue / Related Issues* • None *:pick: 變更內容 / Details of Changes* • 新增 user information 相關 `struct` (<https://github.com/ptt/pttbbs/blob/4d56e77f264960e43e060b77e442e166e5706417/include/pttstruct.h#L349|REF>)
pichuchen 23:07:03
*原本作法的問題 / Existed Problem* • 目前 PTT 的資料庫裡面是沒有熱門文章的 • 大家市面上看到的熱門文章其實是第三方網站幫PTT統計出來的,統計演算法應該也是各家不同 • 根據 <https://github.com/Ptt-official-app/Ptt-backend/issues/51|#51> 討論,應該在 Ptt-backend 這邊做會比較好? *實作細節 / Details of Implement* • 大致上會在 usecase 或是哪邊每隔一段時間就掃描一次目前的所有看板和所有文章,把可以統計的看板(公開看板)的文章統計出前幾名放在熱門文章資料庫(可能先存在 Process 裡面) • 在 usecase 有使用者請求時直接輸出這個資料庫的結果 *期程 / Schedule* • 討論時間:一週,到 3/13 • 實作時間:一週,到 3/20 • 確認時間:一週,到 3/27 *相關文件 / Documents* • 在其他網頁的熱門文章參考:<https://www.pttweb.cc/hot/all/today|https://www.pttweb.cc/hot/all/today> • 熱門看板: <https://www.ptt.cc/bbs/hotboards.html|https://www.ptt.cc/bbs/hotboards.html> • 在PTT八卦版上的相關討論: <https://www.ptt.cc/bbs/Gossiping/M.1592178635.A.0F8.html|https://www.ptt.cc/bbs/Gossiping/M.1592178635.A.0F8.html>
2021-03-07
pichuchen 17:50:51
<!channel> 這部分需要討論,這個也是先前提到的一個重點,我希望可以把原本的檔案儲存格式替換掉
目前我大致上列了三個大方向 TLV8, Protobuf 以及 JSON ,各自有各自的優缺點,如果有其他好的建議的話也歡迎提出來,這些我會放在影片上讓大家知道然後進一步討論這樣。
之前有碰過avro,感覺也可以考慮。JSON雖然可以直接肉眼閱讀,但還蠻占空間的
如果說 avro 和 protobuf 比較呢?
https://openweave.io/documents/weave-tlv-white-paper.pdf

這邊有些比較,不過沒有提到 avro
Designing Data-Intensive Applications 這本書有介紹Protobuf以及avro,大致整理如下:
兩個方法都需要schema,Protobuf會需要tag name,每個field都不一樣,這會影響到schema變更,但不影響向前向後兼容。Avro可以用JSON定義schema,但向後兼容性較差,但好處是schema可以動態生成
tag name 的部分應該兩者都一樣,JSON定schema的部分也是,不過avro有向後兼容性,但是protobuf現在也支援map了
avro 的 json 有格式檢查用的工具嗎?
https://github.com/go-avro/avro

然後目前對 golang 的支援似乎沒有特別好,雖然 protobuf 也是要另外用 code gen 就是了
這樣看起來PB就好很多,畢竟他跟Go依樣是Google親兒子。我投Protobuf一票
我剛剛稍微試一下 proto 檔,整個有點像是再學一種和 golang 很類似的語言
現在是在儲存的結構上假如不是以4K的因數來儲存的話,那這樣讀寫上可能不會最佳化的問題
json的話有辦法透過 {}{} 這樣來辨別是兩筆資料,但是 Protobuf 似乎不行,除非定義一筆資料的file tag 然後用 stream 的方式讀入
@pichuchen 指的是多個struct合併到同個protobuf裡面嗎
對,因為現在要從原有方式轉換成 protobuf 之類的方式,需要考慮到append record 的便利性
如同這篇所寫的
因為如果不支援Append 純粹用 protobuf 提供的 repeated 或是 packed 來做的話,每新增一筆紀錄可以說整份檔案要重新寫入
vu84au042k7
下面的Large Data Sets也反映同樣的訊息,這就看說儲存的資料是看成資料集還是DB。但我覺得我們儲存的比較像是DB類型...也就反映到一開始討論的用DB儲存
用DB例如Sqlite 一樣還是會面臨類似的效能問題
的確,長期來看可能要引入數據工程的系統如Hadoop HDFS
那個有點長,如果PTT打進美國的話也許可以考慮XD
不過我覺得用sqlite 來儲存搞不好是個方向,不然就是實作兩個版本,一個用Protobuf 然後把所有發文紀錄存在使用者家目錄下,另外一個用sqlite來做,然後也是放在使用者家目錄下,最後跑benchmark來決定
感覺上面方法可行
gogog22510 2021-03-09 12:17:56
protobuf我用過,他是用來定義message type,不建議把他當成DB技術使用, 所以要自己實作或選擇一個data store or file system來存取資料。假如考慮到file格式可以選用類似SSTable (https://github.com/thomasjungblut/go-sstables)或是配套DB之類的
sqlite就是SQL DB了,基本上是不同種技術
剛好在Designing Data-Intensive Applications上也有比較SSTable格式的LSM Tree以及B Tree。一樣要看所屬應用,LSM Tree在write資料很快,B Tree則是在read時比較快。在bbs這裡的話應該還是要看不同資料特性決定不同資料儲存格式
SSTable 我就真的沒聽過他了,BTree 我知道,不過把 BTree壓進檔案裡也是一個點。

然後目前要存的東西是使用者的發文紀錄,然後會分開放在每個使用者的家目錄,比較特別的需求大概是通常都是最新的幾筆比較常會被存取
說存取大概也是讀取比較多
Julian Chu 2021-03-09 15:16:39
會有管理者要直接修改資料的情況嗎,
應該不太會?
Julian Chu 2021-03-09 16:32:12
恩 我的考量點是SQL Lite或是json的話 站長或是管理者要修改比較方便,但不確定現行的情況是怎樣的
,其他格式的話我們可能要提供額外的工具? 另外想問的是pichu你期望的效能要到什麼程度
他其實只是一個暫時性的檔案而已,有點像是幫使用者紀錄已讀用的檔案,只是原先的作法通常會直接 fwrite 把本來的資料結構放入那個檔案裡
那這樣的做法其實後面的人要去維護他或者是要新增欄位會麻煩很多,可能要全站停機才能做格式升級
效能上的話是佔用的資源越低越好,越低的話那同樣的主機可以提供的服務資源會更多
以數據來說的話,大部分的使用者發文數量可能是少於一百篇的,少數使用者可能會到三千多篇
1000篇的狀況即使不小心用了 O(n^2) 的演算法,應該還不會感覺到哪裡怪怪的
gogog22510 2021-03-10 00:48:10
SSTable是Google內部用來實作index的檔案格式,以歷史文章來說的話,可以使用RecordIO也是Google內部常用的檔案格式,適合append,read and skip。假如要用protobuf的話,建議可以用protobuf+SSTable或RecordIO。 至於效能的話應該還是挺不錯的,但具體上可以跑benchmark決定
目前很粗糙的測試結果出來了
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkProtobufWrite-4 100 12488268 ns/op
BenchmarkProtobufArrayWrite-4 667 1519035 ns/op
BenchmarkSqliteWrite-4 79 16020372 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 4.517s```
https://github.com/Ptt-official-app/go-bbs/blob/feature/user_articles/user_article_test.go
@gogog22510 SSTable 有套件連結嗎? 看要不要我這邊順便把測試程式碼寫上去
然後檔案大小的比較是這樣: BenchmarkProtobufWrite: 30000
BenchmarkProtobufArrayWrite: 32000
BenchmarkSqliteWrite: 45056

上面的測試是純粹開檔後寫入一千筆相同紀錄後關檔然後再刪掉他
gogog22510 2021-03-10 00:53:50
https://github.com/thomasjungblut/go-sstables
我是找到這個,看看能不能用,這是別人實作的go套件
gogog22510 2021-03-10 01:01:51
看起來是的
插入的效能看起來沒有比較好
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 75 90115719 ns/op
BenchmarkProtobufWrite-4 100 41232748 ns/op
BenchmarkProtobufArrayWrite-4 474 3451642 ns/op
BenchmarkSqliteWrite-4 48 33417956 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 14.940s```
也有可能是Bench code 不夠準確的問題
檔案大小方面,1000筆佔 45056 bytes
我剛剛去翻一下SSTable 的資料,他應該是 Key/Value Map, 這點的話應該和我們現在要解決的問題比較不同,因為我們在查詢資料的方式大概會是在一定時間後的多少筆資料這樣
gogog22510 2021-03-10 01:21:12
對的,SSTable只是key/value 但sorted, 所以key是time stamp的話也是可以的
可以偷吃步的把filename當作Key, 因為BBS的filename通常和timestamp相關
gogog22510 2021-03-10 01:23:28
且可能多了一些meta data所以有影響,畢竟它是用來做index
嗯嗯
我剛剛比較驚訝的是寫成Array會比單純疊資料還要慢的這點(還慢很多),所以我把寫法稍作修改,讓Write變成一次寫入
結果和Array的版本不相上下了
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 100 22619798 ns/op
BenchmarkProtobufWrite-4 169 6769876 ns/op
BenchmarkProtobufBufWrite-4 1362 899403 ns/op
BenchmarkProtobufArrayWrite-4 1497 772189 ns/op
BenchmarkSqliteWrite-4 177 7717207 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 10.133s```
gogog22510 2021-03-10 01:32:24
還可以比較read囉,的確可以預期SSTable write差一點因為是index, 但理論上query會快一些
gogog22510 2021-03-10 01:36:10
理論上歷史數據功能可能是read > write的,所以假如read有比較優秀是不錯的
SQLite好處也是方便使用比較多人會
我待會再寫一個 Append 的,這個應該Array的方法就會輸了(吧
append 遇到狀況了
``` user_article_test.go:87: error: file is not empty
user_article_test.go:92: error: writer was either not opened yet or is closed already```
他是不是只能一次寫完不能append啊?
新增了十筆以及JSON的狀況
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 1255 4859450 ns/op
BenchmarkProtobufWrite-4 285 3752161 ns/op
BenchmarkProtobufAppend-4 282 5166763 ns/op
BenchmarkProtobufBufWrite-4 448 2492569 ns/op
BenchmarkProtobufArrayWrite-4 1419 1808260 ns/op
BenchmarkProtobufArrayAppend-4 195 8061710 ns/op
BenchmarkJSONStreamWrite-4 516 2251661 ns/op
BenchmarkJSONStreamBufWrite-4 1166 1209535 ns/op
BenchmarkJSONStreamAppend-4 518 3277587 ns/op
BenchmarkJSONArrayWrite-4 745 5451195 ns/op
BenchmarkJSONArrayAppend-4 100 21793137 ns/op
BenchmarkSqliteWrite-4 177 7465205 ns/op
BenchmarkSqliteAppend-4 27 45531985 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 35.766s```
gogog22510 2021-03-10 02:33:03
讓我研究看看
gogog22510 2021-03-10 02:41:13
沒錯我忘記了XD SSTable是immutable的,假如能保證sequence的話,你可以試試看RecordIo嗎?

https://github.com/thomasjungblut/go-sstables/blob/master/recordio/README.md
讀取後重新寫入的部分我試了一下沒辦法
我先把目前結果推上去了
$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 100 62030975 ns/op
BenchmarkProtobufWrite-4 76 35507473 ns/op
BenchmarkProtobufAppend-4 7 146766586 ns/op
BenchmarkProtobufBufWrite-4 37 49721741 ns/op
BenchmarkProtobufArrayWrite-4 908 1639579 ns/op
BenchmarkProtobufArrayAppend-4 2 535421312 ns/op
BenchmarkJSONStreamWrite-4 100 14779489 ns/op
BenchmarkJSONStreamBufWrite-4 469 2836098 ns/op
BenchmarkJSONStreamAppend-4 6 223996055 ns/op
BenchmarkJSONArrayWrite-4 100 59582955 ns/op
BenchmarkJSONArrayAppend-4 1 1353481958 ns/op
BenchmarkSqliteWrite-4 66 20464509 ns/op
BenchmarkSqliteAppend-4 1 4681380500 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 37.165s
gogog22510 2021-03-10 03:33:16
那個套件不支援append.... 我找了另一個
https://pkg.go.dev/github.com/eclesh/recordio
gogog22510 2021-03-10 03:33:23
這是結果
goos: linux
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
cpu: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
BenchmarkRecordIOProtobufWrite-4 5654 198166 ns/op
BenchmarkProtobufWrite-4 642 1680291 ns/op
BenchmarkProtobufBufWrite-4 4791 243438 ns/op
BenchmarkProtobufArrayWrite-4 8821 138341 ns/op
BenchmarkSqliteWrite-4 39 33877995 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 6.208s
titaneric 18:33:28
之前有碰過avro,感覺也可以考慮。JSON雖然可以直接肉眼閱讀,但還蠻占空間的
pichuchen 19:53:57
如果說 avro 和 protobuf 比較呢?
pichuchen 20:06:28
https://openweave.io/documents/weave-tlv-white-paper.pdf

這邊有些比較,不過沒有提到 avro
titaneric 20:30:18
Designing Data-Intensive Applications 這本書有介紹Protobuf以及avro,大致整理如下:
titaneric 20:32:36
兩個方法都需要schema,Protobuf會需要tag name,每個field都不一樣,這會影響到schema變更,但不影響向前向後兼容。Avro可以用JSON定義schema,但向後兼容性較差,但好處是schema可以動態生成
pichuchen 20:58:12
tag name 的部分應該兩者都一樣,JSON定schema的部分也是,不過avro有向後兼容性,但是protobuf現在也支援map了
pichuchen 20:59:22
avro 的 json 有格式檢查用的工具嗎?
pichuchen 21:06:02
https://github.com/go-avro/avro

然後目前對 golang 的支援似乎沒有特別好,雖然 protobuf 也是要另外用 code gen 就是了
titaneric 21:26:32
這樣看起來PB就好很多,畢竟他跟Go依樣是Google親兒子。我投Protobuf一票
pichuchen 23:31:19
我剛剛稍微試一下 proto 檔,整個有點像是再學一種和 golang 很類似的語言
pichuchen 23:32:10
現在是在儲存的結構上假如不是以4K的因數來儲存的話,那這樣讀寫上可能不會最佳化的問題
pichuchen 23:43:32
json的話有辦法透過 {}{} 這樣來辨別是兩筆資料,但是 Protobuf 似乎不行,除非定義一筆資料的file tag 然後用 stream 的方式讀入
2021-03-08
titaneric 00:15:02
@pichuchen 指的是多個struct合併到同個protobuf裡面嗎
pichuchen 00:30:58
對,因為現在要從原有方式轉換成 protobuf 之類的方式,需要考慮到append record 的便利性
pichuchen 00:31:25
如同這篇所寫的
pichuchen 00:41:37
因為如果不支援Append 純粹用 protobuf 提供的 repeated 或是 packed 來做的話,每新增一筆紀錄可以說整份檔案要重新寫入
titaneric 00:49:06
vu84au042k7
titaneric 00:51:42
下面的Large Data Sets也反映同樣的訊息,這就看說儲存的資料是看成資料集還是DB。但我覺得我們儲存的比較像是DB類型...也就反映到一開始討論的用DB儲存
pichuchen 00:53:20
用DB例如Sqlite 一樣還是會面臨類似的效能問題
titaneric 00:58:33
的確,長期來看可能要引入數據工程的系統如Hadoop HDFS
pichuchen 00:59:04
那個有點長,如果PTT打進美國的話也許可以考慮XD
pichuchen 01:14:29
不過我覺得用sqlite 來儲存搞不好是個方向,不然就是實作兩個版本,一個用Protobuf 然後把所有發文紀錄存在使用者家目錄下,另外一個用sqlite來做,然後也是放在使用者家目錄下,最後跑benchmark來決定
whitefloor 04:08:16
我想請問我push 到 development說我身份驗證失敗 是因為用clone複製專案的關係嗎==
wagaru 11:26:10
嗨,大家有空的可以幫忙 review 一下~

https://github.com/Ptt-official-app/Ptt-backend/pull/120
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/116|#116> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/116|#116> • <https://github.com/Ptt-official-app/Ptt-backend/issues/63|#63> *:pick: 變更內容 / Details of Changes* • 參考 <https://github.com/Ptt-official-app/go-bbs/issues/61|go-bbs的討論> • 在 repository/board.go 新增以下 mock interfaces: • PostsLimitedBoardRecord • LoginsLimitedBoardRecord • BadPostLimitedBoardRecord • repository/repository.go 的 Repository interface 提供以下 method • GetBoardPostsLimited() • GetBoardLoginsLimited() • GetBoardBadPostLimited()
陳昱廷 11:36:48
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/121|#121> • close #0 *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/17|#17> *:pick: 變更內容 / Details of Changes* 變更包名
陳昱廷 11:38:45
今天會先把包名修正在 merge 主線
陳昱廷 11:39:34
實作細節 / Details of Implement 實作 <https://github.com/Ptt-official-app/Ptt-backend/issues/36|#36> 內的討論進行實作 期程 / Schedule 討論時間: 三天 實作時間: 一天 確認時間: 一天 相關文件 / Documents route_boards_treasures.go route_boards_treasures_test.go 備註: pr 請指向 development_enable_lint branch
J 個我想要試試看,謝謝。
陳昱廷 11:40:28
有興趣者可以直接 tag 或者 私訊我
titaneric 12:18:22
感覺上面方法可行
Lester 19:26:55
J 個我想要試試看,謝謝。
2021-03-09
陳昱廷 12:03:33
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/110|#110> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/109|#109> *:pick: 變更內容 / Details of Changes* 增加 route_users 相關的註解
陳昱廷 12:03:43
這個根據討論修改了
陳昱廷 12:03:50
大家有空可以繼續討論
如果是 /* */ 這樣的註解 go doc 能順利生成嗎?
gogog22510 12:04:06
@gogog22510 has joined the channel
gogog22510 12:17:56
protobuf我用過,他是用來定義message type,不建議把他當成DB技術使用, 所以要自己實作或選擇一個data store or file system來存取資料。假如考慮到file格式可以選用類似SSTable (https://github.com/thomasjungblut/go-sstables)或是配套DB之類的
sqlite就是SQL DB了,基本上是不同種技術
pichuchen 12:49:44
如果是 /* */ 這樣的註解 go doc 能順利生成嗎?
titaneric 13:15:57
剛好在Designing Data-Intensive Applications上也有比較SSTable格式的LSM Tree以及B Tree。一樣要看所屬應用,LSM Tree在write資料很快,B Tree則是在read時比較快。在bbs這裡的話應該還是要看不同資料特性決定不同資料儲存格式
pichuchen 14:56:38
SSTable 我就真的沒聽過他了,BTree 我知道,不過把 BTree壓進檔案裡也是一個點。

然後目前要存的東西是使用者的發文紀錄,然後會分開放在每個使用者的家目錄,比較特別的需求大概是通常都是最新的幾筆比較常會被存取
pichuchen 14:56:54
說存取大概也是讀取比較多
陳昱廷 15:11:57
我看兩小時前有一個 go-bbs 到0.3 版
陳昱廷 15:12:05
但是我拉不下來
Julian Chu 15:16:39
會有管理者要直接修改資料的情況嗎,
pichuchen 16:22:40
應該不太會?
Julian Chu 16:32:12
恩 我的考量點是SQL Lite或是json的話 站長或是管理者要修改比較方便,但不確定現行的情況是怎樣的
,其他格式的話我們可能要提供額外的工具? 另外想問的是pichu你期望的效能要到什麼程度
pichuchen 16:53:46
他其實只是一個暫時性的檔案而已,有點像是幫使用者紀錄已讀用的檔案,只是原先的作法通常會直接 fwrite 把本來的資料結構放入那個檔案裡
pichuchen 16:54:24
那這樣的做法其實後面的人要去維護他或者是要新增欄位會麻煩很多,可能要全站停機才能做格式升級
pichuchen 16:54:53
效能上的話是佔用的資源越低越好,越低的話那同樣的主機可以提供的服務資源會更多
pichuchen 16:59:55
以數據來說的話,大部分的使用者發文數量可能是少於一百篇的,少數使用者可能會到三千多篇
pichuchen 17:01:02
1000篇的狀況即使不小心用了 O(n^2) 的演算法,應該還不會感覺到哪裡怪怪的
pichuchen 17:21:05
剛剛查一下, windows 上面的 go 居然會 build _unix.go
2021-03-10
gogog22510 00:48:10
SSTable是Google內部用來實作index的檔案格式,以歷史文章來說的話,可以使用RecordIO也是Google內部常用的檔案格式,適合append,read and skip。假如要用protobuf的話,建議可以用protobuf+SSTable或RecordIO。 至於效能的話應該還是挺不錯的,但具體上可以跑benchmark決定
pichuchen 00:48:55
Replied to a thread: 2021-03-07 17:50:51
目前很粗糙的測試結果出來了
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkProtobufWrite-4 100 12488268 ns/op
BenchmarkProtobufArrayWrite-4 667 1519035 ns/op
BenchmarkSqliteWrite-4 79 16020372 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 4.517s```
https://github.com/Ptt-official-app/go-bbs/blob/feature/user_articles/user_article_test.go
pichuchen 00:51:51
@gogog22510 SSTable 有套件連結嗎? 看要不要我這邊順便把測試程式碼寫上去
pichuchen 00:52:41
然後檔案大小的比較是這樣: BenchmarkProtobufWrite: 30000
BenchmarkProtobufArrayWrite: 32000
BenchmarkSqliteWrite: 45056

上面的測試是純粹開檔後寫入一千筆相同紀錄後關檔然後再刪掉他
gogog22510 00:53:50
https://github.com/thomasjungblut/go-sstables
我是找到這個,看看能不能用,這是別人實作的go套件
gogog22510 01:01:51
看起來是的
pichuchen 01:11:17
插入的效能看起來沒有比較好
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 75 90115719 ns/op
BenchmarkProtobufWrite-4 100 41232748 ns/op
BenchmarkProtobufArrayWrite-4 474 3451642 ns/op
BenchmarkSqliteWrite-4 48 33417956 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 14.940s```
也有可能是Bench code 不夠準確的問題
pichuchen 01:12:29
檔案大小方面,1000筆佔 45056 bytes
pichuchen 01:19:28
我剛剛去翻一下SSTable 的資料,他應該是 Key/Value Map, 這點的話應該和我們現在要解決的問題比較不同,因為我們在查詢資料的方式大概會是在一定時間後的多少筆資料這樣
gogog22510 01:21:12
對的,SSTable只是key/value 但sorted, 所以key是time stamp的話也是可以的
pichuchen 01:23:19
可以偷吃步的把filename當作Key, 因為BBS的filename通常和timestamp相關
gogog22510 01:23:28
且可能多了一些meta data所以有影響,畢竟它是用來做index
pichuchen 01:24:17
嗯嗯
pichuchen 01:26:52
我剛剛比較驚訝的是寫成Array會比單純疊資料還要慢的這點(還慢很多),所以我把寫法稍作修改,讓Write變成一次寫入
pichuchen 01:27:29
結果和Array的版本不相上下了
pichuchen 01:27:43
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 100 22619798 ns/op
BenchmarkProtobufWrite-4 169 6769876 ns/op
BenchmarkProtobufBufWrite-4 1362 899403 ns/op
BenchmarkProtobufArrayWrite-4 1497 772189 ns/op
BenchmarkSqliteWrite-4 177 7717207 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 10.133s```
gogog22510 01:32:24
還可以比較read囉,的確可以預期SSTable write差一點因為是index, 但理論上query會快一些
gogog22510 01:36:10
理論上歷史數據功能可能是read > write的,所以假如read有比較優秀是不錯的
SQLite好處也是方便使用比較多人會
pichuchen 01:55:43
我待會再寫一個 Append 的,這個應該Array的方法就會輸了(吧
pichuchen 02:02:10
append 遇到狀況了
``` user_article_test.go:87: error: file is not empty
user_article_test.go:92: error: writer was either not opened yet or is closed already```
pichuchen 02:06:19
他是不是只能一次寫完不能append啊?
pichuchen 02:31:06
新增了十筆以及JSON的狀況
```$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 1255 4859450 ns/op
BenchmarkProtobufWrite-4 285 3752161 ns/op
BenchmarkProtobufAppend-4 282 5166763 ns/op
BenchmarkProtobufBufWrite-4 448 2492569 ns/op
BenchmarkProtobufArrayWrite-4 1419 1808260 ns/op
BenchmarkProtobufArrayAppend-4 195 8061710 ns/op
BenchmarkJSONStreamWrite-4 516 2251661 ns/op
BenchmarkJSONStreamBufWrite-4 1166 1209535 ns/op
BenchmarkJSONStreamAppend-4 518 3277587 ns/op
BenchmarkJSONArrayWrite-4 745 5451195 ns/op
BenchmarkJSONArrayAppend-4 100 21793137 ns/op
BenchmarkSqliteWrite-4 177 7465205 ns/op
BenchmarkSqliteAppend-4 27 45531985 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 35.766s```
gogog22510 02:33:03
讓我研究看看
gogog22510 02:41:13
沒錯我忘記了XD SSTable是immutable的,假如能保證sequence的話,你可以試試看RecordIo嗎?

https://github.com/thomasjungblut/go-sstables/blob/master/recordio/README.md
pichuchen 02:49:45
讀取後重新寫入的部分我試了一下沒辦法
pichuchen 02:50:36
我先把目前結果推上去了
$ go test -bench=.
goos: darwin
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
BenchmarkSSTableProtobufWrite-4 100 62030975 ns/op
BenchmarkProtobufWrite-4 76 35507473 ns/op
BenchmarkProtobufAppend-4 7 146766586 ns/op
BenchmarkProtobufBufWrite-4 37 49721741 ns/op
BenchmarkProtobufArrayWrite-4 908 1639579 ns/op
BenchmarkProtobufArrayAppend-4 2 535421312 ns/op
BenchmarkJSONStreamWrite-4 100 14779489 ns/op
BenchmarkJSONStreamBufWrite-4 469 2836098 ns/op
BenchmarkJSONStreamAppend-4 6 223996055 ns/op
BenchmarkJSONArrayWrite-4 100 59582955 ns/op
BenchmarkJSONArrayAppend-4 1 1353481958 ns/op
BenchmarkSqliteWrite-4 66 20464509 ns/op
BenchmarkSqliteAppend-4 1 4681380500 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 37.165s
gogog22510 03:33:16
那個套件不支援append.... 我找了另一個
https://pkg.go.dev/github.com/eclesh/recordio
gogog22510 03:33:23
這是結果
goos: linux
goarch: amd64
pkg: github.com/Ptt-official-app/go-bbs
cpu: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
BenchmarkRecordIOProtobufWrite-4 5654 198166 ns/op
BenchmarkProtobufWrite-4 642 1680291 ns/op
BenchmarkProtobufBufWrite-4 4791 243438 ns/op
BenchmarkProtobufArrayWrite-4 8821 138341 ns/op
BenchmarkSqliteWrite-4 39 33877995 ns/op
PASS
ok github.com/Ptt-official-app/go-bbs 6.208s
whitefloor 03:48:18
各位好,請有空的人麻煩幫我Review,感謝
https://github.com/Ptt-official-app/Ptt-backend/pull/123
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/59|#59> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/59|#59> *:pick: 變更內容 / Details of Changes* • 實作 http/usecase/repository • 測試 http/usecase
  • 👀1
Julian Chu 2021-03-10 16:44:07
這個api 應該要看那段文件? 我沒找到的說
whitefloor 2021-03-10 20:22:16
然後那個是一次實作完三個子ISSUE嗎?XD
whitefloor 2021-03-10 20:25:46
對的 我晚點把說明改一下
Julian Chu 2021-03-10 21:37:12
搞笑了,我以為是”個人看板”歷史文章XD
XDDDDD

個版的歷史文章不就是看板文章了?
不過確實以前不需要這項功能是因為大家會把自己發過想留的文轉回自己個版
whitefloor 2021-03-11 14:03:36
我有在doc加上修改建議了,大家找這個好像都找不到XDDDDDD
whitefloor 2021-03-11 14:03:42
我也是剛好矇中才看到的
whitefloor 2021-03-15 01:02:04
hi 請問這個PR還有需要改進的地方嗎
Julian Chu 2021-03-15 01:12:36
approved了,  我會建議下次 re-request a PR review  , 這樣 reviewer才會知道你完成了
whitefloor 2021-03-15 01:35:21
好的,感謝
whitefloor 2021-03-15 01:51:13
原來還有這種功能,我以為push之後在issue的member都會看到XD
Julian Chu 2021-03-15 02:33:01
會看到啊 只是不能確定修改完成了沒XD
wagaru 11:00:51
https://github.com/Ptt-official-app/Ptt-backend/issues/63 這個issue有人要試試嗎?還剩usecase跟delivery🙂
*實作細節 / Details of Implement* 根據目前架構,應該分成 `delivery/http` `usecase` `repository` 三個子 ISSUE 下去實作。 ☐ http 部分請依照文件實作並且有初步的 testcode。 ☐ usecase 部分應該是直接將 repository 的結果輸出即可。 ☐ repository 因為 go-bbs 可能還沒完成,因此需要先 mock 一個暫時性的結果等待 go-bbs 完成之後進行串接。 • ISSUE <https://github.com/Ptt-official-app/Ptt-backend/issues/116|#116> *期程 / Schedule* • 討論時間: 一週, 到 3/9 • 實作時間: 一週, 到 3/16 • 確認時間: 一週, 到 3/23 注意這個 endpoint 是 `/v1/boards/{{board_id}}/information` *相關文件 / Documents* <https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k|PTT 後端系統協定>
gogog22510 2021-03-10 11:36:18
我可以試試
好的,那記得先看開子issue再實作
gogog22510 11:36:18
我可以試試
wagaru 11:40:59
好的,那記得先看開子issue再實作
陳昱廷 15:11:58
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/67|#67> *:memo: 相關的 issue / Related Issues* 無 *:pick: 變更內容 / Details of Changes* 增加了 windows build 的支援。
陳昱廷 15:12:12
增加了對 windows 支援
Julian Chu 16:44:07
這個api 應該要看那段文件? 我沒找到的說
whitefloor 20:22:16
pichuchen 20:22:41
然後那個是一次實作完三個子ISSUE嗎?XD
whitefloor 20:25:46
對的 我晚點把說明改一下
Julian Chu 21:37:12
搞笑了,我以為是”個人看板”歷史文章XD
2021-03-11
pichuchen 10:50:56
go-bbs v0.3.3 修正好 windows 的tag 推上去了
pichuchen 13:57:50
XDDDDD

個版的歷史文章不就是看板文章了?
pichuchen 13:58:29
不過確實以前不需要這項功能是因為大家會把自己發過想留的文轉回自己個版
whitefloor 14:03:36
我有在doc加上修改建議了,大家找這個好像都找不到XDDDDDD
whitefloor 14:03:42
我也是剛好矇中才看到的
陳昱廷 16:38:34
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/128|#128> • close #0 *:memo: 相關的 issue / Related Issues* *:pick: 變更內容 / Details of Changes* 增加對 go-bbs 0.3 support 跟修正 lint
陳昱廷 16:40:56
目前 pr 在 ubuntu 跑 golangci-lint 會 fail
陳昱廷 16:41:16
希望有一個人可以幫我拉到 ubuntu 作測試
手邊剛好有 ubuntu 20.04 
我要測試的話是要先 clone 你的專案 
然後 go build . 嗎?
Julian Chu 2021-03-12 00:53:01
go.sum 的問題
Julian Chu 2021-03-12 00:53:50
用 ./make.bash deps或 make.bat deps
更新 go.sum後 commit 應該就可以了
修正好了
陳昱廷 16:46:24
windows 上測試是沒問題的 build test 都能通過
j31422210 20:21:38
手邊剛好有 ubuntu 20.04 
我要測試的話是要先 clone 你的專案 
然後 go build . 嗎?
2021-03-12
Julian Chu 00:53:01
go.sum 的問題
Julian Chu 00:53:50
用 ./make.bash deps或 make.bat deps
更新 go.sum後 commit 應該就可以了
陳昱廷 11:02:37
修正好了
陳昱廷 11:03:51
經過了三個星期終於修好 lint,感動的一瞬間
  • ❤️4
  • 👍3
  • 🙌2
  • 🎉1
titaneric 12:10:30
https://github.com/Ptt-official-app/go-bbs/pull/70 上面PR需要幫忙review,麻煩一下
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/65|#65> *:pick: 變更內容 / Details of Changes* • 補足BoardHeader剩餘欄位 • 新增對應測試,但因原本的測試資料中在BrdName及title這兩個field中有塞其他資料(NewBoardHeaderWithByte才要用split取\x00之前的),所以沒辦法全測,改測前兩個。
Lester 14:39:42
https://github.com/Ptt-official-app/Ptt-backend/pull/134
這個 PR 需要幫忙 Review ,謝謝大家。
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/73|#73> *:pick: 變更內容 / Details of Changes* • Implement MockUsecase.GetBoardTreasures • Added TestFetchBoardTreasures
2021-03-13
gogog22510 10:56:40
https://github.com/Ptt-official-app/Ptt-backend/pull/127
需要幫忙 Review PR,謝謝大家
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/126|#126> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/63|#63> *:pick: 變更內容 / Details of Changes* • 實作 http/usecase • 測試 http/usecase
  • 1
2021-03-14
nickyanggg 08:44:19
再麻煩大家幫忙 review 一下,感謝~
https://github.com/Ptt-official-app/Ptt-backend/pull/138
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/137|#137> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/137|#137> *:pick: 變更內容 / Details of Changes* • delivery/http/route.go • delivery/http/route_boards.go 中新增 getBoardSettings、marshalBoardHeaderSettings
  • 👀1
pichuchen 17:30:02
開發站上面的程式更新了
2021-03-15
whitefloor 00:50:05
hi 請問 #123這個PR還有需要改進的地方嗎
whitefloor 01:02:04
hi 請問這個PR還有需要改進的地方嗎
Julian Chu 01:12:36
approved了,  我會建議下次 re-request a PR review  , 這樣 reviewer才會知道你完成了
whitefloor 01:35:21
好的,感謝
whitefloor 01:51:13
原來還有這種功能,我以為push之後在issue的member都會看到XD
Julian Chu 02:33:01
會看到啊 只是不能確定修改完成了沒XD
陳昱廷 11:54:42
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/88|#88> • close #0 *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/90|#90> *:pick: 變更內容 / Details of Changes* 修正 lint 跟合併了 development
陳昱廷 11:55:06
這個合併好以後就會把兩條線合再一起
陳昱廷 11:55:30
之後不管事測試還是開發都只要對 development 送 pr 就好
  • 🙌1
  • 👍2
陳昱廷 17:01:01
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/90|#90> *:pick: 變更內容 / Details of Changes* 二合一
  • ❤️1
  • 1
pichuchen 17:38:48
因為enable lint 的部分已經完成了,所以接下來 development branch 預設都會跑 lint 了,感謝大家的努力 🙏。
  • 🙌3
  • 👍2
2021-03-16
陳昱廷 15:52:54
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/110|#110> *:pick: 變更內容 / Details of Changes* 增加註解
  • 👀1
陳昱廷 15:53:14
之前的註解討論我另開了一個 pr 修正
陳昱廷 15:53:30
舊的因為大改版我關掉了
陳昱廷 15:53:39
直接從這邊重新討論
pichuchen 20:25:24
本週的影片送出了
  • 👀2
  • 🙌1
  • 👍1
pichuchen 22:14:51
目前 pttbbs 有使用的 config flag 有
```
> USE_COOLDOWN
> HOTBOARDCACHE
> NOKILLWATERBALL```
這三個,另外目前台大機房似乎還不支援IPv6,尚未有時程表。
2021-03-17
Wombat007 00:54:47
@chihhao.wang007 has joined the channel
陳昱廷 16:36:56
註解的部分大家覺得是要都用 // 還是用 /**/ 還是混用?
gogog22510 2021-03-18 05:25:57
我覺得可以function裡面用//, function外用/**/
目前我沒有看到文件是說哪邊建議用 /**/ 的
gogog22510 2021-03-18 11:40:15
go source code 好像都是 // 可能就用//囉
2021-03-18
gogog22510 05:25:57
我覺得可以function裡面用//, function外用/**/
pichuchen 11:36:36
目前我沒有看到文件是說哪邊建議用 /**/ 的
pichuchen 11:37:12
借問一下,有建議的取得磁碟剩餘空間的作法嗎?
gogog22510 2021-03-19 12:27:44
不知道這個可不可以
https://stackoverflow.com/questions/20108520/get-amount-of-free-disk-space-using-go
我公司也是用類似的作法
我有看到這篇,後來我實作的方法是直接call df -h (不是在這個專案)
pichuchen 11:37:15
golang
pichuchen 11:37:48
我還滿驚訝在 runtime package 裡面居然沒有...
gogog22510 11:40:15
go source code 好像都是 // 可能就用//囉
陳昱廷 11:40:46
2021-03-19
gogog22510 12:27:44
不知道這個可不可以
https://stackoverflow.com/questions/20108520/get-amount-of-free-disk-space-using-go
我公司也是用類似的作法
陳昱廷 18:08:38
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/39|#39> *:pick: 變更內容 / Details of Changes* OpenFavFile 錯誤處理 增加對 ReadUserFavoriteRecordsFile test
  • 1
陳昱廷 18:08:44
大家幫忙 review 一下
2021-03-20
pichuchen 08:47:28
我有看到這篇,後來我實作的方法是直接call df -h (不是在這個專案)
craftwar 13:02:33
@craftwar.open has joined the channel
pichuchen 14:32:48
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/137|#137> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/137|#137> *:pick: 變更內容 / Details of Changes* • delivery/http/route.go • delivery/http/route_boards.go 中新增 getBoardSettings、marshalBoardHeaderSettings
  • 👍1
pichuchen 15:21:25
https://github.com/Ptt-official-app/go-bbs/pull/75/files

然後使用者文章的掃描有出現了
2021-03-22
陳昱廷 09:33:38
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/110|#110> *:pick: 變更內容 / Details of Changes* 增加註解
陳昱廷 09:35:28
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/39|#39> *:pick: 變更內容 / Details of Changes* OpenFavFile 錯誤處理 增加對 ReadUserFavoriteRecordsFile test
  • 👀1
陳昱廷 09:35:33
這兩個再麻煩大家了
2021-03-23
pichuchen 19:27:48
本週很短的影片寄出了
  • 👍1
2021-03-29
pichuchen 09:32:30
https://github.com/Ptt-official-app/Ptt-backend/issues/148

目前這個 ISSUE 大致上走到哪邊了?
*實作細節 / Details of Implement* • 修改 internal/usecase/user.go • 修改GetUserPreferences內的data • 修改 internal/repsitory/user.go • 新增dummy function給usecase *期程 / Schedule* • 討論時間: 兩天, 到 3/25 • 實作時間: 兩天, 到 3/27 • 確認時間: 兩天, 到 3/29 *相關文件 / Documents* 主issue: <https://github.com/Ptt-official-app/Ptt-backend/issues/62|#62> <https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k|PTT 後端系統協定>
pichuchen 13:10:24
看板細部資訊的 usecase 和 repository 好像已經好了?
nickyanggg 2021-03-29 13:27:39
恩恩 看起來應該是直接用之前寫好的就行
pichuchen 13:10:32
*實作細節 / Details of Implement* 根據目前架構,應該分成 `delivery/http` `usecase` `repository` 三個子 ISSUE 下去實作。 ☑︎ http 部分請依照文件實作並且有初步的 testcode。 • ISSUE <https://github.com/Ptt-official-app/Ptt-backend/issues/137|#137> ☐ usecase 部分應該是直接將 repository 的結果輸出即可。 ☐ repository 因為 go-bbs 可能還沒完成,因此需要先 mock 一個暫時性的結果等待 go-bbs 完成之後進行串接。 注意這個 ISSUE 指的是「細部資訊」 `/v1/boards/{{board_id}}/settings` *期程 / Schedule* • 討論時間: 一週, 到 3/9 • 實作時間: 一週, 到 3/16 • 確認時間: 一週, 到 3/23 *相關文件 / Documents* <https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k|PTT 後端系統協定>
nickyanggg 13:27:39
恩恩 看起來應該是直接用之前寫好的就行
2021-03-30
pichuchen 18:00:40
最近好像整體進度變慢很多,不知道目前大家有什麼意見想提出來討論的?
pichuchen 20:03:21
今天影片會比較晚,我整理一下目前名單和工作進度這樣,避免影片內容太空
  • 👍1
2021-03-31
陳昱廷 15:44:19
*實作細節 / Details of Implement* 目前的話,readme.md 皆是以歷史背景出發點再說的。 開發者對於如何參與這個專案是一頭霧水的。 目前我個人看法是應該直接把 milestone 擺在顯眼的地方,並且每個 isssue 都應該要確實的 assign 給某個要接的人。 避免出現明明這個 issue 有人再做卻要看討論才知道。 然後應該要把時程表放在顯眼的地方,哪邊做了哪邊沒做,方便開發者知道目前進度。 *期程 / Schedule* 無,討論到大家滿意為止 *相關文件 / Documents* README.md
陳昱廷 15:44:41
最近比較忙,上星期有提到這件事情
陳昱廷 15:44:51
所以我弄了一些建議給大家討論
pichuchen 17:25:06
本週的影片寄出了,如果沒收到的話再檢查一下垃圾信箱
  • 👀3