bbs

Month: 2021-01

2021-01-21

pichuchen 18:13:07
@pichuchen has joined the channel
pichuchen 18:13:08
@pichuchen set the channel purpose: 這個 Channel 討論新一代以 Golang 實作的 bbs 的相關工作討論。
ifanchu675 18:13:20
@ifanchu675 has joined the channel
mkfsn 20:25:29
@p408865 has joined the channel
mkfsn 20:26:01
@p408865 set the channel topic: 這個 Channel 討論新一代以 Golang 實作的 bbs 的相關工作討論。
pichuchen 20:26:32
目前統計資料(還在統計中)
截圖 2021-01-21 下午8.26.12.png
等等, Golang 驚艷四年的怎麼辦 XD
被發現了
我剛剛修正了
因為一瞬間發現我沒得選 😛
👀 1
pichuchen 20:43:11
目前開發站在這邊,然後上面資料因為會被 export 出來,所以密碼請不要用目前在使用的密碼
pichuchen 20:43:34
Domain 如果需要換掉的話可以提這樣
pichuchen 22:09:02
目前測試站的資料可以從這邊下載了
https://ptt-app-dev-codingman.pichuchen.tw/data-archives/

2021-01-22

ifanchu675 00:03:12
hello all~
mkfsn 00:11:12
hello~
pichuchen 15:36:36
https://ptt-app-dev-codingman.pichuchen.tw/data-archives/

下載測試資料的部分多了SHM, 可以把他丟到ramdisk 之類的地方用 mmap 抓進來就可以做測試了,解開約44M, 但是每個站的 SHM 有自己的編譯參數,這部分如何表示要思考一下。
沒有用 ramdisk 的習慣,都忘記有這個選項 XD
https://blog.jhangy.us/post/create-ramdisk-on-macos/

2021-01-23

2021-01-25

Tobby 09:53:24
@tobby112 has joined the channel
nickyanggg 19:56:01
@nickyanggg has joined the channel

2021-01-26

pichuchen 04:38:47
大家好:

不好意思拖這麼久才進行聯絡,統計到週二結束,不重覆的 Email 總共有 77
人,分布於三四個時區,因此如果要協調一個可以的時間把所有人約起來塞進視訊會議裡面可能會有點沒效率。

所以我拍了一個影片,把第一次會議我可能要對著攝影機念的東西唸了一下:
https://youtu.be/6yve8G5HkfI
注意影片最晚放到下週二,因為害羞的關係下週二之後我會關閉影片,如果這之後才想到這件事的請再另外私訊我...

然後再請大家把看完後本來打算在會後發問的東西以 Google 表單送回來:
https://forms.gle/N3WCitYBfa1qX8mL9

另外是根據投票結果,我們會暫時先用 Slack 作為討論中心,所以請大家申請一下 g0v 的 slack:

join.g0v.tw 然後找到 #bbs 就行了。

原本是希望可以順便把 mail list 架設好才寄出這封信的,誰知道 GCP 居然 Block Port 25


         Pichu 2021/1/26 4:37

Google Docs

go bbs 後端第一週影片後調查

大家好,我是皮丘。 請先看過第一週的影片之後再來回應,因為第一週影片未來應該會下架。

arbit 04:42:52
@itsarbit has joined the channel
arbit 04:46:17
👋
1
pichuchen 04:46:39
自我介紹範本:

*怎麼知道這個專案的?*
一開始是透過 Coscup 的 BoF 知道的,後來就變後端負責人了...

*您平常的活動或是工作?*
TIH 的打雜,客戶以物聯網和智慧家電相關的為主。

*平常出沒的區域?*
通常在三蘆一帶。

*您有興趣或者是關心的主題?*
和 NLP 有關的技術,不過雖然有興趣,但是最近在碰的都和公眾議題以及工作相關的事。

*其他意見發表:*
希望專案可以順利進行,然後長久穩定的維持下去
Sharon 05:43:25
@yuhsuanvt has joined the channel
Julian Chu 06:43:28
@yulang.chu has joined the channel
Alan Lu 07:12:36
@alan0098 has joined the channel
maxjkfc 07:19:07
@maxjkfc has joined the channel
Greg 07:19:14
@kyho4515 has joined the channel
rueihong.hsu 08:05:56
@rueihong.hsu has joined the channel
Chang Chen Chien 09:02:18
@e850506 has joined the channel
s14031403 09:02:28
@s14031403 has joined the channel
胡仁恩 09:26:49
@b99b01016 has joined the channel
PoChu Chen 09:35:05
@r04323050 has joined the channel
wengjs.tw_gobbs 09:44:02
@wengjs.tw_gobbs has joined the channel
boooo1231 10:02:39
@boooo1231 has joined the channel
Rico 10:08:28
@rico3452 has joined the channel
s8901489 11:32:48
@s8901489 has joined the channel
キリ 11:53:53
@asymptotion has joined the channel
LittleWhiteYA 11:55:04
@f46284628 has joined the channel
John 12:47:02
@johnhckuo has joined the channel
Rico 13:17:03
*怎麼知道這個專案的?*
在 COSCUP telegram 看到有人分享 PTT 無薪徵才文

*您平常的活動或是工作?*
擔任 DevOps/SRE Engineer

*平常出沒的區域?*
台北市

*您有興趣或者是關心的主題?*
基本上很多領域都蠻有興趣,最新的 bbs20210126 的影片勾起對台灣開源發展歷史的興趣 XDXD
另外就是寫程式的基本功,之前雖然有寫 Infrastructure as Code,這次想寫寫看邏輯的部分。

*其他意見發表:*
我看最新 bbs20210126 的影片後,簡單畫了一張圖,不知道有沒有理解錯誤或者要補充的?
golang-bbs-architecture.png
圖片理解正確!
這張可以借我修改然後放上 Ptt-Backend 的 Readme 嗎?
no worries
OK
👋 5
mail745 13:51:30
@mail745 has joined the channel
LittleWhiteYA 14:11:42
*怎麼知道這個專案的?*
在 soft_job 板上看到徵才文

*您平常的活動或是工作?*
backend engineer

*平常出沒的區域?*
台北市

*您有興趣或者是關心的主題?*
docker, k8s, postgresql, node.js, python, golang
希望能跟大家交流交流~

*其他意見發表:*
大家加油!
👋 2
Vladka 14:17:12
@m10702125 has joined the channel
arbit 14:42:02
*怎麼知道這個專案的?*
台灣朋友貼給我的

*您平常的活動或是工作?*
Cloud Infra Engineer

*平常出沒的區域?*
Bay Area灣區矽谷

*您有興趣或者是關心的主題?*
Anything related to core infra/ml infra

*其他意見發表:*
*fighting*
👋 2
Vladka 16:29:03
怎麼知道這個專案的?
在 soft_job 看到

您平常的活動或是工作?
backend engineer

平常出沒的區域?
台北市

您有興趣或者是關心的主題?
微服務架構、docker、golang

其他意見發表:
希望大家都能在這專案有所收獲
👋 2
Alan Lu 16:57:33
*怎麼知道這個專案的?*
Gopher 台灣 Telegram

*您平常的活動或是工作?*
後端工程師

*平常出沒的區域?*
台中市

*您有興趣或者是關心的主題?*
分散式架構、資料庫

*其他意見發表:*
happy hacking
👋 2
nickyanggg 17:11:55
*怎麼知道這個專案的?*
PTT

*您平常的活動或是工作?*
後端工程師

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

*您有興趣或者是關心的主題?*
golang、分散式架構、資料庫

*其他意見發表:*
加油!
👋 2
chioh 17:40:58
@chioh has joined the channel
Chang Chen Chien 18:39:12
*怎麼知道這個專案的?*
ptt 逛到的

*您平常的活動或是工作?*
待業 自學 golang / c / linux os, 目標 golang 後端工程師 ,之後想往 DevOps / SRE 發展

*平常出沒的區域?*
台南 新竹

*您有興趣或者是關心的主題?*
Concurrency

*其他意見發表:*
• 希望能解決真實世界問題,並了解如何在開源專案上與其他開發者合作
👋 3
kudakenu 19:51:55
@tsungfu.chiang has joined the channel
kudakenu 19:54:24
*怎麼知道這個專案的?*
在 soft_job 板上看到徵才文

*您平常的活動或是工作?*
所屬金融業,主要做營運/開發公司的 open API 工作。

*平常出沒的區域?*
日本東京。

*您有興趣或者是關心的主題?*
網頁API 後端技術 區塊鏈 等等技術都有興趣

*其他意見發表:*
*目前還是有點不適應日式 mac 鍵盤…編輯了好幾次,總之請各位多指教<(_ _)>*
我懂 ... @ 出現在神奇的地方 XDD
然後最近我買了個台灣鍵盤外接...
我反而是已經習慣日式鍵盤了 XDD
覺得 control 的位置很棒!
👋 3
dododavid006 20:26:40
@dododavid006 has joined the channel
jerryway 20:30:31
@lavaday1225 has joined the channel
dododavid006 20:31:41
*怎麼知道這個專案的?*
從好友的 FB 看到

*您平常的活動或是工作?*
新創,主要是網頁,喜歡 Rust 勝過 Golang, Golang 只是寫過一點小工具的程度

*平常出沒的區域?*
台中

*您有興趣或者是關心的主題?*
希望有更好的 BBS 系統,另外就是 Concurrency

*其他意見發表:*
我是在一開始的問卷說有小改過 MapleBBS 跟知道 shm 的問題的那個人,不過那是很久前的事了,總之請多多指教了
😮 1 👋 1
キリ 20:34:29
*怎麼知道這個專案的?*
PTT 搜價

*您平常的活動或是工作?*
Golang backend engineer

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

*您有興趣或者是關心的主題?*
The world.

*其他意見發表:*
👋 2
jerryway 20:35:29
*怎麼知道這個專案的?*
soft_job 板上看到徵才文

*您平常的活動或是工作?*
後端工程師

*平常出沒的區域?*
東京,目前回台北避難(隔離中)

*您有興趣或者是關心的主題?*
golang,資料庫系統

*其他意見發表:*
第一次參加開源專案,希望能盡一份心力然後學習新知😆
👋 2
Ray Li 21:05:29
@unitw.edward has joined the channel
Chris 21:13:46
@botckris has joined the channel
wagaru 21:45:34
@wagaru has joined the channel
wagaru 21:54:24
*怎麼知道這個專案的?*
看到 Soft_Job 上的貼文

*您平常的活動或是工作?*
軟體工程師

*平常出沒的區域?*
主要在新竹

*您有興趣或者是關心的主題?*
系統如何撐起瞬間流量

*其他意見發表:*
才剛學 Golang 三個月,目前多用來刷 Leetcode,希望也能為這個專案貢獻一點小心力
👋 1
pichuchen 22:06:35
https://github.com/Ptt-official-app/Ptt-backend/issues/6

這個 ISSUE 有人要認領嗎? 我猜參考 go-bbs 的 CI 文件就行了

#6 CI / CD 檔案建立

突然發現這個專案好像還沒有設定 CI / CD ?

Julian Chu 2021-01-26 23:29:27
我可以認領這個 不過最好等#8 merged,
@yulang.chu 抱歉 🙇🏻 我剛把 #8 關掉了,希望沒有造成你的困擾
Julian Chu 2021-01-26 23:55:56
怎麼關掉了 XD
我在等makefile merge進去,linter是一定要加的
小的我 review 完有些 feedback
Julian Chu 2021-01-29 20:34:10
@rico3452 大感謝!! 我回覆了
Ed Fan 22:07:07
@edfan0930 has joined the channel
chhsiao1981 22:11:39
@chhsiao1981 has joined the channel
Peven 22:13:00
@pochihchang99 has joined the channel
Lei Rain 22:16:57
@rainlay has joined the channel
Eugene Su 22:49:45
@beckhamnaing72 has joined the channel
Justin 23:17:35
@water25234 has joined the channel
mkfsn 23:24:00
*怎麼知道這個專案的?*
~被 @pichuchen 抓來的~
在 Facebook 上面看到 @pichuchen 的貼文(連結到 PTT 徵才文)

*您平常的活動或是工作?*
在日本公司遠端工作的 Backend (Go) / SRE

*平常出沒的區域?*
新竹市 & 網路上

*您有興趣或者是關心的主題?*
networking/docker/k8s/go

*其他意見發表:*
Happy Coding & 認識新朋友
3
Julian Chu 23:27:41
*怎麼知道這個專案的?*
soft_job

*您平常的活動或是工作?*
backend engineer

*平常出沒的區域?*
德國紐倫堡

*您有興趣或者是關心的主題?*
cloud/分散式系統/golang/.Net

*其他意見發表:*
hi 大家好!
👋 2 😮 1
Justin 23:41:22
*怎麼知道這個專案的?*
在Soft_Job 看到

*您平常的活動或是工作?*
Backend Engineer, 運動, 爬山

*平常出沒的區域?*
台北市

*您有興趣或者是關心的主題?*
分散式系統 / Golang / DevOps 相關技能

*其他意見發表:*
希望大家都能在這專案有所收獲🎉
👋 1

2021-01-27

jiji0856 00:09:31
@jiji0856 has joined the channel
fishball 01:09:38
@fishball has joined the channel
fishball 01:14:01
*怎麼知道這個專案的?*
在 soft_job 板上看到徵才文

*您平常的活動或是工作?*
Singapore Shopee Backend Engineer

*平常出沒的區域?*
新加坡 OAO

*您有興趣或者是關心的主題?*
python / golang / DevsOps

*其他意見發表:*
Golang 的資歷不常,不過想要透過參與這個專案貢獻所學,也希望能教學相長
👋 2
Gary 02:09:23
@ggary9424 has joined the channel
Gary 02:19:24
*怎麼知道這個專案的?*
朋友告知

*您平常的活動或是工作?*
一間 Startup 的 Tech Lead

*平常出沒的區域?*
台北市

*您有興趣或者是關心的主題?*
DevOps, System Architecture, 酷科技

*其他意見發表:*
有幸觀摩來自各地的大神們,希望小弟我也能奉獻一點心力!
大家加油~~
👋 1
adam 08:57:15
@adam6313 has joined the channel
maxjkfc 08:57:30
Hi 大家好,我叫 Max
_*怎麼知道這個專案的?*_
朋友告知的
_*您平常的活動或是工作?*_
專門打雜的技術員
_*平常出沒的區域?*_
台中市
_*您有興趣或者是關心的主題?*_
開源議題
_*其他意見發表:*_
大家加油!!一起來開發吧
👋 1
adam 09:23:58
*怎麼知道這個專案的?*
朋友告知

*您平常的活動或是工作?*
Golang backend engineer

*平常出沒的區域?*
台中市

*您有興趣或者是關心的主題?*
分散式系統/golang

*其他意見發表:*
燃燒coding魂! 大家加油~~
👋 1
Ed Fan 10:01:50
大家好, 我是Ed
*怎麼知道這個專案的?*
朋友告知

*您平常的活動或是工作?*
Golang backend engineer

*平常出沒的區域?*
台中市

*您有興趣或者是關心的主題?*
分散式系統/golang/cloud

*其他意見發表:*
期待這個專案, 大家加油一起來開發
👋 1
Sharon 10:14:43
*怎麼知道這個專案的?*
soft_job 板上看到

*您平常的活動或是工作?*
學生

*平常出沒的區域?*
美國 VA

*您有興趣或者是關心的主題?*
golang/ DevOps

*其他意見發表:*
golang的新手, 希望能跟大家多多學習!
太好了 有人在美國
其實還不少喔
👋 1
Kay 12:59:24
@kay682 has joined the channel
Kay 13:05:16
*怎麼知道這個專案的?*
在 soft_job 板上看到徵才文

*您平常的活動或是工作?*
SW Engineer

*平常出沒的區域?*
北北桃三區

*您有興趣或者是關心的主題?*
開源,開放,學習新事物

*其他意見發表:*
希望能做點開源專案累積經驗,在這個專案跟大家一起學習成長
👋 1
whitefloor 13:32:21
@a224412142009 has joined the channel
ifanchu675 14:02:55
*怎麼知道這個專案的?*
在新聞上看到ptt在開發新版,就自已找來g0v

*您平常的活動或是工作?*
Software Engineer

*平常出沒的區域?*
San Jose

*您有興趣或者是關心的主題?*
docker, k8s, golang

*其他意見發表:*
幫忙打打雜~
❤️ 1 👋 1
s14031403 14:56:31
*怎麼知道這個專案的?*
soft_job 板上看到

*您平常的活動或是工作?*
工程師

*平常出沒的區域?*
台灣 西班牙

*您有興趣或者是關心的主題?*
golang/ microservice/ high concurrency

*其他意見發表:*
golang 經驗較淺 想做幾個專案跟各位學習
Julian Chu 2021-01-28 20:51:30
歐洲區!!
👋 1
pichuchen 15:24:57
https://github.com/PichuChen/go-bbs/issues/1

這個 ISSUE 應該可以先求有再求好的做下去了

#1 增加 PTT passwd 檔案其他欄位的解析

預定修改的程式碼為 passwd.go passwd_test.go 兩個檔案,請參考 <https://github.com/ptt/pttbbs/blob/master/include/pttstruct.h|https://github.com/ptt/pttbbs/blob/master/include/pttstruct.h> 裡面的 userec 結構將 testcase 裡面的 passwd 檔案的內容解出來並做成測試檔。

稍微看了一下 code 跟 `.PASSWDS` file,真不知道你們之前怎麼解析出來的 XD
對,然後用測試用的檔案做實驗
pichuchen 15:35:08
https://github.com/PichuChen/go-bbs/issues/33

然後這邊的 Interface 討論看有沒有意見這樣

#33 定義發文所需要的 Connector Interface Method

目前在 <https://github.com/PichuChen/go-bbs/blob/d49298349281c75edd721caece6db88744df7dba/bbs.go#L89|go-bbs/bbs.go> Line 89 in &lt;/PichuChen/go-bbs/commit/d49298349281c75edd721caece6db88744df7dba|d492983&gt; 有定義Connector ,但目前的 Connector 只有讀取的功能,需要定義有寫入功能的 BBS Driver 要實作哪些東西。 方向上有兩種,一種是在原有的 Connector 新增 Method 第二種是定義新的Interface 可能叫做 WritableConnector 或是 BBSWriter 之類的,然後去定義這個 Interface, 使用上就是檢查如果這個 Driver 沒有實作某個 Connector Interface 的話,就是視為這個 BBS Driver 不支援某類型的功能。

kuo-chuan weng 15:51:03
@xboxa5105 has joined the channel
pichuchen 16:13:48
https://github.com/PichuChen/go-bbs/issues/34

這個難度稍微高一點

#34 實作 Cache 套件

雖然套件名稱是 Cache 但實際上是用來讀取 SHM 的套件 初步想法是這樣,目前在測試環境的 SHM 已經被打包下來了,約 44MB, 因此在 Parsing 的時候透過 mmap 的 System call 就能夠讀入記憶體了。 但是根據每個BBS編譯設定不同,欄位所在的記憶體位置也會不同,因此這部分需要動態算出位置,算出位置後下一步就能取得該位置的資料或是將資料寫入該位址。 如果回傳的是 `[]byte` byte slice 的話,那利用者就能自由的讀取和修改某段記憶體位置了(還不用copy) <https://play.golang.org/p/vEUqcyc5g94|https://play.golang.org/p/vEUqcyc5g94> 第一階段因為方便測試,所以用 mmap 打開測試資料,然後上線前改成透過 cgo 開啟 system V SHM 的版本。 大概是這樣的計畫,看有沒有人有興趣或是其他意見。

👀 1
kuo-chuan weng 16:15:42
*怎麼知道這個專案的?*
soft_job 板上看到徵才文

*您平常的活動或是工作?*
後端工程師

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

*您有興趣或者是關心的主題?*
node.js, SQL, golang, docker, kubernetes

*其他意見發表:*
希望盡我所能幫忙這個專案
👋 1
frankie 16:32:33
@frankie.lee.job has joined the channel
dylan.huang65 16:35:34
@j75689 has joined the channel
dylan.huang65 16:40:07
*怎麼知道這個專案的?*
同事叫我去soft_job 板上看的

*您平常的活動或是工作?*
Backend Engineer

*平常出沒的區域?*
台北信義、新北板橋

*您有興趣或者是關心的主題?*
golang、docker、kubernetes

*其他意見發表:*
希望可以跟各位大神拜師學藝~
👋 1
frankie 16:46:26
怎麼知道這個專案的?
同事介紹的~
您平常的活動或是工作?
後端工程師
平常出沒的區域?
台北信義、新北蘆洲
您有興趣或者是關心的主題?
golang、high concurrency 、 kubernates
其他意見發表:
希望可以交流結交朋友
阿,也是蘆洲人
yes~同鄉~ 剛剛我也注意到問卷舉例也是蘆洲
👋 1
water78813 19:16:39
@water78813 has joined the channel
water78813 19:24:41
*怎麼知道這個專案的?*
Facebook → soft_job

*您平常的活動或是工作?*
Backend Engineer

*平常出沒的區域?*
東京自由之丘

*您有興趣或者是關心的主題?*
golang

*其他意見發表:*
雖然不懂的東西很多還是希望能一邊累積自己經驗也一邊給專案出一份力
👋 2
Lester 20:10:17
@jhengjhe has joined the channel
Lester 20:13:58
*怎麼知道這個專案的?*
PTT

*您平常的活動或是工作?*
Android 工程師

*平常出沒的區域?*
台南(好想工作室)

*您有興趣或者是關心的主題?*
golang, android, backend, database

*其他意見發表:*
才剛開始學習後端相關技術,希望可以透過這個專案跟大家交流,謝謝大家。
👋 1
Lei Rain 22:04:44
*怎麼知道這個專案的?*
PTT
*您平常的活動或是工作?*
Backend enginner
*平常出沒的區域?*
新北~台北
*您有興趣或者是關心的主題?*
任何有關 web, backend 技術
*其他意見發表:*
大家好~~
👋 1
Marko 23:13:43
@marko958m has joined the channel
Marko 23:23:51
*怎麼知道這個專案的?*
PTT!

*您平常的活動或是工作?*
Golang backend engineer

*平常出沒的區域?*
永和與台北

*您有興趣或者是關心的主題?*
想看看各種不同的專案和他們的做法
跟大家交流

*其他意見發表:*
感覺很好玩~
👋 1

2021-01-28

yqtang1222 01:14:53
@yqtang1222 has joined the channel
Eddie Hsieh 08:49:24
@edhs0011 has joined the channel
pichuchen 08:53:50
https://docs.google.com/spreadsheets/d/11E3_P9_I1io4bAyzDYsl6Dh81h-IGZFhddU6rijdAno

我突然想起來有這樣一份文件,這部分是「當年」 PTT APP 核心團隊希望可以優先達成的功能
MCLin 09:44:43
@karenlin1023 has joined the channel
胡仁恩 10:59:41
*怎麼知道這個專案的?*
soft_job 板上看到

*您平常的活動或是工作?*
iOS Developer

*平常出沒的區域?*
台北市/ 文山區, 大安區, 信義區

*您有興趣或者是關心的主題?*
golang/ Backend/ Swift

*其他意見發表:*
golang新手, 很高興跟大家一起合作~
👋 2
pichuchen 15:03:38
雖然叫做搜尋,不過覺得應該實作起來像是篩選
ifanchu675 15:27:19
Just FYI, 如何在local上架一個pttbbs作測試用
1. `git clone git@github.com:Ptt-official-app/go-pttbbs.git`
2. `cd go-pttbbs`
3. `export BBSHOME=<some local dir>`
4. `docker-compose up -d`
5. `telnet localhost 8889` (locale needs to set to Big5)
這個是利用Docker 的做法?
ifanchu675 2021-01-28 16:38:05
yes
chhsiao1981 2021-01-28 22:23:24
關於 5. (locale needs to set to Big5)
這件事情~

這裏 telnet localhost 8889 的 code-base 是 ptt/pttbbs~

所以是可以跟 ptt 一樣 [username], 就變成 utf-8 囉~
`/home/bbs/bin/shmctl: No such file or directory`
👍 11 🙌 6
pichuchen 16:07:50
因為 POA 那邊的要求,所以我待會會把 go-bbs 轉移進 POA, 期間可能會有影響
請問什麼是 POA?
ifanchu675 2021-01-28 16:37:50
`Ptt-Official-App`?
transfer 的時候出了點意外... 不過暫時不影響開發流程 (吧
denkenie 22:50:22
@denkenie has joined the channel
❤️ 1
mkfsn 23:31:06
嗨大家好,我開了一張 issue,希望能夠跟大家一起討論,所以貼過來這邊:
https://github.com/Ptt-official-app/Ptt-backend/issues/16

請各位大大鞭小力一點 ... orz
chhsiao1981 23:42:58
hi 大家好~

來這裡打個廣告一下~
@okcool.chang 大大的 “ptt 不能亡” 在 telegram 裡有 group~
(Ptt 官方 app 籌備小組)
可以跟 @okcool.chang 大大和 @teemocogs 大大詢問加入~

“ptt 不能亡” 這個 project 裡的後端也有另外一個 telegram group
(Ptt BBS 後台小組)

也可以跟 @okcool.chang 大大和 @teemocogs 大大詢問加入~

“ptt 不能亡” 的 projects 都在

https://github.com/Ptt-official-app

這個 group 裡~
官方紀錄都在以下 hackmd 裡:

https://hackmd.io/@twbbs/Root

Ptt official app

👍 2
okcool 23:43:08
@okcool.chang has joined the channel
Teemo 23:43:09
@teemocogs has joined the channel
chhsiao1981 23:44:09
其中已確認未來 server 端會是以下的架構
chhsiao1981 23:44:12
image.png
👀 1
chhsiao1981 23:45:21
其中的“中介應用層-中台“的 api 可以參考
https://api.devptt.site:5000
chhsiao1981 23:46:40
目前是已經有 https://github.com/Ptt-official-app/go-openbbsmiddleware 這個版本來 implement middleware (中介應用層-中台)~

Ptt-official-app/go-openbbsmiddleware

go implementation of openbbs-middleware.

2021-01-29

chhsiao1981 00:12:10
關於中介底層 (中介 daemon 層)

除了 @pichuchen 版本的 go-bbs 以外.
還有 https://github.com/Ptt-official-app/go-pttbbs 這個版本.
(@pichuchen 所 pin 的 docker image 即為這個 repo 的版本~)

go-pttbbs 的 philosophy 大致上是在 middleware 的需求為前提下~
希望可以盡量跟 ptt/pttbbs 做行-行之間的 mapping~
原因是 pttbbs 在這 20+ 年的開發過程中~
有著許多巧思來讓 ptt 在有著現在的安全機制~
我自己是很擔心不 follow ptt/pttbbs 會產生可能的洞~
(像是 ptt/pttbbs 有一個機制是對於同一個 user 同時設定好友和壞人. 會變成超級好朋友~
“超級好朋友“可以比“好友“有更多 user-user 間的權限~)

這個版本已經搞定了以下 features:

1. crypt
2. shared-mem
3. hash
4. semaphore
5. register/login
6. 各種板的 list
7. 板裡的文章 list
8. 讀文章.
test-template 大致上是 follow

https://github.com/cweill/gotests

testing coverage 大致上是 75%~
(主要是透過高 testing coverage 來盡量維持品質~)

而 dbcs 的部分. 考慮到是 computationally intensive~
所以丟到 middleware 那裡去做~
(已經 implement 了 big5uao <=> utf8. 並且也已經 implement 了一字雙色的 struct)

這個版本並且已經有 Dockerfile 將每次的 release 都丟到 docker-hub 上~

這個版本也有相對應的 swagger-api:

https://api.devptt.site:8080/

不過這個版本的 swagger-api 版本有點舊~
(很歡迎大家一起幫忙更新~)

go-openmiddleware / go-pttbbs 也有相對應的 demo-site (正在開發中).
目的是幫助 frontend 可以參考這個 demo-site 的寫法來知道如何使用 api:

https://www.devptt.site

不論是 go-openmiddleware 或是 go-pttbbs~
都很歡迎有興趣的大家一起來 follow~

devptt.site

React App

Web site created using create-react-app

leadenlight 00:41:52
@lunitari0933 has joined the channel
forloricever 03:05:09
@wang1016 has joined the channel
forloricever 03:27:16
哈囉大家好

*怎麼知道這個專案的?*
PTT SOFT_JOBS 文章沒爆大概就沒看到了...
*您平常的活動或是工作?*
Backend engineer
*平常出沒的區域?*
San Jose
*您有興趣或者是關心的主題?*
Not sure.
*其他意見發表:*
感覺大家都好猛, 希望自己能跟上
👋 1
CY 03:44:17
@cychiang0823 has joined the channel
pichuchen 11:49:04
我發現我自我介紹沒有請大家附上 PTT ID 是我的錯 Orz 這樣怎麼找人啊
Kay 12:22:11
填寫的表單有吧
Kay 12:22:15
這邊沒有而已
對,就這邊沒有,所以有些 ISSUE 大家站內信有自我介紹,然後我覺得可以用 Slack assign 給誰的時候發現我看不出來誰是誰
John 12:44:49
*怎麼知道這個專案的?*
PTT SOFT_JOBS
*您平常的活動或是工作?*
區塊鏈後端工程師
*平常出沒的區域?*
新加坡/高雄
*您有興趣或者是關心的主題?*
golang/ system design/ backend
*其他意見發表:*
很期待和各位大神一起合作 🙂
PTT Id: johnhckuo
👋 1
Chris 12:49:02
*怎麼知道這個專案的?*
Soft_Jobs
*您平常的活動或是工作?*
golang engineer
*平常出沒的區域?*
三重/台北車站周邊
*您有興趣或者是關心的主題?*
golang
*其他意見發表:*
*PTT id:*
j406660003
👋 1
Timo Chiang 17:56:58
@chiang.timo has joined the channel
hcmlinj 18:00:40
@hcmlinj has joined the channel
Timo Chiang 18:14:58
*怎麼知道這個專案的?*
Soft_Jobs
*您平常的活動或是工作?*
backend engineer (PHP / Golang)
*平常出沒的區域?*
東京
*您有興趣或者是關心的主題?*
Golang / DevOps / Architecture
*其他意見發表:*
期待跟大家一起合作讓PTT更好!
*PTT id:*
chemberlain
👋 1
pichuchen 20:05:05
https://github.com/Ptt-official-app/Ptt-backend/issues/14

ISSUE 招領,這個應該比較簡單?

#14 [功能] 找同作者文章

根據 PTT APP 規劃,後台應該要提供找尋同樣作者的功能 預定透過 /v1/boards/{{board_id}}/articles API 實作 修改 PTT 後端系統協定增加參數 ?author={{search_author_id}} 來完成 初期演算法先以 O(n) 的演算法進行實作即可, n 為某看板文章數量。

我來認領!
OK,那請幫我在下面回應這樣
在 ISSUE 的下面
Chang Chen Chien 20:20:09
哈囉,我送出了一個 PR , 主要是關於專案開發環境的設置教學,希望大家能來幫忙看看有哪裡需要修改,謝謝!
https://github.com/Ptt-official-app/Ptt-backend/pull/19

#19 Update FOR_DEVELOPERS.md

Reference to <https://github.com/Ptt-official-app/Ptt-backend/pull/11|#11> • 刪除章節號碼,避免日後調整順序需要改動所有的章節號碼 • TODO: 使用 Makefile 與 shell script 自動化測試伺服器靜態資料與配置設定檔與專案編譯執行過程

❤️ 5
leadenlight 22:04:39
*怎麼知道這個專案的?*
PTT soft_jobs
*您平常的活動或是工作?*
後端工程師
*平常出沒的區域?*
台北市
*您有興趣或者是關心的主題?*
Golang k8s DevOps
*其他意見發表:*
*PTT id:*
leadenlight
👋 1

2021-01-30

CY 05:09:55
*怎麼知道這個專案的?*
朋友相報
*您平常的活動或是工作?*
Cloud Developer
*平常出沒的區域?*
Stockholm
*您有興趣或者是關心的主題?*
Distributed system & backend design / System Architecture / k8s
*其他意見發表:*
向各位大神學習!
*PTT id:*
沒有,平常可以透過 Slack 聯絡
👋 1
arbit 08:28:02
It's kind of hurting my eyes when most of the code logic in the root directory. Do we have a specific reason why we go with this route?
目前這個議題正在討論中,目前已經快有結論等待實作了。
sgtm.
👍 1
Alan Lin 15:02:26
@eric820209 has joined the channel
Alan Lin 15:26:57
*怎麼知道這個專案的?*
ptt軟工版看到
*您平常的活動或是工作?*
backend
*平常出沒的區域?*
台北新北
*您有興趣或者是關心的主題?*
clean code/microservice
*其他意見發表:*
*PTT id:*
csjs87
👋 1
Will 20:43:24
@hauhchen has joined the channel
Alan Tsai 21:27:55
@nb8503019 has joined the channel
Poyu Hsu 23:22:46
@jasugun0000 has joined the channel

2021-01-31

pichuchen 03:50:50
大家好,我這邊有個寫到一半的東西需要幫忙看一下,這份的難度比較高,主要是關於 Shared Memory 的部分,我做了 SystemV SHM 以及 MMAP 的兩個版本,還沒把它串起來

目前需要再增加一些測試案例這樣
https://github.com/PichuChen/go-bbs/tree/feature/cache/cache
pichuchen 03:52:50
他目前的用途是未來會將指定的 SHM Key 或者是 MMAP File 用 []byte 的方式回傳,這樣的話各 bbs 就可以直接修改 slice 內的內容來達成 IPC 了
chhsiao1981 08:17:01
https://github.com/Ptt-official-app/go-pttbbs/blob/main/shm/shm.go

shm/shm.go

``` package shm //#include "shm.h" import "C" import ( "os" "reflect" "unsafe" "<http://github.com/Ptt-official-app/go-pttbbs/types|github.com/Ptt-official-app/go-pttbbs/types>" log "<http://github.com/sirupsen/logrus|github.com/sirupsen/logrus>" ) func CreateShm(key types.Key_t, size types.Size_t, isUseHugeTlb bool) (shmid int, shmaddr unsafe.Pointer, isNew bool, err error) { flags := 0600 | IPC_CREAT | IPC_EXCL if isUseHugeTlb { flags |= SHM_HUGETLB } shmid, err = shmget(key, size, flags) log.Debugf("shm.CreateShm: after 1st shmget: shmid: %v err: (%v/%v)", shmid, err, reflect.TypeOf(err)) isEExist := false if os.IsExist(err) { isEExist = true flags = 0600 | IPC_CREAT if isUseHugeTlb { flags |= SHM_HUGETLB } shmid, err = shmget(key, size, flags) log.Debugf("shm.CreateShm: after 2nd shmget: shmid: %v err: (%v/%v)", shmid, err, reflect.TypeOf(err)) } if shmid &lt; 0 { log.Errorf("shm.CreateShm: unable to create shm: key: %v size: %v", key, size) return shmid, nil, false, err } shmaddr, err = shmat(shmid, nil, 0) log.Infof("shm.CreateShm: after shmat: shmaddr: %v e: %v", shmaddr, err) if err != nil { return -1, nil, false, err } return shmid, shmaddr, !isEExist, nil } func OpenShm(key types.Key_t, size types.Size_t, is_usehugetlb bool) (shmid int, shmaddr unsafe.Pointer, err error) { flags := 0 if is_usehugetlb { flags |= SHM_HUGETLB } shmid, err = shmget(key, size, flags) if err != nil { log.Errorf("shm.OpenShm: unable to create shm: key: %v size: %v", key, size) return shmid, nil, err } shmaddr, err = shmat(shmid, nil, 0) if err != nil { return -1, nil, err } return shmid, shmaddr, nil } func CloseShm(shmid int, shmaddr unsafe.Pointer) (err error) { cret, err := C.shmdt(shmaddr) log.Infof("shm.CloseShm: After detach shm: shmaddr: %v ret: %v err: %v", shmaddr, cret, err) if err != nil { return err } cret, err = C.shmctl(C.int(shmid), C.IPC_RMID, nil) log.Infof("shm.CloseShm: After close shm: shmaddr: %v ret: %v, err: %v", shmaddr, cret, err) if int(cret) &lt; 0 { return ErrUnableToCloseShm } return nil } func ReadAt(shmaddr unsafe.Pointer, offset int, size uintptr, outptr unsafe.Pointer) { C.readwrapper(outptr, shmaddr, C.int(offset), C.ulong(size)) } func WriteAt(shmaddr unsafe.Pointer, offset int, size uintptr, inptr unsafe.Pointer) { C.writewrapper(shmaddr, C.int(offset), inptr, C.ulong(size)) } func IncUint32(shmaddr unsafe.Pointer, offset int) { C.incuint32wrapper(shmaddr, C.int(offset)) } func SetOrUint32(shmaddr unsafe.Pointer, offset int, flag uint32) { C.set_or_uint32wrapper(shmaddr, C.int(offset), C.uint(flag)) } func InnerSetInt32(shmaddr unsafe.Pointer, offsetSrc int, offsetDst int) { C.innerset_int32wrapper(shmaddr, C.int(offsetSrc), C.int(offsetDst)) } func Memset(shmaddr unsafe.Pointer, offset int, c byte, size uintptr) { C.memsetwrapper(shmaddr, C.int(offset), C.uchar(c), C.ulong(size)) } func SetBCACHEPTR(shmaddr unsafe.Pointer, offset int) { C.set_bcacheptr(shmaddr, C.int(offset)) } func QsortCmpBoardName(shmaddr unsafe.Pointer, offset int, n uint32) { C.qsort_cmpboardname_wrapper(shmaddr, C.int(offset), C.ulong(n)) } func QsortCmpBoardClass(shmaddr unsafe.Pointer, offset int, n uint32) { C.qsort_cmpboardclass_wrapper(shmaddr, C.int(offset), C.ulong(n)) } func shmget(key types.Key_t, size types.Size_t, shmflg int) (int, error) { cshmid, err := C.shmget(C.int(key), C.ulong(size), C.int(shmflg)) shmid := int(cshmid) if shmid &lt; 0 { log.Errorf("unable to shmget: shmid: %v e: %v", shmid, err) } return shmid, err } func shmat(shmid int, shmaddr unsafe.Pointer, shmflg int) (unsafe.Pointer, error) { newShmAddr, err := C.shmat(C.int(shmid), shmaddr, C.int(shmflg)) if err != nil { return nil, err } return newShmAddr, nil } ```

pichuchen 12:20:37
雖然這樣說有點直接,不過上面那份和我目前需要請大家協助 Review 的是不同份。

主要差異點在於有沒有用到 C 來完成以及有沒有另外處理 GC 的部分。
Gary 21:42:44
https://github.com/Ptt-official-app/Ptt-backend/issues/25

我開了一個 issue「PTT 的發文功能」
小弟我對於 PTT 還不太熟悉,所以歡迎討論及認領,感蝦

#25 [主線] [PTT] 實作發文功能

*實作細節 / Details of Implement* 實作 PTT 很重要的發文功能 *API 細節* *Request* • Method: `POST` • Path: `/v1/boards/{{board_id}}/articles` • Body: ``` { "action": "add_article", "title": {{title}}, "article": {{article}} } ``` *Response* • Status: `200` • Body: ``` { "data": { "raw": {{raw_text}}, "parsed": { "is_header_modified": {{is_header_modified}}, "author_id": {{author_id}}, "author_name": {{author_name}}, "title": {{title}}, "post_time": {{post_time}}, "board_name": {{board_name}}, "text": { "text": {{text}}, "color_map": {{text_color_map}} }, "signature": { "text": {{signature_text}}, "color_map": {{signature_color_map}} }, "sender_info": { "site": {{sender_site}}, "ip_address": {{sender_ip_address}}, "ip_country": {{sender_ip_country}}, }, "edit_records": [{{edit_record}}], "push_records": [ { "type": {{push_record.type}}, "id": {{push_record.pusher_id}}, "ip_address": {{push_record.pusher_ip}}, "text": {{push_record.type}}, "time": {{push_record.time}}, } ] } } } ``` *期程 / Schedule* • 討論時間: 一週以內(2/7 前) • 實作時間: 待訂 • 確認時間: 待訂 *相關文件 / Documents* <https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k/edit#heading=h.o33bv47r1a5a|https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k/edit#heading=h.o33bv47r1a5a>

如果要走正規的 Restful API 的話
`"action": "add_article"` 可被移除

用 `GET` `POST` `PUT` `DELETE` 來代表四種操作
❤️ 5
Lex Liu 22:03:06
@amobe.momoko has joined the channel