2024年5月20日 星期一

處理 xml 格式 (例如 vlc 的播放清單) 較好走的繞路: 轉成 json 格式、 撈出一些欄位、 再轉成 csv 檔

XML 格式的檔案很難處理。 以前我試過 xmlstarlet, 覺得有點複雜, 而且找不太到教學文。 還好大部分時候不太會遇到需要批次 編輯 xml 檔的情況。 如果只是想要從 xml 檔案裡面 撈出部分欄位, 那麼用 xq 指令先把它轉成 jq 格式, 簡單多了!

2024年5月12日 星期日

easybashgui: 寫一支 bash 小程式、 創造出七種選單

easybashgui, zenity 圖形介面 想要用 bash 寫文字選單, 可以呼叫 dialog; 想要用 bash 寫圖形選單, 可以呼叫 zenity。 那如果希望你的選單可以套用 gum、 dialog、 yad、 gtkdialog、 kdialog、 zenity、 xdialog (蛤, 竟然有這麼多種...) 任何一套選單函式庫, 卻又很懶, 只想寫一次程式就好呢? 那就用 easybashgui 吧!

2024年5月9日 星期四

透過 maxima 感受「平方反比定律」 的神奇

wxmaxima 畫面 忘記很久以前在哪裡讀到, 說 萬有引力的平方反比定律 裡面這個 "2" 次方是很神奇、 很剛好的數字。 也忘記到底是怎麼剛好法。 最近心血來潮, 開始讀 向量場的數學, 在 這裡 讀到一個範例 (5.3 節範例 3): 令 r=(x,y,z) 表示空間中一個起始於原點的向量。 如果向量場 vf3 的數學式是: vf3(r) = r/|r|^3, 那麼 vf3 的散度 (divergence) 到處都是零。 讀者不用擔心高深的數學, 這裡我只假設讀者知道純量場、 向量場跟偏導數的定義。 至於一個向量場 vf3 的散度, 它只不過是一個 公式很簡單的純量場。 至於它有什麼物理意義或數學特性, 就暫時先隨便無所謂了。

2024年5月3日 星期五

DVD 轉開放的影片格式 mkv, 含字幕

用 vlc 播放含有三個字幕軌的 mkv 檔 難得有機會向老婆炫耀 linux 的厲害: 她想要把 DVD 備份成 mp4, 結果以前買的軟體已下架, 而 windows 又拒絕用檔案總管去開啟 DVD。 在 linux 底下, 看到的不過就是一個檔案系統, 備份、 播放當然都沒問題, 其實也並不需要轉檔啊。 那順便來研究一下 VIDEO_TS/ 底下的 VTS_*.VOB 好了, 特別是老婆交代的「字幕」部分。 我看到的大部分 DVD 都只有一個字幕軌, 只有一部 「史瑞克」 有多種語言。 那就拿其中一個較短, 又含字幕的影片檔 VTS_03_1.VOB 來實驗好了:

VOB_FILE=VTS_03_1.VOB
BASE_NAME=${VOB_FILE%.VOB}
echo $BASE_NAME

2024年4月29日 星期一

移民 xfce4

KDE 版的 debian 12.5 用了兩天, 最吸引我的只有桌面拉近拉遠這個功能 (因為我的一生 每一天幾乎都只是在終端機裡渡過的呀) 整體而言還是覺得太沉重、 速度太慢。 我還是習慣陽春的 icewm、 openbox 等等輕量級視窗管理員。 在 舊電腦 上我安裝的, 確實也就是 icewm。 可是 (特別是身為退休人士) 很難抵抗一種焦慮感: 日常工作用的桌機終究不能選太冷門的環境, 以免未來跟不上時代呀, 例如 wayland。

2024年4月20日 星期六

「電價貴不貴」之哪種圖最適合你的資料視覺化?

在臉書上看到一張圖: 比較一些國家的薪資中位數 vs 電價。 忍不住想用 scatplot 重畫一次。 我詢問資料出處, 可惜原繪圖者沒回答。 只搜尋到 "World Population Review" 的這兩頁: Median Income by CountryCost of Electricity by Country。 點表格右上方的 "csv" 即可索取、 從 email 收到 inc.csvec.csv 這兩個 csv 檔。 用我的小程式 country-encode.py 幫兩檔各自加上 iso 三碼國碼、 依國碼排序、 用 join 合併、 用 libreoffice calc 打開、 手動整理一些小地方, 最後得到 inc-ec.csv。 再搭配 inc-ec.json 設定檔, 畫出 「電價 vs 收入中位數」 互動氣泡圖。 <== 點我!

2024年4月11日 星期四

設定輕巧視窗環境 icewm

先前 在 eee pc 上面安裝 debian 時, 需要找一個輕量級的視窗管理員, 其中最關鍵的參數是記憶體用量。 這篇文章 比較十幾個視窗管理員, 看到 icewm 時就毫不猶豫地選它了, 因為它是我二十幾年的老朋友。 本文描述的是 debian 12.5 (bookworm) 上的 icewm 3.3.1。

2024年3月25日 星期一

十六年前的懷舊電腦 eee pc 上跑 AI 年代的作業系統

2008 年出廠的 eee pc 1001px 上面跑 2024 年的 debian 12.5 bookworm 哈哈, 2008 年出廠的 32 bit eee pc 1001px 如果沒有用雲端服務, 當然跑不動 AI 程式啊! 我的意思是: 2024 年的現代 (AI 年代), 只要選擇正確的作業系統, 你的舊電腦照樣可以很秋!

2024年3月24日 星期日

安裝新版 debian 重點筆記

前一陣子在虛擬機上安裝了 debian 12.5 bookworm, 並且製作了 iso 檔, 包含 64 bit 版的 g24* 系列與 32 bit 版 go24* 系列。 用戶名稱: stux; 密碼: 一個空格。 注意: go24* 是專為 eeepc 老舊電腦 (old computer) 打造的 32 bit 系統, 所以無法用 (僅支援 64 bit 的) refind 製作 UEFI 相容的開機模式; 這個 iso 檔只能採用 legacy boot 方式開機。 我自己的桌機還沒升級; 這裡先重點筆記一下安裝心得。

[4/29] 後來 KDE 用不習慣, 移民到 xfce4 桌面環境去了。

2024年3月23日 星期六

deb 轉檔: 新版 zst 壓縮改成舊版 xz 壓縮

按照 refind 作者的安裝教學文 下載了 refind 0.14.0.2 並且試著安裝: dpkg -i refind_0.14.0.2-1_amd64.deb, 結果出現錯誤訊息: "archive 'refind_0.14.0.2-1_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up"。 原來是因為我的系統太舊 (linux mint debian edition 5, "Elsie"), 不認得新的 .deb 檔裡面的壓縮格式。 找到 這個問答, 已有網友寫了一個小的 script:

#!/bin/bash

DEBPACKAGE="${1%.deb}"

[[ -z "$1" ]] && echo "Usage: $0 some_package.deb" && exit 1

set -e
ar x $DEBPACKAGE.deb
zstd -d < control.tar.zst | xz > control.tar.xz
zstd -d < data.tar.zst | xz > data.tar.xz
ar -m -c -a sdsd "$DEBPACKAGE"_repacked.deb debian-binary control.tar.xz data.tar.xz
rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst

把它存檔, 隨便取個名字, 例如 zst2xz-deb、 改成可執行、 並且安裝 zstd 套件, 然後: ./zst2xz-deb refind_0.14.0.2-1_amd64.deb 就會產生 (採用較舊、相容性較好的 xz 演算法所壓縮的) refind_0.14.0.2-1_amd64_repacked.deb 之後就可以用 dpkg -i 安裝了。

2024年3月22日 星期五

查看、修改與保護 uefi 裡面的 nvram/變數

安裝最新的 0.14 版 refind 套件時, 畫面閃過 "Creating new NVRAM entry" 的訊息, 下次開機時發現它竟然直接攻佔了我電腦的開機選單! 而且它不是安裝在某顆硬碟的 MBR, 而是裝在更上游的 UEFI NVRAM, 也就是主機板的韌體上。 還好 linux 程式都很有分寸的 , 只是多加了一層選單, 從那裡仍舊可以看到並選取我原來的選單。 (而不是像三十幾年前, 沒品的微軟直接廢了我原本的 OS/2 多重開機選單。) 總之這促使我開始爬文認識 UEFI 韌體管理/EFI variables。 以下測試不必進入 UEFI, 在 linux 命令列底下就可以進行。