Recent posts

All posts
  1. vLLM + Gemma 4 + LoRA:我踩過的兩個坑

    最近在部署 Gemma 4 E4B + LoRA adapter 時,我連踩了兩個坑。第一個是 vLLM 版本本身還沒支援 Gemma 4 的 runtime LoRA;第二個是 升版後又碰到 CUDA wheel 與環境不相容。這篇記錄下來,給之後的自己少走一點冤枉路。

  2. MicroK8s 完整部署指南:從安裝到生產級應用

    在最近專題開發的過程中,我反覆安裝與測試了多次 MicroK8s,期間踩了不少坑,也累積了許多實戰經驗。因此,我決定整理這篇 Blog,讓自己以後部署時可以有一份可直接複製使用的指令手冊,也幫助正在學習 Kubernetes 的朋友少走一些彎路。 本文是基於 MicroK8s 官方文件、Helm、Argo CD Image Updater 等官方說明整合的安裝流程,並修正...

  3. Nuitka 與 Docker 打造高效能且安全的 Python 應用部署方案

    前言 在現代軟體開發中,Python 應用的部署一直面臨著多重挑戰:程式碼安全性、執行效能、以及部署複雜度。傳統的解決方案如 PyInstaller 雖然廣泛使用,但在設定複雜度和效能方面仍有不足。 本文將深入探討 Nuitka 編譯器與 Docker 容器化技術的結合,這個創新方案不僅能有效保護程式碼,更能在容器環境中實現驚人的效能提升和部署優化。

  4. 資料結構-複雜度計算

    前情提 在準備研究所面試與專題報告時,演算法分析 往往是必考重點。本文彙整了從最基礎的漸進符號定義($O,\,\Omega,\,\Theta,\,o,\,\omega$)到空間複雜度、遞迴關係、以及Master 定理與其擴展版本的精華內容,並搭配典型範例與 C/C++ 實作要點,助你快速掌握: 1. 各種 Asymptotic Notation 的嚴謹定義與相互關係 2....

  5. 使用 Git Worktree 提高開發效率與維持線性 Commit Log

    使用 Git Worktree 提高開發效率與維持線性 Commit Log 最近在專案開發中,我發現自己經常遇到這些問題: 修 Bug 時要來回切換分支,結果 stash 來 stash 去,不小心還搞丟了一些變更。 切換分支之後還要等一堆 npm install 或是 docker-compose up,光是環境準備就花掉大半時間。 git log 變得又亂又複雜,充...

  6. LazyVim 設定過程筆記

    LazyVim 和 Oh My Tmux 設定過程 我嘗試了一些方式安裝 Neovim,大部分找到的都偏複雜, 後來我覺得直接用 LazyVim 安裝最快了,然後搭配 tmux 感覺就是工作效率翻倍, 但是我覺得還是要熟悉 Vim 才會有這樣的感覺,然後搭配著 Tmux 的功能讓頁面可以快速切換, 總體來說我覺得這樣的搭配也算好用。

  7. 作業系統-死結管理

    前情提要 這篇文章主要探討了 死結管理(Deadlock Management) 的核心概念與解決方法。今天的內容涵蓋了死結的定義、發生條件,以及處理死結的不同方法,包括 預防(Prevention)、避免(Avoidance) 和 檢測與恢復(Detection and Recovery)。此外,還詳細介紹了 Banker’s Algorithm 和 資源分配圖(Res...

  8. 作業系統-競爭條件與同步

    前情提要 這篇文章深入探討了 競爭條件(Race Condition) 與 同步(Synchronization) 在操作系統進程管理中的核心概念。從基本的臨界區問題(Critical-Section Problem)出發,逐步介紹了解決該問題的各種方法,包括硬體支持(如 Test-and-Set 和 Compare-and-Swap)、軟體解法(如 Peterson's...

  9. ISO27001 第四至第六章 - 組織全景、領導與規劃

    前情提要 這篇文章主要整理了 ISO 27001 標準中第四至第六章的內容,涵蓋了組織全景、領導與規劃三大主題。今天的重點包括如何了解內外部情境、關注方需求與期望,以及確定資訊安全管理系統(ISMS)的範圍;同時也深入探討了高層管理階層在資訊安全中的角色與承諾,並說明了風險評鑒與目標規劃的具體步驟,這些內容為組織建立有效的 ISMS 提供了全面的指引。

  10. K8s 中的 Pod 是什麼

    前情提要 這篇文章詳細介紹了 Kubernetes(K8s) 中的核心概念之一 —— Pod,包括它的定義、生命週期、資源管理與限制,以及相關操作指令。Pod 是 K8s 中創建和管理的最小單位,文章重點說明了 Pod 的組成、運行邏輯,以及如何在 K8s 中部署應用程式。同時還提供了配置 Pod 資源限制的範例 YAML 文件與實操步驟,並總結了一些常用的 kubect...

  11. DOMjudge 安裝指南

    簡介 DOMjudge 是一個開源的程式設計競賽管理系統,通常用於各類程式設計競賽,例如 ACM ICPC。本篇文章將介紹如何透過自動化 Shell 腳本來在 Ubuntu 系統上安裝 DOMjudge 競賽系統。我們會逐步解釋每個步驟,幫助讀者了解整個過程的每一個細節。

  12. RESTful 和 API 關係介紹

    前情提要 這篇文章主要介紹了 API 與 RESTful 架構 的概念,探討了 API 的基本原理、客戶端與資源的角色,以及如何利用 RESTful 架構設計高效且易於擴展的 API。文中詳細說明了 REST 的架構風格(如統一介面、無狀態、分層架構等),並且闡述了 RESTful API 的運作方式及其優勢,例如可擴展性、靈活性和獨立性。此外,文章還提供了 URI 設計...

  13. Python 程式碼風格指南

    前情提要 PEP8 是在撰寫 Python 中的一些寫作規範標準,也就是說不遵照也不會出錯誤,那我也很常在想到底怎麼樣寫才是對的,然後看書看一看然後想說我都沒有看過 Python PEP8 相關的規定,我就突然跑去官方網站開始看,因為我想說看了也會對之後要寫專案的時候比較有幫助,所以就順便寫下了這邊篇 Blog。

  14. 資料結構-Queue篇-1

    前情提要 這篇文章是資料結構系列的第三篇,主要探討 Queue(佇列) 的定義、抽象資料型別(ADT)、以及不同的實作方式。今天的內容包括 線性隊列 的問題與解決方法、 環形隊列(Circular Queue) 的兩種實現,以及 鏈結串列實作的 Queue。文章還透過具體的範例程式碼展示了如何操作隊列中的新增(enqueue)和刪除(dequeue),幫助讀者更深入地理解...

  15. Windows 10 L2TP VPN 連線錯誤

    前情提要 今天在補習班的時候,突然有同事說 VPN 連線失敗,我想說慘了是不是真的掛掉了 Radius 還是 Cisco Router 上的設定有問題,然後我試了一下我的帳號可以,那麼我就開始排除錯誤,還好問題不大。

  16. 簡單認識 LDAP:讓網路認證更輕量

    LDAP 的起源 你可能聽過 LDAP 這個詞,但它到底是什麼?讓我們從頭說起。LDAP 的前身是 X.500 Directory Service,這是一個在應用層運行的複雜協定。由於 X.500 的封包大小會隨著資料量的不同而變化,因此管理起來有些麻煩。為了解決這個問題,LDAP 應運而生,它是一個更輕量的版本,只有一個簡單的協定定義,因此在運作上更為靈活。

  17. 資料結構-Stack篇-1

    前情提要 這篇文章是資料結構系列的第一篇,主要聚焦於 Stack 的基本概念、應用範圍以及其實現方式。透過深入介紹 Stack 的運作原理、應用場景以及程式實作,本篇內容適合初學者快速掌握 Stack 的核心知識,也為後續進階的資料結構學習奠定基礎。 文章中包含了 Stack 的定義與特性、應用範疇(如括號匹配、DFS、算術表達式轉換等)、以及用陣列與鏈結串列實作 Sta...

  18. 在 Windows 上正確設定 OpenSSH Server 和 Guacamole SFTP

    前情提要 我最近有遇到一個問題就是我 Windows 10 要使用 share devices 然後給外包廠商上傳檔案在 Guacamole 那麼我知道 Guacamole 有 SFTP 的服務可以串接讓外包廠商上傳檔案,但是中間一直連線失敗有點弄到快爆氣哈哈哈...,但是後面發現滿蠢的哈哈哈哈,廢話不多說開始吧。

  19. 資料結構-二元樹篇-1

    前情提要 這篇文章是資料結構系列的第二篇,主要討論 Binary Tree(二元樹) 的基礎概念與相關理論。今天整理了 Binary Tree 的定義、基本性質、常見類型,以及一些重要的數學性質與推導,像是節點數、樹的高度等。此外,也介紹了二元樹的實現方式(陣列與鏈結串列)和走訪方法,並分享了一些經典範例題的解法,希望幫助讀者快速掌握二元樹的核心知識。

  20. 資料結構-樹篇

    Tree 討論 最近因為在補習班上資料結構,所以想說寫一下 blog 有參考幾本 bible 分別有 clrs、 horowitz 這兩本書來撰寫這篇 blog,內容可能跟 horowitz 的內容比較接近,因為 clrs 這本還是 algo 說的比較多哈哈哈。

  21. Direct Image 的性質與應用

    前言 在集合論中,直接像(Direct Image)是函數在兩個集合之間映射時所產生的一個重要概念。它描述了如何從一個集合 $A$ 的子集經過函數映射到另一個集合 $B$ 的子集中。本篇文章將探討直接像的定義與性質,並說明其在數學中的應用。

  22. Uva 刷題紀錄 08/21

    前情提要 這篇文章記錄了在 UVA Online Judge 刷題的過程,挑戰了兩個不同類型的題目,分別是 227 - Puzzle 與 1586 - Molar mass。 [227 - Puzzle] 這是一道模擬操作的題目,目標是在 5x5 的字串陣列中移動空白格,根據指令 (A 上移、B 下移、L 左移、R 右移) 更新陣列的配置。挑戰在於處理輸入格式和確保操作合...

  23. virtual-judge 刷題紀錄 08/21

    前情提要 這篇文章是關於 Virtual Judge 刷題的紀錄,主要記錄了解題的過程和心得。在 08/21 的刷題中,挑選了 P2249 這道題目,並使用了經典的 二分搜尋法 (Binary Search) 來解題。文章會分享解題的邏輯、程式碼,以及一些關於該題的細節,幫助讀者了解如何高效地透過二分搜尋法解決問題。 題目要求我們在一個排序的數列中,尋找某些目標數字的首次...

  24. 使用 Docker 部署 Django:結合 uWSGI 和 Nginx 提升效能

    前情提要 在部署 Django 專案時,雖然可以使用 python manage.py runserver 指令來啟動伺服器,但這樣的做法在處理靜態檔案時效能不佳,尤其是在面對大量訪問時,效能瓶頸會更加明顯。實務上,我們常使用反向代理(reverse proxy)來提升效能,並避免直接使用 Django 的開發伺服器。Nginx 作為反向代理,不僅可以處理靜態檔案,還能分...

  25. Uva 刷題紀錄 08/16

    前情提要 這篇文章記錄了我今天在 UVA Online Judge 的刷題過程,挑戰了兩道題目,分別是與邏輯判斷相關的題目和簡單的輸入輸出處理題。透過這些題目,練習了模擬操作與字串處理的技巧,以下是解題紀錄與程式碼實現。 解題程式 題目連結 340 這題題目的意思就是我要到 0 就代表了要結束輸入,也就是程式要結束,然後如果 guess[0] 因為他有說範圍 19 所以 ...

  26. 利用 vscode profile 分開不同開發環境的 vscode extension

    前情提要 因為有個困擾就是,我常常因為要切不同框架撰寫前後端,所以有時候用的 vscode extension 都會不同,這個問提困擾我很舊,因為每次打開 vscode 就很久,直到有天我發現可以使用 vscode profile 去切割不同的開發環境所需要的 extension,從此我的 vscode 開啟速比以前為管理前快多了...。 我的習慣是我 Default p...

  27. codeforces 刷題紀錄 08/15

    前情提要 這篇文章記錄了我今天在 Codeforces 上刷題的過程,挑戰了兩道不同類型的題目:一題與深度優先搜尋 (DFS) 有關,另一題是簡單的矩陣處理與輸出問題。在這兩題中,我練習了圖論遍歷的技巧以及對多維陣列的操作,希望藉由這些題目進一步提升解題的效率與思路!

  28. virtual-judge 刷題紀錄 08/15

    這篇文章紀錄了 Virtual Judge 在 08/15 的刷題心得,挑戰了題目 HDU-1232,並使用 深度優先搜尋 (DFS) 解決問題。本題的核心在於判斷一個圖是否為連通圖,並計算需要新增的邊數來使其變成完全連通的圖。 解題程式 題目連結 HDU-1232 我的想法是 dfs 走過的所有點的連通分量加總就可以知道是不是連通圖了,再減去 1 是為了題目所要的描述,...

  29. 刷題紀錄 leetcode-3106

    解題程式 題目連結 我的想法是,既然他說,要有 cyclic 這個字眼了所以我當然需要判斷哪個距離比較小 minimum distance 題目也有說到,所以我就要把 abs(s[i] - newchar)、26 - abs(s[i] - newchar)兩個方向的距離都算出來,在判斷有沒有 小於等於,然後就把 k 每次更新就是把 k-=dist,並且把 t 也更新,最後...

  30. 快速上手 Vim 快捷鍵

    使用 VIM 的好處 VIM 是一款非常強大的文本編輯器,特別受到開發者的喜愛。這篇文章將重點介紹 VIM 的快捷鍵及其優點: 效率高:VIM 的鍵盤操作設計,使得在不需要移動手指離開鍵盤的情況下,可以快速進行文本編輯,極大地提高了生產力。 個人習慣:我最近開始練習演算法,加上之前參加過技能競賽(資網職種),已經習慣使用 VIM。 功能強大:VIM 是一個輕量級的編輯器,...

  31. 快速使用 Hexo 搭配 Google Analytics (GA)

    Google Analytics 簡介 Google Analytics (GA) 網路分析工具,主要用於追蹤和報告網站流量。透過詳細的資料和洞察力,GA 幫助網站擁有者優化網站性能和使用者體驗。以下是其主要功能: 1. 訪客追蹤:追蹤訪客來源、在站點的停留時間及瀏覽頁面。 2. 流量來源分析:報告顯示訪客來自何處,包括搜尋引擎、社交媒體平台或其他外部連結。 3. 行為洞...

  32. 快入使用 Hexo 建置自己的 Blog

    關於 Hexo 的思考 我長時間以來一直在尋找適合我的文章編輯軟體,並嘗試了多種工具,包括: Notion:功能強大且多樣,但我感覺它更適合管理和協作,而非專注於純粹的寫作。 HackMD:針對 Markdown 編輯的工具,非常適合協作,但在個人寫作方面稍顯不足。 Jekyll:雖然強大且靈活,但需要一定的技術基礎,對於想要快速進行寫作的人來說,門檻較高。 近期,我發現...