一轉眼北漂五年的紀錄

Introduction
這陣子經歷太多內心上的變化,想說趁著出差期間,回顧並整理來台北後第五年的一些經歷,好好思考一下這些日子來的想法,希望未來在回顧這篇時不會太尷尬 😆
分類

這陣子經歷太多內心上的變化,想說趁著出差期間,回顧並整理來台北後第五年的一些經歷,好好思考一下這些日子來的想法,希望未來在回顧這篇時不會太尷尬 😆

近期在開發 LLM 應用時,常需要讓模型與網頁進行互動,無論是自動填寫表單、爬取資料或執行測試。過去這類任務往往依賴於截圖或視覺模型,不僅效率低下且易出錯。今天要介紹的 Playwright Model Context Protocol (MCP) 提供了一個全新的解決方案,讓 LLM 能夠直接透過結構化的方式與瀏覽器互動,大幅提升自動化效率。

事情是這樣的,由於我跟家人個別有一台 PC,參考了巴哈上面的說法(URL),為了省錢登入同樣的帳號,想說用離線模式就可以一起玩,但殊不知...操作上出了點失誤,結果我從 9/9 ~ 9/14 的記錄都消失(被覆蓋),找了一下網路上的做法,看了檔案路徑中發現 Steam 居然有備份(超感動),以下介紹一下如何救回來~

近期接收到 Threads 也開出 API 可以使用,看網路上有許多人討論相關做法,同時也閱讀了許多大大們的文章,以下就將我這幾天測試發文的結果記錄下來,給有需要使用的讀者們~

作為一位需要在電腦前面待上 8 小時以上的現代人,很多時候都需要花很多時間消化日常的資訊,以下快速分享近期經常使用的快捷鍵跟小工具,加速我日常作業的時間,把時間花在其他更有興趣的地方~

由於現在主流前端框架(Next, Nuxt)皆會透過 Virtual DOM 的方式渲染網站,在網站當中像是 class 就會有類似 class="qwe-1234" 的呈現方式,且會階層往下,但這在 google analytics 當中抓資料會有問題,因為跟一般 SPA 網站渲染方式呈現比較不同

準備演講的同時,發現 GitHub 現在在回報 issue 上開始有框架的方式來讓專案開發者可以更快速建立,不用像以前要自己參考網路上的資料,或是自己天馬行空想一個版本。透過 yaml 的制定除了更好看以外,也讓用戶在回報 issue 時有更漂亮的畫面可以填寫,以下就分享一下如何在自己的 report 上加入~

本篇紀錄著近期對於自己來台北工作三年的一些經驗分享,用比較流水帳的方式紀錄著(絕沒出動 GPT😆)。除了幫自己紀錄這幾年來的經驗,若有讀者也想來北部工作,或許這篇的內容可以參考看看!

開源專案是個學問,如何善用軟體生態系中大家所貢獻的這些資源,幫助大家在軟體路上少走一些錯的路,那本篇或許也是大家海上的一盞小燈,希望可以幫助到看文章的各位!
當你完成了一個網頁、部落格之後,當然最期待的就是開始有用戶開始使用啦!但過去在使用 GA3 來協助監控流量時很方便,只要放入 UA-xxxx + Script 基本上就完成了。但在一陣子之後需要搬到 GA4 + GTM 上,這讓許多記憶還停在舊方法上的人頭都很痛,因此以下就由頭痛的筆者帶各位操作一次新的 GTM + GA4 來放入 Hexo 的部落格中囉!


當各位開始有接觸到跨部門的合作/專案、對外合作,或是加入通訊軟體為本的公司,通常信箱或是訊息都會跟海嘯一般每天席捲而來 🌊
大部分 Email 系統也相當成熟,也因為信件是有法律效應,在大家日常工作中扮演很重要的一部分,而在我的工作日常中,很常使用 Email 的以下功能:

在 9/1 之後 CDC 有放寬自主期間可以一人一室,剛好我是在 9/2 出發泰國,因此回來之後就可以在自己的小套房裡面開始隔離,以下就跟大家分享這次回國之後的一些準備事項,或許這篇有機會可以幫助到正在準備回台灣的你們!

隨著七月到來,也是我進駐台北兩周年的時間,當中跟著前輩學到的東西也是非常多且相當受用,讓我在這兩年對於許多事情的看法與處理方式都發生了很多變化,從內部活動逐步到現在能處理研討會贊助案的工作,當中收穫與付出都是相當多的!話不多說往下看吧!

首先感謝六指淵提供了這麼棒的自動剪輯神器,讓我這剛入門剪輯的新手可以很快速地做一些卡接風格的使用,不過照著步驟把一些卡接內容完成之後,原本的影片是 1920x1080,拉進去會變形(1280x720),以下若是相關處理步驟,若也有遇到類似的問題可以參考。

忍編每天的樂趣就是看許多電競選手直播打遊戲分享他們遊戲上的樂趣以及不同的見解,隨著暗黑破壞神上市後我就想說玩的時候可以開個直播,雖然現在沒什麼人看(開好玩的),但研究一些直播技巧與設定也覺得不錯,在網路上有看到許多前輩們有拍影片介紹以下的功能,但看完之後找不到當初那部影片,就先透過本篇來記錄一下如何收取訂閱資訊與聊天室內容(基於 Youtube)。
「風遁螺旋手裡劍」、「雷之呼吸壹之型OOO」
以上這些兩句只要有看動畫的人應該都會知道,甚至都會把大街上他唸出來了(太油),此外因為工作關係上班都會與有許多日本同事溝通,看著看著都覺得自己好像看得懂(明明就用亂猜),且甚至身邊的同事都去考到 N1 等級了,當身邊的朋友(同事)都開始在學日語時,感覺自己也得上了XD(畢竟接觸多了)
以上廢話很多
以下是我一開始學五十音的學法,與大家分享一下我如何用工程師的角度的記得這些單字 😆
各位好,我是 LINE TAIWAN 的技術推廣工程師 - NiJia Lin,很開心這次能以不同的身份(LINER)來參加於南港展覽館二館舉辦的一年一度 LINE 技術大會 - TECHPULSE,雖然今年很可惜的因為疫情關係無法邀請海外講者來台灣與各位分享,但同時也讓大家了解到 LINE Taiwan 工程團隊實力也是深不可測,這次我也將透過這篇文章讓你了解 LINE 所帶來的魔力吧!
在此之前也有分享一篇詳細的文章 - 歡迎大家參考 您不能錯過的 LINE TAIWAN TECHPULSE 2020 年度盛會

最近重灌了兩次 Mac 系統,而加入 LINE 之後也需要在安裝自己的工作環境,而我日常都在寫文章、寫範例,除了日常已經將開發環境上傳 Gist 以外還有一些小細節需要注意,因此以下就介紹一些我認為較常用的工具以及一些環境設定的部分。

Lint 是靜態程式檢查語法的工具,最早出現於 C 語言,也有人稱為 Code Quality Tools,主要是用來標記程式碼中含有某些可疑、不具結構性或潛在問題的部分,也因只標記緣故,所以只會透過編輯器提醒使用者。之後則汎用於各個語言之中,如 ESSLint、flake8、Rubocop...
從前在改以前寫程式時都會有幾個問題,『排版好亂』、『這變數(a1)是?』諸如此類的問題,但就在加入社群後認識很多圈內的朋友並與之討論後才體悟到 Lint 的重要性,首先在跟人家解釋程式時從變數、函式名稱時就能讓對方更快速知道用途,透過 Lint 的提醒讓我修正而不用與其他人解釋 a1 a2 個別代表什麼,大大的降低溝通成本。

我在上一篇的文章 - 從 Http 請求到認識 OAuth 以及 OpenID 中引入了 PlantUML,主要是看了這篇文章後啟發我使用 UML 來畫圖,除了可以動手畫流程讓自己更了解外,也不用到處去找適合的圖並且能讓文章的風格統一。
但若要 Markdown 支援 PlantUML 的話還需要額外安裝套件,這邊就以我部落格的樣式 - Hexo 的 next Theme 來描述實作過程!🙂
下載位置: VScode PlantUML 套件

最近因為在找新工作,同時也需要把一些知識打穩,既然常在寫 side project,那麼一定要對於 http 請求後發生什麼事、SSL、OAuth、OpenID 都需要理解清楚,否則串了這麼多服務也寫了應用,但在關鍵時沒講出來的話作品就發揮不出它的功用了 😞,那麼以下就會用我的觀點以及紀錄方法來敘述這些功能。
註:若有發現有什麼問題或內容有誤的話麻煩再留言讓我知道,或是
寄信給我也是可以喔!
https://www.google.com之後發生了什麼事?首先須了解https://www.google.com這樣的網址是如何組成:

礙於最近做事有點手忙腳亂,沒有很有效的管理時間,記錄下來讓往後能有個經驗可循並增加自我管理能力。
我記得上次自己弄 docker container 已經是一年多前,當時還結合 Drone CI 來跑(好久了 👀),對於 Dockerfile 使用方法依稀有點印象,而最近因為看了許多 open source 後對於 Dockerfile 的內容了解度也提升了許多(實在是個不錯的方法 👍),會這樣子弄的原因是我認為 Serverless 的架構很容易被 AWS 綁架,我認為 API 這類可拆出來的功能應該要包成 container 增加彈性不讓平台限制,被這個想法 trigger 後就來好好練習 Docker 了 🏋️♂️。
這次使用 Twitch-Bot 做我的練習對象,裡面主要用了 node 以及 mongo 兩個服務,在此同時如果各別起 docker 挺麻煩,因此就需要使用 docker-compose 幫忙啟動,而在這過程中學到了:
network 連接兩個容器的使用方法。接下來就是趁六月 credit 過期前趕快來玩玩 Google Kubernetes 🚀
最近在公司實作 AWS IoT Job 部分的功能(以下稱為 Job),因為 Job 每次執行收費約 1 塊台幣,之所以會用它是因為在 IoT 執行時不是只會單純發送訊號出來讓後台收訊號做事,而是需要跟後台經過一連串的溝通來達成功能(例如 韌體更新),當然還有很多更複雜的功能,這邊只列舉一個小部分。
從這段時間的實作上學到的部分:
當後台的 Queue 同時塞進很多工作時要如何管理並通知裝置此時的工作有哪些(All Job)以及要做哪件事(Next Job),實作這功能時不能只考慮到一個裝置,而是考慮到 N 個裝置時要如何過濾並管理狀態機,限制裝置要依照狀態執行避免系統錯亂。
之前主要功能都是介接 AWS IoT,而這次是要實作一個類似的功能提供給其他使用者,不能只開一個 API 就想要功能都包好,而是將功能明確劃分,讓使用者可以有彈性的去組合,只是在此時我沒有處理得很好,之後的 Task 需要更注意。
參考 Pull Request: Add narrowcast client api #237
功能主要是讓開發者可以透過 API 來做分眾的推播,在實作這個 issue 時讓我原本模糊的工廠模式清晰了許多,主要是 SDK 使用了 Python Class 來擔任 Model 的角色,讓進來資料可以經過 model 去轉換成對應的 key-value,所有的資料都分類進去對應的工廠處理完再回傳出來。
在還沒開始看 code 前只想著要寫什麼邏輯去處理,其實使用 Model 的方法就處理掉大部分資料格式的問題,很多 LINE 文件已經清楚定義的格式只要照著填就解決了,只是在這個 Task 遇到了Python 保留字的問題,而經過各種 google 後只好自己寫邏輯去判斷掉這件事,之後只能繼續看有沒有更好的寫法可以取代掉這個保留字的問題。
官方 Github 有寫要 Contribute 時需要執行的內容(參考),lint 則是遵照flake8,而執行tox後會對每個版本的 python 去做測試,但像我電腦只有 3.7 版 tox 就只會針對這個版本做測試。
tab 與 空白鍵(space) 的差異,PEP-08 上也告訴建議使用空白鍵,而 python 3 之後也不允許兩個混用,畢盡 python 是很注重縮排,既然官網都寫了哪有不遵守的道理呢?😃Lint 也不會無緣無故來刁難開發者 XD
public、private 的觀念,透過這樣的方法來表示它(Class、Function)是一個內部函式,藉由 Lint 讓開發者可以知道這個功能是內部還外部,只是在 python 只能使用這個 lint 讓大家遵守這規則,如果沒有 CI 要硬上的話其實也管不住,畢竟不像 golang 這類語言會編譯(汗顏)。總之使用 lint 的好處就是開發風格可以統一,能夠盡量避免不必要的 programing 麻煩,在寫任何語言都推薦使用各個語言的 lint,雖然一開始會很討厭它,但它真的是在幫助你 😆。
這時間與家人一起訂閱了一年份的會員,而我的初衷就是想把英文學好,而我也花了時間好好的看完一部全英文影集(發英與字幕),第一次嘗試這樣看全英文,並且邊看邊 Google 翻譯不懂的單字同時口述跟著念一遍增加記憶力,隨著工作量減輕後下班也可以再安排時間繼續看下個影集學了~
然後迷上了
愛的迫降這個韓劇,推薦喜歡看愛情片的朋友去看 ❤️
最近剛好因為這傳染病盛行,除了防疫之餘,g0v 也提供 API 讓開發者可以拿去介接,隨著大家各種開發前端 web 以及 chatbot ...的應用後本來在想有個什麼想法可以參與這個全民黑客松,只是我認為用途實在重複性太高,而在大家開發應用時我又剛好在寫 LINE SDK,錯失了第一時間發佈口罩相關的服務建立時間,本來想到 LIFF v2 + LINE Notify,但只是在使用上很容易吵到用戶進而封鎖它(LINE Notify),因此要考慮好功能再來看會不會有比較好的使用情境。
出入公共場所記得戴口罩,有帶隨身瓶酒精的記得消毒!😷
有時候在思考與規劃的過程中如果經驗不夠時真的很難馬上到位,不過任何事情都一樣,若這件事可以輕鬆且又得心應手,代表它可能已經是你熟悉的領域或是過於簡單,就像我一開始處理社群一樣,若是沒有前輩們帶著走的話我跟本無法有效地處理事情,總之凡是起頭難,即早加入即早熟悉各個領域才是王道 😆