August
23rd,
2021
前言 大家好,我是 LINE Developer Relations 團隊的資深開發技術推廣工程師 - Evan Lin 。主要的工作項目就是平台技術推廣與技術品牌的建立與溝通。 這次很榮幸受到邀請幫 DSC (Developer Students Club) 開發者學生社群的暑期夏令營活動 (Summer BootCamp) 分享關於如何打造自己的開源專案的經驗分享。 投影片 LINE 有參與開源專案嗎? 經常在參與許多開源聚會上,許多開發者朋友都不了解 LINE 有參與過相關的開源專案。但 LINE 其實也已經開源了超過 93 個專案,不僅有訊息平台的軟體開發工具套件,更有 LINE 開發內部專案過程中也在使用的套件:包括 Armeria 與 Central Dogma 等數個知名的開源專案,並且也開始經營相關的開源社群。大家可以參考一下 2019 年的 COSCUP Keynote 分享 LINE 企業內部的開源流程,並說明 LINE 企業文化鼓勵員工分享,更以開放的心胸接觸開源及參與開發者社群。 如何打造一個成功的開源專案 要打造一個知名的開源專案,建議各位同學們的步驟如下: 找到一個好點子 / Find a great idea 良好的說明 / Well Documentation 完整的 CI/CD 流程 / Well Workflow 找到你的第一個貢獻者 / Find your first contributor 宣傳! 宣傳! 宣傳! / Promote ! Promote ! 這邊依序開始講解這些步驟,其中「找到一個好點子」放在最後(因為最難 :p )。 良好的說明 / Well Documentation 首先先分享給各位(也是最容易被開發者們忽略的)就是好的文件。(也許可能是開發者們刻意不想寫的 :p ) 。 對於軟體開發來說,好的文件相當的重要。 而開源專案最重要的就是 README.md 這個檔案往往會出現在 github 的專案頁面。透過上面的範例,這邊有一幾個重點希望同學們能注意到: 足夠多的 Badge (徽章): 徽章本身是講解相關的狀況( build 成功,有說明文件…),此外也可以比較漂亮啦。 專案說明: 一句短短話,讓路過的人知道你專案的摘要。 如何安裝 (install) /引用 (include): 這個往往是許多初期開源專案開發者遺忘的。你需要讓路過的人知道如何安裝,如何能夠正確 include 。這樣想要使用的人,不會第一部卡在環境設定上的相關問題。 比如說有一些 Python 相關的專案,在許多套件的相依性處理上,沒有寫清楚的話。往往之後看到的人都無法正確使用。自然而然就不會使用。 如何貢獻 / How to contribute : 這也是很重要的部分,包括了說明白開源專案的授權方式。 (可以參考 自由及開放原始碼軟體授權條款比較 ) 還有就是可以告訴想要貢獻的人,你希望他們能跑過哪一些基本的 unit testing 。越多的說明就可以讓你的貢獻者越安心。 參考資料: 自由及開放原始碼軟體授權條款比較 徽章列表 badges/shields How to Write a Good README File for Your GitHub Project 完整的 CI/CD 流程 / Well Workflow 這邊指的是相關的 Github Action...
繼續閱讀
August
19th,
2021
Proposal: 45713 Workspace Mode PR: 45713 Demo Video: YouTube 摘要 Vendoring 跟 Dependency Management 是 Golang 一直想要解決的問題,透過了 go mod 原本可以管理第一層的套件。透過 go mod vendor 你可以下載完相關的依賴的套件在本地端的 vendor/ ,如果要改上一層的 dependency 就可以直接修改。 但是如果你要改的 Denpedency 上一層跟他的更上一層的 檔案呢? 以往作法可以透過 go mod edit 來一個個修改,但是一但檔案很多的時候就會相當的複雜。 有什麼方式可以快速在 local 做一些確認,也才好去發 PR 到 upstream 去? 這邊介紹一個正在做最後審核(如果通過了,預計是 go 1.18 的功能: Multi-Module Workspaces )。 Proposal 作者很貼心,還發了有著大狗狗的 Demo Video 。必須說~因為有隻可愛的大狗~我乖乖的把 proposal 看完了。 如何安裝 # 取得最新版本的 golang source code > go install golang.org/dl/gotip@latest # 下載某個 CL base 的 gotip > gotip download dev.cmdgo # 看一下修改後的相關指令,注意 initwork, editwork ... > gotip help mod The commands are: download download modules to local cache edit edit go.mod from tools or scripts editwork edit go.work from tools or scripts graph print module requirement graph init initialize new module in current directory initwork initialize workspace file tidy add missing and remove unused modules vendor make vendored copy of dependencies verify verify dependencies have expected content why explain why packages or...
繼續閱讀
August
18th,
2021
摘要
eBPF (Extended Berkeley Packet Filter) 是近幾年對於 dynamic tracing 裡面一個很知名的技術。 由於 Observability 受到了大家的重視,在網路層面或是 SRE 應用上都有許多相關得說明與文章。 eBPF Summit 2021 集結了許多業界知名人士,並且帶來相當多基本的介紹,歡迎大家也可以了解。
什麼是 eBPF (轉)
動態追蹤技術(dynamic tracing)是現代軟體的進階除錯和追蹤機制,讓工程師以非常低的成本,在非常短的時間內,克服一些不是顯而易見的問題。動態追蹤機制如果內建於作業系統,那麼使用者層級的程式即可隨時採集資訊,構建出一幅完整的軟體樣貌,從而有效地指導我們做一些很複雜的分析。這裡非常關鍵的一點是,它是非侵入式的。如果把軟體系統比作一個人,那我們顯然不想把一個活人開膛破肚,Berkeley Packet Filter (BPF) 最初的動機的確是封包過濾機制,但擴充為 eBPF (Extended BPF) 後,就變成 Linux 核心內建的內部行為分析工具包含以下:
動態追蹤 (dynamic tracing);
靜態追蹤 (static tracing);
profiling events;
(以上資訊摘自:宅色夫 Linux 核心設計: 透過 eBPF 觀察作業系統行為)
eBPF Summit 2021 研討會資訊
https://ebpf.io/summit-2021
Day 1: https://youtu.be/Kp3PHPuFkaA
Day 2: https://youtu.be/ZNtVedFsD-k
eBPF Day 1
The State & Future of eBPF / Thomas Graf
這次的 keynote 也相當知名,第一位就是 Thomas Graf 身為推廣者之一,會跟大家介紹目前的狀態跟未來的發展。
Getting Started with BPF observability / Brendan Gregg
第二個算是頂尖的知名人士,身為 NETFLIX 的工程師之外, 並且他也是兩本知名書籍的作者:
Systems Performance 2nd edition - Brendan Gregg (Addison-Wesley, 2020)
BPF Performance Tools - Brendan Gregg (Addison-Wesley, 2019)
他的知名事件就是 An Unbelievable Demo - Brendan Gregg (有人翻譯成中文 我的开源代码被科技巨头偷了,对方还跑到我面前演示 )
第一天其他議程都專注在 Observability 可以好好學習。
其他議程可以慢慢了解。
影片
Reference
Linux 核心設計: 透過 eBPF 觀察作業系統行為
An Unbelievable Demo - Brendan Gregg
我的开源代码被科技巨头偷了,对方还跑到我面前演示
繼續閱讀
August
10th,
2021
前言 大家好,我是 LINE Developer Relations 團隊的資深開發技術推廣工程師 - Evan Lin 。主要的工作項目就是平台技術推廣與技術品牌的建立與溝通。 這是很開心能跟 APCSCamp 2021 (程式設計能力培訓營) 合作,很榮幸能代表公司跟同學們分享如何將程式設計學好,並且如何才能來 LINE 做實習生。 關於 APCSCamp 2021 何謂APCS APCS 為 Advanced Placement Computer Science 的英文縮寫,是指「大學程式設計先修檢測」。其檢測模式乃參考美國大學先修課程(Advanced Placement,AP),與各大學合作命題,並確定檢定用題目經過信效度考驗,以確保檢定結果之公信力。在台灣, APCS 是目前衡量國高中生程式能力最有公信力的一個指標:目前有 31 所大學, 38 個科系,設立了 APCS 組,將 APCS 納入入學的門檻。 緣起 近年來,隨著人工智慧崛起,資工系竄升成一大熱門科系,大家開始關注要進入資工系所需具備的能力,而 APCS 也因此備受家長關注。補教業者更積極把握機會,使 APCS 的補教課程如雨後春筍般設立。然而,我們發現補習班的課程教材品質參差不齊,且其中一些還有不少進步空間,有些題目的解答甚至是錯誤的。除此之外,我們也發現這些 APCS 的課程大多集中在大臺北地區等大都市。 為解決以上問題,我們決定利用我們的專業能力,在 2021 暑假舉辦一個針對初學者,以 APCS 考試大綱規劃課程內容的線上營隊。雖然線上營隊的舉辦較實體多了許多限制,但考量疫情趨勢與我們期望打破地理限制的初衷,我們仍決定線上舉行,期望讓全臺各地想精進程式能力的初學者都能參與。 (相關資訊來自於: APCSCamp 官方網站) 這一次很開心能夠支持 APCSCamp 2021 (程式設計能力培訓營) 並且透過廠商分享議程來跟同學們見面。 演講: 如何學好程式設計,一起來 LINE 實習 投影片: 投影片鏈結 參與同學 主要的參與同學為 APCSCamp 的學員(高中同學),主要有「語法班」與「算法班」兩個班級。並且也有工作團隊的一起共襄盛舉。 關於 LINE 服務的介紹 一開始先跟每一位同學介紹 LINE 服務的發展歷史,從 2011 年在日本啟動 LINE 的服務之後,到了今年( 2021) 也剛好十年了,十年來的成長從溝通的平台,轉變成每一個使用者的生活平台。 LINE TODAY 作為大家天天會用的主流新聞平台,除了日常提供大家許多新聞相關題材外,其實裡面也含有許多不同的內容,如:賽事直播(近期很火紅的 NBA 季後賽也有轉播)、電影訂票、選情專區、泰國限定的樂透、電影…等等,擁有這麼多功能都是為了讓用戶可以在 LINE TODAY 中看到大家最新、最值得關注的內容。擁有這麼多功能的平台,同時也是一個跨國的產品,同時也提供給泰國、印尼以及香港。 更多資訊,大家可以參考 LINE TODAY 。 LINE 購物 / LINE SHOPPING 電商已成為現代人不可或缺的一部份,在本次的議程中很詳細地透過不同的例子(母親節、送禮優惠…)來解釋在 LINE 電商服務中的不同使用情境,讓大家可以更快速的了解透過 LINE 來購買相關東西時的好處以及可用性。 更多資訊,大家可以參考 LINE 購物。 LINE 熱點 / LINE SPOT LINE SPOT 團隊是主要是開發 O2O (Online to Offline) 及活動相關的服務,LINE SPOT 是一個以您所在的位置為起點,讓您可以在上面看到各式店家的優惠資訊,把線下的資訊整合到線上的一個全新的服務。 更多資訊,大家可以參考 LINE 熱點。 如何學習好一門程式語言? (以 Golang 為例子) 因為參與演講的同學們都是高中同學,而且課程主要內容都是以 C++ 為主。 所以我透過學習一門新的程式語言 Golang 作為一個範例。來解釋如何學習一門新的程式語言。 在學習 Golang 程式語言的路途上,我建議每一位朋友都不要去了解太多關於 Golang 的設計理念,也不需要知道語言特色,更不要貿然去了解太多關於運作的原理。 建議很重要的事情就是: 先下去試著寫幾個應用 透過寫一兩個應用,你可以獲得相關的知識: 如何可以順利的完整編譯 (compile) 一次 Golang 的應用。 如何可以設定相關環境,當然有可能是透過 Golang...
繼續閱讀
August
9th,
2021
VSCode Plugin - Markdown Paste :
完整 Github: https://github.com/telesoho/vscode-markdown-paste-image
你是用哪一套工具寫部落格? 之前喜歡使用 Typora (這邊可以看我寫的文章) 。 寫起來雖然很快,但是由於使用 github page 加上後台是 Jekyll 的原因,貼圖的時候總是相當的不方便。
最在查詢筆記軟體的時候,看到了這個 VSCode 的 Plugin - Markdown Paste ,覺得相當好用。
有幾個大家一定會寫歡的功能:
直接貼上剪貼簿圖片
快速鍵:(MacOSX: Command + Option + V )
這個功能相當好用(主要也是為了這個功能來用的)。有一個比較麻煩的是,下載的圖片位置預設會放在 ./ 這邊可以稍微修改,透過修改設定就可以。
進去去直接修改 MarkdownPaste.path,以我的 case 就是改成 ./../images/2021。這樣一年改一次就好,圖片也可以保留在我的 Github 上面,不怕找不到。
上面這張圖就是透過剪貼簿,馬上貼上。真的很方便,也不用管命名問題。(你之到 RD 很怕叫他取名字,檔案名稱也是一樣 XD)。
其實還有很多功能,大家可以到 Marketplace 網頁去查看。我也會持續研究,慢慢看有哪些習慣的功能。
Typora 沒有嗎?
(更新 2021/08/10) 貼完臉書後,看到社群大大們的建議,發現好像 Typora 今年也有相關的更新了。其實今年(2021/02)的版本更新 (0.9.9.32) 更新的 (Typora 更新)。但是實際使用後,發現需要相關的設定如下。
需要修改複製圖片到「自訂資料夾」(注意原本的變數要移除)
因為檔案要放到 github page ,記得要優先使用相對路徑。
相關文章:
[TIL][markdown] 好用的編輯器 - typora
VSCode Marketplace: Markdown Paste
Typora Image Upload
繼續閱讀
August
7th,
2021
前言: Apple Notes (也就是 iOS / Mac OSX 上面的「備忘錄」) 是一個強大而且可以快速寫筆記的工具,支援簡單的 markdown 語法跟可以使用剪貼簿來貼圖片,其實對於許多使用者而言是相當的方便。 但是如果不小心上了 iCloud 就會全部將資料上了雲端,對於資安控管而言可就不妙了。 本篇文章記錄一些相關的搬遷方式,可以讓你將 Apple Notes 來匯出。 小心上雲端 首先要先注意,對於 Apple notes 而言本身並沒有分「雲端」與「本地端」的差別。只要你不小心將你的筆電 Apple Notes 連上了 iCloud 就再也無法順利存取到本地端。 有資安疑慮,絕對不要用 Apple Notes 上 iCloud! 有資安疑慮,絕對不要用 Apple Notes 上 iCloud! 有資安疑慮,絕對不要用 Apple Notes 上 iCloud! 不小心上了雲端,怎麼還原為「本地的 Apple Note」 這邊有點麻煩,其實簡單地答案是。「辦不到」。 可能做法有以下幾個: 備份為 PDF 然後刪除文章(無法匯入 Apple Notes) 切斷網路,然後砍掉 iCloud 資訊。 文章不多使用傳送來維持格式。 如果文章不多,可以用傳送。 為了維護格式的問題,可以透過傳送 (Air Drop )來傳送。 使用 iCloud 的手機(砍掉的資訊,會再刪除資料夾) 救回該筆記,然後將該筆記透過 Airdrop 來丟到 MacOSX。 如此重複,一篇一篇來丟。 即便你成功轉移到本地端 Apple Notes 筆電更換的時候,就必須要備份電腦 由於本地端的 Apple notes 存放地點在隱藏的 data 資料夾中,且格式也不好還原。 如果要換電腦得時候,可能就是要使用 Apple 筆電備份跟還原的功能。這樣也有可能會踩到資安控管的領域。 最近另外找到一個方式,就是換到 Bear notes Bear notes App 是一個很強大的筆記軟體,使用 Markdown 作為語法外,使用標籤與相互串連的方式。讓你整理資訊更加的方便。而且他提供一個方式可以將 Apple Notes 搬移到 Bear Notes。 Migrate from Apple Notes 這篇文章教導你透過一個小工具,可以把 Apple Notes 備份出來,然後透過 Bear Notes 強大的 Import 功能可以匯入到他的筆記之內。加上 Bear Notes 如果沒有付費,本身也是將資訊存在本地端。並且可以透過 Backup and Restore Your Notes in Bear 來備份你的 Bear Notes 。(作為電腦更換時候使用)。 目前會朝向這個方向,繼續研究中。 額外: 其實我一開始都使用 Markdown 加上 vscode 來管理筆記,搜尋起來也快也可以放在雲端資料夾控管。但是不能直接從簡貼簿來貼圖片。現在看到這個可能會考慮一下。 https://github.com/telesoho/vscode-markdown-paste-image 這個我也可能會考慮一下。 相關文章: Migrate from Apple Notes Backup and Restore Your Notes in Bear Create local backup of...
繼續閱讀