社群聯播
有時候我會從某個網站一口氣抓下很多 html 檔, 方便離線閱讀。
在 linux 命令列上:
lynx ~/放很多html檔的某個目錄/
接下來就可以用左右方向鍵進入和退出每個檔案, 逐一閱讀。
從省著用手指的角度來看,
這比雙擊滑鼠和下指令都要省力很多。
txt 檔或是沒有副檔名的 README 等等當然也適用。
遇到 pdf 檔, 我的 linux mint 會把 gimp 叫出來。
可是我並沒有要編輯啊! 我習慣用 okular 讀 pdf 檔,
因為按 ctrl-i 就可以變成黑底白字。
這時可以編輯 /etc/mailcap 把裡面所有同時提到 pdf 跟
gimp 的那幾句都註解掉。 離開 lynx、 再重新進入,
這次 lynx 就會用預設的 pdf 閱覽器 (以我而言就是 okular) 去開啟 pdf 檔了。
最近想要學寫 webextension,
最近把系統升級到 LMDE 5 Elsie (Linux Mint Debian Edition),
也順便更新了
貴哥實驗室的 iso 檔, 這裡很快筆記一下一些小問題。
首先, 為什麼要升級?
先前因為不想用 Ubuntu 的 snap 所以
改用 linux mint。 但是目前最新的 mint 是 20.3,
也就是仍舊以 2020 版的 ubuntu 為基礎,
所以後來決定改安裝以 debian 為基礎的 LMDE。
它所對應的 debian 版本是 2021 年 8 月推出的 bullseye。
採用主流版 mint 的那段時間,
安裝 chromium 瀏覽器有點辛苦。
UnGoogled chromium 有一些小問題 (例如無法保持登入)
改用 LMDE 之後完全略過 ubuntu, 安裝 chromium 就變得很順利了。
LMDE 的桌面環境
一般正常使用電腦, 除了作業系統本身之外,
最常寫入硬碟的軟體,大概是瀏覽器吧。
對於機械式硬碟, 這不是什麼問題。
但如果你的 linux 裝在 ssd 或開機隨身碟上, 就應該考慮採用
psd
來減少瀏覽器對隨身碟的讀寫。
可是它並沒有管到 ~/.cache 目錄。
搜尋到
psd 作者的建議: 在 /etc/fstab 裡面放一句:
tmpfs /home/你的ID/.cache tmpfs noatime,nodev,nosuid,size=120M
這會把 ~/.cache 放到 120M 大小的記憶體裡, 以後每次開機就會看到一個空的 ~/.cache ,
很多 apps (不只瀏覽器, 還有 gimp、 virt-manager 等等)
最頻繁的讀寫都會變成在記憶體裡發生, 關機後就忘光。
這麼做之後, 每次開機之後第一次點 (上次
現在大部分的電腦都支援 UEFI 開機,
所以新版的貴哥實驗室開機光碟也跟著配合支援 UEFI。
拿它來製作開機隨身碟的過程可以全程在 Windows 底下完成。
感謝蘇浚緯助教製作以上教學影片。 (2021/9/20)
到 這裡 下載最新的ISO檔。
從今年開始, 檔案名稱改成 「版本字串放在前面」, 比較容易一眼就找到最新版。
[2022/7/30] 目前最新的版本是 22/g22A-lmde-elsie.iso 。
又把對應版本的 g22A-1-uefi-boot-files.tgz 也下載回去。
(主要版本例如 g22A 要跟 iso 檔相同; 後面的數字選最新的那個檔)
在 Windows 底下打開檔案總管、 確認你的隨身碟採用的是 fat32 而不是 exfat 格式、
確認隨身碟還有足夠的空間 (至少要有 6G)
安裝解壓縮工具 7-zip
在 軟體自由協會的聊天群組
裡面學到的技巧, 比四年前寫的
linux X11 環境更改滑鼠指標圖示 要更簡單。
先到
gnome look 的 cursors 頁面 點一下 "rating" 分頁以便按照用戶評分排序,
挑一組喜歡的。 我需要比較大比較顯眼的圖示,
所以就點進去第二名的 Oreo Cursors。
切換到 files 分頁, 看到有很多不同口味可以選擇下載。
我選了 oreo_spark_orange_cursors.tar.gz 等等幾組。
把每一組都解壓縮到 /usr/share/icons/ 底下:
sudo tar -C /usr/share/icons/ -xzf oreo_spark_orange_cursors.tar.gz
然後叫出系統的滑鼠設定選單。
以我使用的 linux mint 20.2 uma [xfce 口味] 而言,
可以
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
Uniform Manifold Approximation and Projection (UMAP)
是一個用來降低資料維度的演算法。
如果你把它想成是一個副程式,
它所接收的主要輸入參數以及輸出的資料跟 t-SNE 一模一樣:
輸入一張很大的試算表 (例如幾百或幾千個數字欄位、 幾萬甚至幾十萬列),
它可以產生一張新的試算表,
裡面只剩少少幾個數字欄位 (個數由你指定),
這些新欄位的值可以說是原始許多欄位的 "摘要",
如果欄位數夠少 (例如剩下 2 或 3),
你甚至可以把資料畫在螢幕上或呈現在3度空間中,
或許用肉眼就可以觀察出幾萬/幾十萬個點如何分佈在幾個明顯的群 (cluster) 當中。
我在
t-SNE 幫你看見高維度數值資料 以及
撞臉偵測器 兩篇文章當中有實作兩個例子, 可以直接在網頁上玩玩看。
UMAP 比 t-SNE 的速度更快、 效果更好。
我還沒
在 hacker news 上面看到這篇
Introducing zq: an Easier (and Faster) Alternative to jq 。
玩懂了之後, 發現用它來轉檔 (json => csv 或 csv => json)
及篇輯/篩選 json 檔的內容超方便, 甚至比 jq 簡單很多!
只是他們把 zq 的太多功能與特色擠在一篇文章介紹, 所以步調太快, 有點難懂。
這裡我拿臺中市 151 公車停靠站
tcbus-151.json 來作範例, 展示最常用的 zq 基本語法。
這個檔案是從
ptx 公共運輸整合資訊流通服務平台 撈出來的。
一、 簡介
到 github 的 release 頁面
下載適合你的作業系統的版本。 以我下載的 linux-amd64 版本來說,
解壓縮之後把 zq 與 zed 兩個執行檔搬到 /usr/bin 底下就
兩部 linux 機器之間可以做聲音串流嗎?
假設有一部 M(ute) 機沒有喇叭; 另一部 S(peaker) 機有喇叭。
想要在 M 機上面用 mpg123 指令 (無聲地) 播放音樂,
再透過網路傳送到 S 機用它的喇叭真的把聲音放出來。
S 機要安裝 pulseaudio-utils 套件。
(M 機也許也要? 不知道, 因為我的 M 機是 linux mint,
本來就有安裝。 至於 S 機則是 android/lineage OS 加 termux,
實際的安裝指令是: pkg install pulseaudio。)
假設兩部機器位於同一個區網 192.168.97.0/24 。
先在 S 機執行:
pulseaudio --start --exit-idle-time=-1
pacmd load-module
想要在 android 手機或平板上使用命令列,
透過 usb 線下 adb 指令 是一個方法。
另一個方法是從
f-droid 市集 安裝 termux。
這個環境更接近 GNU/Linux。
這篇文章 已有詳盡的教學,
本文就不重複了, 只補充一些額外的心得。
我的實驗環境是三星 Galaxy Tab A7 lite,
(為了完整的語音輸入所以) 沒有刷機, 沒有 root。
Termux 的操作介面很友善, 例如想要放大縮小字體,
直接用兩指操作即可, 就像在放大縮小相片一樣。
軟體鍵盤有 Tab、 ctrl、 方向鍵等等, 完全適合操作
readline 快速鍵。
不過我還是更喜歡接上 otg 線和實體鍵盤。
螢幕左側向右滑, 可以開啟多個命令列分頁,
並且可以叫出更多設定選項。
第一件事是安裝喜歡的套件:
pkg install vim lynx
前幾篇都是在為今天的主題鋪路:
在 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 命令列環境。
Proot
是一個 user space 版本的 chroot,
所以不需要 android 系統的 root 權限,
但是在自己的小環境裡面看起來又像是擁有 root 的身份。
而
proot-distro 則是從 proot 長出來
最近需要安裝 litecli
(sqlite 的文字介面前端, 有 completion 自動快打功能超方便)。
可是我的 debian 伺服器太舊 (debian 9, stretch),
python 只到 3.5 版, 就連 backports 也是。
而 litecli 用到一個 prompt-toolkit 套件,
它需要 3.6 以上的 python。
馬上就要開學, 當然不想升級 debian。
於是找到位於 debian 官網底下某位大大個人網頁上的
Unofficial Python backports for Debian。
照著說明讓我的 /etc/apt/sources.list.d/python-all.list
指向他的非官方套件庫, 然後:
apt update ; apt install python3.7
其中執行檔 /usr/bin/
在資訊領域好東西的聲量往往輸給商業宣傳包裝過的次級品。 (望向微軟)
例如 X Window 跨網路執行應用軟體的能力,早在三十年前或更早就已存在。
比方說在甲電腦啟動 vnc 服務:
tigervncserver -geometry 800x600 :59
然後在乙電腦開啟 vnc 遠端連線:
xtigervncviewer 甲電腦的IP:59
那麼你在 vnc 的命令列上可以決定下一個指令的視窗要開在本地
(乙電腦) 還是遠端 (甲電腦)。
如果沒有指定, 系統會查看 $DISPLAY
環境變數, 預設開在本地。
如果設定 export DISPLAY=:0
則會開在遠端甲電腦的視窗環境裡面。
右圖顯示的是本機連到本機的狀況,
你可以看得出來看圖軟體 feh 的兩個視窗,
一個開在 (乙電腦的) vnc viewer 裡面 (calf.jpg)
另一個則因為這樣啟動:
我習慣用 x86 電腦做事; 遇到只有 Android 平板可以用的時候,
覺得很難工作。 這時可以在遠端的 x86 電腦上啟動 VNC server。
這幾天在接有 otg 實體鍵盤但無滑鼠的 android
平板上試著用 avnc 這個 vnc client 開啟 inkscape 修圖,
感覺還算八成實用, 已經不像八年前只是 「原則上可開啟」。
以下假設你已經事先成功完成
兩頭都是 x86 的 vnc 連線。
首先我在電腦上啟動 VNC server:
tigervncserver -geometry 1340x768 :12
再來在平板上的
termux 環境啟動 ssh tunnel:
ssh -fNL 8523:localhost:5912 [email protected]
或者是如果不需要考慮資訊安全、 不想用 ssh tunnel,
那麼就可
想要從零開始學 SQL 語法, 該如何起步?
我會建議從 sqlite 著手, 因為它最輕巧,
一個檔案就是一個資料庫, 不需要煩惱帳號/密碼/使用者管理/...等等煩瑣的事,
讓你可以專心於 SQL 語言。
它只比標準 SQL 少一點點功能。
而且很多應用程式 (例如很多 android apps) 都採用 sqlite,
學會操作 sqlite 之後, 你可以用 adb pull
指令把手機上有趣的資料庫檔拿來研究, 所以也很有實用價值。
在 debian 系列的 linux 上面可以直接這樣安裝:
apt install sqlite3
再來大力推薦安裝
litecli : pip3 install litecli
裝完之後可能還需要編輯 ~/.bashrc , 在裡面加上一句
export PATH=$PATH:$HOME/.local/bin/litecli
並且開