作者: Hui-Hong YOU

  • 換用 SSD

    從 GRUB 選單決定開機選項後,一秒鐘閃過即進到 KDM 登入畫面,真的很爽快。

    IMG_20130130_151142_0

    由於我的 USB 外接盒兩光兩光,所以還特別再去買了一組 ThinkPad 用的 Serial Ultrabay Enhanced SATA 擴充匣來用。

    大概的流程是:

    1. kdesu gparted 對 SSD 做規劃,使用傳統 msdos/MBR 式分割表。
    2. 將規劃好的分割區分別 mount 起來。
    3. rsync,注意要排除 (exclude) /proc, /sys, /tmp 以及 SSD 掛載點本身。
    4. /dev, /proc 分別以 bind 方式 (mount -o bind) 掛載到 SSD 掛載點底下後,再 chroot。
    5. 將之前排除掉的 /sys, /tmp 手工建回來。
    6. 修改 /etc/default/grub 的 resume 分割區 (= swap) UUID。
    7. 修改 /etc/fstab 的分割區 UUID,以及加上 noatime,discard 選項。
    8. grub-mkconfig 重建 /boot/grub/grub.cfg
    9. modprobe dm-mod && grub-install --target=i386-pc --recheck --debug /dev/sdX 安裝 GRUB。
    10. mkinitcpio -p linux
    11. 停用 hdapsd
    12. 按照 [Solid State Drives – ArchWiki] 文件建議,調整 I/O scheduler 以及 swap 調用策略。
  • RubyGems.org 遭入侵

    這幾天的大新聞。依照 [RubyGems 1/30/13 Incident Status] 的說明,建議各位至少先看 Notes/Important Links 段落,找到檢查自己 local 端 gems 的程式(例如:https://gist.github.com/4678189),做基本的 checksum 掃描。

    另外,[Let’s figure out a way to start signing RubyGems] 這篇則倡議要對 Ruby Gems 做簽章驗證,讓我想起了之前 Arch Linux 也是過了許久才想對 packages 做全面簽章驗證…。

  • 讓 Drupal 產生適合餵給 AJAX 的精簡版 HTML 文件

    Drupal 預設會盡力生出能通過 HTML validator 檢驗的文件,並且會盡力為各個 tag 添加各種 attributes 如 id, class, alt, title 等。在 Drupal 7 裡頭,搭配 Zen 5 的版型引擎,甚至能直接生出 HTML5 & Responsive Design Friendly 的文件。

    相對來說,如果要用 Drupal 生出的網頁來餵給 AJAX 函式庫如 jQuery 處理,這樣鉅細靡遺的文件反而是個效能上的負擔。為此,我們可以透過簡單的幾行程式,讓 Drupal 生出比較不那麼囉唆的 HTML 文件。

    首先就是實作 hook_preprocess_page(),比如這樣:

    function my_module_preprocess_page(&$variables) {
      if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
        $variables['theme_hook_suggestions'][] = 'page__ajax';
      }
    }

    透過自訂新增 theme_hook_suggestions,我們可以告訴 Drupal 系統:「如果我後頭指定 ajax 變數為 1,請優先採用 page--ajax.tpl.php 這個模板來輸出資料」。

    再來我們實作 hook_preprocess_html():

    function my_module_preprocess_html(&$variables) {
      if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
        $variables['theme_hook_suggestions'][] = 'html__ajax';
      }
    }

    舉一反三,當 ajax=1 時,我們要系統優先採用 html--ajax.tpl.php 這個模板來輸出資料。

    至於 page--ajax.tpl.php 長什麼模樣呢?在我們啟用的版型 (theme) 裡的 templates 子目錄裡(例如:sites/default/themes/mytheme/templates/),我們可以加進一個內容只要一行打死的 page--ajax.tpl.php 如下:

    <?php print render($page['content']); ?>

    意思就是說:我的頁面部份只要把主要內容 (content) 印出來就好,其餘什麼側欄啦頁首啦頁尾啦導覽工具列啦我全~部都不要。

    然後接著就是同樣一行打死的 html--ajax.tpl.php 如下:

    <?php print $page; ?>

    類推,我們不需要輸出 <html>, <head>, <body> 等我們在做 AJAX 呼叫時用不到的資料,請給我重點部份就好。

    這就是大概的施作方法,只要 URL 後頭補個參數 ajax=1(在 jQuery 裡可以放在 data 裡自動餵食)就會赤裸裸地展露該 resource 的重點部位。(怎麼寫得有點 A 的感覺…?)

  • 自己打包的 Kaffeine Arch Linux PKGBUILD 原始檔

    我把先前自己修過,但是 upstream 至今還是沒採納的 Kaffeine 修正,再打包為 Arch Linux 的 PKGBUILD,放在這裡給大家一個方便,敬請笑納:kaffeine-git-1.2.2-2.src.tar.gz

  • RubyConf.TW 2012 雜記

    まつもとゆきひろさん(プログラミング言語Rubyの父)と私。
    まつもとゆきひろさん(プログラミング言語Rubyの父)と私。
    • 不同於去年幾近是 RailsConf.TW,今年的議程,實在是誠意滿點、太營養了。而且請到包括 Ruby 的阿爹 matz,與 YARV 的阿爹 ko1 等日本 Ruby 圈的高人,起初在 Twitter 上知道這個消息後,我就非常驚喜,暗忖今年非得搶到票才行!
    • 有幸在 Day 0 的伯朗咖啡館見面會聽到 matz & ko1 與大家談 Ruby,還跟 matz 合照,非常開心。
    • 辦在新光三越天母店的伯朗咖啡館見面會,由於抓不準時間,所以我決定提前一小時離開辦公室,結果成了最早到的本地人,與幾位香港朋友和 Matthew Rudy 等小聊了一下,但是自己的英語口語能力實在太糟,最後形成了我鴨子聽雷的窘態,只能默默聽他們聊,下定決心,接下來在英語聽說這方面一定要再加強才行。
    • 倒是由於「強迫自己只看 NHK」的訓練,讓我雖然日語口說還是不 OK,但是多少還能在此次的日語翻譯 @sho0416 翻譯 ko1 的話前,先對一些笑點做反應。語言真的要勤於使用,沒有立竿見影的捷徑可走。
    • 香港朋友跟去年的講者之一 Chen Jack S Y 給我的感覺一樣,就是技術扎實,表達能力也很好,跨國人才當如是。現今的台灣正在爭論高階人力被挖空、年輕人想塊陶(←網路用語的刻意諧音錯字)的現象與意義,但是如果沒有足夠的溝通表達能力,要往哪陶?這點我的確該好好反省。
    • 此次場地農訓協會沃田旅店天母會議中心除了無線網路出包以外,我全然無從挑剔,太滿意了。交通也不是如自己早先擔憂的那樣不便,兩天都因為很早就到芝山站,沒有搭乘大會提供的接駁計程車,搭公車也很好等、很快就到會場了。
    • 兩天午餐因為這個緣故,眾人都叫好。
    • 對此次大會網站的設計者四點設計留下了深刻印象
    • 贊助商場次 David Tian 講的是實務經驗分享,而不是在老王賣瓜、自吹自擂打廣告,很棒。
    • Matz 的 keynote 很激勵人。
    • Jserv 的場次介紹 mruby 應用,讓我很想拿 mruby 來玩某種用途,不過東西沒做出來之前,還是保守一點好。
    • 這次不少講者都在不約而同鼓吹與會者即刻試用 Ruby 2.0 & Rails 4。
    • Sebastian Burkhard 當場將 RubyJS open source 出來,熱血!
    • Ko1 講 Ruby 2.0 的 VM 設計,很有趣。他在此場次當中介紹了 Ruby 2.0 提供的幾樣似乎還沒有人提過的程式碼分析功能。
    • Hiroshi SHIBATA 的場次,讓我想起了很久很久以前,我曾經幫 tDiary 提供中文語系翻譯,不過後來由於服兵役、架設環境不足等緣故,我就沒有繼續使用 tDiary 寫 blog 了。
    • 繼 COSCUP 2007 上聽過古哥分享,這次是第二次,古哥落落大方、幽默風趣的風格仍舊沒變,講 RubyMotion 也讓我覺得很有趣。
    • 龍哥分享他從讀 Ruby 的 C source code 來學 Ruby 的經驗,揭示了一些平常純用 Ruby 的人罕知的 Ruby 語法,讓我既感佩又汗顏,自己相形之下極度懶惰、不用功。

    真的很感謝主辦團隊,以及諸位講者,給了我充實的兩天。也期許自己來年(後年)在 Ruby 相關主題的投入,有可以說嘴的餘裕,且有相對充足的口語表達能力,能夠確實表達自己的想法與實作。

  • 修正 Kaffeine 的台灣地區頻道與節目表亂碼

    嘗試把我改裝 Ubuntu 的 Mac mini 充當數位電視盒用,但是幾個程式都兩光兩光的,其中 Kaffeine 還算正常,惟仍有台灣地區頻道與節目表亂碼問題,於是自己修復了一下,重新打包一個正常的。

    • apt-get source kaffeine
    • sudo apt-get build-dep kaffeine
    • sudo apt-get install devscripts
    • cd ~/kaffeine-1.2.2
    • 照著我改好的 patch 所示,修好相關檔案
    • dpkg-source --commit
    • debuild -us -uc