Amo Chen

用 lsof 指令尋找佔用通訊埠的 Process

最近在開發 Next.js 相關的應用程式,無腦寫了無窮迴圈造成 dev server 關不掉,導致重啟 dev server 時會顯示以下警告訊息,該訊息顯示通訊埠(port) 3000 正在被其他 process 佔用:

warn  - Port 3000 is in use, trying 3001 instead.

本文紀錄如何找到佔用 port 的 Process Id 並且停止其運作。

Posted on  Dec 19, 2022  in  Unix-like 命令列教學  by  Amo Chen  ‐ 2 min read

你知道 Vim 也能加密文字檔(text file)嗎?

Vim is able to write files encrypted, and read them back. The encrypted text cannot be read without the right key.

Vim 作為世界知名的編輯器,實在多才多藝,就連加密都有支援,這麼方便的功能,不免引起我的注意,因此特別花了一些時間查看如何透過 Vim 加密檔案以及用 Vim 加密檔案有什麼限制。

Posted on  Dec 18, 2022  in  Vim  by  Amo Chen  ‐ 3 min read

零經驗也可的 PySpark 教學 - DataFrame part 1

上一篇 零經驗也可的 PySpark 教學 - 初體驗 ,我們透過 Docker 輕易地體驗到 PySpark 的功能,利用 PySpark 將 CSV 資料載入 DataFrame ,再將 DataFrame 轉成 temporary view 後,我們就能夠使用 SQL 對資料進行操作,過程相當輕鬆寫意。

不過 DataFrame 提供相當多的 API, 讓開發者能夠像操作 ORM(Object Relational Mapping) 一樣進行開發,可說是 PySpark 學習過程必須學會的一環,本篇將介紹更多關於 DataFrame 的相關操作,包含 SELECT, FILTER, JOIN, UNION 等常用的功能。

Last updated on  Dec 16, 2022  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 6 min read

Git 版本控制教學 - 用範例學 rebase

常言道「不會 rebase, 等於沒學過 Git」,由此可見 rebase在 Git 內有多重要。

在開始本文之前,請大家牢記千萬不要對已經 push 到遠端儲存庫(remote repository) 而且已經有人正在使用的提交進行 rebase ,這是很危險的!詳情請見 The Perils of Rebasing

Do not rebase commits that exist outside your repository and that people may have based work on.

改變歷史是很危險的!請牢記在心!

接下來,本文會說明什麼是 rebase,並且介紹 rebase 的基本用法。

Posted on  Nov 1, 2022  in  Git 版本控制  by  Amo Chen  ‐ 10 min read

Git 版本控制教學 - tag 版號技巧

程式的開發幾乎都需要所謂的「版號」或「版本號」,除了開發者之間可用以識別正在開發或維護的程式是否版本相同之外,也可以用版號來表示程式的開發狀態(例如 development, alpha, beta, production/stable 等等),或者是標示重大版本演進(例如從 1.0 演變為 2.0)。

不同的開發者或者開發團隊,也都會有不同的版號規則。

但目前常見的 2 種版號規則如下:

更詳細的說明可以參見:http://en.wikipedia.org/wiki/Software_versioning

上版號的工作,可以利用 Git 標籤的功能達成。

本文將介紹如何使用 Git 的標籤(tag)功能

Posted on  Oct 27, 2022  in  Git 版本控制  by  Amo Chen  ‐ 3 min read

Git 版本控制教學 - 分支模型(branching model)

在本文中,我們將依據 A successful Git branching model一文,解說並示範幾種開發情境可以應用的分支策略模型,不論是大型專案或小型應用程式,皆可套用於其中,並享受分支策略模型所帶來的效益。

在文章裡有關專案(project)的任何細節將不被談論,只談論分支(branching)的策略及發佈(release)的管理。

下圖即是整個分支策略的概觀:

後續小節將敘述相關分支策略的細節。

Posted on  Oct 27, 2022  in  Git 版本控制  by  Amo Chen  ‐ 6 min read