Bash 神奇的字串處理 - Shell Parameter Expansion


開發時難免都會需要撰寫 shell script 將一些瑣碎的事情自動化,最常見的大概就是利用 bash 撰寫 shell script 。

不過 bash 有些功能並非為眾人皆知卻十分方便,例如 shell parameter expansion 就有許多好用的功能,例如算字串長度、字串取代、大小寫轉換等等,如果學會運用,可以事半功倍!

本篇將介紹幾種好用的 shell parameter expansion 。

Python 好用模組教學 - concurrent.futures


Python 關於平行處理的模組除了 multiprocessingthreading 之外,其實還提供 1 個更為簡單易用的 concurrent.futures 可以使用。

該模組提供 ThreadPoolExecutorProcessPoolExecutor 2 個經過封裝的 classes ,讓人方便上手之外,也讓程式看起來更加簡潔。

個人認為是相當值得學習&使用的模組之一,可以應付絕大多數日常關於平行處理的使用場景。

本文將透過幾個範例學習 concurrent.futures 模組。

Python 好用模組介紹 - itertools & more-itertools


Python 其實內建許多好用的模組,如果運用得當,不僅節省開發時間,還能讓程式碼看起來更加簡潔。

itertools 就屬於內建好用的模組之一,該模組提供不少讓我們能夠方便地處理 iterable (例如 dict, list, tuple, str 等類型的資料),譬如環型走訪、分類群組(group by)、乘積(product)等等。

如果 itertools 內建的函式還不夠的話,還可以安裝 more-itertools 。 more-itertools 提供更多額外的函式可供利用。

本篇將介紹幾種 itertools/more-itertools 中簡單易用的函式,提供除了自己動手實作之外的方法,不僅能夠節省重複開發輪子的時間,也能夠讓程式看起來更加優雅、簡潔。

Golang - 從 Hello World 認識 GOPATH


初學 golang 的人應該都會對環境變數 GOPATH 感到困惑。

譬如 PYTHONPATH 是 Python 尋找模組與套件的路徑,一般來說並不需要特別設定,也可以用得很開心。

然而 GOPATH 則不一樣,一旦程式涉及 package 就會需要留心 GOPATH 的設定,很容易令人感到困惑,但是只要弄清楚 GOPATH 的基本,就能夠很輕鬆地開發 Go 應用程式。

那麼,就從 Hello World 開始認識 GOPATH 吧!

Python multiprocessing 模組簡單說明與範例


Python 內建的 multiprocessing 是相當重要的模組,如果有平行(parallelism)處理的需求,除了內建的 threading 模組之外,另一個就屬 multiprocessing 。

使用 multiprocessing 的好處在於能夠很大程度避開 Python GIL 對於程式效能的影響,但壞處則是對於記憶體的耗用程度也較高,即使如此也是一個必須了解的模組。

本篇將實際透過幾個範例學習如何使用 multiprocessing 模組。

用 pydantic 輕鬆進行設定管理(Settings management)


開發時,不免都會需要實作設定檔,藉由設定檔簡單地改變系統的行為。例如 Debug 模式的開關、資料庫相關設定等等,都通常會放在設定檔中。

而 Python 不僅提供內建模組 configparser 能夠簡單實作設定檔之外,也可以簡單利用 class 實作設定檔,例如以下 2 個檔案就是 class 形式的設定檔範例:

# settings.py
class Settings(object):
    DB_HOST = 'localhost'
    DB_PORT = 8888


settings = Settings()
# test.py
from settings import settings


print(settings.DB_HOST, settings.DB_PORT)

然而,現今開發專案也經常會使用 dotenv (例如 python-dotenv )讓設定更加方便。

除了自行開發結合 dotenv 的功能之外,其實可以選擇利用 pydantic 輕鬆地整合 class 形式的設定檔與 dotenv

Android 應用程式權限 - runtime permissions


在 2015 年 10 月釋出了一個令開發者震驚令使用者振奮的新規則:
Android 6.0 Marshmallow「權限索取」

當開發者想要透過 App 和使用者有互動行為時(例如拿照片、打電話 …等),
都必須「事先詢問」使用者是否允許 App 做這些事情。

你可能會問,難道 6.0 以前都沒有「權限」的概念嗎?
不,其實是有的。
只是授與的時間點,而是在安裝 App 的當下。

這對開發者與使用者來說,都不是一個太好的體驗。
因此,Google 決定調整這老舊的流程,將時間點改為「即時 (Runtime) 詢問」
也就是需要使用到權限時,才跳出授與視窗,詢問使用者。

用試算表(Google sheets、Excel)製作個人記帳本


市面上有許多記帳軟體,但總會有無法滿需求的地方,因此我開始習慣用試算表(google sheets)來紀錄各銀行的收支跟餘額。
一方面是可以按照自己需求來設計功能或介面,另一個優點是 google sheets 在手機或電腦上修改或觀看都很方便,用來隨時隨地更新資料很適合。

以下我用自己的記帳本來示範,大家可以依照喜好來取捨,產出自己的記帳試算表。

徹底移除 Android Studio


工欲善其事,必先利其器。
常常一個強迫症,就會想把很多用不到的東西給砍了,好挪出更多空間給需要的東西。

最近 android studio 不斷出問題,除了基本會卡住,更慘的是執行出來的程式時常鬼打牆。
我嘗試了 clean project 、rebuild project、restart IDE 但始終無解,沒耐心的我決定重裝。

第一步,就是要把舊有 as 斬草除根。

12345622