[TIL]Golang TG社群上關於 PTT BBS 的討論懶人包

前提 一個關於 PTT BBS 後台 Golang 後端夥伴(因爲是交朋友專案,沒有薪水)的討論,在 Golang TG 的討論上也帶出關於 PTT 後台需求的討論。 以下經過整理後,貼上相關的討論內容。 以下先整理一些關於徵夥伴文的相關脈絡,裡面許多內容都是引用原文作者。 PTT 原文在這: moptt https://moptt.tw/p/Soft_Job.M.1610976994.A.2C8 ptt.cc https://www.ptt.cc/bbs/Soft_Job/M.1610976994.A.2C8.html 為何在找夥伴的文章上要求讀過 database/sql 與 go-sql-driver/mysql 兩個套件? 主要是風格問題,我(Pichu Chen) 基本上很擔心有人直接把 C Code Porting 成 Golang 的 Code, 然後註解通通都寫請去看 C Code 的哪個 function, 那這樣就GG了XD 關於 PTT BBS 找 Golang 夥伴,現階段目的? 這階段會想要先把整體 BBS 該有的讀寫的 interface 以及後續討論和採用的文化建立起來。 而目前我(Pichu Chen) 提出的解決方案是重新設計後端介面。 我們初期將會得到一個新的基於 HTTP 的後端介面, PTT APP 中台或者是行動 APP 的開發夥伴可以透過這個介面來存取 BBS 的資料庫。 在開發中有別以往 BBS 的開發流程,新的流程我會先將需要的功能寫成文字文件並且提出討論,一段時間後開立 GitHub ISSUE 進行實作。 因此可以確保新的程式碼是有文件以及清晰易懂的測試案例的,避免重蹈覆轍。 目前我們已經完成驗證帳號、取得看板(baord)列表、取得文章列表以及取得文章內容等功能,我們還需要持續完成新增推文(push/recommend)、新增文章、編輯我的最愛等等的功能。 但是我個人有個額外的請求,因為有先前在 Soft_Job 上提到的「東京都新冠肺炎對策網站(https://stopcovid19.metro.tokyo.lg.jp/)」的經驗,我還是希望能做到是由社群的多數人共同完成這個專案,而不是如同多數在台灣的開源專案,是由固定幾個「大神」來完成的。 PTT 目前的問題 (由輕重緩急排列) 介面/商業邏輯/資料庫的程式碼混在一起,造成調整使用者體驗上以及使用者介面上調整困難。 程式碼缺乏註解,可讀性極低。 原先的程式碼完全沒有 testing code. 程式碼完全沒有 benchmark 機制,修改架構仰賴設計者的威望而非科學證據。 大部分的架構仍然使用 32 位元的時間表示方式,這會導致 2038 問題。 密碼仍採用基於 DES 的雜湊方式,換句話說,強度不足。 過度仰賴共享記憶體的設計造成伺服器分散困難。 索引檔儲存方式彈性不足,不易新增新欄位。 轉信機制死亡已久。 站內訊息 (水球)、站內信無法透過手機即時通知使用者。 Current PTT 程式碼尚不支援 IPv6. 站內文章仍然使用 Big-5 儲存,不支援 emoji 或是台羅拼音。 不支援圖片上傳、音訊或是視訊通訊。 所以讀過 SQL 套件並不是要把 PTT 資料寫進資料庫? 其實bbs文章算滿階層的,就是文章自己擁有一個unique id,然後board去ref一個個的id,這個其實ptt已經有了,就是他們自家的網址轉換系統(像是: https://www.ptt.cc/bbs/car/M.1611180581.A.E43.html)這個什麼M.161180581.A.E43這類,所以既然有現成的key跟key generator,這方面應該可以不用重新設計。另外圖片跟log…er… bbs的資料應該絕大多數都不是圖片也不是log就是。 PTT 如果資料寫進資料庫的話 然後要不要把 BBS 的後端資料庫轉成 SQL 的討論歷史有點長了,但就結論而言數年來的討論下來,其實真的整個變成全SQL 架構的真的是沒有(也許巴哈有?畢竟他們家沒開源所以不知道)不過這階段我會想要先把整體 BBS 該有的讀寫的 interface 以及後續討論和採用的文化建立起來,因為先前確實有不少討論要不要轉成 SQL 的文章,但是實際上的效能測試也是幾乎沒有,那interface建立起來之後再試試看另外一個分支是以SQL實作的分支,這樣有效能數據之後這個問題才會比較容易在討論中有結論。 如果 PTT 資料有機會放入 RMDB 的話 如果說是把原有的資料庫轉成 SQL 系列的關聯式資料庫或者是 MongoDB 的話,我覺得優點上會是這些是現代開發人員熟悉的資料庫工具,再來是效能部分有其他團隊幫忙把關,以及有現成的分散式資料庫的設計。 缺點的部分我在數年前有問過學長,比較大的部分在於 SQL Command 需要另外做 Parsing,會有額外的開銷,再來是並不是所有東西都適合無腦塞SQL ,像是圖片或是Log檔設計我可能就不會把它放在關聯式資料庫上,我猜AWS...
繼續閱讀

[好書分享] 這些軍師不正常

作者: 夜觀天花板 出版社:高寶 出版日期:2019/06/12 語言:繁體中文 買書推薦網址:http://moo.im/a/789CHP 前言: 這一本是今年所讀完的第一本書。 這是一本相當有趣的書籍,透過類似 PTT 鄉民的寫作口吻來講解許多歷史上有趣的軍師。並且中間也穿插著許多知名的詩詞說明,讓閱讀起來相當的過癮。 比如說: 道衍:「王爺不要怕,貧僧是人畜無害的出家人,不如給您引薦幾個精通奇門之術的小夥伴怎麼樣?」 朱棣:「給本王來一打!」 系統提示:相士袁珙、卜者金忠加入燕王府,恭喜朱棣獲得資深神棍隊友×2。 相當多有趣的口吻,來讓閱讀上可以輕鬆又自在。 其實同系列好像還有一個「這些皇帝很有事」,是我接下來要閱讀的內容。 內容簡介與心得: 皇帝很有事、軍師不正常,國家馬上就滅亡。 腦洞大開與嚴謹考證激出的完美歷史新讀法! 介紹帝系、佛系、法系這三系共十四種奇葩軍師, 輕鬆風趣的口吻加上講究嚴謹的考究帶你從另一個視角看歷史 章節條列 第一卷 帝系軍師:不行,免談,我做主 第一章 易燃易爆炸的偏執狂──王安石 第二章 人格分裂的兩個世界──張居正 第三章 令人恐懼的完美主義者──諸葛亮 第四章 誓做中華FLAG第一人──曹操 第二卷 佛系軍師:好的,都行,隨便你 第一章 戲精牆頭草症候群的誕生──蔡京 第二章 在修仙的妄想中如魚得水──李泌 第三章 佛系養生,瞭解一下──司馬懿 第四章 逃避雖然可恥但很有用──蘇味道 第五章 別說了,我有恐妻症──房玄齡 第三卷 法系軍師:閉嘴,安靜,別多話 第一章 行走江湖,全靠一張嘴──蘇秦 第二章 首例懟人症候群病毒誕生──魏徵 第三章 厲害了,我的超憶症──劉伯溫 第四章 令人窒息的誠實症候群──晏殊 第五章 真.佛系精神分裂作亂史──姚廣孝 一開始就是提到了比較獨斷的幾個軍師(曹操原來是軍師?),但是許多人其實文學造詣也都相當的高。不論是王安石的詩詞,還是諸葛亮的出師表,也都有在這一個階段提到。 到了後面的許多不同系列的軍師,也都提到許多他們的生平事蹟,讓讀者可以清楚的了解到這些軍師的生平之外,因為「伴君如伴虎」的關係,這些軍師的政治生涯也是起起伏伏。 許多時候大鳴大放,但是也會被貶謫到地方官去。 這些有趣的事蹟也會在這一本書裡面提到。 心得: 這一本書相當的舒壓,因為整體口吻就是用 PTT 鄉民的口吻來幫你解讀許多史書上面的內容。 整個相當的輕鬆,但是作者也會附上原文,讓讀者在相比較原文與作者的鄉民口吻上,會更加的佩服作者細心程度。透過這些有趣的口吻,來提升整本書的可讀程度。 由於我小時候經常閱讀相關的詩詞(要打電動就得要先被一首唐代詩詞),所以許多文字在作者的重新解釋下也變得更加的有趣了。推薦大家可以拿這一本書來當輕鬆的小品來讀喔。
繼續閱讀

[TIL][讀後心得] 分散式系統現實世界的拜占庭將軍問題 (note from CloudFlare - A Byzantine failure in the real world)

前提 學習 Raft 的演算法的時通常都會將 Byzantine Failure 給排除掉,想不到在去年十一月底的 CloudFlare 的 incendent report 竟然用了現實世界的拜占庭問題來當作標題,就用這個來整理一些思緒。 什麼叫 Byzantine failure 在分散式系統中,不同電腦之間會相互的溝通作為「Consensus Communication」的資料確認流程。 需要不同電腦間,回報自己將要做的事情,或是進行 leader 投票的流程。 如果這時候發生了有一台電腦,跟某些團員講 A 跟另外一群團員又講 B 的狀況,造成整個團體無法達成一制性,或是達成了非預期狀態,就被稱為是 Byzantine Failure 。 許多的狀況下, Consensus Algorithm 舉凡 Paxos 跟 Raft 都會先假設 Byzantine Failure 是不存在的,因為這個問題會將 Consensus 複雜度又提升到另外一個境界。 參考文章: Wiki 拜占庭將軍問題 關於 CloudFlare 的復原機制 探討比較複雜的問題之前,其實這篇文章還有一個有趣的角度可以觀察。 就是如何透過 CloudFlare 的 Incident Report 來查看他們針對系統維護上有那一些備援機制。 服務備援機制 每一個服務都是一系列的 Rack Servers 每台機器有兩個 switches 每個機器主機架有兩個以上的電源供應設備 每個 server 都使用 RAID-10 的備份機制 (也就是 RAID 1 + RAID 0 的備份機制) 每一個 Rack 至少都是三台機器以上。 發生的問題 (圖片解釋: 左上角為 Server 1, 右側為 Server 2,下方為 Server 3 也是 Leader ) 由於 Server 1 到 Server 2 的網路發生問題。 造成 Server 1 與 Server 2 發生不同步的資訊問題。 Server1 認為 Leader (Server 3) 已經下線 Server 2 認為 Leader 是正常運行。 也是因為這樣的原因, CloudFlare 將這個問題在為 Byzantine Failure Reference Cloudflare Dashboard and Cloudflare API service issues A Byzantine failure in the real world Raft does not Guarantee Liveness in the face of Network Faults wiki: 拜占庭將軍問題 Raft lecture (Raft...
繼續閱讀

2020 年度回顧與展望

2020 年度回顧 女兒健康成長(父母最開心的事) 公開演講 13 場。 (而且年底公司大場,一天還講兩場) https://github.com/kkdai/slides 英文國際演講 2 場(一場日本 DevDay) https://github.com/kkdai/slides 15 本電子書閱讀. http://www.evanlin.com/categories/ Github 752 commits (2019 691) https://github.com/kkdai 3 場黑客松(梅竹,內部,校園競賽) 持續運動(但是運動量沒有之前高,要努力) 61 篇部落格(持續寫作,終生學習) 提攜後進,福音戰士二號機大有潛力 MHW, MHGU, 期待著 MH-R 2021 年度期許 家人健康 再瘦一點 Golang in Machine Learning
繼續閱讀

[好書分享]賈伯斯傳(最新增訂版)(Steve Jobs)

賈伯斯傳(最新增訂版) Steve Jobs 作者: 華特.艾薩克森 原文作者: Walter Isaacson 出版日期:2013/09/11 買書推薦網址:http://moo.im/a/ehEGJY 前言: 這一本是今年所讀完的第十五本書。 其實這本書很捨不得看完,因為邊看這本書我習慣邊看著電影。或是邊看著蘋果的發表會來了解其中的一些細節。其實當年對於賈伯斯的認知,都是來自於早期的矽谷相關電影「微軟英雄」。 雖然這部電影其實也蠻久的了,但是許多的描述也是相當的深入,對其他相關的書籍與電影都影響相當的大。 後來由艾希頓庫奇所拍攝的「賈伯斯」,則更深入得探討到賈伯斯的內心轉折。也很建議大家來看。 最後,來談到這本書。高達六七百頁的書籍。內容包含了學生時期的賈伯斯,一直到賈伯斯因為癌症過世之前的心路歷程。都包含在其中,很值得推薦一看。 內容簡介與心得: 人人都知道賈伯斯不遺餘力捍衛隱私,這位傳奇性的企業家從未寫過回憶錄,但他在兩年間,接受本書作者艾薩克森多達四十餘次的深入訪談,並允許他遍訪他的朋友、親戚、競爭對手、仇人和同事,總數超過一百人。 艾薩克森寫出「最真實的賈伯斯」,書中描述這位創造力旺盛的企業家雲霄飛車般驚險刺激的一生。賈伯斯執著的個性、追求完美的熱情和狂猛的驅力推動六大產業革命,包括個人電腦、動畫、音樂、電話、平板電腦和數位出版。 這不只是賈伯斯的故事,也是一本談創新的書。在這個數位時代,很多企業都努力走在創新的最前頭,許多國家也汲汲於建立創新經濟,但就獨創、想像和創新,賈伯斯無疑是標竿人物。他深知要在二十一世紀創造出有價值的東西,必然要讓創造力和科技結合,因此他打造的公司,不但要有跳躍的想像力,更要呈現鬼斧神工般的科技工藝。 章節條列 1955-1980.天生反骨 這個章節講的主要是從小到求學時期到他的蘋果電腦公司的創立,並且詳細的敘述了他在學生時代在雅達利打工的怪僻。當時的他不愛洗澡,所以都是晚上才上班。但是因為寫程式的功力很了得,常常可以解決很困難的問題。所以當時的主管就讓他晚上才上班,這樣也可以避免他跟其他人的來往。 到了 Apple II 的大賣,也讓蘋果電腦變成上市的公司。瞬間也讓賈伯斯必須要在很年輕的時候就要率領著一堆比起他資深太多得各種專家來經營公司。 1980-1991.大起大落 從上市之後,麥金塔的打造更是讓蘋果電腦登上 1984 年的超級盃廣告。 但是隨著麥金塔的上市,隱憂也開始了。 蘋果電腦內部逐漸分裂鬥爭。賈伯斯也因此被趕了下來。 但是離開了蘋果的賈伯斯,雖然失意但是卻因此有機會成為皮克斯的股東。這裡也放一下最知名的 Pixar 的標誌。 1991-2004.不同凡想 藉由著 NexT 的併購案,蘋果電腦透過併購了賈伯斯後來創力的 NexT 而邀請賈伯斯回鍋當 iCEO(interm-CEO),之後則有了 iMac 等等,讓人驚艷的新產品。 也是在這個同時,皮克斯也迎來了最大的成功(玩具總動員的上映),皮克斯後來也接受了迪斯尼的併購,並且接手了動畫部門的開發。 這個階段的賈伯斯則是在前十年的沈澱後,完全堅持在更完美的產品研發上。 2004-2011.超越死亡 最後的階段,雖然 Apple 也開發出了劃時代的產品 iPhone 。 完全改變了應用端從桌面到行動裝置的年代,但是賈伯斯的身體也對他發出了抗議。 癌症的發病與延誤的治療,讓病情無法馬上獲得控制, 即便後來使用了許多相關療法,還是讓病情無法緩和下來而復發。 接下來,如同大家所了解的,到了過世的前幾天賈伯斯才卸下了蘋果 CEO 的重擔。在家人的陪伴下離開了。 心得: 記得當初賈伯斯過世的時候,許多人都相當的難過。 我想除了是紀念一個偉大的創業者,產品經理。更是紀念一個堅持己見的產品愛好者,經常在許多時候,都會有著想要偷懶與得過且過的心情。 但是受到賈伯斯對於產品的堅持與追求完美的信念,又會開始努力下去。 許多人說,賈伯斯也是人他也有很多失敗的過程。這本書也有他人性的一面,不論是年輕時候不願意面對自己的小孩,到後來又相當的後悔。不論是更多的失敗的產品,或是他被逼退的過程,更走詳細的敘述。蘋果之所以成為偉大的公司,正也是在於賈伯斯的統一集權的狀況。 不論你喜不喜歡賈伯斯,我們都得承認「Steve Jobs」 這個名詞應該會成為我們心中對於產品不停追求的象徵。 最後,這一句來自 Think Different 裡面的文字,分享給大家。 The people who are crazy enough to think they can change the world are the ones who do.” ──Apple's "Think Different" commercial, 1997
繼續閱讀

[好書分享] 韓國人和你想的不一樣

韓國人和你想的不一樣 人妻太咪的韓國有趣文化 × 特殊習慣 × 超妙生活觀察 作者: 太咪 出版社:時報出版 出版日期:2014/08/25 買書推薦網址:http://moo.im/a/16evQS 前言: 這一本是今年所讀完的第十四本書。 我說過,我通常會一本嚴肅的書跟著一本輕鬆的書來調劑身心。跟韓國與日本同事在溝通的時候,雖然除了語言本質之外,會發現其實大家的文化上差異真的很大。這本書就是買來讓我更了解韓國同事,也希望不要踩到一些文化上的雷。 內容簡介與心得: 瘋韓劇、追偶像、學韓文,也要了解韓國人的一切; 對韓國有成見?也許你對他們有些誤會! 太咪帶你深入日常生活,從此對他們瞭若指掌, 就算第一次走跳韓國也能立刻上手! 章節條列 Chapter 1 走跳韓國!食衣住行實用指南 Chapter 2 現實就像韓劇一樣浪漫嗎? Chapter 3 第一次融入韓國就上手! 第一章節有許多跟韓國食衣住行有趣的經驗分享,包括了韓國鐵筷子的由來。韓國的泡菜湯不是拿來喝的,是拿來洗筷子的。更有許多有趣的名字,「大醬女」,「快快病」。也有許多韓國有趣的習性,坐地上,早餐吃米飯,泡菜,見面先問年紀,聚會的續攤(日本好像也有?)。 更有提到有趣的汗蒸幕文化,職場的規則跟加班的習性。 心得: 這本有許多有趣的內容分享,雖然對我來說都是第一次知道的知識。但是常看韓劇的朋友可能都有觀察到一些小細節,很推薦大家來看這本書一起來了解韓國文化上的差異。這樣在跟朋友(同事)溝通時候的背景 context 比較能夠體會了。
繼續閱讀