2022年9月18日 星期日

ip 指令漂亮列印

查看所有網卡裝置的指令 ip a 印出來的資料令人眼花撩亂; 可是大部分我都看不懂也沒在看。 可以只印看得懂的欄位就好嗎? 如果你的網路知識跟我一樣弱, 想要略過大部分資訊, 可以先安裝 zq, 然後在 ~/.bashrc 裡面加上這一句: alias ipa="ip -j a | zq -f csv 'over this | {ifname,address,ip_addr:missing(addr_info[0].local)?\"\":addr_info[0].local} | fuse' - | column -s, -t" 那麼下次進入 bash, 就可以用 ipa 指令查看精簡版的資訊。

2022年9月5日 星期一

TGOS 批次地址查經緯度 + umap 私房地圖範例: 清冠一號中醫診所地圖

清冠一號中醫診所地圖 [本來想重寫 TGOS 的教學文, 做這張圖時才發現 umap 已中文化, 介面改了不少, 而且有提供 cluster map 的功能, 就乾脆連 umap 教學也一起重寫。] 接續前一篇 轉碼 big5 除錯記, 已經得到整理過的清冠一號中醫診所地址檔 3.csv。 (仍舊是 utf8 編碼, 但不會讓 iconv 消化不良。) 下一步要轉成 TGOS 規定的格式。

2022年9月4日 星期日

轉碼 big5 除錯記

雖然偶爾才遇到... utf8 轉碼 big5 很討厭, 因為 big5 的字集比較小, 會有很多字轉不過去。 今天拿 衛服部「清冠一號動態表」 的中醫診所地址清單做例子, 因為 地址轉經緯度的 TGOS 服務 要求輸入檔案必須採用 big5 編碼。

2022年8月14日 星期日

繪製 (公共腳踏車租賃地點、公車站牌、...) 群聚(地)圖不必改程式碼

leaflet cluster map: 以台中公共腳踏車租賃地點為例 上個學期教資料視覺化, 其中一個主題是繪製客製地圖, 就做了這個例子: 台中公共腳踏車租賃地點。 像這種 marker 個數太多太密集的地圖, 需要用 cluster map 來做, 當訪客拉近 (zoom in) 時, 才把一個 cluster 拆成更多個小的 clusters。

這個無法用單純的 umap 來做。 [9/7 現在發現 umap 可以製作 cluster map 了, 更簡單! TGOS 批次地址查經緯度 + umap 私房地圖範例: 清冠一號中醫診所地圖] 請先下載 程式碼, 然後用瀏覽器打開其中的 index.html, 拉近拉遠測試一下。 如果是 firefox, 要先到 about:config 裡面把 security.fileuri.strict_origin_policy 設成 false; 如果是 chromium, 必須先關掉所有 chromium 視窗, 再從命令列上重新啟動: chromium --allow-file-access-from-files 。 詳見 javascript Can Read Local Files

2022年8月13日 星期六

用 lynx 快速瀏覽很多文字檔

有時候我會從某個網站一口氣抓下很多 html 檔, 方便離線閱讀。 在 linux 命令列上: lynx ~/放很多html檔的某個目錄/ 接下來就可以用左右方向鍵進入和退出每個檔案, 逐一閱讀。 從省著用手指的角度來看, 這比雙擊滑鼠和下指令都要省力很多。 txt 檔或是沒有副檔名的 README 等等當然也適用。

2022年8月1日 星期一

升級 LMDE 5 筆記

最近把系統升級到 LMDE 5 Elsie (Linux Mint Debian Edition), 也順便更新了 貴哥實驗室的 iso 檔, 這裡很快筆記一下一些小問題。

2022年7月30日 星期六

減少 ssd 與隨身碟讀寫, 2022 版

一般正常使用電腦, 除了作業系統本身之外, 最常寫入硬碟的軟體,大概是瀏覽器吧。 對於機械式硬碟, 這不是什麼問題。 但如果你的 linux 裝在 ssd 或開機隨身碟上, 就應該考慮採用 psd 來減少瀏覽器對隨身碟的讀寫。 可是它並沒有管到 ~/.cache 目錄。 搜尋到 psd 作者的建議: 在 /etc/fstab 裡面放一句: tmpfs /home/你的ID/.cache tmpfs noatime,nodev,nosuid,size=120M 這會把 ~/.cache 放到 120M 大小的記憶體裡, 以後每次開機就會看到一個空的 ~/.cache , 很多 apps (不只瀏覽器, 還有 gimp、 virt-manager 等等) 最頻繁的讀寫都會變成在記憶體裡發生, 關機後就忘光。 這麼做之後, 每次開機之後第一次點 (上次關閉前正開啟著的) firefox 某個分頁, 它就必須重新載入那個分頁, 而且開太多分頁時偶爾會當掉。 除此之外, 好像沒有什麼不良的效果。 至於 保護 ssd 的其他措施, 我已經好幾年都沒有做了耶; 到目前為止好像也沒什麼關係。

2022年7月11日 星期一

每一句都可以讀得懂的最精簡 webpack 設定檔 + js toolchain 新手的行前說明

Javascript 語言本身已經 令程式設計師愛恨交織; 它的工具鏈 (toolchain) 更令人眼花撩亂。 去年 我很匆促地學了一點 webpack, 今年好像又不夠用了。 不同時期不同作者的設定檔都差好多, 其中很多也不適用於新版。 越爬文越迷惘, 覺得自己怎麼那麼弱, 都快要哭出來了... 偶然搜尋到這篇: A Crash Course in Modern JavaScript Tooling, 聽到作者安慰: "It's not your fault." 突然覺得獲得救贖, 原來很多 python 族都跟我有相同的感覺! 這次沒有時間壓力, 花了快一個月終於建立了一個最精簡的骨架程式 jstc-novice, package.json 跟 webpack.config.js 裡面的每一句話都看得懂, 可以作為 (已略熟 javascript, 包含會開啟 console 除錯的) webpack 初學者的出發點。 JS 的工具鏈有很多雷, 建議看程式碼之前先很快讀一下本文, 就像是旅遊之前的行前說明一樣, 對於避免踩雷很重要。

2022年7月4日 星期一

UMAP 筆記

Uniform Manifold Approximation and Projection (UMAP) 是一個用來降低資料維度的演算法。 如果你把它想成是一個副程式, 它所接收的主要輸入參數以及輸出的資料跟 t-SNE 一模一樣: 輸入一張很大的試算表 (例如幾百或幾千個數字欄位、 幾萬甚至幾十萬列), 它可以產生一張新的試算表, 裡面只剩少少幾個數字欄位 (個數由你指定), 這些新欄位的值可以說是原始許多欄位的 "摘要", 如果欄位數夠少 (例如剩下 2 或 3), 你甚至可以把資料畫在螢幕上或呈現在3度空間中, 或許用肉眼就可以觀察出幾萬/幾十萬個點如何分佈在幾個明顯的群 (cluster) 當中。 我在 t-SNE 幫你看見高維度數值資料 以及 撞臉偵測器 兩篇文章當中有實作兩個例子, 可以直接在網頁上玩玩看。 UMAP 比 t-SNE 的速度更快、 效果更好。 我還沒寫程式, 先筆記一下搜尋到的連結。

2022年5月29日 星期日

json 裁剪/轉檔 (例如轉 csv) 都交給它了: 強大且易用的 zq

臺中市 151 公車停靠站地圖 在 hacker news 上面看到這篇 Introducing zq: an Easier (and Faster) Alternative to jq 。 玩懂了之後, 發現用它來轉檔 (json => csv 或 csv => json) 及篇輯/篩選 json 檔的內容超方便, 甚至比 jq 簡單很多! 只是他們把 zq 的太多功能與特色擠在一篇文章介紹, 所以步調太快, 有點難懂。 這裡我拿臺中市 151 公車停靠站 tcbus-151.json 來作範例, 展示最常用的 zq 基本語法。 這個檔案是從 ptx 公共運輸整合資訊流通服務平台 撈出來的。

2022年5月21日 星期六

用 proot-distro 在 android 上跑完整的 GNU/Linux 桌面

在 android 手機或平板上執行完整的 GNU/Linux (proot-distro) 前幾篇都是在為今天的主題鋪路: 在 android 手機或平板上執行完整的 GNU/Linux, 裝置不必 root !

假設你已安裝好 termux。 在裡面執行 pkg install proot-distro 安裝 proot-distro, 再下 proot-distro list 查看有哪些發行版本的 GNU/linux 可以安裝。 例如我選擇 debian: proot-distro install debian 安裝好就可以用 proot-distro login debian 進入 (近乎) 完整的 debian 命令列環境。

2022年5月14日 星期六

pulseaudio 一對一聲音串流超簡單

兩部 linux 機器之間可以做聲音串流嗎? 假設有一部 M(ute) 機沒有喇叭; 另一部 S(peaker) 機有喇叭。 想要在 M 機上面用 mpg123 指令 (無聲地) 播放音樂, 再透過網路傳送到 S 機用它的喇叭真的把聲音放出來。