2017年2月25日 星期六

linux 新手看著檔案總管截圖快學基本指令

對應到檔案總管的常用指令 我大部分的課都是全程使用 (或至少大量使用) linux 命令列。 本來應該把 linux 課當作先修課程。 可是有時選課的同學人數太少、 修過 linux 的人更少。 這時怕課開不成, 只好硬著頭皮說沒修過 linux 也 OK。

為了避免浪費半個學期複習基本指令, 那就用這張圖跟這幾個連結當作開學第一堂課、 新手自學快速入門的出發點吧! 假設你已 安裝好 linux、 學了一點 GUI 環境下的基本求生技能。 出發之前, 先提醒新手: 下命令時, 大小寫有差別、 有空格 vs 沒空格也有差別!! (但空格多寡沒有差別。)

  1. ubuntu 的簡短清單 很值得瞄一下;
  2. EE 狂想曲 圖表很清楚, 其中 「檔案管理」 跟 「觀察檔案權限」 特別值得初學者詳讀。
  3. 有力氣時, 讀我寫的 命令列觀念及術語 會很有幫助; 我上課常用到 命令列基本求生工具
  4. 也請搜尋 「linux 常用指令」。 但不需要像背字典一樣地背指令。 學 linux 就像學英文: 日常生活天天用, 需要時 google 一下, 常用的指令自然就學起來了; 背不起來的指令表示目前還不是那麼需要。

複製檔案的絕對路徑 [5/7] 最近發現, 有些同學上了很久的課, 腦中還是沒有檔案系統 「一層又一層盒子」 的概念。 此時應該建議他: 所有的指令都必須打 絕對路徑 (absolute path)。 以 pcmanfm 來說, 可以在檔案圖示上按右鍵, 選取 「複製路徑」, 再回到命令列上, 按右鍵選取 「paste」。 以 xfce 的檔案總管 thunar 來說, 可以點選檔案之後按 ^c 以便複製路徑, 再回到命令列上按 ctrl-shift-c 以便貼上路徑。 若是 照著這篇做, 還可以一次剪貼很多個檔案的路徑。 等到新手完全理解路徑的概念之後, 才准用 相對路徑 (relative path)下指令。

2017年2月21日 星期二

白話「單向雜湊函數」 & 如何手動修改密碼檔

[2017/12/10 改寫/新增內容。 感謝臺大資工 薛智文教授 校閱指正。]

我們小時候的 RPG 沒有連線, 都是在自己的電腦上存檔而已, 所以很容易研究、 竄改人物的各種屬性跟裝備的數值。 例如我玩 「創世紀」 (Ultima III) 的時候, 就曾經: (1) 存檔, 並備份到別處。 (2) 讓一群弱弱的怪獸打幾拳, 再把牠幹掉、 取得金幣 (3) 再存檔。 檢查先後兩次存檔內容的差別, 就可以知道改哪幾個地方可以讓人物的生命點數跟金錢爆表 :-)

後來對另一款遊戲 「冰城傳奇」 (Bard's Tale) 也如法泡製, 結果改過的人物都壞掉了, 無法載入遊戲 :-( 研究了很久, 才發現最後面有一個看不懂的 byte 沒有改到 -- 它是這個人物屬性值的前面所有 n-1 個 bytes 的 XOR。 於是改完屬性之後, 又重算新的 XOR, 再把它填進去, 就又成功地創造出超人 :-)

2017年2月17日 星期五

不求甚解工程師的人工智慧學習捷徑地圖

不求甚解工程師的人工智慧學習捷徑地圖 [2017/9/15 更新] 寒假期間開始學機器學習/深度學習 (machine learning/deep learning), 繞了好大一圈之後, 才發現其實可以不必那麼辛苦。 筆記一下搜尋關鍵詞來幫助那些跟我一樣不求甚解、 只想快快動手寫簡單小程式的工程師。

2017年2月13日 星期一

Docker 新手第二課: 前景/背景/收工休息 圖解狀態轉換

docker 基本指令 這篇觀念教學文是為略懂 docker 的讀者寫的。 你喜歡在你的 linux 電腦上試玩一些有的沒的; 但是不時會遇到一些軟體需要牽拖一大串三姑六婆相依套件, 擔心會把你的工作環境弄亂。 有時甚至還會有相依套件版本跟已安裝軟體不相容的問題。 你發現 docker 正好可以解決這個問題。 安裝好 docker、 對於 volume 跟 port 略有概念、 爬了一些文 [ 門外漢的 Docker 小試身手 三十分钟 Docker 新手入门]、 對 docker 已經有一些概念、 會用 docker ps -a 查看 (執行中或已收工的) docker instances 及當初的完整指令、 用 docker images 查看已下載的映像檔、 docker 常用指令 大概可以看懂兩三成。 但是對於 attach/interactive/terminal/... 又有點頭昏... 對於沒有立志要成為 docker 高手的人來說, 只需要再熟悉這張概念圖就夠了。 從此以後可以專心亂玩其他軟體, 不必再煩惱 docker 指令了! 同場加映不求專精工程師爬文後的一些小技巧及心得。

2017年2月9日 星期四

fwmp 懶人的通訊埠轉發指令

通訊埠轉發 貴哥不太想學 iptables 指令。 但是身為 IP 不夠用的網管, 經常有 ip forwarding 通訊埠轉發 的需求。 每次弱弱地抄指令都很怕抄錯。 於是寫了 fwmp 跟 fwmp.lxc 兩個小程式, 可以用一個指令幫區網內的一部機器 (可以是實體機、 kvm 虛擬機或 lxc 容器) 同時轉發好幾個通訊埠。 kvm/lxc 的部分, 我主要在 proxmox 4.2-2/725d76f0 的環境底下測試。 如果你在其他版本測試成功或失敗, 請留言分享一下。

[2018/2/8] 改推薦安裝 Single Packet Authorization, 既可防禦 ssh 又可順便 (零設定!) 取得區網內的 port forwarding。

2017年2月4日 星期六

在 zfs 上面的 lxc 裡面跑 docker

zfs + lxc + docker 我在安裝 proxmox 4.2 時, 檔案系統選用 zfs, 裝好之後想要在 ubuntu lxc 容器裡面跑 docker。 沒想到這是一個棘手的組合, 在過去這幾個月裡, 燒掉了我好幾個週末跟半個年假 (所以我貼文的頻率很低)。 這篇文章是給 linux 熟手看的 -- 筆記的成份多於教學的成份; 只在 proxmox host 底下測試, 並且省略很多解釋及較單純的細節。

[2018/9/23 在 proxmox 4.4 裡, 這已經不再是 「棘手的組合」, 已經變得簡單很多。 詳見 「幫 proxmox 的 lxc 擴充硬碟」。]

[2020/01/11 Linus Torvalds建議不要使用ZFS (考量法律與 Oracle 興訟的習性)]