作者: Hui-Hong YOU

  • 把 Arch Linux 轉用 Systemd

    老實說,我覺得把原本可以用 /etc/rc.conf 一檔解決諸多設定,改為要分散到好幾個設定檔,有點被打 KISS principle 的巴掌,特別是我在不久前的 COSCUP BoF 還大吹大擂。不過,既然官方「鼓勵」快點轉移,我也就一點一滴地照著 Wiki 說明轉換。

    轉用 Systemd 也不盡然這麼讓我為難與厭惡,至少帶來的加速開機效果是很顯著的,這是因為 Systemd 採用並列式(同時跑多個)、條件式(需要時才跑)啟用各項系統服務的關係。

    也因此,以往有些東西在 Sysvinit 一項接一項前後相依輪流跑的方式下,是保證可以正常執行的,而改用 Systemd 之後就不一定了,像是我會為 ThinkPad 的 TrackPoint 調整一些自訂參數,寫在 /etc/rc.local 裡跑,就未如預期在 Systemd 底下跑,所以改用 udev 寫 rules 來控制:

    KERNEL=="serio2", SUBSYSTEM=="serio", DRIVERS=="psmouse", WAIT_FOR="/sys/devices/platform/i8042/serio1/serio2/sensitivity", ATTR{sensitivity}="170", ATTR{speed}="185", ATTR{press_to_select}="1", ATTR{thresh}="6"

    一不做二不休,把一樣寫在 /etc/rc.local 的 ThinkPad SMAPI 電池充電閾值設定改用 udev,至此,我的 /etc/rc.local 就可以清空了:

    SUBSYSTEM=="platform", DRIVERS=="smapi", RUN+="/bin/sh -c 'echo 30 > /sys/devices/platform/smapi/BAT0/start_charge_thresh'"
    SUBSYSTEM=="platform", DRIVERS=="smapi", RUN+="/bin/sh -c 'echo 85 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh'"

    還有,我有使用 Miredo 來取得 IPv6 address,在 Systemd 環境下也會因為 NetworkManager 太晚建立有效網路組態而啟動失敗,為此,我必須對 /usr/lib/systemd/system/miredo.service 做個小小修改(放在 /etc/systemd/system/ 底下間接覆寫),加上 Restart 與 RestartSec,讓這項 service 能夠自動重試啟動:

    [Unit]
    Description=Teredo IPv6 Tunneling Daemon
    After=network.target
    
    [Service]
    ExecStartPre=/usr/sbin/miredo-checkconf /etc/miredo/miredo.conf
    ExecStart=/usr/sbin/miredo -f
    ExecReload=/bin/kill -HUP $MAINPID
    Restart=on-failure
    RestartSec=16
    
    [Install]
    WantedBy=multi-user.target

    照著  Wiki 做,直到 /usr/bin/journalctl (Systemd 底下類比 dmesg 的程式)的 log 裡看不到明顯的紅字錯誤,大概就差不多搞定了。

  • 把 Mac mini 1,1 (early 2006) 改裝 Linux OS

    原本這台機器買來是打算用來玩 iOS 開發,只是過程挫折重重。

    原機主已經把 CPU 升級為 Core 2 Duo,照 Apple 官方對系統要求的說法,我應該可以安裝 OS 10.7 Lion,實則不然,因為 Apple 是認機器型號資訊來判斷給不給裝,如果不在符合的機器列表裡,就直接在線上商店拒絕購買 Lion。

    「知情」的人看到這邊可能會急忙喊:可以啊!你只要對安裝檔做一點修改,就可以裝進去了。

    是啊,我都寫出來了,我怎麼會不知道?問題在於爽度。明明硬體條件符合、明明我是想要用正版,卻搞得自己又像少年時代一樣偷偷摸摸的做些 cracking 的勾當,買官方機器卻又像在用 hackintosh,啊是怎樣?何必那麼作賤自己?我沒尊嚴嗎?

    停在 10.6 Snow Leopard,代表沒得免費取得新版的 XCode 開發工具,所以呢?請付年費取得開發者資格。

    現在問題又來了,根據 Apple 的潛規則,在次二版 OS X (10.8) 推出後,10.6 就會像孤兒一樣,不保證有安全更新。於是這台裝不了新版 OS 的機器等同也成了被放棄的孤兒,除非比照柏克萊的準則,機器不上網、不跑那些要緊的應用、不放那些重要的資料。

    若比照其它一些 desktop OSes 的支援年限,我不覺得 Apple 有何過份之處,只是 Microsoft 的 Windows 2000 直到 2010 才宣布停止提供安全更新,讓我覺得 M 社能搏得許多企業信任,不是沒有道理。

    最後我決定把這台 mini 改裝 Ubuntu 12.04 LTS,讓它繼續安全運轉下去,不要成為潛在的安全隱憂;需要用 Mac OS 的場合時,用另一台 Air 頂著就好。只是我想那台 2,1 版的 Air 好景也沒剩多久…。

    Mac mini 1,1 的 EFI 是 32-bit (i386) 的,雖然 Core 2 Duo 可跑 64-bit (amd64) Linux,但是因為這個限制,所以就算安裝 64-bit 版 Ubuntu,實際上還是走 BIOS 相容模式途徑來啟動,不過根據文件指出,這樣反而簡單。

    安裝前,我先在 OS X 裡安裝 rEFInd,且指定要安裝在 EFI 的分割區 (ESP) 裡,因為我不打算保留 OS X。

    然後我從這裡取得 ubuntu-12.04.1-desktop-amd64+mac.iso 製作安裝光碟,開始安裝 Ubuntu 12.04。

    規劃檔案系統時,務必切記保留 EFI 分割區以便使用 rEFInd 選單,不然日後開機只能按 Option 鍵選擇開機磁碟,有些麻煩;且記得開機程式要裝在 /boot 所在的分割區 /dev/sdaX,不要照預設值直接寫到 /dev/sda。大概只要注意這兩點,改裝 Ubuntu 甚至是其它 Linux OS 其實沒什麼困難。

  • Translation Template Extractor 為自己開發的 Drupal 模組維護語系翻譯檔

    想要為自己開發的 Drupal 模組維護語系翻譯檔,剛剛在尋找解決方案,結果有現成的 [Translation template extractor] 可用。

    雖然 Drupal 本身的翻譯介面已經算很好用了,配合 L10N Client 更可以「逐頁翻譯」,從上下文判斷應給的恰當翻譯,避免鬧誤譯的笑話,但是翻譯好的成果都像瀨尿牛丸般混合存在 DB 裡,所以還需要 Translation template extractor 這類軟體的輔助。

  • 給 Drupal 用的 Vim 設定

    Drupal 雖然是用 PHP,但是自己有一套風格與規範,通常裝好的 Vim 仍不合用。

    我會建議專門為 Drupal 開發工作開一個 shell account 來用,然後拿 Drupal 上的 [Vim Plugin For Drupal] 放到這個帳號的 ~/.vim 底下:

    wget "http://ftp.drupal.org/files/projects/vimrc-7.x-1.x-dev.tar.gz" && cd ~/.vim && tar xvfz ~/vimrc-7.x-1.x-dev.tar.gz --strip-components=1

    記得要更新 ~/.vimrc,這樣安裝的特用 Vim Plugin 才有效用:

    cat vimrc_minimal.vim >> ~/.vimrc

    通常來說,要開發的 Drupal 模組,檔案應該是放在系統目錄底下,合理的 owner 可能是 root, http, apache 這類的。所以如果這個專門帳號沒有跑 sudo 的許可,記得用 visudo 新增。之後就可以用 sudo -e filename 來 coding,且會吃這個帳號的 ~/.vimrc 特用設定,不會和其他帳號搞混。(前提當然是 EDITOR 環境變數需為 vim)

  • 裸視 YouTube 3D

    少女時代彷如在我眼前躍現的感受,實在有趣。

    今天讀到魏澤人老師的〈松鼠博士的魔法眼鏡: 3D 超任模擬器〉覺得很新奇,也很感動,在 COSCUP 2012 聽過他的場次後,再讀到這篇,更加覺得這種劍及履及、以實作證明想法的作為,正是黑客精神的體現。

    我手邊沒有 3D 眼鏡,為了要觀看魏老師的 demo 影片,只能切換到「沒有眼鏡」觀賞模式,試著用裸視來體驗。適應了一陣子,才掌握到讓那兩個提示的白點疊合在一起的方法:

    1. YouTube 預設的影片長寬太小,用下方控制工具調成「展開」把影片放大,個人經驗是這樣裸視 3D 會比較容易成功。
    2. 以「稍微皺眉,但還沒到要瞇瞇眼」的雙眼,來注視「沒有眼鏡」模式下那兩個提示的白點,眼睛會漸漸覺得有些「失焦」、鬥雞眼,會覺得兩點漸漸往中間靠,直到疊合在一起。
    3. 此時會覺得影片畫面由左右兩幅變成左、中、右三幅,中間那幅就會呈現 3D 效果。之後就不必再皺眉了,可以放輕鬆看,效果更明顯。

    在 YouTube 用 “yt3d:enable=true” 搜尋,可以找到更多支援 3D 觀賞模式的影片。

  • Synaptics 觸碰板幾個有趣的設定

    參考 [Touchpad Synaptics – ArchWiki],關掉 GNOME DConf 底下對 /org/gnome/settings-daemon/plugins/mouse/ 的控制,交還給 Xorg 管理;再修改 /etc/X11/xorg.conf.d/10-synaptics.conf。

    其中 VertTwoFingerScroll 與 HorizTwoFingerScroll 就是類 Apple 的雙指垂直、水平捲動,EmulateTwoFingerMinZ 與 EmulateTwoFingerMinW 則是其靈敏度;CircularScrolling 是類 iPod 的圓形捲動,可以用觸碰板的邊邊角角來畫圓捲動,CircScrollTrigger 則是設定觸發作用的邊角。RTCornerButton 與 RBCornerButton 分別設定右上角、右下角點擊對應滑鼠按鍵。

    我目前的設定是:

    Section "InputClass"
            Identifier "touchpad catchall"
            Driver "synaptics"
            MatchIsTouchpad "on"
            MatchDevicePath "/dev/input/event*"
            Option "TapButton1" "1"
            Option "TapButton2" "2"
            Option "TapButton3" "3"
            Option "VertEdgeScroll" "off"
            Option "VertTwoFingerScroll" "on"
            Option "HorizEdgeScroll" "off"
            Option "HorizTwoFingerScroll" "on"
            Option "CircularScrolling" "on"
            Option "CircScrollTrigger" "7"
            Option "EmulateTwoFingerMinZ" "40"
            Option "EmulateTwoFingerMinW" "8"
            Option "CoastingSpeed" "0"
            Option "RTCornerButton" "3"
    EndSection

    先關掉 VertEdgeScroll 與 HorizEdgeScroll 挪出一點感應空間來,再把雙指捲動打開來替代。然後設定左側為圓環滾動觸發區,並設定右上角點擊為模擬滑鼠右鍵。

    如此設定,個人覺得最合用。