Category: Uncategorized

  • 取得 OCI 2025 AI Foundations Associate 證照

    又拿到證照了 – Oracle OCI AI Foundations Associate 這次拿的是 AI 證照,分數還不錯,98 分。我拼了 1 天的時間看教學影片,然後只做完模擬考題,就直接正式考試。 我覺得這課程還不錯,有很廣泛的介紹目前的 AI 技術,與淺顯的解釋各種 AI 技術的原理。不過也有很硬核的技術內容(要考的人不要因此昏了頭),及 Oracle 自家的 AI 產品(推銷!?) 想考的人可以到這: https://mylearn.oracle.com/ou/learning-path/become-a-oci-ai-foundations-associate-2025/147781

  • 取得 OCI 2025 Certified Foundations Associate 證照

    記錄昨天花了一天時間考的 Oracle 雲端基礎證照。 是免費的線上考試,可能含金量不高,但擁有它,多少可以騙吃騙喝(!?) 我打算再多考幾張。

  • LLM AIs 與廣大軟體的連結 – MCP

    近來我常看到 AI 領域一直出現一個名詞 – MCP (model context protocol)。起初看到時,只有稍微查了一下,沒看懂就沒再研究下去😅 但這名詞卻一再出現,再次引起我的好奇研究了一下。這次我終於了解 MCP 的一些價值所在。我先不從 MCP 的運作面來看,而是從實際的問題面來看它的價值。 過去大家在使用 LLM 的 AIs,如 ChatGPT, Gemini, Claude, …, 所能做的應用僅限於這些廠商有提供的。比如在 ChatGPT 輸入提示詞,可以請它創作、寫程式、畫圖,頂多還有一個 GPT Store 可以在其中找許多特定應用,但它們的應用仍限於 ChatGPT 所建立的封閉生態系,難以擴展”更廣”的軟體應用。 那我說的”更廣”有多廣?我今天了解 MCP 後才知道它能觸及多廣的軟體!基本上目前能與任何桌機程式或遠端程式都能串連(手機、平板較為封閉,可能還不行)。 比如寫了一支氣象程式,並且實作 MCP server,使用者就可以透過 LLMs 用自然語言去控制它。比如請它查某地的氣溫。我舉這個控制”氣象程式”沒什麼實用價值(因為我暫時想不到更有創意的😅 如果我想到了,我也不會講,先自己開發出來再說😆),但只是要說明 MCP 帶來的軟體串聯功用。至於 LLM AIs 串什麼軟體工具,能達到驚人的創舉,就看大家的創意。如果我想到了,我就先去發財了!?😆 MCP 本身不是什麼高深的程式技術,但它的重要性在於連結 LLM AIs 與廣大的軟體工具。它的誕生也多虧於現今足夠智慧的 LLMs。現今 LLMs 懂得如何使用軟體工具,它可以將你的自然語言轉換成 MCP servers 懂的操作語言,執行指定的軟體! LLMs…

  • 強化學習 AI 玩遊戲

    最近 AI 很紅,紅到在 YouTube, Podcast 上三不五時就來個 AI 主題。為什麼 AI 這麼迷人?因為 AI 可以透過學習,模仿人類,如演講、繪圖、寫歌、…。如果模仿的準確度高的話,就可能取代人類😱🥲 – 人工作會累容易出錯,機器幾乎不會。 AI 浪潮來襲,雖然我只是個門外漢,但多少也想分杯羹😆看見 YouTube 上有些專家在分享如何”行雲流水”般的用 AI 輾壓式的解決一些問題,如寫 AI 程式玩遊戲,結果 AI 練到遊戲關卡一個個被完全輾壓😱 而我感覺到這”行雲流水的操作”就很有意思了,它似乎透露要寫這麼一個 AI 程式,現有的網路資源比以前容易取得、達成目的!因此我覺得我應該也能在幾天的時間內寫出一支 AI 程式,為自己開闢能設計 AI 以解決問題的能力。 我參考的一部 YouTube 影片教學是寫強化學習 (reinforcement learning, RL) AI 玩遊戲。雖然影片略過一些細節演算法與實作,但大致上是利用 ChatGPT 生成一支 Python pygame 的遊戲原始碼,再用 ChatGPT 生成一支 Python OpenAI gym 的 RL 樣版程式碼,再將兩者接起了以達成 AI 自我學習玩遊戲的訓練程式。 我也依樣畫葫蘆先用…

  • AI 寫程式 – 照片投影機

    最近參加了一場兒童營活動,活動快結束時有一環節是當日活動回顧。攝影大哥在電腦上執行了一支 app,將當日所拍照片用投影機播放出來,同時播放背景音樂。我不清楚那支 app 是怎麼做的,但它激發我一個靈感:通常要將多張照片做成一個個播放的影片是要花一些時間作影片編輯、輸出。但遇到要當日回顧的情形,就要趕著做影片。所以如果能簡單將需要播放的照片、音樂丟到電腦的一個目錄,再用一支 app 讀取目錄、播放,就可以免去趕時間做影片。 我原本搜尋有沒有這種 app,但沒找到理想的,有些只能播照片、再手動播音樂。既然沒有,只好自己寫一個但萬事起頭難,要用什麼程式方法快速達成目的?我沒什麼頭緒。後來我想到最近很紅的 AI,就把需求輸入給 Bing Chat,果然輸出不錯的原型設計 (prototype)。我們可以提示 Bing Chat:功能需求、要用什麼語言寫、要用什麼軟體框架寫、要用什麼套件寫。Bing Chat 幾分鐘就能輸出結果。由於我們輸入的提示有時難以精確,可想而知 AI 也無法因此輸出相應的部分,因此這種輸出只是原型設計。但原型設計就很有價值了,只要我們輸入 AI 的提示將主要部分描述清楚,剩下一些未輸出的小細節再手工實作就行! 最終我以 Bing AI 生成的原型 app,再經由我的手工雕刻完成了一款”照片投影機” web (PWA) app: https://myhpwa.github.io/photo-slideshow/ 支援 Windows, macOS, Linux, Android, iOS. 原始碼: https://github.com/MrMYHuang/photo-slideshow (實測 Bing Chat 有時會拒絕幫你寫程式,可能是跟微軟自家的 GitHub Copilot AI 寫程式付費服務衝突。目前可以多試幾次重新與 Bing Chat 對話,有時就會吐出程式碼)

  • 為什麼有些分散式計算要求奇數節點?

    我是個業餘研究分散式計算的門外漢😅。踏入這門領域,遇到許多不解的規則,其中一項就是標題寫的:為什麼有些分散式計算要求奇數節點?今天找到一篇文章讓我豁然開朗:https://etcd.io/docs/v3.3/faq/#why-an-odd-number-of-cluster-members 首先要釐清是哪些分散計算?我把分散式計算分兩類:一類是追求高效能、各節點可獨立平行運作的計算(簡稱高效能),比如用多個節點服務多個獨立資料計算的使用者請求。另一類是追求高可靠度、運作結果有相依的計算(簡稱可靠度)。而原問題是指高可靠度。 許多高可靠度分散式計算應用軟體,如 etcd, RabbitMQ (quorum queues), 要求叢集中的節點數設定為奇數,為什麼?首先這類軟體是利用節點數的「多數」, floor(n/2) + 1, 作為某項可靠度的依據,如選出領導節點。以 n = 3 為例,多數為 2,也就是容錯為 3 – 2 = 1 個節點。那麼再多加 1 個節點會怎樣?就是 n = 4,多數變為 3,但容錯仍為 1 = 4 – 3. 所以 3 節點與 4 節點相比,4 節點不但沒增加容錯能力,反而增加達成多數的難度 ( 2 vs 3 )。因為多加的節點也可能出錯,能導致原本只錯 1 個的叢集再多 1 個錯,反而不能達成多數!因此用偶數節點的叢集不比減一的奇數來得好。 另外高可靠度分散式計算有一點與高效能也很不同。高效能是節點數愈多,效能愈好。但高可靠度往往是節點數愈多,要花更多時間作節點間的資料交換才能計算出多數,因此效能反而變差!所以高可靠度叢集要在可靠度與效能間作取捨。

  • 壹零捌自在語 app 上架

    我做了一款 app 可以隨機顯示聖嚴師父的108則自在語。希望對大家有幫助。可在各 app 商店下載,或用瀏覽器安裝。 iOS 14+, macOS 10.11+:https://apps.apple.com/app/id1634911913 Android 6+:https://play.google.com/store/apps/details?id=io.github.myhpwa.sy108q Windows 10+:https://www.microsoft.com/store/apps/9N6PT9RL8P1D Linux:https://snapcraft.io/sy108q PWA 網頁版:https://myhpwa.github.io/sy108qPWA 安裝教學 (這是我之前寫的另一款電子佛典 PWA):https://github.com/MrMYHuang/cbetar2/blob/master/PwaInstall.md 開放原始碼:https://github.com/MrMYHuang/sy108q

  • 成語你比我猜上架各大 app 商店

    這是一款成語遊戲 + 成語詞典的 app。遊戲部分:可作為聚會遊戲。玩法是出題者,點擊遊戲開始,會隨機由離線成語資料抓題,並依設定答題時間一題題切換。每題成語,出題者不可說出其中任何一字,只能用比手畫腳方式讓答題者猜是什麽成語。如果在限時內,答題者猜中成語,出題者請按綠色勾。若答題者放棄,出題者可按紅色叉跳過或等答題逾時。所有題目完成後,最後會顯示分數,與每題答題狀況。另外有些成語用字較生僻,建議在玩時可以自行判定相似成語為答對。 iOS 14.0+, macOS 10.11+:https://apps.apple.com/app/id1634551497 Android 6.0+:https://play.google.com/store/apps/details?id=io.github.myhpwa.ygig Windows 10+:https://www.microsoft.com/store/apps/9PHK9WGRCL9Z Snap Store (Linux):https://snapcraft.io/ygig PWA 網頁版:https://myhpwa.github.io/ygig 開放原始碼:https://github.com/MrMYHuang/ygig

  • 電子佛典 app 新支援樹狀目錄

    上個禮拜六、日,我又想到我這款電子佛典 app – cbetar2 可以加什麼新功能。我這款 app 起初是為手機、平板的觸控裝置設計,因此它的 UI 較適合觸控,其中佛經目錄的瀏覽是一頁一層目錄列表呈現,這種好處是每列可以足夠大,方便手指觸控。但操作時想從目前一層往上跳 n 層,就得按 n 次向上鈕,不過這也是不得已的妥協。 然而我這款 app 另一設計訴求就是跨平台,不止觸控裝置可以用,桌機、各種作業系統都可以用。因此此種觸控 UI 在桌機上運作就不是這麼適合,雖然堪用,例如過大的 UI 讓滑鼠的滑動距離變有些長。 後來參照一些桌機用的電子佛典 app,發現它們都使用樹狀目錄,較適合滑鼠操作,這使得我想改造我的 app 支援可切換觸控與鍵鼠 UI。要做樹狀的佛經目錄 UI,首先要有樹狀結構的佛經目錄資料、樹狀 UI 元件,還有將資料轉為 UI 的演算法。CBETA 經文檔有提供樹狀佛經目錄資料,格式是 XML,把它讀入記憶體後,可以作一些處理,產生新的樹狀資料,例如把分開的樹狀目錄資料合併成單一樹狀資料。 “遞迴”是一個操作樹狀結構很好用的演算法,很適合做上述樹狀資料的處理與樹狀 UI 的生成。要了解遞迴如何處理一棵樹,首先可以將樹表示為節點與分枝的組成。一棵樹由根節點開始作分枝,長出子節點。這些子節點又能再分枝長出它們的子節點。而遞迴處理的切入點就是每個節點都做類似的事,以程式來講可以表示為一個 function:每個節點除了作自己負責的事,也可以呼叫它的子節點作事。而這些子節點也是作類似的事,也就是用同一個 function 作事。如此一來只要從樹的根節點啟動 function call,就能讓每個節點都作事。這種 function 呼叫自己的演算法就是遞迴。遞迴還有一重要注意事項,就是在最終端的”葉節點”,要終止遞迴下去,忘了寫這條件可是會造成無窮遞迴。以下為一段遞迴 function 的範例: 有了樹狀資料,接著仍是使用遞迴將它們對應成樹狀 UI 元件即可。但我遇到一個小挑戰,就是我這支 app 是基於 react + Ionic Framework 寫 UI,但…

  • 慢慢來之生成函式

    最近在改良我的電子佛典 app – cbetar2,其中新增一項大功能就是支援匯入 CBETA 經文檔 zip 作離線瀏覽。起初的版本我只在我的 hTC U19e 6 GB RAM Android 手機與 iPad 模擬器測過。但後來發現 iPad 模擬器與實機有一重大差異 – 硬體資源,主要是 CPU, RAM, 儲存空間這些部分基本上模擬器的資源就是開發機(我的 MacBook Air M1 2020)的資源,而不是 iPad 實機的資源。而往往開發機的資源會比實機好上很多,因此這個部分模擬器的表現與實機不同。的確我的 app 在模擬器可以順利運行,但在實機 iPad 6 2 GB RAM 就會當掉。 我的 app 在匯入小檔 zip 時都可以順利運作,但匯入完整 CBETA 經文檔 zip 才會在 iPad 當掉。因此這顯然是匯入時作 zip 解壓縮的部分耗掉太多 RAM 所致。經研究我原本使用的解壓縮程式 adm-zip 只支援一次將…