安德魯的部落格
2024-03-02T16:54:27+08:00
https://columns.chicken-house.net
替你的應用程式加上智慧! 談 LLM 的應用程式開發
2024-02-10T00:00:00+08:00
https://columns.chicken-house.net/2024/02/10/archview-int-app
<p><img src="/wp-content/images/2024-02-10-archview-int-app/2024-02-17-10-06-40.png" alt="" /></p>
<blockquote>
<p>圖片來源: DALL-E, 這篇都是過年期間的研究心得, 就用龍(年) + 未來都市當主題吧</p>
</blockquote>
<p>上一篇文章 <a href="/2024/01/15/archview-llm/">架構師觀點 - 開發人員該如何看待 AI 帶來的改變?</a>,展示了我嘗試的 <a href="https://chat.openai.com/g/g-Bp79bdOOJ-an-de-lu-xiao-pu-v5-0-0">安德魯小舖 GPTs</a> 整合應用,實現了讓 AI 助理的嘗試,我開始真的可以用自然語言就完成整個購買流程的操作了。過程中,AI 也幫我 “腦補” 了部分我 API 沒有提供的功能 (指定預算跟購買條件,AI 自動幫我思考購買組合)。這結果其實比我預期的還理想,完成之後,我開始探索接下來的這兩個問題:</p>
...
[架構師觀點] 開發人員該如何看待 AI 帶來的改變?
2024-01-15T00:00:00+08:00
https://columns.chicken-house.net/2024/01/15/archview-llm
<p><img src="/wp-content/images/2024-01-15-archview-llm/2024-01-20-12-29-24.jpg" alt="" />
(圖片來源: DALL-E, 不過我參不透 AI 想表達啥 XDD)</p>
<p>九年前 (2016),寫過一篇文章: <a href="/2016/05/05/archview-net-open-source/">.NET 開發人員該如何看待 Open Source Solutions?</a>,當時會想寫這篇的動機很單純,那是個 Microsoft 新 CEO 剛上任, 策略大幅改變的年代, 所以我寫了這篇文章來說明我的看法。</p>
<p>到了 2023, 整個軟體資訊業,都被 AI 翻了一輪,Microsoft 大舉跟進 AI 相關應用與服務,我覺得另一個軟體開發領域的大改變來了。我去年本來也打算再寫一篇,無奈當時還是個 AI 的門外漢,應該寫不出什麼東西.. 不過累積了一年,加上最近想通了一些事情,就有了這一篇文章。</p>
<p>在開始講我的看法前,第一段就先來看看我的 PoC 吧,我自...
架構面試題 #5: Re-Order Messages
2023-10-01T00:00:00+08:00
https://columns.chicken-house.net/2023/10/01/reorder
<p><img src="/wp-content/images/2023-10-01-reorder/2023-10-21-22-13-16.png" alt="" /></p>
<p>好久沒有來練習解題的技巧了,這次來聊個有趣的題目:</p>
<blockquote>
<p>如果我透過 API 短時間收到大量的 Request, 我如何保證訊息必須按照順序處理?</p>
</blockquote>
<p>順序問題,我常碰到的是都不分青紅皂白的就丟到 Message Queue, 結果塞進去的順序就已經不對了,才來問我順序該怎麼辦, 我只能雙手一攤說我也沒轍啊 XDD! 如果你沒辦法一開始就用對的順序放進 Message Queue,你就必須自己面對這問題了。這篇我就是想來聊聊,當 “必要” 時,你會如何處理這種問題?</p>
<p>當年在學網路通訊時,TCP 跟 UPD 的差異就是會處理封包順序 & 重送問題,也剛好讀過背後的作法,你懂原理後就會有機會自己解決。類似例子其實很多,QoS 的應用也是,先前研究過的 <a href="/2018/06/10/mi...
架構師觀點 - API Design Workshop
2023-01-01T00:00:00+08:00
https://columns.chicken-house.net/2023/01/01/api-design-workshop
<p><img src="/wp-content/images/2023-01-01-api-design-workshop/slides/slides-01.png" alt="" /></p>
<p>最近這陣子,我對外分享的主題,其實都集中在 “API First” 身上。碰到一些朋友給我的 feedback, 我覺得挺有趣,我挑一個,放在這篇實做篇的最前面:</p>
<blockquote>
<p>Andrew 你談的技巧 (例如: 狀態機, 認證授權, API 開發與測試) 其實我都懂,但是為何你能把這些技巧串再一起? 用這方法來開 API Spec, 我連想都沒想過,而且外面也沒多少人是像你這樣組合起來用的… blah blah (以下省略閒聊的 800 字)</p>
</blockquote>
<p>是啊,這老兄講得沒錯啊,這的確是我自己的經驗談。我擅長的就是只靠幾樣精通的基本功夫,善加利用組合,就能拿來面對許多未知的問題。先前一篇聊職涯發展的文章,我就談到 “知識的連結”,這就是我展現出來的應用。當你每一項技巧都熟練到某種程度以上,你就有自由變化的能力了。能夠達...
架構師觀點 - API First 的開發策略
2022-10-26T00:00:00+08:00
https://columns.chicken-house.net/2022/10/26/apifirst
<p><img src="/wp-content/images/2022-10-26-apifirst/slides/slide01.png" alt="" /></p>
<p>這篇的內容,是我在 DevOpsDays Taipei 2022 的 Keynote 演講的主題: DevOps 潮流下的 API First 開發策略。這場次的內容,正好是我近期正在努力的方向,演講的時間有限,沒能 100% 表達我想講的內容,於是我還是用我最習慣的方式: 文章,重新來闡述一次這個主題吧。</p>
<p>API First, 講的是在你的開發流程內,API 應該被擺在第一順位思考的開發策略。一開始就瞄準 API 為主軸的開發方式,你會發現整個流程跟思考方式都不一樣了,這就是我這篇想要傳達的主軸。我在第一部分先花了點篇幅,說明 API 為什麼應該要 “First” 的理由。API 是很講究事前的規劃與設計啊,有時候會讓人有跟 DevOps 闡述 “先交付價值,尋求回饋持續改善” 的快速循環有所衝突的錯覺。這並非是你要做出二擇一的選擇,而是在持續改善的循環中,有沒有掌握好長期的目標的差別;而 ...
水電工日誌 #8. 家用網路設備整合, UniFi + NAS 升級之路
2022-06-10T00:00:00+08:00
https://columns.chicken-house.net/2022/06/10/home-networking
<p><img src="/wp-content/images/2022-06-10-home-networking/2022-06-12-03-36-32.png" alt="" /></p>
<p>自從 2019/10 因為原本網路設備掛掉, 開始敗入 UniFi 的體系, 果然如同傳聞的一般, 不知不覺就整套換下去, UniFi 的設備就這樣一直繁殖下去了。事隔兩年半, 我家網路主要設備總算都更新完畢, 於是重新補上這篇, 把我對家裡網路的想法交代一下。</p>
<p>這篇我想寫的,不是只介紹硬體的更新而已。硬體更新沒啥特別要交代的啊,這種東西裝好了大概就無感了 (會有感都是網路出問題)。我想說明的是我怎麼藉由 UniFi 的 SDN 把我想要的網路環境搭建起來。從 2007 我開始在家裡擺機櫃開始,機櫃裡的設備其實都在處理這些事情:</p>
<ol>
<li>網路設施 (routing, switch)</li>
<li>網路服務 (dns, web server, storage, backup)</li>
<li>監控設備 (dvr)</li>
<li...
[架構師的修練] - 從 DateTime 的 Mock 技巧談 PoC 的應用
2022-05-29T00:00:00+08:00
https://columns.chicken-house.net/2022/05/29/datetime-mock
<p><img src="/wp-content/images/2022-05-29-datetime-mock/2022-05-29-00-57-25.png" alt="" />
圖片來源: <a href="https://ani.gamer.com.tw/animeVideo.php?sn=29007">動畫瘋, SPYxFAMILY #4</a></p>
<p>這篇不打算寫那麼長,短篇就好,先聊聊一些比較直覺的實做技巧,同時也當作 PoC 這主題的起點。我想聊聊一件事: 就是在單元測試 / PoC (Proof Of Concept) 的過程中,怎麼處理 <code class="language-plaintext highlighter-rouge">DateTime.Now</code> 難以控制預期結果的問題?</p>
<p><code class="language-plaintext highlighter-rouge">DateTime.Now</code> 會傳回系統目前的時間,不過這很難預測 (你不知道何時程式才會啟動啊),這也讓依賴 <code cla...
微服務架構 - 從狀態圖來驅動 API 的實作範例
2022-04-25T00:00:00+08:00
https://columns.chicken-house.net/2022/04/25/microservices16-api-implement
<p>微服務 API 的設計與實作,來到第二篇。</p>
<p><img src="/wp-content/images/2022-04-25-microservices16-api-implement/2022-05-08-02-58-31.png" alt="" /></p>
<blockquote>
<p>圖片來源: https://www.freecodecamp.org/news/rest-api-best-practices-rest-endpoint-design-examples/</p>
</blockquote>
<p>會有這篇,其實是有感現在講架構的文章太多了, 但是每個人看了同樣的文章, 最後實作出來的落差都很大啊。很多架構類的文章都是標竿大型系統的設計,不過還沒有對應經驗的人,看了這類文章是沒辦法從小規模的系統經驗,直接跨過那道鴻溝啊,所以往往有些看的多的人,在專案上拿捏不好設計的力道,不知不覺就做了過度的設計 (過度可能是超出期待太多,或是超出能力範圍太多都算)。因此我在講完架構的設計概念後,我都會希望能搭配實作的驗證,PoC 也好, MVP 也好,...
微服務架構 - 從狀態圖來驅動 API 的設計
2022-03-25T00:00:00+08:00
https://columns.chicken-house.net/2022/03/25/microservices15-api-design
<p>這次我直接破題了。我想寫一篇從 State Machine 的分析為主軸,來驅動整個服務的 API 設計的文章。</p>
<p><img src="/wp-content/images/2022-03-25-microservices15-api-design/2022-03-27-15-03-23.png" alt="" /></p>
<blockquote>
<p>圖片來源: https://www.giga.de/artikel/was-ist-eine-api-schnell-erklaert/</p>
</blockquote>
<p>“我們服務的 API 設計很糟糕,怎樣才能設計出好的 API? 有沒有一些 SOP 或是準則可以給我參考?”</p>
<p>其實這個問題我已經被問到爛了,答案當然是 “沒有” 啊 XDDD, 如果有的話,這個問題根本就不會是個難題,也不會有這 FAQ 了。首先,API 的好壞,”設計” 占了九成以上啊! 設計問題是沒有正確答案的,既然是設計,就是帶有個人風格的,你會發現有些大師的設計就是既精準又靈活,看的到背後的巧思,每個環節都...
[架構師的修練] #2, SLO - 如何確保服務水準?
2021-06-04T00:00:00+08:00
https://columns.chicken-house.net/2021/06/04/slo
<p><img src="/wp-content/images/2021-06-04-slo/logo.png" alt="" /></p>
<p>繼上一篇文章: <a href="/2021/03/01/practice-01/">刻意練習 - 打好基礎</a> 講完整個我對技術人員職涯要持續成長,就必須要刻意的持續練習看法後,這篇我就來舉實際的案例吧。這篇案例是示範,當你學習了技術與管理的知識之後,如何融會貫通,運用在解決問題上的案例。你累積的經驗或是能力,若無法轉換為價值,那是沒有用的。技術人能展現的價值,就是解決問題。怎樣才能讓一個問題拿到你面前你都能迎刃而解? 最有用的就是連結你累積的各種能力。連結越強,織起來的知識網就越強韌,你看問題就會越到位。</p>
<p>這篇我就拿我在去年 <a href="https://www.facebook.com/91apptech/posts/179657560398381">91APP TechDay</a> 以及 <a href="https://dotnetconf2020.study4.tw/">.NET Conf 2020<...