Amo Chen

帶你搞懂 Python 的 Iterable, Iterator 與 Generator

Python 的 Iterable, Iterator 與 Generator 是經常會讓人產生混淆的事物,因為這 3 個都可以用 for 迴圈走訪,因此有些熟悉 Python 的面試官很喜歡問這 3 者之間的差異,追根究底是因為對這 3 者不熟悉的話,很容易寫出類似以下的低效率程式碼:

set([x for x in iterator])

本文將透過實際範例帶大家認識 Iterable, Iterator 與 Generator! 再也不搞混!

Posted on  May 3, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 4 min read

Chatgpt Unit Tests Python

通常喜歡寫程式的人,多數都會覺得開發過程是愉悅的,而且也會認為寫測試是痛苦而且耗費時間的試煉,有時候測試做起來甚至需要耗費開發時間的 2 倍。 拜

Posted on  May 2, 2024  by  Amo Chen  ‐ 1 min read

好文分享 — 我不小心做出了迷因圖搜尋引擎

“I accidentally built a meme search engine” 分享如何做出以圖找圖的功能,作者拿來應用在用迷因圖去找類似的迷因圖,也有分享其 GitHub repository 給大家參考。 該文也是 1 個利用 OpenAI

Posted on  May 1, 2024  by  Amo Chen  ‐ 1 min read

Two Scoops of Django: Best Practices for the Django Web Framework

Python Django 是 1 套相當成熟的 Web Framework, 也是 Python 常年名列前茅的 Web 框架,儘管近年來 FastAPI 異軍突起,但 Django 仍在 Python 生態系中佔有相當重要的一席之地,不少知名公司也都還有使用

Posted on  Apr 29, 2024  by  Amo Chen  ‐ 1 min read

用白話文談數學公式 - BM25 (Best Matching 25)

BM25 是一個經典的數學公式,廣泛應用於評估文件與查詢字串之間的相關性,因此在某些搜索引擎的搜索結果排序中扮演重要角色。例如,Elasticsearch 就內建了使用 BM25 進行結果排序的功能。

此外,在 AI 領域,像是 RAG (Retrieval-Augmented Generation) 等應用,也實作使用 BM25 來檢索(retrieve)相關文件。

對 BM25 有所理解的話,將會對從事搜索相關工作的人有所裨益。

本文將以白話文說明搭配範例的方式,介紹 BM25 公式以及如何計算。

Posted on  Apr 29, 2024  in  數學概念  by  Amo Chen  ‐ 5 min read

橫練金剛!將 Go 程式碼編譯成 WebAssembly — 以縮圖程式為例

近年來不斷地看到一些公司或服務採用 WebAssembly 這項技術,包含 Adobe, Microsoft, Google, Figma 等等,使我也對 WebAssembly 產生一點興趣,不過一直都沒有特別花時間研究,只知道 WebAssembly 是 1 種類似組合語言而且可以在瀏覽器中執行的低階語言,相較於 JavaScript 而言,更接近硬體層級,因此效率也更好一些。

直到最近 side project 有個很實際的需求作為契機,我才藉機會研究 WebAssembly 並體驗一下用 WebAssembly 打造應用的感覺。

現代很多語言都支援將程式碼編譯為 WebAssembly ,其中比較知名的是 Rust 程式語言,不過本文將以 Go / Golang 作為教學示範。

Posted on  Apr 26, 2024  in  Go 程式設計 - 高階  by  Amo Chen  ‐ 9 min read