[研討會心得] LINE Shopping App with Flutter: 使用 Flutter 來打造 LINE 購物的手機雙平台應用

寫在前面 大家好,我是 LINE Taiwan DevRel 團隊的 Evan Lin。很開心在這裡跟各位分享本年度的第三場開發者小聚中,由 LINE Client Team - Evan Fang 所帶來的分享 - 「 LINE Shopping App with Flutter 」。 KKTIX 活動網頁: 活動網址 活動全文網址: TBD 投影片 演講影片 什麼是 「LINE 購物 App」? (LINE 購物 App 功能介紹) 講者分享如何透過 Flutter 來開發下載榜第一名的 「LINE 購物 App」。 首先主要提到 LINE Taiwan Client App 團隊主要有負責的產品有: LINE TODAY 的 App (在印尼有上架) LINE SDK 也就是大家看得到的開源套件: https://github.com/line/line-sdk-android https://github.com/line/line-sdk-ios-swift 當然也有協助開發 LINE App 的一些功能。 最新的也就是今天要介紹的「LINE 購物 App」 關於 「LINE 購物」的介紹 LINE購物 與多家知名購物網站合作,匯集超過2,000萬件商品,只要在搜尋處輸入想找的商品,讓你一個網頁就能一次看各家購物網站的商品資訊和價格,讓你從此不用處處比!透過 LINE購物 不僅僅可以一站找到你需要的商品,還可以獲得更多的回饋。 Flutter 打造 LINE 購物專屬 APP 為了提升更佳的使用者體驗,打造更精緻的服務介面,LINE 購物也決定在今年推出了專屬的 APP 。 但是希望能快速地到使用者的反饋,並且即時的改善更好的使用者體驗。 開發團隊選擇使用 Flutter 作為開發的程式架構,透過 Flutter 可以一次開發出 Android 與 iOS 的應用。 而選擇 Flutter 的理由如下: 效能考量: 以整合性設計框架而言,透過 Widget Rendering 可以讓 Flutter 直接在 Canvas 上面操作,具有類似於 Native App 的效能。 快速開發: 單一的 code base 來開發兩個平台的 App。在 UI 元件的開發上,很適合透過 Flutter 使用。可以確保 UI 設計的一致性,讓使用者有相同的使用體驗。 Flutter 支援 Hot reload 可以在 IDE 上面只重新編譯更新的部分,能夠快速的看到變更的成果。 豐富的開發資源: 豐富的官方導覽教學,還有 Dart Devtool 與 pub.dev 開發資源可以參考。 最後成果 最後的成果也相當的亮眼,使用 Flutter 可以在三個月之內於 iOS 與 Android 平台上完成一致性的使用設計體驗。 並且獲得當月份的下載量第一名的肯定。 遇到的問題分享 當然在使用 Flutter 開源套件也會遇到一些問題,但是 LINE 開發團隊也有跟 Flutter...
繼續閱讀

[好書分享] 找到你的為什麼: 尋找最值得你燃燒自己、點亮別人熱情的行動計畫 (FIND YOUR WHY : A Practical Guide for Discovering Purpose for You and Your Team)

找到你的為什麼 作者: 賽門.西奈克、大衛.米德、彼得.道克 原文作者: Simon Sinek、David Mead、Peter Docker 買書推薦網址:http://moo.im/a/7ertCS 前言: 這一本是今年所讀完的第八本書。 賽門.西奈克曾經在一段影片中提出「黃金圈激勵理論」,裡面提到驅使人類去行動的三個圓圈。外層是做什麼的「WHAT」,中間而是如何做的「HOW],而在中心點就是最重要的「WHY」。 這一本書就是再將這段影片的內容加以詳述的一本書,也是我推薦給每一個想要激勵別人的人都該看的一本書。 內容簡介與心得: Thinkers50全球管理思想家第18名、新世代領導大師西奈克10年前首創黃金圈激勵理論, 他的TED同名演講盤踞最受歡迎前三名,吸引近四千萬人觀看。 《先問,為什麼?》全球銷售破百萬冊,持續高踞亞馬遜分類榜TOP 1。 愈來愈多讀者開始問:「我跟我的團隊該怎麼做,才能找到為什麼?」 西奈克與團隊在全球各領域累積10年顧問經驗,將「為什麼」理論發展為完整的行動計畫, 適用於每個人、每個團隊,幫助大家踏上為什麼的旅程,發揮最大潛能! 「人們不會買你做了什麼,人們會付錢去買你為什麼而做它」 by Simon Sinek 「你是否曾經跟一個陌生人介紹過你的工作,你是如何敘述你的工作內容?」 這本書的一開頭,作者用了自己的一個例子,來講解工作熱情的重要性。他試著再坐飛機的路途上,跟著鄰座的人來敘述他的工作。如果是你,你會如何敘述自己的工作? 一開始你可能先說明你的工作,再來你可能會跟他人分享著你日常的工作內容。 這樣的會談相當的令人乏味,但是如果你試著分享著自己做工作時候的心情與想法,為何想要做這份工作? 與這份工作帶來給你的意義,慢慢的你就會找到你工作上的「WHY』,你會覺得興奮,感到熱情萬分,你會認為你做了一個世界上最好的工作。 這本書透過「為何需要找為什麼?」「你如何找到你的為什麼?」再來慢慢的帶領你如何幫助你與你的團隊來找到你們的為什麼。書本的後半部分偏重於整個「團隊探索營」該如何舉辦,如何開始,如何能讓團隊的探索引導到正確的方向。進而你們就能找出團隊的強項,讓團隊們來追尋共同信仰的價值,追尋你們的夢想(也就是你們的 WHY )。 心得: 整本書很像是該十八分鐘影片放大版,但是因爲重點圍繞在如何帶領團隊一同探索。所以很多「團隊探索營」的細節。但是整本書的理念相當的正確,也很適合做 Developer Relations 的人來好好看看。 因為許多人不了解開發者關係,不懂開發者關係,所以無法了解工作每一個環節所帶來的意義。 總是認為 DevRel 在辦活動,去演講,跟開發者打好關係。 這些都沒有錯,但是就像是由 What -> How -> Why 去敘述一樣,無法讓人打動人心。 雖然這是團隊探索的方式,卻不是一個跟他人分享的方式。真正的方式應該由 Why -> How -> What 來敘述著每一份工作。這樣才能讓許多人了解日常工作細節的重要性。 舉個例子,如果要做 Internal Evangelism 。 那麼應該是要透過分享與激勵他人的成長來讓內部同仁的自我成長(Why),所以我們鼓勵同仁們去分享。 讓同仁們了解分享所帶來愉悅的心情與成長的喜悅(How),進而讓他們自我成長。 所以我們舉辦內部讀書會,廣設工作坊甚至是舉辦外部活動來讓同仁去外部演講,去官方部落格來撰寫文章 (What) 。 由 Why -> How -> What 來了解他人工作,就會變得相當的合理與精確。許多時候的辛勤工作也都能被體會。 也建議每一個讀者來看看這本書,一起找到你們生命中的 Why 。
繼續閱讀

[研討會心得] 2020/10/21 TWJUG@LINE

前提 大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。在 2020/10/21 的晚上,很開心能夠再邀請 TWJUG 社群來到 LINE 台北辦公室來舉辦社群聚會。這次的講者一共有四位,而其中來自於 LINE 的講者主要是 TECHFRESH 的 Wayne Wu ,來自 LINE 購物團隊的 Joanna Hu 與 Andy Chen。 活動網址: KKTIX: https://twjug.kktix.cc/events/twjug202010 開場 LINE TECHFRESH 介紹 LINE 台灣工程團隊每年透過 LINE TECH FRESH – 技術新星人才計劃,招募資訊科技相關科系,或對此領域有所涉略的大學生 / 研究生加入 LINE 團隊進行長期實習 (一年期),讓同學們能在國際級科技公司中觀摩學習。 更多內容,可以參考這篇文章: LINE TECH FRESH – 技術新星人才計劃,實習經驗大公開 每一位實習同學都會分配到不同的團隊中,擔任著團隊裡面的種子工程師。經過一些內部與訓練型專案的指導,讓每一位參與的同學能夠了解跨國產品的開發流程與大公司的軟體工程技巧。 接下來由各個不同團隊來分享不論是擔任 TECH FRESH 的心得,或是許多有 TECH FRESH 的用人主管來分享他們專案的訓練方式與負責的業務範圍。 LINE 實習經驗分享 / Wayne Wu 第二位上場的是來自於台大資工系大四同時也是目前在 LINE 實習的同學 Wayne Wu ,他來分享從七月到現在剛好滿三個月的實習心得。 首先身為學生,在專題分工的習慣上常常有「責任歸屬」不均的狀況,「溝通」不順暢與「流程」不清楚的問題。但是來 LINE 實習的時候往往不會有這樣問題,透過有經驗的 Mentor 細心的帶領,並且在實習一個月後有了處理新專案的機會,讓講者在學習上更有自主性與積極性。 同時間講者也分享了,在 LINE 實習的時候感受到團隊內對於文件的高度要求。清楚的文件帶領的新手快速入門,並且 Mentor 也會要求處理過的同學試著紀錄下所有的經驗的學習機會。透過了定期內部讀書會,提高了學習的動力與技術力,並且透過經常性的溝通確保團隊內的同仁都是在共識下將專案積極推進。 跨國合作上,講者也分享了與越南工作同仁的小趣事。彼此在溝通上雖然都是透過文字,但是也讓語言能力與表達能力能不斷的提升。 最後這位同學也分享了他平時就是常常在懶骨頭上工作,可以更專注地處理手上的問題。風氣很自由並且工作彈性高,讓工作就像是另一場有趣的學習。 Migrating to JUnit 5 / Joanna Hu 接下來由 LINE SHOPPING 的工程師 Joanna 來分享 migrating 到 junit5 的經驗分享。首先先釐清幾個名詞: JUnit Jupiter: 支援 JUnit 5 test case 的新測試框架。 JUnit Vintage: 則是可以跑 JUnit3 與 JUnit4 架構語法的測試引擎。 JUnit Platform: 則是最底層用來在 JVM 下啟動測試架構。 為何整合到 JUnit5 高度支援 IDE 與 build tool 容易從 JUnit4 移植 並且有相關新功能 JUnit5 新功能 Nested testing 支援 Nested testing 讓測試檔案的架構變得更有系統,也可以分類成各種功能來跑不同規模的測試。 Display Name 支援 Friendly Display Name ,可以讓測試執行的時候不僅僅是顯示測試的名稱。而是更有意義的測試名字。 Parameterized...
繼續閱讀

[研討會心得] 2020/09/25 LINE Internal Hackathon 2020

大家好,我是 LINE Tech Evangelist - Evan Lin 。LINE 很重視員工們的自主創新與團隊合作,所以各地都會舉辦 LINE Internal Hackathon 。 在 LINE 台灣這已經是第二屆的內部黑客松競賽,也期待能夠看到不同團隊激盪後滿滿的創意。 第一屆內部舉辦的時候,受到許多的迴響。不少非工程團隊也希望能夠一起參與,所以今年特定修改參賽方式,第二屆的 LINE 內部黑客松競賽的主題就是 「Team up for A+」 ,目標希望同仁們能團隊合作,共同優化與創新出更令人驚豔(WOW) 的產品服務。 第一屆回顧 LINE Internal Hackathon 2019 - LINE Attitude 第一屆的 LINE Taiwan Internal Hackathon 主旨為 「AI is new Attitude」,由於 LINE 是一家注重 AI 的公司,我們也希望每一位員工都能透過機器學習為出發點,來反思每一個服務,一些內部應用是否可以透過機器學習與人工智慧的方式來優化。 第一屆的 LINE Internal Hackathon 我們收到許多有趣的應用,在 TECHPULSE 2019 上我們也分享了第一名的成果與技術。 也就是透過人工智慧的方式來幫助出差報帳的系統。 20019 LINE Internal Hackathon 第一名:自動報帳系統 LINE 的開發團隊遍及許多國家,於是 LINE 的工程團隊有許多的機會可以到不同國家的分公司去合作與討論。但是回來後最令出差人員困擾的就是要將許多的單據一步步的用人工的方式要輸入到系統與表單之中,這樣的作業流程往往要半個小時左右,相當的消耗人力。 去年的參賽隊伍透過人工智慧學習的方式,透過超過數百張出差表單的學習經驗。透過 iPhone 的軟體拍照之好,透過 OCR 的辨識與學習經驗,自動將不同表單填寫到正確的表單位置。並且產出報帳需要的表單文件。大大的將原本三十分鐘節省報帳的流程到兩分鐘之內。因此獲得了評審的青睞。 今年新增 (What’s new in 2020) 第一屆舉辦後收到不少的迴響: 非工程團隊能有否參與的機會? 有點子但是都找不到工程師來一起組隊。 有沒有更多的時間能讓參賽隊伍完成這個專案? 吸取了去年的意見,於是今年的參賽規則也做了部分的修改: 每個參賽的隊伍需要有不同團隊的成員(e.g. 開發人員+行銷團隊,或是開發人員+人力資源團隊)。但是開發人員與測試人員都算是工程團隊而無法這樣組隊。 第一階段提案入選的隊伍,能夠有三次的 Hacking Space (黑客工作訪)的機會。週末下午有特定的空間與餐點(下午茶)提供讓每個參賽隊伍能極盡可能得提高產品的完成度。 ( Hacking Space 的紀錄照片) 同事們都很妥善利用公司所提供的時間與空間,在不影響專案進度的狀況下熱情的參與。 總決賽 經過了三次的 Hacking Space 的活動後,也到了最後總決賽的日子。 為了讓公司內沒有參賽的同仁可以一起觀賞總決賽的展示說明。這一次特定在總決賽舉辦在公司內部的十二樓會議空間。 整天的活動分成三個部分: Hacking: 讓同仁做最後衝刺的機會,並且可以調整簡報的順暢度。 猜謎活動: 下午舉辦的猜謎活動,一些有趣的問題外。也讓緊張的氣氛獲得緩解。 最終展示簡報: 最終的簡報展示,必須包含可以 demo 或是讓評審實際遊玩的產品。 現場也有一些必要的佈置,並且也替每一位同仁定制了專屬的紀念 T-shirt 。提供給每一個參賽的同仁可以拍照,讓本次的活動不留白。 猜謎小活動 從去年第一屆就開始的猜謎小活動,其實題目都相當的有趣。除了有 LINE Friends 相關小故事猜謎外,也有一些 LINE 相關服務的問題。除了可以讓每一個同仁更佳的了解 LINE 之外,也可以讓每個同仁舉舉手,運動一下也可以舒緩緊張的比賽氣氛。 活動小結 今年的參賽題目都相當的有趣(礙於都有可能變成未來產品,不方便公開)。除了許多產品有人工智慧與機器學習的輔助之外,更有許多產品是相當有趣的突發奇想。也由於今年有 Hacking Space 的安排,每一個參賽隊伍的作品完成度都很高,不僅僅都可以讓評審現場的試玩之外,也都開放給公司內同仁測試。 完成度與穩定度之高,讓評審們都讚不絕口。 也想要參加有趣的 LINE 內部的黑客松活動嗎? 那還不趕快投遞你的履歷加入 LINE 喔! 立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼ 「LINE開發者官方社群」官方帳號ID:@line_tw_dev 關於「LINE開發社群計畫」 LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: 2019 年LINE 開發社群計畫活動時程表 LINE Taiwan Developer Relations 2019 回顧與 2019 開發社群計畫報告 2020 年LINE 開發社群計畫活動時程表 徵才訊息 《LINE...
繼續閱讀

[TIL][Golang] Debugging Go in prod using eBPF 心得

Refer article “Debugging Go in prod using eBPF” by Zain Asgar : https://blog.pixielabs.ai/blog/ebpf-function-tracing/post/ 前言: 在 Golang 上面來 debugging 其實有許多方式,不論是最常使用的 logging 或是透過 delve 甚至是 GDB 。 都算是常見方式來 debugging Go 。 但是最近看到這篇文章,覺得裡面提到的 eBPF (extended Berkeley Packet Filter) 算是蠻有趣,在這裡稍微做個簡單的整理。 Golang 上除錯的方式 (Debugging in Go) 一般來說要在 Go application 中來 debugging ,有以下的方式: Add log: 就如同大家熟悉的,使用 fmt.Println() 或是 log.Println() 。 Using debugger (delve or GDB) 不論是透過 vscode 內建的 delve ,或是透過 GDB 來做 debugging 。 透過 debugger 來除錯,其實是相當消耗系統資源,並且經常會中斷整體應用程式的運行。 Tracing 這裡指的是透過外部的 tracing tool ,不論事 USDT 還是 strace 都算是一種方式。 什麼是 eBPF eBPF (extended Berkeley Packet Filter) 根據官方網站 (https://ebpf.io/) ,是一個技術可以讓 application 跑在 sandbox 上面,並且可以透過 Syscall hook 方式來查看相關的資料而不需要修改任何的 kernel source code 。 應用範圍有: Secuerity: 透過 eBPF 可以做為一個與系統呼叫 (Syscall) 與硬體設備的中間層。 Tracking and Profiling:由於 Linux 系統都有提供 eBPF 的接口,可以透過這個直接 tracking 與 Profiling 你的應用。 (with very low latency) 。 這也是這篇文章提到的主要技巧。 為何使用這個? 既然提到 Debugging Go App 的所有工具,必須要跟其他方式做個比較。可以看到 eBPF 具有以下特性: Performance Impact 非常的低(disruption 也很低),類似於 Tracing tool 。但是跟 GDE 與 Delve 一樣可以追蹤到 Application Code。 但是無法作分散式系統的測量,因為一次 eBPF 只能針對你需要 hook...
繼續閱讀

[研討會心得] 2020/09/23 Golang#54 @LINE

前言 大家好,我是 LINE Taiwan 的 Tech Evangelist - Evan Lin。這次很開心受到 Golang 社群的邀請,參加了 “Golang Taipei Gathering #54” 的聚會活動,並且分享 Golang 開發的一些技巧與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓 Golang 更受到人了解。 社群 Chatbots Meetup: https://www.meetup.com/golang-taipei-meetup 本次活動網頁: 活動網址 Golang in LINE MUSIC TW - Wei@LINE Music 介紹 LINE Music 中主要使用到的 Golang 套件與相關的經驗分享。 errors x stack x info - Hsueh-Tsung Kuo @Rayark 投影片: https://hackmd.io/@fieliapm/Bk48ziTj8#/ 首先講者先介紹了 Go Error 系統的一些常被人詬病的問題: error 包含的資訊過少 不容易瞭解錯誤,拆包(摘解 error)與包裝 Go 1.13 的 error 可以參考一下這篇 Working with Errors in Go 1.13 ,可以透過 Warp 跟 UnWarp 來包裝與拆解 Errors 。 有沒有辦法 Inspect ? 透過 error.Is() 來判斷是不是同一個,或是透過 error.As()判斷是不是同一種類別 (type assertion)。 Go Error system sucks, 可以參考 Rust 的 error handling 與 Trait std::error::Error https://github.com/pkg/errors 不錯用,但是無法解析底層的 errors (因為跟底層的 standard error 不相容)。參考文章 Can new Go errors wrapper replace pkg/errors? 參考鏈結 Working with Errors in Go 1.13 Rust 的 error handling Rust std::error Can new Go errors wrapper replace pkg/errors? 活動小結 立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼ 「LINE開發者官方社群」官方帳號ID:@line_tw_dev 關於「LINE開發社群計畫」 LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: 2019 年LINE 開發社群計畫活動時程表 LINE Taiwan Developer Relations 2019 回顧與 2019 開發社群計畫報告 2020...
繼續閱讀