文章

Python 模組教學 - 方便又實用的 dataclasses

Python dataclasses 是 Python 3.7 新增的 1 個模組(module),主要用途是將結構化的資料定義成類別(class)的形式。

dataclasses 模組提供了一些方便的功能幫助自動產生常用的類別方法,如 __init__ , __repr__ , __eq__ 等,節省開發者撰寫重複程式碼的時間成本。

使用 dataclasses 可以讓 Python 程式更加簡潔,並且提高程式碼的可讀性。

準備好在你的 Python 程式碼中大秀一手使用 dataclasses 的技巧了嗎?

Posted on  Feb 1, 2023  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

Google Sheets - 利用 SPARKLINE 函式在儲存格內插入迷你圖表

Google Sheets 使用 [插入] -> [圖表] 的功能時,繪製的圖表,會浮在試算表的表格上,有時候想看資料就得把圖表移開,總是有些不方便。

幸好 Google Sheets 額外提供一個 SPARKLINE 函式(function),讓我們可以把折線圖(line graph), 柱狀圖(bar chart, column chart, winloss chart) 繪製在儲存格內,不會讓圖表蓋住資料。

p.s. 如果是折線圖與柱狀圖之外的需求,仍只能使用 [插入] -> [圖表] 的方式繪製

本文將以幾個實際範例介紹如何使用 SPARKLINE 函式。

Posted on  Jan 12, 2023  in  Google 試算表  by  Amo Chen  ‐ 3 min read

Google Sheets 用 GOOGLEFINANCE 取得幣價、股票資訊

Google Sheets 內建一個名稱為 GOOGLEFINANCE 方便的函式(function), 可以幫助使用者取得幣價(包含各國貨幣以及比特幣、乙太幣等主流加密貨幣)、股票(包含美股、台股)等資訊。

習慣使用 Google Sheets 統計財務資訊或理財的人如我,經常會使用 GOOGLEFINACE 幫忙查詢股票資訊(股價, EPS, 本益比等等),也會用 GOOGLEFINACE 轉換外幣價格,相當實用。

本文將介紹 GOOGLEFINANCE 如何使用。

Posted on  Jan 10, 2023  in  Google 試算表  by  Amo Chen  ‐ 3 min read

用白話文談數學公式 - Jaccard Index (雅卡爾指數)

假設給定 2 段句子,我們有沒有辦法能夠用數學衡量這 2 段句子之間的相似程度呢?譬如我們怎麼衡量 2 篇論文是否抄襲?抄襲的程度怎麼數值化?要回答這些問題,其實不會很難。

數學上有個最簡單的公式,可以幫助我們衡量相似度:

“Jaccard Index"

Jaccard 是一個非常簡單的公式,容易理解之外,在程式的實作上一點也不困難,是做自然語言處理(Natural language processing)相似度或樣本距離相關問題時,非常基本實用的選項之一。

Posted on  Jan 7, 2023  in  數學概念  by  Amo Chen  ‐ 3 min read

優化 Python Docker Image Size - 從 multi-stage builds 到 distroless

Docker multi-stage builds 教學 一文介紹以 Golang 作為範例,示範如何用 Docker multi-stage builds 的功能,優化編譯 Docker image 的過程,以減少 Docker Image 的 size 。

Multi-stage builds 並不局限於 Golang 這類的編譯(compiled)語言才能使用,腳本(script)語言也能夠運用類似的技巧降低 Docker image size, 例如 Javascript, Python 等開發生態系也都能夠使用。

只是腳本語言需透過直譯器(interpreter)執行的天性,因此其 Docker image 終究難以像 Golang 這類編譯語言所產生的 image 來得小,但這並不代表 Python, Javascript 這類的 Docker image 並不值得使用 multi-stage builds, 優化 Docker image size 仍可以為部署(deployment)速度帶來優勢,同時也能減少網路傳輸所需付出的費用成本。

本文的 multi-stage builds 以 Python 範例出發,一路介紹到如何使用 Google 所提供 distroless 進一步優化 Docker image size 與安全性。

Posted on  Jan 6, 2023  in  Docker , Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

使用 ngrok 服務讓人連線到你的 localhost 伺服器

一般而言,開發應用程式(Application)的工作絕大多數都會在本機(localhost)上進行,如果要進行測試會將程式部署(deploy)到測試環境後,再進行測試。

但如果僅僅是一個最小可行性產品(MVP, Minimum Viable Product),或者是一個還在草稿(draft)階段的工作成果,又或者團隊沒有所謂的測試環境時,最不得已的方法就是開放本機(localhost)讓其他人連線進來進行 demo 或測試。

那要怎麼開放 localhost 讓其他人連線進來呢?

ngrok - put localhost on the internet 可能是你最方便又無痛的選項。

Posted on  Dec 29, 2022  in  開發工具  by  Amo Chen  ‐ 3 min read