Python 單雙星號(* & **)解說
Python 內將函數的參數分為 keyword argument 以及 positional argument, 這 2 者的差異在官方文件中有清楚說明,同時這 2 種分別支援單星號 *
與雙星號 **
的用法,是 Python 開發者一定要熟知的用法。
本文將詳細介紹說明。
Posted on Sep 19, 2022 in Python 程式設計 - 初階 by Amo Chen ‐ 4 min read
Python 內將函數的參數分為 keyword argument 以及 positional argument, 這 2 者的差異在官方文件中有清楚說明,同時這 2 種分別支援單星號 *
與雙星號 **
的用法,是 Python 開發者一定要熟知的用法。
本文將詳細介紹說明。
Posted on Sep 19, 2022 in Python 程式設計 - 初階 by Amo Chen ‐ 4 min read
隨著資訊技術的發展,工程師的面試越來越五花八門,面試過程問什麼都不足為奇,不過仍有些問題能夠事先準備,這些問題不僅常問也很實用,除了能夠應付面試之外,也能增加個人實力。
本文記錄後端工程師面試時經常會問到的資料庫 ACID 原則,並以實際範例作為說明,以讓人能夠對 ACID 有足夠的理解,避免死背。
Posted on Sep 17, 2022 in 後端面試準備 by Amo Chen ‐ 3 min read
Redis 幾乎是現今大型網路應用(Application)都會使用的 in-memory 資料庫(database),可應用在實作快取(cache), message broker 等功能,目前絕大多數都使用 Redis 作為快取後端(backend), 該服務也經常會與 memcached 相提並論,不過 Redis 支援的功能更加多元,例如 Redis 提供多種不同的 data types (set, lists, hashes 等)、支援 transaction 等用法,如果運用得當,不僅可以簡化程式邏輯,也能帶來系統效率提升。
本文記錄如何在本機(localhost)環境以 Docker 架設 Redis 以供開發使用。
Posted on Sep 14, 2022 in 用 Docker 架設服務 by Amo Chen ‐ 2 min read
jq 是方便且成熟的 JSON 資料操作工具,可以幫助我們快速對 JSON 型態的資料進行擷取(extract)、過濾(filter)、運算(computing)甚至是重組(transform)等操作。
如果是常常需要與 JSON 格式資料打交道的開發者,可以投資一些時間好好熟悉 jq, 不過由於該工具提供各式各樣的功能,所以不免使用前要稍微查閱文件一番。
本文透過實際範例學習如何操作 jq 提供的 startswith
與 endswith
函式進行資料篩選與過濾。
Posted on Sep 12, 2022 in Unix-like 命令列教學 by Amo Chen ‐ 2 min read
Python collections 模組提供多個方便的類別(class)供開發者利用,其中 Counter 類別(dict 的子類別)可以應用在計數(counting)相關的場景:
本文將介紹 Counter 類別的使用方式,並比較其與 dict 與 defaultdict 之間的效能差異。
Posted on Apr 19, 2022 in Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
談到 Docker 容器的資料儲存(storage)問題,基本直覺就是透過掛載 Volumes, 不過 Docker 的 Volumes 其實有 3 種不同類型(types):
大家常用的 -v <Host 路徑>:<Container 路徑>
參數其實就是使用 bind mount, 例如以下指令:
$ docker run -it -v /home/user:/data debian /bin/bash
簡而言之,使用 bind mount 的 volume 其實就是透過 host machine 的檔案系統(filesystem)提供容器儲存的能力。
雖然不清楚 volume 的類型,並不會對日常使用上造成任何問題,不過理解其差異仍有其必要,因爲這些差異很可能會在 production 環境上產生重大影響。
Posted on Apr 1, 2022 in Docker by Amo Chen ‐ 5 min read
現今後端(backend)儲存解決方案相較於以往多了許多選擇,從傳統的硬碟儲存到現代各式各樣的雲端儲存服務,例如 AWS S3, Google Cloud Storage, Azure Blob Storage 甚至 HDFS(Hadoop Distributed File System) 等等,因此開發過程不免都會遇到需要整合雲端儲存方案的問題,與其重新發明輪胎,不如選擇 1 套簡單易用而且通吃各家服務的套件,不僅省事還能有效增加開發效率。
所以,你需要 smart_open 的幫忙!
Posted on Feb 12, 2022 in Python 模組/套件推薦 by Amo Chen ‐ 3 min read
Apache Spark 是現今處理巨量資料(large-scale data)分析、資料處理、機器學習(machine learning)的主流叢集運算框架之一,其主打簡單、快速、可擴充(scalable)、統一介面(unified) 4 大特點,更支援多種語言(Python, Java, R, SQL)可供靈活選擇運用。
Spark 採用的是 In-memory 運算技術,運算的資料存在於記憶體之中,相對於使用硬碟等儲存媒介的運算框架(例如 Apache Hadoop)而言, Spark 具有運算速度的優勢。
此外,除了提供核心運算功能的 Spark Core, Apache Spark 更在其基礎上衍生 Spark SQL, Spark Streaming, MLlib, GraphX 四大功能:
引用自 https://databricks.com
綜觀來說,Apache Spark 是相當值得投資學習的一套運算框架。
本文將透過 Docker 以及 PySpark 為初學者提供接觸 Apache Spark 的一條捷徑。
Last updated on Dec 16, 2022 in Python 模組/套件推薦 , Python 程式設計 - 高階 by Amo Chen ‐ 5 min read