文章

Golang - 從 Hello World 認識 GOPATH

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

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

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

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

Posted on  Jul 26, 2020  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 4 min read

用範例輕鬆學 Python multiprocessing 模組

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

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

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

Last updated on  Aug 8, 2023  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

用 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

Posted on  Jul 1, 2020  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 3 min read

Android 應用程式權限 - runtime permissions

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

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

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

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

Posted on  Jun 30, 2020  in  Android  by  Zizi Chou  ‐ 4 min read

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

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

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

Posted on  Jun 30, 2020  in  Google 試算表  by  Zizi Chou  ‐ 3 min read

徹底移除 Android Studio

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

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

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

Posted on  Jun 28, 2020  in  Android  by  Zizi Chou  ‐ 1 min read

Google Play 安裝出現 -505 錯誤

當我將專案從 Eclipse 遷移至 Android Studio 並將 application 上線後,發現有小部分的使用者無法安裝。 使用者表示在 Google Play 安裝時會跳出錯誤訊息: 代碼 -505

遇到問題可以先思考兩件事:

  1. 該版更新有更改了什麼?其中又有哪部分可能影響到安裝?
  2. 這些使用者有什麼共通點

才發現是 AndroidManifests.xml 中的 applicationId 出了差錯,導致安裝失敗。 接下來將使用「寄包裹」來進行舉例說明:

Posted on  Jun 28, 2020  in  Android  by  Zizi Chou  ‐ 3 min read