CloneZilla 再生龍客製化,還原後自動擴大指定分割區的容量

「CloneZilla 再生龍」有個功能叫「recovery-iso-zip 產生回復專用的再生龍 」。它可以將磁碟映像檔打包成一份還原光碟或 USB 碟。 用這份還原光碟或 USB 碟開機後,就會自動進行磁碟還原工作。使用者不需要搞懂什麼是映像檔或磁碟代號。

這個自動化功能很方便,但還可以更聰明。本文將說明如何客製一份 CloneZilla 再生龍還原光碟。客製化項目是將磁碟映像檔還原到更大容量的磁碟後,只擴大指定分割區的容量。

Debian系統的PHP Session生命期為何不到30分鐘

我用 PHP 寫的 Web 網站採用 Session 記錄使用者登入狀態。 並希望保持登入狀態直到使用者主動登出或關閉瀏覽器。

網站主機已經按照 PHP 手冊 PHP Manual:Runtime Configuration , 將 session.cookie_lifetime 設為 0 了。 但使用者反應每次登入超過 30 分鐘後,就會變成未登入狀態。他們必須再次登入帳號。 而且只有在 Debian 系統運作的網站會出現這種情形。在 Windows 系統上跑的測試網站不會。

造成此情形的原因不在 PHP 組態,而是 Debian/Ubuntu 另有安排刪除逾期檔案的定期工作。

開放源碼程式附加禁止營利的訴訟案例

案例出處「廢土貓大 LogoCat」- 我被告了,原因竟然是我開源的插件 !

「廢土貓大」寫了一個 Minecraft 的插件,他將此插件以 MIT 開放源碼授權釋出,並附加了「禁止營利」的使用條款。 接著,他發現有人架的 Minecraft 伺服器上安裝了他的插件,並以此為賣點向登入此伺服器的玩家收費。 有付費的玩家在此伺服器上就能使用此插件帶來的效果。

我來談談我的看法。

日本風景印-東京,横浜,日光

2025年底,日本郵資調漲。寄回台灣要郵資100円;單純蓋風景印,最低郵資要 85円

有些景點如上野公園,只要把明信片(要貼足額郵票)投遞到景區內設置的郵筒,負責郵便局在收集後就會蓋上當地的風景印,然後寄送給收件人。 但大部份的風景印,要跑一趟郵便局,找郵便業務櫃台人員蓋印(要貼足額郵票)。

我此行的景點,附近剛好都有郵便局。所以都是直接到郵便局請櫃台人員蓋風景印。 如果明信片上有寫收件人地址,櫃台人員通常會向你確認是不是要蓋印寄出。 沒寫收件人地址,蓋印後會交還你帶回。若寫上收件人地址,他蓋印後會放進寄件區。

郵便局風景印

  • 東京新宿郵便局: JR新宿駅西口廣場8號出口西行150公尺。
  • 東京雷門郵便局: 都營浅草線浅草駅A3出口右轉即達。或吾妻橋交差路南行150公尺。
  • 東京上野郵便局: CANDEO HOTELS 上野公園步行5分鐘。或者在上野公園內,找到熊貓造型郵筒投遞明信片,也會蓋風景印。明信片要投左邊的「手紙、はがき (LETTERS, POSTCARDS)」。
  • 成田空港二航廈: 3樓出境審查前大廳北口2,C報到櫃枱附近。或者在出境大廳安檢入口兩側都有郵筒可投遞明信片。
  • 横浜中華街郵便局: 媽祖廟隔壁。
  • 横浜中央郵便局: JR横浜駅南東口旁。
  • 栃木日光駅前郵便局: 東武日光駅對面。

上野公園內設置的熊貓造型郵筒。投入此郵筒的明信片也會蓋風景印。

上野公園內設置的熊貓造型郵筒

我在當地郵局中,只找到 3 款滿意的特色風景明信片。其他郵局的風景印,都蓋在中華郵政的龍年明信片上。

特色明信片

  • 中: 中華郵政今年推出的龍年明信片,在12月1日發售,剛好在這趟日本旅遊出發前買到。
  • 左上: 日光駅前郵便局販售的日光明信片。
  • 左下: 雷門郵便局販售的東京風景圖明信片。
  • 右: 横浜中央郵便局販售的橫濱標誌明信片。

2023 Skyliner日暮里和上野轉乘經驗

我今年到東京旅行,在 KKday 訂購京成電鐵 Skyliner 來回票,住在 JR 鶯谷駅附近的酒店。 鶯谷駅到上野和日暮里都是一站,我選擇在日暮里換車。

首先,到達成田機場的京成電鐵乘車處,找有著藍色「(?)SKYLINER & KEISEI INFORMATION CENTER(i)」招牌的服務中心劃位換票。 我們會拿到兩種券。一是成田上車的去程乘車券(已劃位),二是上野/日暮里上車的回程預約券(尚未劃位)。 我在回程那段就發生一點麻煩,在場也有同車旅客發生同樣狀況。這個轉乘經驗得要寫一篇記錄。

  1. 案例一: 成田機場搭 Skyliner 到京成日暮里,再轉乘 JR 日暮里。
  2. 案例二: JR 日暮里轉乘京成日暮里 Skyliner 到成田機場。
  3. 案例三: 京成上野<->JR上野

2023 日本東京12月六日遊 (上野,築地,淺草寺,日光東照宮,高尾山,橫濱)

旅遊日期:2023 年 12 月 4 日出發,12 月 9 日回國。家族旅行,自由行。

參觀景點:上野公園築地市場淺草寺東京晴空塔;日光二社一寺:日光東照宮輪王寺大猷院二荒山神社高尾山;橫濱。

購物點:上野アメ横商店街,JR新宿駅西口。

住宿地點:CANDEO HOTELS 上野公園

旅途收集:

Debian 12 的 python pip 管理政策變化

Debian 12 不再允許直接使用 pip 安裝套件。 就算是 root 也不行。 我還回頭測了 Debian 11,並沒有這項限制。

政策變化內容

看看 pip3 install 的錯誤訊息:

$ pip3 install pycryptodome
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

Debian 12 編譯打包 PHP 7.4

Debian 12 已經移除 PHP 7.4 套件,只留 PHP 8.2 套件。 不幸的是,有些 PHP 程式還沒有升級到 PHP 8.2。 為了這些舊程式,我編譯打包了 php7.4-compat 套件。

下載 php7.4-compat_7.4.33_amd64.deb。這個下載點大概放到2024年12月吧。

為了執行舊 PHP 程式,使用 docker 跑 Debian 11 容器也是可行的解決方案。 只是容器內的 PHP 7.4 參照的動態連結函式庫是 Debian 11 的套件版,也就是版本較舊。

而自行編譯的方式, PHP 7.4 參照的函式庫會是 Debian 12 的套件版。 由於編譯依賴的套件相同,此法的 PHP 7.4 將和 PHP 8.2 共用相同的動態連結函式庫,是新的版本。 只是 PHP 7.4 的程式碼本身還在用 OpenSSL 1.1.1,所以多連結一個 libssl1.1。

MDADM 軟體磁碟陣列 RAID 1 使用經驗與心得

用 Software RAID (MDADM) 做 RAID 1 磁碟陣列。

先說明,RAID 1 適合用在全年不關機,又要保持資料即時備份的場合。 不適合常常關機的家用電腦。對常年不關機的家用 NAS,可以說是成本最低的資料保全方案。

  1. 本文情境設定的磁碟分割表
  2. 磁碟故障操作情境
  3. 系統安裝時就建立 RAID 1
  4. 把工作中的分割區轉移到 RAID 1
  5. 陣列中的磁碟單獨拿到另一台電腦
2024-12-04: 更新關於 UEFI 啟動系統的重建方式,以及 swap 處理。

SSH金鑰連線與多帳號管理。如何維護多個GitHub帳號的源碼庫

說到 SSH 多組金鑰與帳號管理的需求,我會從 GitHub Desktop 說起。

GitHub Desktop 是個很好用的 git GUI 工具,缺點是它設計上只會記一個 GitHub 帳號。 若你有好幾個 GitHub 帳號,照 GitHub Desktop 設計的操作邏輯,你要重複登出登入切換帳號。 但我們其實可以利用 SSH 金鑰管理機制,直接存取不同帳號的源碼庫。

此外,如果你有申請多家雲端服務商,而他們支援 SSH 連線的話,也是用同一套機制管理多個帳號。

本文分兩章。第一章說明 SSH 金鑰基本操作。第二章說明管理多組金鑰的方式。

  1. 建立一組金鑰
  2. 管理多組金鑰

別管Sign in了

舊電腦安裝 Alpine Linux、X 視窗、桌面與 Firefox

我安裝的舊電腦是一台工業用電腦,將近 15 年前的硬體規格。 我最初拿 x86_64 的 Linux USB 作業碟開機,看到 CPU 不支持 x86_64 的訊息時,讓我驚訝不已。 其配置規格為:

  • VIA C7 CPU。x86 32 位元 CPU,不支持 x86_64。
  • 主機板晶片組內建 S3 UniChrome 顯示晶片。
  • 1 GB RAM。
  • 2 GB CF 記憶卡。早期工業用電腦常用 CF 記憶卡作為 IDE 磁碟裝置。

就算是 Debian 也很難在這種配置下裝視窗環境。所以我選擇了更精簡的 Alpine Linux。 本文整套安裝結束,清除 /var/cache/apk ,最後用了 root 分割區大約 750~800 MB。

電子發票列印功能尋寶大冒險

有個客戶最近向財政部申請電子發票服務,問我能不能幫他們的 POS 系統加上列印電子發票的功能。 技術上不難,但與公家機關打交道的事,規格才是最重要的。 總之看看「財政部電子發票證明聯一維及二維條碼規格說明」。 但我萬萬沒想到這種公開規格的事,竟然可以搞成尋寶大冒險遊戲。

WSL2 執行 Linux GUI 不用再裝 X-Server

數年前,當 Windows 當發布 Linux 子系統 WSL 時,我便曾在上面跑過 Linux GUI 桌面程式。 看這篇「Windows Subsystem for Linux (WSL) 使用 Linux GUI 桌面軟體與中文字型」。 那時還要自己裝一套 Windows 版的 X-Server。

但最近看到 Microsoft Learn 上這篇 「在 Windows 子系統 Linux 版上執行 Linux GUI 應用程式」。 說 WSL2 已經進步到直接內建 X11 和 Wayland 協定了。 也就是說現在 WSL2 執行 Linux GUI 應用程式,不用再裝 X-Server 。

學習 ECMAScript/JavaScript 6 - Module 在瀏覽器環境的使用說明

JavaScript 的 module (模組) 概念,整體上與其他程式語言沒有差別。 但是 JavaScript 主流用途是作為瀏覽器的嵌入式語言,在瀏覽器環境使用 module 就帶來一些特殊的問題。 此為本文重點。

  1. module 特性
  2. script type 的影響
  3. 避免名稱衝突

本文不會詳細介紹 module (模組) 功能的程式語法。語法細節推薦看 Mozilla 開發者文件的「Modules Guide」。

學習 ECMAScript/JavaScript 6 - Async Function 問答指南

注意,本文說的 async function 專指 JavaScript 的定義。

關於 async function (非同步函式)的使用入門,我想只需要回答三個問題就足夠了。

  1. 如何設計與使用 async function (非同步函式)?
  2. 我已經有使用 Promise 設計的函式了,如何改為非同步函式?
  3. 隱性的非同步函式改成顯性宣告(加上 async)有什麼好處?

最後補充關於 async 帶來的 color of function 的影響。

Debian Linux 設定 APT 套件庫僅使用 CD/DVD

絕大多數使用者在安裝 Debian/Ubuntu 之後,會修改 apt 的 sources.list ,完全使用網路上的套件庫,取消 CD 來源。但本文的操作相反,僅使用 Debian/Ubuntu 的 CD/DVD 內容作為套件庫來源。本文適用情境:

  1. 舊版本系統,官方已經移除網路上的套件庫。
  2. 主機網路不連外。

以上情境需要管理者事先從網路下載完整的光碟影像,並將光碟中的套件資訊匯入 apt 資料庫。日後需要安裝套件時,apt 就會提示管理者需要插入第幾片光碟。一般還需要手動修改 sources.list 加一些選項, apt 才不會丟出套件來源不能認證(can’t be authenticated)的錯誤。

增加隱私權政策 (Privacy Policy) 聲明頁

本站參加 Google AdSense 計畫。日前收到通知「自 2024 年 1 月 16 日起,AdSense 發布商除了遵守《歐盟地區使用者同意授權政策》規定以外,還必須採用 Google 認證且已整合 IAB 資訊公開和同意聲明架構 (TCF) 的 CMP」。為了符合 Google AdSense 規定的隱私權透明揭示原則,增加 「隱私權政策」聲明頁。頁面連結固定可見本站最下方頁腳處。

抱怨一點,Google 怎麼不直接提供隱私權政策的定型化範本。一般人哪知道該寫什麼內容。