Amo Chen

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

零經驗也可的 PySpark 教學 - UDF (User Defined Function)

Spark SQL 提供許多好用的函式(functions),例如 concat() , count() , date_format() 等等,但這些內建函式不一定能夠滿足一切的需求,所以有時候需要做一些擴充以達到目的,此種讓使用者能夠進行擴充的功能就被稱為 UDF (User Defined Function), RDBMS 諸如 MySQL 與 PostgreSQL 等也都支援 UDF, 詳見:

  1. MySQL - Adding a Loadable Function
  2. PostgreSQL - User-Defined Functions

Spark 也同樣支援 UDF, 讓使用者能夠擴充函式。

Posted on  Dec 28, 2022  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 4 min read

Git 版本控制教學 - submodule

Git 可以做到 repository 中嵌入其他 git repositories, 相當於版本控制原本的 repository 之外,也把內嵌的 repositories 也納入版本控制的範圍,這功能被稱為 submodule

不過 submodule 並不是將內嵌 repository 的所有檔案都做額外的版本控制,而是類似於做一個指標(pointer),將 submodule 的版本指向內嵌的 repository 的某 1 個 commit id 。

Posted on  Dec 26, 2022  in  Git 版本控制  by  Amo Chen  ‐ 4 min read

如何使用 macOS 內建的 VNC client

有時工作上會需要使用 VNC(Virtual Network Computing) 連線到遠端的伺服器桌面查看畫面,這時候不免要安裝 TeamViewer , TightVNC , VNC Viewer 等工具進行連線。

不過 macOS 其實有內建 VNC client 可供使用,如果工作上只是需要一個簡便的 VNC client 的話,可以直接用 macOS 內建的 VNC client 。

Posted on  Dec 25, 2022  in  macOS  by  Amo Chen  ‐ 1 min read