28 Followers
34 Following
22 Posts
做了在 GitHub 上 publish release 後自動為 monorepo 裡的所有 package 跑 build 然後 publish 到 NPM/GitHub Packages 上,愉快~

First GitHub Action published!

在開發含有大量 packages (且不斷增加中) 的 yarn workspaces 專案時,可能會因為加入新 package 的時候忘記更新 GitHub action 去跑它的 unit test,導致在 CI 漏測了某些 package。使用這個 action 加上 GitHub action 的 dynamic matrix,就可以自動將所有有 test script 的 package 都開個 job 拿去跑 test 啦!

https://github.com/marketplace/actions/yarn-workspaces-list?f=1

(另一個 alternative solution 是 yarn workspaces foreach,但分開 job 來跑的話結果會比較好讀?只是缺點是每個 job 啟動後都要跑一次 yarn install,雖然有 cache、也可以改用 yarn workspaces focus ⋯⋯)

Yarn Workspaces List - GitHub Marketplace

Outputs a list of Yarn Workspace which matches a certain condition

GitHub
不過目前也有蠻多基礎建設沒有做完整,有一些設計上是 iOS 與 Android 通用的邏輯性 UI Component 實際上 Android 版本根本沒實作 (例如 UIGroup),還有原本應該做在 useData hook 等地方的 UI 層級 dataloader 和 cache 也都沒有做,使得每個 UI view 都是獨立從 DB 載入自己的資料,並且在每次顯示於螢幕上時無腦 reload,因此會有一些 (在中高階裝置上) 不影響使用的效能問題。理想上應該要學 Relay 或 Apollo Client 有一個集中的 cache store 讓 UI subscribe,不但可以避免重複的 DB 讀取,也可以直接向 DB subscribe changes 讓資料有更動時自動更新 cache store 中的內容,這樣就不用一直無腦 reload 資料浪費效能了。又或者是直接把 DB 讀寫和 sync 功能都移到獨立的 thread,就比較不會因為大量資料處理而讓 UI 變得卡頓。

另外也有實驗性的 composable Redux slice,讓每一個 slice 可以不管如何被使用,只顧好實作自己內部的功能,並且可以隨意地被其他 slice 引入、組裝成一個更大更完整的 app。這樣就使得後期更動 app 結構層級的功能更加容易,例如增加一個多使用者 profile 的 slice,然後把原本的整個 app 改掛到多使用者 profile 的 slice 底下,就可以在幾乎不用更動現有 code 的狀況下完成多使用者切換的功能。但這部分的 code 還寫得很亂,可能之後會再抽出來吧。

詳見架構圖: https://github.com/zetavg/Inventory/wiki/App-Architecture

App Architecture

An RFID asset management app for home or businesses. - zetavg/Inventory

GitHub

其實除了 app 本身之外,這也是一個發展多年 (註 1) 的「有點 Ruby on Rails 感的」data-driven React Native app 框架,訂好 JSON schema、validation、callbacks 後就能直接獲得自動產生的 CRUD UI (註 2),可以快速做出能用的 prototype,之後再用自己寫的更好用的 UI 來取代。資料的 backend 是使用 CouchDB/PouchDB,但也可以抽換成別的實作。

註 1:每隔幾年發展幾個月。
註 2:在 Inventory app 裡可以在 More → Developer Tools → Data 使用這些自動產生的 CRUD UI。(Developer Tools 進入方式: https://github.com/zetavg/Inventory/wiki/How-to-Access-Developer-Tools )

How to Access Developer Tools

An RFID asset management app for home or businesses. - zetavg/Inventory

GitHub

▌硬體成本

TL;DR 家用大約兩萬多

• RFID UHF 標籤:每張約 US$ 0.4 ~ 0.1
• 可貼在金屬表面的 RFID UHF 標籤:每張約 US$ 1 ~ 0.4
• 可水洗烘乾 RFID UHF 布料標籤:每張約 US$ 0.3
• 手持式 RFID UHF 讀寫機器:每台約 US$ 328
• 熱轉印標籤機 (不一定要有):每台約 TWD 3,000 ~ 6,000 (GoDEX EZ120/EZ130)
• Label LIVE 標籤列印軟體 (不一定要有):一台電腦授權 US$ 47.99 (個人版買斷) / US$ 147.99 (企業版買斷) / US$ 14.99 (企業版月費)
• 時間:如果要將大量物品打上 tag 還是蠻花時間的,若是慢的話一件物品花 2 分鐘,500 件物品就需要 2 個工作天來上 tag

去年搬家搬到崩潰後開始做的,原本是想解決遊牧生活所有東西都沒辦法有固定擺放位置、難以收納管理和找到它們的問題。有它之後物品打上 tag 後只要大致分類丟進櫃子箱子、隨便找空位擺,需要的時候再開 app 搜尋然後靠 RFID 定位物品位置,快樂地用到現在。

▌使用情境

• 居家尋物:找鑰匙、找錢包、找遙控器、找行動電源、找充電線⋯⋯
• 旅遊:快速檢查行李是否帶齊、是否有遺失。
• 公司資產管理:快速檢查公司資產是否歸位、有沒有東西遺落在案場。
• 盤點:使用 RFID 讀取機掃過櫥櫃、收納箱、倉庫儲位,即可快速記錄物品所在位置,方便日後查詢。
• 建立 checklist,針對特定活動 (例如露營) 檢查是否有帶齊需要的物品。
• 管理消耗品的庫存量、追蹤物品的有效期限。

▌實際 App Demo

• 盤點、尋物: https://youtu.be/SPdiQ89HPxo
• 建立資產、寫 RFID tag: https://youtu.be/l5uIIwOZLOk

Inventory App: An RFID Asset Management Solution for Home or Small Businesses

YouTube

家用/小企業 #RFID 資產管理工具 iOS/Android App,source-available on GitHub ➡️ https://github.com/zetavg/Inventory

再不放上 source code,就快要獲得 GitHub「Creates a repository that received over 100 stars with no source code inside」的 Achievement 了 XD (實際上並沒有這個 Achievement)

GitHub - zetavg/Inventory: An RFID asset management app for home or businesses.

An RFID asset management app for home or businesses. - GitHub - zetavg/Inventory: An RFID asset management app for home or businesses.

GitHub
是不是該買 iPhone 13 mini 來囤了⋯⋯雖然官網今天直接下架,但剛剛問直營店,現場還是買得到,少量現貨會賣到完。
Pokai Chang  on Twitter

“台灣版開源低成本 ChatGPT (?) TW-Pythia-6.9B-Chat ⋯⋯的雛形,因為雲端 GPU 開銷考量,目前手上的資料都沒給他訓練完。訓練到目前的花費大概 US$ 85 (不包含先前的實驗嘗試)。 Demo 詳見: https://t.co/IXZXV1IR7h (目前除了有基本的中英文翻譯能力 (但有可能翻錯) 外,還沒有什麼實用價值 XD”

Twitter