2020-09-15
凡是遇到 「用指標實作深層資料結構」 的程式語言, 一定要知道淺層拷貝 (shallow copy) vs 深層拷貝 (deep copy) 兩者的差別。 網路上文章很多, 但圖畫得很清楚的卻很少, 連英文的也不是很滿意, 只好自己來舉一個例子、 畫一張圖。 以 python 為例, 以下指令: x = [[[1,2],[3,4]], [[5,6],[7,8]]] y = x z = x[:] 會產生上圖。 可以看到: y = x 只複製了最上 (外) 層陣列的位址。 而 z = x[:] 則把最上 (外) 層陣列的每一個元素 (也就是第二層每一個陣列的位址) 都複製過來。 接下來請在 python interpreter 裡面試試這幾個指令: x[0][0][0] = 37 x[0][0] = [41,43] x[0] = [[47,53],[59,61]] 每下一個
2020-09-15
如果你有至少一顆 ssd 硬碟, 貴哥大力推薦升級至較新版的 linux (kernel 5.4 以上, 例如 貴哥實驗室 ulyana 版), 快來享用可快照、 可容網多個系統根目錄、 省記憶體、 超讚的 btrfs 檔案系統。 一、 預備觀念 根據 這個討論串, 最新一代 (除了先軀 zfs 之外, 其他大約近十年) 具有一些共通特性的檔案系統包含昇陽 (Sun Microsystems) 所開發 (現為 Oracle 所擁有) 的 zfs、 Linux 上原生的 btrfs、 蘋果的 apfs、 微軟的 refs 等等。 草草看一下維基百科的 檔案系統的對比, apfs 沒有資料、 refs 只支援 windows, 兩者都可以直接丟到垃圾桶裡面。 以 「元資料」 和 「特點」 兩個表格來看, zfs 跟 btrfs 看來也是四者當中最佳的選擇。 過去兩年
2020-09-15
我的新家 mint ulyana 大致上住得很順手。 但是在兩部 nvidia 顯卡的電腦上, 兩大覽器都會無緣無故造成整部電腦死當。 於是把兩大瀏覽器裡的「硬體加速」選項關掉。 是可以上網了, 但換中文輸入法出問題 -- 換過 fcitx、 gcin、 ibus 都一樣 -- 打沒幾個字, 畫面就亂掉、 整部電腦當掉。 我的經驗是: 會讓 linux 死當, 沒什麼好說的, 一定就是 nvidia 顯卡的問題, 因為他們不希望別人幫他們寫自由軟體驅動程式。 最簡單的解法就是在開機命令列加上 nouveau.noaccel=1 選項, 例如我的 extlinux.conf 裡面, live CD 開機模式的部分長得像這樣: label live:ulyana menu label mint 20 ulyana xfce, live CD [broken GeForce 7025]
2020-09-15
2020 年的暑假, 又是跟隨著 ubuntu 新版 LTS 升級作業系統的時節。 在 20.04 focal fossa 版當中, 因為 ubuntu 強勢推動 (實用, 但也便利無原始碼軟體入侵 linux 的) snap 技術而引發自由派社群的抗議, 所以 (基於 ubuntu 的) mint 20 (代號 ulyana) 決定把 snap 割掉, 於是我也從 ubuntu 移民到 mint ulyana, xfce 版。 安裝完成後, 再度 用 debian live 技術製作 live CD、 製作 kvm 映像檔 ulyana-g20?.qcow2 跟 virtualbox 映像檔 ulyana-g20?.vdi, 通通放在 這裡, 歡迎大家下載。 以下是我的客製化的一些重點摘要。 採用 btrfs 檔案系統, 跟 zfs 一樣可快照, 而且是
2020-09-10
手機的資安與隱私比電腦要難保護很多 -- 因為不離身、 感測器多、 防護軟體少等等諸多因素。 本文列出幾個具體策略來提高手機的資安與隱私。 今天這篇主要是為了避免日常生活一般的廣告追蹤與惡意釣魚信件, 適用於一般人。 如果是要避免邪惡政府的監聽 -- 例如 2019 年之後的香港朋友們 -- 請參考幾年前寫的 保護智慧手機安全與隱私的軟體與建議 以及具有實戰經驗的中國網友所寫的 为啥朝廷总抓不到俺——十年反党活动的安全经验汇总。 本文僅適用於 android 手機。 至於蘋果產品用戶... 我完全幫不上忙... 只能推薦 62078 後門 這一篇, 尤其是第一段的諸多連結。 [刷機] 我買手機, 從搜尋 「root friendly phone 2019」 開始。 買來之後第一件事就是刷機成 LineageOS。 除了比較安全之外, 也比較熟悉, 因為不同款的手機的
2020-09-07
上個星期手機重刷好幾次, 慢慢從昏頭轉向的逐步操作學習模式整理出一些觀念性的心得, 趕快趁記憶猶新記下爬文網址與心得。 本文的重點不是步驟, 而是解說 (希望可以) 適用於多數廠牌型號的 「分割區」 與 「模式」 這兩個觀念。 本文假設你粗略熟悉 linux 的分割區及開機流程概念 (vmlinuz、 initrd、 root file system) 如果對以下幾篇我的舊文的主題有一點概念, 會有點幫助 (但並非必須): extlinux 啟動系統的步驟 要或不要 root/越獄/刷機的理由 Root/刷機之前的知識補給站 建議可以細讀本篇觀念文, 然後從 這裡 或 這裡 列出的多款 custom ROMs 當中挑一個, 屆時再根據你的手機型號及選擇的 ROM 去搜尋/爬其他教學文, 希望 root/刷機的過程可以因此順利很多、 少走冤枉路。
2020-09-04
如果說 kvm 是 linux 虛擬機的引擎, 那麼 virt-manager 就是完工的車子。 以前年輕喜歡耍帥直接開著 引擎裸露 的 (網路連線) 拼裝車 上街拉風; 現在懶惰了, 還是開著完工的成品車比較簡單。 gtwang 的文章 有 virt-manager 慢動作分解教學; 笑傲紅塵路 有更多關於虛擬化技術的詳盡解說。 這篇我只想簡單筆記一下我的使用方式, 特別是對外網路的部分。 KVM/virt-manager 預設把虛擬機保護在 NAT 後面, 所以虛擬機可以上網; 但外界看不見虛擬機的 IP。 我的課需要讓學生們互相登入/攻擊彼此的虛擬機, 所以需要把每一部學生機的虛擬機拉出來、 讓它在區網裡曝光。 當然, 這會增加虛擬機遭到網路攻擊的風險 -- 尤其是以 iso 檔開機、 預設簡單登入密碼的虛擬機 -- 請謹慎使用。 這時需要做兩件事。 第一
2020-09-03
Ubuntu 18.04 (還是更早?) 棄 /etc/network/interfaces 改用 netplan 以來, 我一直不敢面對, 一直還是堅持用 懷舊網路設定。 最近 移民 mint 20 ulyana, 總算搞懂 netplan: 它只是一個最高階層、 負責出一張嘴的空殼, 在它的設定檔 /etc/netplan/*.yaml 裡面有一句最重要的 renderer, 由這句話指定到底要用 NetworkManager 還是要用 networkd 來實作網路連線 -- 它們才是真正做苦工的程式。 有點像是董事長 (呃,我剛剛說了什麼~) 決定要請哪一位來當總經理/執行長: 沒有太多選擇, 大概就只有這兩位, 而且最好不要請兩位同時上任。 爬文時, 有人也人把這兩個選擇稱為不同的 backends。 很棒的 stackexchange 問答。 [總經理 A] 一般
2020-08-30
[更改標題: 「一面之緣演講放送版」 => 「講師趕時間版」 ] 我在演講時, 經常會幫聽眾製作 「百毒不侵救命碟」: 收集一堆隨身碟回來、 花很多時間製作、 再寄回給邀請我的老師或聯絡人。 可惜這樣推廣十幾年下來, 成效還是很有限, 有點氣餒。 最近決定改採半自助的方式, 省自己的力氣, 同時也要求有興趣的朋友自己要付出一些功夫。 畢竟進入自由軟體世界的最難跨越的門檻一直都動機/意願, 而不是技術。 一、 講師在演講或活動現場做的事 注意: mbootuz.py 僅限用於處理傳統 MBR 方式分割的硬碟/隨身碟。 mbootuz.py 不適用於處理 GPT 方式分割的硬碟/隨身碟。 mount /dev/sdz1 /media/sdz1 mbootuz.py mkboot /dev/
2020-08-28
切割硬碟有兩種方式。 已沿用幾十年的舊式 MBR 分割方式 最多只能切成 3+1 個主分割區且只支援容量 2T 以下的硬碟。 較新的 GPT 分割方式則可切成最多 128 個分割、 支援硬碟容量是 MBR 限制的 2^32 倍 (約 40 億倍)。 另一方面, 主機板的韌體也有新舊之分。 二十世紀的板子採用 BIOS; 近十年來的板子幾乎都是較新的 UEFI。 新舊不同方式切割的硬碟, 搭配新舊不同的主機板韌體, 會產生四種組合。 本文關心其中一種組合 (表格左下角) 的 linux 開機設定方式。 (表格畫法參考 這篇) 主機板 BIOS/模擬 BIOS UEFI 硬碟 MBR 2TB 限制 <== 請模擬 BIOS GPT 要設定分割屬性 大廠逐步奪權陰謀 因為硬碟越來越大, 現在買硬碟, 切割方式勢必得選 GPT。 但是新的 UEFI
2020-07-27
前幾天用 vim 在 校閱/翻譯 gnu 網站的文章 的時候, 覺得字串的顏色好暗, 看不清楚。 本來以為需要修改 vim 輔助檔案 /usr/share/vim/vim版本/* 當中定義 .po 檔案格式的語法標示 (syntax highlight) 設定檔 syntax/po.vim, 或是要改顏色風格檔 color/*.vim。 後來找到 alvin alexander 的文章, 原來超簡單, 只要在 ~/.vimrc 裡面加一句: hi Constant ctermfg=yellow 並重進 vim, 字串顏色馬上變成亮亮的黃色, 舒服! 顏色風格檔 color/*.vim 裡面很多這樣的設定; 當然, ~/.vimrc 裡面的設定優先蓋過風格檔裡的設定。 指令 hi 是 highlight 的簡寫。 至於後面的部分呢? 第一個參數 Constant (大小寫

軟體自由運動 需要您的支持!

數位路平

軟體自由推動成果:數位路平

為向政府單位宣導開放文件格式,軟體自由協會在 2015 年主辦了「數位路平★台灣騎跡」縣市政府宣導活動,成員們以單車為交通工具,騎車到西部及離島的各縣市政府前,大聲的說出我們追求數位路平的心聲。

捐款給SLAT

若您肯定協會多年來的努力,敬請捐款支持軟體自由運動!

立即捐款
自由軟體納入檢定

軟體自由推動成果:自由軟體納入國家技能檢定

2016 年,軟體自由協會向國家技能檢定中心要求檢討考場預裝軟體的規定,並將自由軟體納入選項中。在經過數場會議之後,技檢中心終於在 2017 年 8 月底公佈修正草案,這對考生的選擇自由、技職體系的教育公平性來說,都是非常大的進步。

捐款給SLAT

若您肯定協會多年來的努力,敬請捐款支持軟體自由運動!

立即捐款
training of ODF

軟體自由推動成果:協助推廣開放格式文件

自從 2015 年國發會開始「推動ODF為政府文件標準格式」之計劃以來,台灣各縣市政府已逐步落實開放格式文件的使用,能有這麼亮眼的成果,軟體自由協會的夥伴們是不可或缺的幕後功臣

捐款給SLAT

若您肯定協會多年來的努力,敬請捐款支持軟體自由運動!

立即捐款
ezgo saminar

軟體自由推動成果:專屬教育現場的自由軟體體驗包

"ezgo" 是軟體自由協會以 Kubuntu 為基礎而打造的「自由軟體體驗包」,包含了各種適合日常工作使用的自由軟體,以及豐富的教育類軟體和自由教材,是一套專為教育現場打造的作業系統。

捐款給SLAT

若您肯定協會多年來的努力,敬請捐款支持軟體自由運動!

立即捐款