[研討會心得] 2019/09/05 TWJUG@LINE

前提 大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。在 2019/09/05 的晚上,很開心能夠再邀請 TWJUG 社群來到 LINE 台北辦公室來舉辦社群聚會。這次的講者是 LINE 東京辦公室的 Yoshida Shinya 和 Kafka Summit 2017 擔任過講者的 Yuto Kawamura,講題分別是 ZGC for Future LINE HBase 和 Kafka Broker performance degradation by mysterious JVM pause 。 活動網址: KKTIX: https://twjug.kktix.cc/events/twjug201909 ZGC for Future LINE HBase / LINE Shinya Yoshida 投影片 首先帶來的是來自於 LINE 的同仁專職在負責 HBase 相關處理的 Shinya Yoshida 來分享關於 HBase 在 LINE 上面的相關應用。HBase 是一個廣為使用在 Java 上的 NoSQL 應用,擁有著快速的反應時間與高可用性 ( High Availability ) 。 由於 JVM 在 GC (Garbage Collection) 的處理上會動用到 STW (Stop The World: 也就是中斷存取的動作來做 GC ) ,這在對於需要大量連線與高效能的處理應用上是相當困擾的。 本篇演講就是分享相關的效能調校與觀察心得, 一開始講者先分享關於 Gargage Collection 的相關類別與種類。 首先講者分享 GC 有兩階段主要的處理: Finding the garbage: 解釋: 也就是要先將可以回收的記憶體資源標記成 Garbage 。 應用演算法: 分為兩種主要方式,一個是透過 Counting Reference 也就是對於變數的使用做計數,做為可以回收的標記。另一種則為標記( Mark ) 也就是針對資料的相關使用方式透過樹狀結構來整理,如果沒有相關連的變數,代表該變數可以被回收的可能性就相對的高。 Collect the garbage and defrag : 解釋: 接下來就是回收記憶體資源後,整理破碎可用的記憶體空間。 應用演算法: Sweep/Compaction: 先將可以回收的記憶體回收之後,將剩下不連續的記憶體整理過後變成連續可使用的記憶體。 Copy: 相較於前一個方式, Copy 則直接使用一整個新的記憶體空間。直接將可以使用的連續性的記憶體複製過去。這樣比較消耗記憶體空間,但是對於效能上相較得比較快速。 這張圖講解了許多近期的 GC 演算法,在對於 DeFragment 的處理上都是使用 Copy 的方式,雖然比較消耗記憶體但是速度相對的快。針對這些方式可以看到有不少的 GC 演算法可以選擇, G1GC, ZGC 跟 Shenandoah 跟以往的 Old GC 。 而在 GC 的選擇方向上講者有以下以些方向可以推薦給大家參考:...
繼續閱讀

[研討會心得] 20190829 NAVER x LINE AI-Rush 2019 總決賽心得分享

什麼是 AI RUSH 大家好,我是 LINE Taiwan 的 Technical Evangelist – Evan Lin。去年於日本東京舉辦的 LINE DEVELOPER DAY 2018 會中,LINE 技術長朴懿彬以「Next LINE」定調 LINE 在技術上的發展願景,其中人工智慧、區塊鏈,與金融科技三大領域的相關技術,將扮演舉足輕重的角色,並以兩大關鍵字「串連(Connect)」與「互惠生態圈(Mutually Beneficial Ecosystem)」點出實現「Next LINE」所帶來的具體價值,讓 LINE 的服務持續進化。 為了探索 AI 的更多可能,並為 AI 開發社群提供一個切磋交流的平台,LINE 將首次與南韓市占第一的搜尋引擎 NAVER 聯手舉辦以人工智慧為主題的跨國黑客松「AI RUSH 2019」。「AI RUSH 2019」官方網站:https://ai-rush.com/ 活動過程: (圖片截至於 AI-Rush 官方網站) 整個 AI-Rush 活動分成兩個大部分,線上初賽與線下的決賽。 首先線上的初賽題目為「圖像分類 (Image Classification)」的題目,參賽者必須在 08/13 之前送出第一個階段的解法,最後經過挑選出最後的決賽隊伍,前往韓國春川的 NAVER Connect One 進行總決賽。 經過了第一階段的激烈競爭之後,透過第一階段的結算分數選出了總共三十個隊伍。要出發前往韓國來進行總決賽。 這次很開心台灣有四個隊伍進入了決賽,我也在韓國的仁川機場一路的陪伴他們往總決賽的場地勇敢邁進。 NAVER Connect One 總決賽: 08/26 全員到齊 08/26 當天在仁川機場迎接台灣的四隊代表隊伍後,就直接驅車前往位於韓國北方春川的 NAVER Connect One 的決賽場地。第一天到了當地其實已經是傍晚了,稍作休息後,我們就直接到餐廳來吃晚餐。 NAVER Connect One 的餐廳其實相當的乾淨,並且有專門的人員幫忙打理所有參賽者的餐點。在這邊的餐飲讓比賽的夥伴相當的安心與滿足。 吃完了晚餐過後,不少隊伍回到房間開始討論明後天的工作分配與相關準備,可以看得出來每一個參賽夥伴都躍躍欲試的樣子。 當然活動的特製貼紙與 LINE Developer 貼紙也是不會少。會場四周都有提供滿滿的貼紙讓參賽者可以自由地取用。當然也有不少本次活動特製的 “AI RUSH 2019” 的貼紙。 08/27 正式開工 “AI is the new black” 是這一次比賽的 Slogan 也是取自於 MIT Technology Review 2017 的文章。也就是代表著 AI 就是這個時代中最令人興奮與讓人覺得最跟得上時代的。 這也是 AI-Rush 想要參與的人都能感受到的。 這個會場是這次主要 AI-Rush 總決賽的 Hacking 的場所,在這個光線充足並且舒適的場地討論其實相當的棒,外面並且有供應源源不絕的甜點,飲料跟泡麵,讓每一個參賽的夥伴可以專心的討論與思考該如何尋找出最適合的運算方式。 就算是晚上或是半夜你都可以到這個會場中找到食物與參賽者來討論。 第一天的晚上就聽到有不少的團隊夥伴,因為半夜想吃點宵夜,於是到了會場跟大家一起 Hacking 。除了可以找靈感,也可以跟不少參與的夥伴來相互認識。 Quiz Game 在兩天一夜的 Hacking 過程中,每一個參加隊伍都相當的緊繃,全部人都相當嚴肅的面對的電腦螢幕。為了讓每一個參與的夥伴可以除了 Hacking 也能夠盡情地參與討論與互動。 主辦單位在 10:00, 14:00, 16:00, 20:00 與 22:00 都有安排小測驗 (Quiz time) ,並且在每一個 Quiz 的獲勝者都有機會可以得到相當珍貴的相關贈品。 這樣的小測驗除了可以讓每一個參賽的隊伍稍微放鬆心情之外,也可以吸引更多的參賽者在會場跟其他隊伍的互動。 讓整個活動相當的生動有趣。 小測驗的形式分為以下數種: Quiz: 小挑戰 “剪刀,石頭,布” 這是一個很有趣的互動遊戲,也是一個讓台下的辛苦參與者可以伸展身體。透過主持人手舉起來玩猜拳遊戲,必須要贏過主持人(如果平手也被視為是淘汰),才能晉級。剩下最後的幾位才有機會來前面領取相關的贈品。 也有其他有趣的小挑戰: 看兩張圖片找出不同的點。 猜猜圖片是誰的照片。 一些關於 LINE 的小歷史。 這些小活動的設計,除了可以讓會場的參與夥伴們有相關的互動之外,也紓解了競賽所產生的緊張氣氛。讓每個參賽者可以更認真的面對問題。 Treasure hunting 除了有趣的小 Quiz 之外也有尋寶遊戲。主辦單位在活動會場周圍與餐廳的四周有隱藏有一些小紙條,只能能夠找到這些小紙條,也可以在每天的結尾前跟主辦單位來兌換相關贈品。 所以可以看到許多的參加隊伍除了在會場...
繼續閱讀

[研討會心得] GopherCon2019 心得分享 - How Uber Goes (1)

前提 偷個懶來看一下 GopherCon 2019 ,順便了解幾個有趣的議題。 GopherCon 2019: Elena Morozova - How Uber Goes Youtube 最近 GopherCon 2019 的影片陸續上架了,歡迎大家記得去查看。一起來了解一下今年最新的分享。 今天分享一下這一場我覺得很不錯的題目,就是 How Uber Goes 。 Uber 工程師分享了從 2015 年之後導入了 Golang 之後遇到的幾個常見問題: 建立大量的新服務。 經常要切換不同的服務開發。 (Context Switching) 要交付全球化的服務。 而解決方式則是透過以下三種方式: Dependency Injection Consistent Code Structure Monorepo 由於這些問題,所以 Uber 內部首先為了方便建立不同新的服務而開發了 Dependency Injection Library - fx ( https://github.com/uber-go/fx ) ,透過 fx 開發不同新服務也變得更加的方便。 接下來有提到如何將每個不同服務會使用到的架構做一致性的架構設計,讓不同的服務之間程式碼能夠變得更好維護。最後透過 Monorepo (也就是所有的代碼都在一個很大的 repository 上面,而不是個別專案中) ,在套件版本的更動上也變得更加的方便(可以一個 commit 幫大家更新)。 Refer: https://github.com/uber-go/fx https://godoc.org/go.uber.org/fx https://eng.uber.com/tag/uberfx/ https://www.youtube.com/watch?v=LDGKQY8WJEM
繼續閱讀

[Coursera] How Google does Machine Learning

Machine Learning with TensorFlow on Google Cloud Platform 系列上課心得 How Google does Machine Learning (本篇文章) Introduce Tensorflow How Google does Machine Learning 課程鏈結: 這裡 文章鏈結: 課程僅有一個禮拜。本篇文章。 前言: 這是第二次的 [ML Study Jam 培訓計劃] 的免費課程,也是可以透過免費學習的經驗來拿取 Tensorflow T shirts 的計畫,當然我是不會錯過的。但是這次的課程是透過 Coursera 來完成,所以整體的課程上比重變得比較多,而且需要有更多影片與相關課程內容的討論。 課程大綱: 第一週主要都是 Machine Learning 經常會遇到的問題,以及 Google 在這方面是如何解決的。算是比較簡單的常識,這裡就不贅述。幾個需要注意的部份如下: 許多在實驗室產生的數據模型 (model) 拿到實際上線無法正確使用,是因為資料的產生方式。不夠新,不夠實際。最好的改善方式是透過批次建立模型與 streaming data。 這邊有討論到一些建立數據模型的時候,如果發現效果不夠好的時候應該要如何處理。一些建立的方式有: 找出尚未發現的影響力特徵( Feature ),將其加入。 增加適當的訓練數據。 到後半段主要介紹在 Google Cloud 裡面的一些基礎運用,由於大部分東西重複性有點高,在這裡就不贅述。 小結: 整篇課程算是相當的基本,不小心選錯了。就當作是複習吧! Reference: How Google does Machine Learning
繼續閱讀

[TIL][Golang] 如何在你電腦上安裝嘗鮮版本的 Go(lang)

Go 1.13rc1 在 08/22 推出,裡面包含了一些新的功能讓人想試試看。但是僅僅想要測試新的語言功能卻不希望更改工作環境的設定。這裡提供一個新的方式,就是直接將最新版本到 Go binary file 下載,而不直接替換你工作環境。 Download Go binary by using go get 透過 go get golang.org/dl/go1.13rc1 的指令(後面也可以快速更換成任何你需要的版本),你就可以下載安裝檔案在你的 $GOBIN 下,透過執行 go1.13rc1 download 就會下載完整的執行檔案。 預設的安裝路徑會是 /Users/YOUR_NAME/sdk/go1.13rc1/ 。 之後就可以透過 go1.13rc1 直接嚐鮮最新版本的功能。 安裝多個版本的 Compiler 透過這樣的方式,你也可以快速的安裝多個版本的 Go(lang) binary 來做相關的 regression testing 或是跑一些 performance benchmark 。以下為一個簡單的範例來安裝舊版本的 Go 1.11 : go get golang.org/dl/go1.11 $GOBIN/go1.11 download 希望這些能幫助到大家,一起來嚐鮮吧!!
繼續閱讀

[Golang] 你也喜歡 Golang 嗎? 一起來當 Go GDE (Google Developer Expert)

前言 三年前(2016/08/21)第一次報名的大型研討會演講,就是在 COSCUP 講「如何透過 52 個專案來學習 Golang 」 。 之後就是舉辦 golang.tw 的社群活動,並且在許多地方持續地講解跟 Golang 相關的議題 (參看我投影片整理鏈結 https://github.com/kkdai/slides)。 終於也在三年後的同一天,就在 Go 在五月之後正式成為 GDE 的項目之一之後,筆者通過了 Google 的相關面試成為 Golang 全球首波的 Google Developer Expert 的一員。 這篇文章會跟各位分享一下什麼是 GDE (相關的權利跟義務),並且不免俗的在這篇文章裡面會再介紹一次什麼是 Golang (大多是投影片整理),最後分享該如何成為 Google Developer Expert 。 什麼是 GDE (Google Developer Expert) Google 擔任 Developer Relations Program Manager - Eric 這篇文章不能錯過 ( 為什麼你應該申請成為 Google Developers Experts (GDE) ) ,為了保持資料正確性,在此都會節錄一些官方統一宣傳的義務跟權利。 成為 GDE 後的福利 GDE 計劃以及背後支持的產品單位會依據當時的資源與活動狀態來安排活動或給予 GDE 福利。平時您可以與您所在地區的 Google Developer Relation Regional Lead 來討論活動的各種資源協助,而以全球活動來說 : GDE 計劃每年都會舉辦至少一次全球峰會(GDE global summit),可以認識其他一樣有熱情的人(興奮)。 邀請該領域的 GDEs 參加 beta program / focus group / … 等活動來與 GDEs 們互動,讓 GDEs 有一定的份量能影響產品或技術的發展。(Golang 這邊希望可以參與更多討論跟分享) GDEs 可能會優先嚐試或取得 alpha/beta 期的產品或免費使用額度。 參加 Cloud Next 或 Google I/O 的機票住宿補助等等。 (我個人是希望有 GopherCon :p ) 當然這些福利都是視情況而定。 以上都是擷取自 Eric 的文章“為什麼你應該申請成為 Google Developers Experts (GDE)”,但是筆者本身的原因如下: 認識其他 GDE : 就像筆者不喜歡只參加研討會而沒有機會上去講(當初去 Google I/O 其實我也弄了投影片想衝上去 XD ) ,因為想認識講者最好的方式就是當講者。你想認識其他強到爆炸的方式,就是你也要當上 GDE 跟著他們到 GDE Submit 裡面去相認。 讓台灣 Go 社群有更多曝光度: 本次入選很榮幸是在全球第一批,應該也是少數的華人之一。主要當初很積極要爭取的原因,除了筆者超愛這個 Go 這個語言之外,就是也希望讓台灣 Golang.tw 社群能獲得更多的注意,因為每次要辦活動來找國際級的 Golang 講者都無法被注意到。 身為社群的主辦人之一,這次一些私心 :p 。 主要是這兩個個人因素,在此跟大家分享一下。 成為 GDE 伴隨來的義務: 因為這是一個鼓勵性質的計劃,計劃希望認可專業開發人員的付出,並不是要找免費的勞務資源,我們知道開發人員都有可能因為忙碌或是工作關係而無法安排太多的活動。...
繼續閱讀