Mason Tang

n8n用客製節點,自動執行區塊鏈轉賬

AI 自動化

n8n用客製節點,自動執行區塊鏈轉賬

你有沒有想過 存放在區塊鏈上的錢,能夠自動轉出!? 現在用 n8n 就能做到了 那要怎麼做呢? 首先假設這筆錢,不存放在交易所,不然直接用交易所的 API 就好了~ 而是持有私鑰的地址,有著一筆錢。 現在私鑰有了。什麼情況要轉帳呢? 最有可能是某個新聞消息。誰又中彈、誰被抓去關等等...... 我們可以假設是從 RSS 來的,因為新聞不只一筆,所以要逐筆處理。 然後我們可以透過 AI 去判斷是不是我們指定的相關新聞,例如:哪個政治人物怎樣。 透過 Switch 把相關事件,交給我們今天的主角「客製化的節點」。 製作客製化節點(Node) 要製作客製化節點,首先我們可以去 GitHub 把官方範例下載下來 https://github.com/n8n-io/n8n-nodes-starter 然後放到 n8n 的使用者目錄中。預設是在 ~/n8n,

By Mason Tang
VSCode 截圖神器 Easy CodeSnap

VS Code

VSCode 截圖神器 Easy CodeSnap

如果有在用 VSCode 和打技術 Blog ,可能會知道 CodeSnap 這款截圖美化工具 但你一搜尋,一定會看到超多複製品,原因是最原始的版本 2.6M 次下載的版本,早在 2021年就停止更新了。 後續各種複製品陸續更新、互相抄襲他們自己的功能。 這麼多款 CodeSnap,個人覺得最好用的是 Easy CodeSnap 相較其他變體,都有的 highlight 及增刪 highlight ,還多出 Windows/MacOS Style 的視窗供你選擇 背景顏色,可以在設定中輸入 CSS 顏色的語法,讓背景變成漸層或指定顏色

By Mason Tang
3個截圖美化工具 Pika , Brandbird, Screenzy

生產力工具

3個截圖美化工具 Pika , Brandbird, Screenzy

Pika 開源工具 Open Souce 的工具,可以自己部署,不過自己部署太麻煩。有幸找到一個已經有人部署的非官方線上工具:https://pika-01s.pages.dev/ 官方版需要註冊。官方版本比起自己部署,具有更多功能 https://pika.style/ BrandBird 超精美的截圖美化工具 比起其他的截圖美化工具,有提供更多的工具,甚至可以做到 3D 翻轉的效果。 https://www.brandbird.app/studio Screenzy 上方有個無法拿掉的文字框,需要把圖片下載到電腦才能使用,相對另外兩個可以直接複製到剪貼簿,個人比較沒那麼喜歡 Screenzy。

By Mason Tang

工程師筆記

忽略 git 已存在檔案的修改

忽略 git 已存在檔案的修改 有時很多檔案變動,但變動的都是不會上傳到 repository 的 config, 在 git status 或是 VSCode 就會看到一堆的已修改檔案。 並且無法透過 .gitignore 忽視掉它。 雖然放著也不會怎樣,但是看了就不舒服。還要經常給他 git stash。 這時就可以透過下面這指令,把檔案從變動中忽略。 git update-index --assume-unchanged $filepath 還原上一步 如果哪天真的要修改上傳,可以透過這行,把檔案從這狀態解除。 git update-index --no-assume-unchanged $filepath

By Mason Tang
n8n 哪裡有社群節點清單?

AI 自動化

n8n 哪裡有社群節點清單?

如果想知道 n8n 有哪些社群節點,要到 NPM 倉庫找,而不是 GitHub 上。 根據 n8n 官網文件,要成為 n8n 社群節點,需要在 package.json 的 keywords 要有 n8n-community-node-package。 一般很直覺會在 GitHub 上找 Topics ,但是官網文件並沒要求是 GitHub 上的專案,甚至壓根不用是 git 專案。 但是 n8n Node 終究是要上傳到 NPM ,所以只有 NPM 能找到所有開放的社群節點。 可以從搜尋結果很明顯發現 GitHub 上只有 48 筆公開 repository,NPM 上卻有將近 1000 筆。

By Mason Tang
n8n 將陣列元素拉到頂層

AI 自動化

n8n 將陣列元素拉到頂層

在使用 n8n 跑迴圈的時候,會遇到第一個問題,就是要跑的陣列資料,其實是在某個欄位底下。 例如: 你期望是這樣 [ { "sessionId": "1735730631200", "action": "sendMessage", "chatInput": "從2007年到2016年間,「乾淨與公平選舉聯盟」所組織的一系列「淨選盟大會」是馬來西亞歷史上重要的社會運動。雖然五次的淨選盟集會有數以萬計的人參與,但對於馬來西亞族群政治的前景,學者馮垂華傾向持保守態度,原因是馬來西亞多元族群互動仍未成熟,仍有隔閡。", "link": "https://www.thenewslens.com/article/246957" } ] 實際拿到是 [ { "data"

By Mason Tang
與其追求 ikigai ,不如擁有 ikigai

自我成長

與其追求 ikigai ,不如擁有 ikigai

ikigai,這並不是很新的東西。每個人都想找到 自己享受、擅長、世界需要、又有錢賺的事。 但往往,既不享受、又不擅長、世界可能還不需要、或根本沒錢賺。 於是當你想到 ikigai ,就會怨懟自己怎麼還在做這種沒意義的工作。 相信我,沒有工作是完美的,現實往往更為複雜,只有自己如何看待自己所在做的事。 理想與現實的差距 1. 完美的 ikigai 很罕見:很少有人能找到一份完全符合 ikigai 四個方面的工作。 2. 職業發展是一個過程:找到自己的 ikigai 通常需要時間、經驗和自我探索。 3. 外部因素的影響:經濟環境、家庭責任等因素可能會限制我們追求理想工作的能力。 調整期望和態度 1. 重新定義成功:不要僅僅關注 ikigai 的所有方面,而是珍惜工作中的積極因素。 2. 尋找小的意義:即使在看似平凡的工作中,也可以找到價值和目的。 3. 持續學習和成長:

By Mason Tang

工程師筆記

Golang 由兩個 chan 組成的鎖死

這是有一次在工作中發生的情況,當時 debug 很久。原來不是只有 Mutex 才會發生鎖死。 以下是一個涉及兩個 channel 的死鎖示例: 雙 Channel 死鎖示例 func main() { ch1 := make(chan int) ch2 := make(chan int) go func() { v := <-ch1 // 等待從 ch1 接收數據 ch2 <- v // 將接收到的數據發送到 ch2 }() ch1 <- <-ch2 // 主 goroutine 嘗試從 ch2 接收並發送到 ch1 } 這個程序會產生死鎖,原因如下:

By Mason Tang

工程師筆記

Golang 實作節流(Throttling)和防抖(Debouncing)

在 Golang 中實現節流和防抖功能與 JavaScript 中的實現思路類似,但需要利用 Golang 的特性來實現。 以下是 Golang 中節流和防抖的基本實現方法: 節流(Throttling) 節流的目的是限制函數在一定時間內只能執行一次。以下是一個基本的節流函數實現: func throttle(interval time.Duration, f func()) func() { var lastTime time.Time return func() { now := time.Now() if now.Sub(lastTime) >= interval { f() lastTime = now } } } 使用示例: throttledFunc := throttle(time.Second, func() { fmt.Println("

By Mason Tang