舊電腦安裝 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 怎麼不直接提供隱私權政策的定型化範本。一般人哪知道該寫什麼內容。

在 Ubuntu 22.04 上更新 GitHubPages

安裝 Ubuntu 22.04 後,按照 Jekyll on Ubuntu 的說明,安裝 Jekyll 所需套件與環境。

sudo apt-get install ruby-full build-essential zlib1g-dev

echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

gem install jekyll bundler

安裝完成後,先建立一個測試 Jekyll 用的目錄。例如 jekyll-test 。

mkdir jekyll-test
cd jekyll-test
jekyll new --skip-bundle

這會建立一個全新網站的 Jekyll 專案目錄,但還要修改它的 Gemfile ,改用 github-pages 套件管理內容。

Linux NetworkManager 用命令列工具或組態檔設定網路連線

NetworkManager 是目前各種 Linux 散佈套件最常用的網路連線管理工具。預設配置就會安裝這套工具。它提供了多種 GUI 管理工具,一套命令列工具,也允許使用組態檔設定。本文說明如何以命令列工具或組態檔做基本的網路連線設定工作。

  • GUI 工具: 有很多種。但通常 GNOME 的 nm-applet (套件名 network-manager-gnome) 就足夠了。它在 KDE 或 LXDE/LXQt 桌面環境也能用。
  • 命令列工具: nm-cli
  • 組態檔: nm-settings-keyfile

Twitter (X) 撤除活動Timeline

因為 Twitter (改名 X) 撤除了活動 Timeline 功能,故本部落將首頁側欄內容改成 Profile Timeline 。

We retired the Likes, Collections, and Moments timelines on January 13, 2023.

You can learn more about this change in our announcement

K島歪串日常:民初的簡體字推動者是搞偽科學

No.29500864
然後日本人說繁體字對他們而言比中國簡體字更好懂 雖然我不是很明白這個邏輯

No.29500985
那是因為日本的簡化漢字是因為民族性或方便等原因長時間演變而成的,偶爾還是會看到古字(繁體)
中國簡體就不一樣了,那是為了提高認字率直接砍一刀說我們之後這樣寫,為了簡而簡。有些被日本簡化過了的字就直接拿來用才剛好看起來像
硬要說的話就是演化和簡化的差別
對日本人來說,繁體是使用古字,簡體則是另一種被發明出來東西

No.29501962
說白了就是清末民初那時的文人一直有”中國落後的原因有一部分因為方塊字太難寫”,這裡面的標竿就是錢玄同,錢他自己編的簡體字譜收了2400餘字,這數量遠多於國民政府公布的324個一簡字甚至還多於1964年共產黨政府推出的簡化字總表2236字
而事實上共產黨建政後挾著新中國建立聲威推一簡成功後變本加厲的還要推二簡甚至中文全羅馬拼音化,也是撞到牆才停

因為那些讀書人沒有語言學這項專長啊www

如果有的話就不會提出這點子了

K島歪串日常:經濟思想史軼事,資本論其實沒寫完

其實資本論根本沒寫完w

我記得熊彼得吐槽馬克思出版資本論第一卷後,讀了邊際理論,然後資本論剩下的內容就寫不下去了。 ps.馬克思學的是李嘉圖的古典理論

No.29651168
這我倒是第一次聽說,所以馬列信徒的聖經根本是個沒寫完的破書嗎www
「關於我寫到一半寫不下去的理論半成品被野心革命家當作革命聖經放送這件事」

.NET 筆記 - System.Threading.Timer 和 System.Timers.Timer 兩種計時器的差異

本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。

在 .NET 平台上,有兩種主要的計時器類別(Timer),分別是:

在一些 .NET Framework 文件中,還會提到其他種類的計時器類別,例如 System.Windows.Forms.Timer 。但看名字就知道,那些計時器類別綁定在 UI 庫或 Windows 系統上。而本文提到的這兩種計時器則具有普遍性,不會妨礙 .NET 程式的跨平台運行能力。

.NET 筆記 - 處理程式終止事件 (kill SIGTERM/SIGINT)

本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。

我們有很多種方法可以結束一個執行中的程式。例如一個在指令列執行的程式,可以按下 Ctrl + C 打斷它。又或者是「工作管理員」這類的工具,也會提供「結束工作」按鈕讓使用者終止指定的程式。 Linux 用戶熟悉的 kill 指令也是一個用外部工具終止程式的方法。

在 Unix/Linux/BSD/macOS 系統,上述操作都統一在 signal 訊號機制。例如 Ctrl + C 實際上觸發 SIGINT 訊號; kill 默認發出 SIGTERM 訊號;強制終止程式觸發 SIGKILL 訊號。具體列表請見 GNU libc manual - Termination Signals。在 Windows 系統上其實也有類似的方法,不過本文重點是 .NET 平台。

.NET 筆記 - NamedPipe 與 Unix Domain Socket (.NET 6)

本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。

Named pipe (具名管道) 在 .NET 上不是新玩意,早在 .NET Framework 3.5 時就已提供 NamedPipeServerStream / NamedPipeClientStream。 但是自 .NET 6 起,它的底層實作技術改變了。 如果你想讓其他程式語言開發的程式 (非 .NET 平台) 和 NamedPipeServerStream / NamedPipeClientStream 程式溝通,必須知道這件事。

我有一個用 .NET Core 3 寫的具名管道服務程式,前陣子想用 .NET 6 發佈到 Linux 跑。結果原先用 FIFO 寫的客戶端程式接不上。一番研究後,才知道 .NET 6 改了具名管道的底層實作技術。

Linux 開機後,利用 systemd 自動啟動 VirtualBox 虛擬機的作法

在 Linux 桌面環境,想要開機後自動啟動某程式,簡易作法就是在 autostart 設定中加入要啟動的程式。 但這個作法用在 VirtualBox 的虛擬機上,就不太靈光。 偶爾可以啟動,但有時會跳出 vboxdrv 尚未載入的錯誤狀況。 然而手動啟動虛擬機總是正常的。

因為現代的 Linux 散佈版本於啟動桌面環境時,會將進入桌面和載入驅動程式 (包含 vboxdrv) 等多個工作,交給 systemd 平行處理 (systemd 約 2013 年之後普及)。 既然是平行處理,那麼進入桌面和載入 vboxdrv 這兩件工作,誰先誰後就不是固定順序的了。

所以想透過桌面環境的 autostart 自動啟動虛擬機的話,有時就會碰到先進入桌面但 vboxdrv 還沒載入的情形。 然後就跳出上述的錯誤了。

Linux 如何用舊的 eth0 網路介面名稱,不要 eno0, enp0s1 這種

為什麼現在 Linux 的網路介面名稱不是 eth0 ? 這說來話長,我先長話短說。

若要用 eth0 ,編輯 /etc/default/grubGRUB_CMDLINE_LINUX 這行改成:

 
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

然後執行下列指令更新 grub 設定:


$ sudo update-grub
或者
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

想要了解來龍去脈,請接著看。

使用 CloneZilla 指令列工具批次生產相同配置的業務用磁碟

標題說的業務用磁碟是指多顆具有相同分割區配置,安裝 Linux 作業系統和客戶業務軟體,用在大量裝機場合的磁碟。 此外,本文情境還將面臨分批採購、後續替換等狀況,故使用的磁碟會是不同型號、不同品牌、甚至標示容量也不相同。

CloneZilla 的磁碟對拷功能雖然可以直接複製分割區配置,但一般情形僅限兩顆磁碟實際容量一致或目的磁碟容量較大的情形。 為了能複製到不同容量的磁碟,本文情境的分割區配置並不會用滿整顆磁碟的容量。 實務上可能只配置 30GB 左右,以便複製到 32GB 或更大容量的磁碟。 這種分割區配置方式適合使用於 eMMC, CF卡, USB隨身碟, SSD 這一類的儲存媒體。

這種做法,我以前也用在 Raspberry Pi 上。可以參考我這篇 產生指定容量的 Raspberry Pi SD 卡磁碟映像

2022-10-05: 大幅改寫,改以磁碟為複製單位,而不是分割區。

K島歪串日常:我看君主立憲制

大英國協王國女王伊莉莎白二世於 2022 年 9 月 8 日逝世。 The Queen is dead, Long live the King. 接著以伊莉莎白二世為元首的加拿大就有人提議廢除君主立憲制,但直接被總理拒絕。拒絕重啟憲政辯論 加拿大總理:不討論君主制問題。他說「在一個世界上最好、最穩定的體系中做出如此深刻的改變,對我來說,現在,這不是一個好主意」。 我也覺得在權力制衡運作良好的國家提議廢除君主立憲是居心叵測。我想到去年在 K 島上,我也聊過君主立憲制。

近兩三年來,日本動畫、漫畫、輕小說流行異世界或轉生題材,其中不乏轉生為歷史人物者。而去年(2021),有兩套幾乎同期刊載的轉生歷史人物漫畫,一套主角轉生為法國瑪麗皇后,另一套主角轉生為法國國王路易十六。喔,提醒一點,瑪麗皇后就是路易十六的妻子。我當時就覺得這兩個作者怎麼不摻在一起畫算了(大笑)。順便看看 PTT 鄉民的推文:轉生成路易十六,全力阻止革命讓瑪麗幸福