[研討會心得] 2020/10/21 [email protected]

前提

大家好,我是 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 tests

透過不同的參數輸入來不斷地重複執行同一個 test function 。

  • Support multiple runners

How to migrating to JUnit5

接下來也是本次演講的重點,如果你是 JUnit4 的開發者,如何來 Migrating 到 JUnit5 呢?

  • 升級你的 Maven 到 3.63 以上
  • 升級你的 Gradle 到 4.6 以上

  • 先寫一些使用 JUnit5 的測試案例

  • 移植舊有 JUnit4 的測試
    • Package 有更換過就可以繼續使用
  • 根據 JUnit4 Rule 測試,改寫成 JUnit5 Extension
    • 透過換名字方式即可,也可以使用 IntelliJ IDEA 的功能來置換

參考文件:

  • JUnit 5 website: https://junit.org/junit5/
  • 7 Reasons to Consider JUnit 5: https://dzone.com/articles/7-reasons-to-consider-junit-5
  • Migrating from JUnit 4 to JUnit 5: https://blog.jetbrains.com/idea/2020/08/migrating-from-junit-4-to-junit-5/

Introduction to AssertJ / Andy Chen

接下來一樣也是由 LINE SHOPPING 工程師 Andy 帶來介紹 AssertJ 。 透過 assert 是拿來檢查相關數值或是測試的警告訊息。 而 AssertJ 有著比較好閱讀的優點,接下來會詳細介紹:

Fluent Expression

透過 AssertJ 可以顯示更像口語化的方式,

assertThat(actual).isEqualTo(expected);

除了可以容易閱讀,也更容易表達。 也可以透過 AssertJ 來減少 getter 與 temprorary variable 。也可以透過 collection asserting 來一次做多種數值的檢查。

Better Error Description

透過 AssertJ 可以有更多的 expression 來表達正確的想法,可以避免過多的單獨 assert 反而容易有遺漏。

並且可以透過 soft assertion 讓錯誤發生的時候不會第一個就跳出,可以一次檢查許多個地方。

並且有更多的相關功能 Expression Assertions , Optional Assertions 更清楚與 Completable Future Assertions 都可以使用。

總結

  • AssertJ 可以更容易來陳述與表達 test case 原本的意思(語意上)
  • AssertJ 可以更清楚表達 test failure 的狀況
  • 更少的 code 可以有更精準的表達

參考文件:

活動小結

感謝 TWJUG 的熱情參與,在 LINE 辦公室舉辦的活動獲得相當高的報到率。 LINE 對於開源技術社群持續的耕耘與支持,並且即將在 2020/11/19 舉辦的 JCConf 擔任黃金級的贊助,當天也有相關的攤位與開發者們相見歡。 熱愛 Java 的開發者,大家到時候見!

立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:

[研討會心得] 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場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:

徵才訊息

《LINE 強力徵才中!》與我們一起 Close the Distance 串聯智慧新世界 » 詳細職缺訊息

[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 的應用來做 debugging 跟 tracing 。

更多介紹:

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

前言

大家好,我是 LINE Taiwan 的 Tech Evangelist - Evan Lin。這次很開心受到 Golang 社群的邀請,參加了 “Golang Taipei Gathering #54” 的聚會活動,並且分享 Golang 開發的一些技巧與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓 Golang 更受到人了解。

Golang in LINE MUSIC TW - [email protected] 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?

參考鏈結

活動小結

立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:

[研討會心得] 2020/09/22 BECKS.io #7 聚會心得

大家好,我是 LINE Tech Evangelisgt – Evan Lin。LINE 一直以來不遺餘力地提升資訊安全,除了以 DevSecOps 的概念為基礎,將資安 DNA 注入 LINE 產品與服務,更積極促進整體資安生態圈的成長。 而 Beer is beautiful, hacks is amazing, BECKS is gold. BECKS是Beer與Hacks兩個字所組成。 透過一系列的 BECKS.IO – Security Meetup 資安社群活動,為韓國、日本、台灣等地的優秀資安人才提供當面交流、建立良好連結的機會! 本次 BECKS.IO 小聚選於台北的 Avenue 舉辦,邀請台灣的講者們,在輕鬆開放的氛圍中,暢談不同企業與個人的資安思維及實務經驗,並展望相關技術的未來發展。

KKTIX 活動網頁: 活動網址

Detect and track Apple devices for fun and profit - Ta-Lun Yen / TXOne Networks (Trend Micro) Threat Researcher

來得太晚,只聽到後半段。主要講解關於 Apple裝置的一些溝通與互動方式。不論是討論的 BLE 還是 Hotspot 的溝通方式。也有提到 Airdrop 的部分。

內容大多是溝通方式,可能有的資安疑慮。 現場也展示了透過軟體來掃出所有在場藍牙裝置的 uuid 與 MAC address。

From NLP to Neural Network based Malware Detection - aaaddress1 / Chroot member

原始論文: https://github.com/Lancern/asm2vec

講者網站: https://30cm.tw

惡意程式 (malware) 的 syntax pattern (from assembly call)

  • uExitCode -> intterup

如何防禦 Malware

  • 把程式切塊,找尋可疑區塊。

是否可以借助「語義學」模型來找出 malware 判斷方式

缺點:

  • 指令與指令間的關係 (for loop 回傳 pattern)
  • 大量改版,變種的 malware 。
  • 根據舊的 malware 新增索引包,很容易被判斷跳脫

語義學(semantics)介紹

  • 根據一個詞的前後文來判斷文字本身的意思
  • e.g.
    • I drink beer, I drink wine.
    • I guzzle beer, I guzzle wine.
  • 透過共生矩陣表 (tokenFeq) 來找出前後文出現頻率,有出現 +1 。
  • 透過詞頻率畫出的折線圖,可以找出類似的詞。 (e.g. drink and guzzle)
  • cosine similarity

為何不直接用 semantics 分析方式?

  • 如果有新的詞出現,造成 tokenFeq 得重新建立(訓練)

所以,本次分享將用 distributed memory sharing 方式來建立,而非使用共通的 tokenFeq 。

透過相關 dimention 來分類,而非直接緊接的詞。

e.g.

  • Apple -> 技術相關的品牌
  • NBA -> 運動類別
  • Apple Watch -> 運動心跳 -> 技術品牌
  • China -> 政治類別
  • 華為 -> 科技品牌 -> 政治類別
  • 接下來就可以計算兩個單詞的相似度 similarity
    • China x 華為 –> 相似度就會很高。
    • 經常使用到的方式 : sigmoid 將無限大的數值, normalize 0~1 。
  • 不斷的 sigmoid 會造成相似會聚合一起 (over-fitting)
    • 解決方式:
      • Google 採取方式,也要計算錯誤的方式。
      • 透過一整段詞的 average ,來確認是中間詞的數值。

Asm2Vec

那麼要如何透過 word2vec 來判斷 malware ?

  • 指令的詞分佈性
  • 透過完整 asm 指令前後文的相似分佈

要能完整拿到指令前後文,需要使用靜態掃描,在動態執行狀況要如何取得前後文?

  • 透過分區塊的方式分群
  • 透過區塊間的流程 block a -> block b -> block c -> block b
  • code block 之間透過丟骰子的方式,來判斷前後文的關係。 (Random walking)

  • 這樣也可以透過三個詞的平均,來判斷中間詞的是否相似

是否要用 push rbp 來建立 tokenFeq?

  • sub rsp, 138h
  • sub -> op
  • Rsp -> 參數
  • 138h -> 參數
  • 補齊參數,作為矩陣操作用
  • 對於 asm 經常出現的指令
    • mov rax 8h
    • 需要透過一個
      • Loss function theda 來調整,作為相似度的 sigmoid 調整用

成果

  • 用 25 隻 mirai 樣本,來訓練出來。來預測四萬多隻的樣本:
    • MIPS 96%
    • x86 96%

Challenge

  • malware 只要套上「殼」(shellcode),就不容易被抓到
  • dll side-loading 方式,就無法找出 control graph
  • mov 語意相當的薄弱
  • 動態修改自身程式碼
  • 95% 是正常的程式碼,只有最後 5% 是 malware

相關的 Q&A

  • Q: Random walking 如何確認正確? 順序一錯,完全就是不同東西。
    • A: 原本論文 30 ~ 40% 正確性
  • Q: 為何相關成果不公布?
    • A: 論文還在研究,跟原本作者想法有一些不同。

議程小結:

將者將原始作者論文 repdroduce 後,發現其中有一些有問題的算式部分。加以修改後,得到更好的效果。算是一個相當有趣議程。

活動小結

今晚的聚會邀請到國內外資安專家,不藏私分享資安策略和經驗,幫助與會者在短短數小時內,從不同角度領略實現資安的各種可能。BECKS 是由 Beer 與 Hacks 兩個字所組成,透過本次小聚,我們再度凝聚資安社群,讓資安專家分享最新研究,並讓各領域的資安研究員進行面對面討論,除了幫助更多人了解 LINE 的安全設計,更希望透過交流,讓多元的資安思維得以迸發出精彩的火花!

立即 follow「BECKS」活動訊息,就能收到第一手 Meetup 活動最新消息的推播通知。▼

「BECKS」活動專頁:https://becks.io

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:

徵才訊息

《LINE 強力徵才中!》與我們一起 Close the Distance 串聯智慧新世界 » 詳細職缺訊息

[研討會心得] 2020/09/18 LINE Developer Meetup 13 (一)

前提

大家好,我是 LINE Taiwan DevRel 團隊的 Evan Lin。很開心在這裡跟各位分享本年度的第三場開發者小聚。 這也是疫情後第一次在新竹舉辦的線下聚會的活動。 也是 LINE 台灣工程團隊第一次來到交通大學舉辦線下的活動。

KKTIX 活動網頁: 活動網址

本次 LINE Developer Meetup 開發者小聚,首先有 LINE 台灣技術長 Marco Chen 帶來的 LINE 技術新星實習計畫的相關介紹,並且有 LINE 資料工程團隊的負責人 Shawn Tsai 帶來關於 ”How ML Powers LINE Services” 。

文章列表

LINE TECH FRESH (LINE 技術新星人才計劃) 學生實習計畫宣傳 / CTO Marco Chen

首先上場的就是 LINE 台灣的 CTO - Marco Chen ,身為 LINE 工程團隊的大家長 Marco 為所有同學來解釋關於 TECH-FRESH 當初成立的緣由。以下有一些擷取自當天內容:

請問各位在職的來賓,你們當年在學校想著從事你現在的職務的人,請舉手。
請問各位在校的同學,你很確定你將來的工作内容是什麽的人,請舉手。

你們知道在 LINE 或像 LINE 這樣的網際網路應用服務的公司,開發一個大流量的系統,要有多少種專業角色的人參與?
使用多少種技術? 各位知道有那些角色? 那些職務?

TECHFRESH 是 LINE Taiwan 的在校生技術實習計劃,有兩個主要的目的:

- 幫助準備要進入職場的同學,真正的去了解,在一家網際網路應用服務的公司中,會有那些軟體開發的工作。進而可以讓同學們,找出自己職涯中最合適自己的工作内容,發揮自己的專長。不論最後是不是在 LINE 發展,我們也幫助這個國家培養出好的人才,能發揮最大能力貢獻給這國家。

- 在過程中培養出熟悉我們開發技術與流程的人材,進而到最後願意留在 LINE 發展。原本 LINE 的暑期工讀計劃,三個月的時間,對於資訊科系學生想要能真的了解統開發生命週期中所有角色與工作内容,實在太有限了。 因此我們向總部提出一年的實習計劃,一週來三天,工作內容則是由 TPM 帶領,執行一些一次性的專案開發,或者加入專案團隊支援專案團隊的開發工作。

透過這一段談話,同學們可以清楚了解到 LINE TECHFRESH 成立的主要原因與由來。透過長達一年的實習,同學們才有機會真正的學習跨國產品的開發合作,軟體工程開發的經驗。 希望同學們趕快來報名! 申請網址

相關資料:

How ML Powers LINE Services / LINE Data Team - Shawn Tsai

第二位上場的是 LINE 台灣資料工程團隊的 Shawn Tsai ,跟大家分享機器學習如何的讓 LINE 的服務能更貼近使用者。

LINE 台灣資料工程團隊的組成

首先 Shawn 先跟大家分享 LINE 台灣資料工程團隊的組成,主要由以下三個角色所構成:

資料工程師 (Data Engineer)

身為資料工程師需要有一手強大的工程技能,不論是資料的截取,抓取與前處理 (Pre-processing) 。甚至是資料探索的部分,到最後機器學習模型的部屬都缺少不了資料工程師的協助。

資料科學家 (Data Scientist)

資料科學家的工作就是要協助資料工程師來擷取資料,並且一同討論如何前處理之後。將機器學習模型學期出來。

資料分析師 (Data Analyst)

資料分析師的重點在資料的探索,尋找出真正能解決問題的數值。並且針對完成的模型來做相關的測試與修正。

資料工程團隊與專案的合作方式

資料工程團隊主要由以上三個角色所組成,所有的資料工程團隊會因為不同的產品需求有不同的任務小組。 有些產品還在資料討論與擷取的階段,有些產品可能已經進入機器學習模型的調教。 針對不同產品線,每一個成員在日常的工作都可以參與許多有趣的產品與專案,更能學習新穎的機器學習模型方法來套入每一個日常工作之中。

資料工程團隊面臨的挑戰

由於 LINE 使用者超過兩千一百萬, LINE TODAY 上面一年產出一百萬篇文章, LINE 購物上每個月有五百萬筆商品查詢。這麼多的資料就是資料工程團隊要面臨的問題。 而機器學習本身可以是簡單的,也可能是相當複雜的。接下來就會根據產品的不同稍微解釋所使用到的機器學習技術。

LINE 客服小幫手

img「糟糕…換手機要怎麼移動帳號? 」

img「怎麼購買貼圖送給親友?」

這些問題都是使用者每天都會想要了解的操作問題,但是要如何能及時的找尋到解答呢? 這時候就可以透過「客服小幫手」機器學習的能力來幫你快速回覆。 手機點此加入LINE 客服小幫手帳號或搜尋 @linehelptw加入好友。 更多使用方面的介紹可以參考 「LINE 客服小幫手」智能客服全新升級~對談中解決用LINE大小事

由於同樣的問題可能會有各種詢問方式,比如說:

  • 為什麼有時候賴都不會通知?
  • 訊息都跑不出來是怎樣?
  • LINE 都不會叫也不會震動?

這三種完全不同的問法,可能導向的都是當初 iOS 11 更新造成的問題。這些如果要透過人力來回覆相當的費時,就需要使用自然語言理解 (NLU: Natural Language Understanding) ,並且是用到 LSTM 來了解文字在前後文中的相關性,並且透過 CNN 來獲取文字與其他文字的特徵。 這是第一個版本的解法,但是效果不算是令人滿意。 後來透過了使用 seq2seqCBoWDSSMBERT達成的 Esemble 的解決方案,這樣的方式大幅度的得到比較好的效果。

LINE 訊息查證小幫手

LINE 訊息查證」平台在去年七月份正式上線,不僅有官方網站,更串聯 LINE 官方帳號,用戶只需把在聊天室中收到的訊息「轉傳」至「LINE 訊息查證」官方帳號。如過去已有查核報導在資料庫中,查證小幫手會自動判斷其真偽,系統將即時提供查證結果;如訊息尚未查核,將提報給專業查核單位,待釐清後再盡快回傳正確資訊給予用戶,提供最即時的訊息辨別服務,協助用戶辨識可疑訊息真偽,降低假訊息再次散播的機會。

每天收到的訊息量高達四萬則,但是人工辨識每天只能夠 300 則,所以這時候需要機器學習大量的協助。 透過了 Near-DuplicationClassification 兩種方式來尋找與分類訊息。現在訊息查證的效率也進步了十倍以上,並且成功的釐清了 46% 使用者所發送的可疑訊息。 不想要變成假訊息的傳播者嗎? 一起加入 「LINE 訊息查證」官方帳號。

透過機器學習專案的學習

許多學生朋友都會好奇,真正在 LINE 來從事資料工程團隊的工作倒底每一天的時間都在做什麼? 講者也很大方的跟大家分享了,身為資料工程團隊每一天大部分的時間真的都是花在訓練機器學習模型嗎? 這張圖可以讓各位了解,大部分的時間都是花在機器設定( Configuration) ,資料擷取 (Data Collection) ,並且相當多時間在資料的驗證 (Data Verification) 甚至是模型建立後的建置能夠不斷的更新最近的機器模型的基礎建設 (Serving Infratructure) 也會花費相當多的時間。 真正拿來做模型訓練往往是整個專案中少少的一個部分而已。 也可以知道資料科學家主要的時間與專業在於如何找出與辨識「關鍵的資訊」。

相關文章:

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: