News updated at 2010/10/31.

Even though I don’t use evolution daily basis, I still spent a few hours to work with the old plugin for the upcoming Evolution 2.30. In the latest version, Evolution plugin framework is now having a new EPluginUI for GtkUIManager. The plugin version below to 0.0.3 does not work with Evolution 2.30, please use 0.0.4 if you upgraded your evolution to 2.30.

You can download source code tarball at github (http://github.com/chihchun/evolution-remove-attachments). I have also built debian packages for these platform, if you want to test with binaries

  • For Ubuntu User
    • You can download and install package form my PPA for Maverick (10.10).
  • For Debian User
    • You can download the tarball and deb file for Debian sid from here.

Since I no longer use Evolution, if you feel the piece of software is useful for you, please consider making a donation to support me maintaining the software.

Last weekend (2009 10/17~10/18), I went to Yahoo Open Hack Day Taiwan. The event seems has been become a big PR issue of Yahoo, only because a few minutes of lap dance.

Before I talked about what I feel about lap dance as a developer joined this event, I like to share about what we did in this event. As a team with hychen, tusng and honki, we were thinking about implement a self-learning web site, which provides a bookmarklet or plugin to let you look up the English words. And also help you to convert unfamiliar word on computer into physical flash card. But after we got there, we found this web site does not really use any Yahoo!API. :p

So, we pick up another idea from my never-have-time-to-start TODO list. We called it Synker,the original idea is to help people sync photos from any social network website into their own Google/Yahoo contacts. But we don’t want to have an avatar, we like to have photos with really face of our contacts. So we only use photos with face identified by integrated face detection technology. If you use these contact services on your phone, you will find it extremely useful when you try to remember someone when he/she calls.

After changed the idea, we start to implement it at Saturday afternoon. And finally we do can login with Yahoo account, download the contacts and find possible photo from Wretch profile and albums. It’s quite slow but it works. We tried to find Wretch girls hired by Yahoo as staffs to be our beta testers, it turns out that much of people don’t really use Yahoo! Contacts or Yahoo!360 lately. So most of the contacts are added very long time ago when YIM is still popular in Taiwan. For the local Wretch users, it might be much more useful if we can help them link their wretch users back to Yahoo contacts. However, Synker should be a service to help people sync photo into different contact service, the web site is now still a prototype, we might finish it later when we are available.

However, we did not win any award. Thanks to Erik Eldridge, at least we are mentioned in his favorite hacks list. But still, I have a lot of fun work with my teammate to implement a web site from scratch. I do enjoy to get tired, beard grown and smelly with friends after a non-stop 24 hours hacking. It’s exciting to experience issue and fix them together. It’s fun and we never stop laughing.

Thanks to Yahoo for organized this event. Without this event, I probably won’t get any chance to study Yahoo!APIs, and work with my friends on these APIs all day long. Thanks!

Sexism ?

So, many people feels women are offended, and they said sexism is bad for creating an inclusive environment in industry. I have to say please don’t judge the organizer before you understand the local culture. Applying your own viewpoints to the other side of earth is globalism, which does not help to create an inclusive environment.

As a developer staying there for the whole event, I don’t see the any lady are offended. But we, the shyly nerds are probably more insulted. :p

One my the other female friend XDite, she has been attend to Yahoo Open Hack Day since last year. She has same feeling as I do, we don’t feel it’s offending women. The dancing show is only a few minutes. We disliked it because it’s very annoyed for developers, since we have been coding for hours, a loudly music and dancing show just make us headache. It’s just annoying as the anchorwoman made some stupid jokes and asked developers to dance before the warding ceremony. It’s perhaps humiliated us much more then the dance girls.

Seriously, No! There are many female staffs around and many of the many of the top managers of Yahoo!Kimo Taiwan are female! And also the other female members in the other team. I don’t see there is any sexism issue in Yahoo and this event. However, I can understand why they like to have the dancing show, one for cheer the developers up after long time work, the other reason is to satisfy the local sick mass media.

The dancing show is only a few minutes, not the major part of the event. And we don’t care about the show, since we are really busy on get the things work. And yes, the kind of entertainments are expected in many IT events. It might comes from the history of southerns Taiwanese funerals and temple fair. People think it’s important to entertain Spirits, and living people, so they hire strippers to dance in public. It’s a symbol of supplicatory.

And somewhat this kind of traditions infected the IT event, but much more refined. Now, without Show Girls in a IT event, you will never get reported on local mainstream media. And this kind of tradition are spread in the world, which you can see many show girls on the online IT web sites.

It’s now become yet another industry for provide profession performing in IT events (commercial IT events does not mean open source software conference or hackathon). In addition, the dancing girl are professional dancers, they are not just boob girls or some woman found from the strip club. They are payed as profession for performing. I meant is creating something with your mind is much respectable then creatively with the body ? And what’s wrong that these ladies choose dancing as profession, is that one of talents should be appreciated ?

If you ask my opinion, I dislike this kind of arrangement it’s because it disturbed me. And don’t blame Yahoo, it’s totally not an issue of sexism of the event, you idiot. It’s about the sicked (local and global) media. Please go fight with the mainstream media if you think they are sexist, and many Taiwanese are already doing so.

上一篇文章介紹我的新玩具 iPod Nano,稍微提到有專為數位音樂播放設備 (Digital audio player) 開發的自由軟體授權的韌體 Rockbox。除了基本的播放功能外,且支援公開的壓縮規格如 Ogg Vorbis, flac 外,計畫本身也納入了許多一般播放設備不見得會置入的大量外掛功能,像是 Picture Flow,以及許多遊戲,如基本的 數獨 Sudoku, 接龍 Solitaire, 踩地雷等等,甚至還有 Game boy 模擬器、ZX Spectrum 等等。

目前 Rockbox 已經可以支援相當多的硬體平台,包含了 Apple iPod, Archos, iAudio, iRiver 等眾多品牌的不少硬體都已經可以順利執行 Rockbox。前一兩年,台灣也有些朋友成功的把自己的播放器韌體換成 Rockbox, 並做了相當詳盡的介紹,如 lwb 介紹了 iHP-120, iRiver H320, Rockbox 的基本介紹等等。若你不喜歡手上的播放器內建的韌體功能,而期待更多額外或其他友善的介面,可以試著將它安裝上 Rockbox,或許可以讓你的設備使用起來有更好的使用經驗。

在此,我想介紹這個玩具給哪些想在耶誕節前買禮物給你家自由軟體愛好者的朋友,可以考慮位在台灣高雄的酷點科技公司的產品酷卡拉 (CK100)。基本上酷點科技的產品完全是基於自由軟體元件所開發的,其中主要的播放軟體是 iPodLinux 中所使用的 Podzilla。加上數個極有特色的軟體功能,像是主打得 Karaoke 功能,或是搭配硬體提供 USB Host 功能,主處理器使用 Samsung SC3244 (ARM920t CPU @ 400MHz) 作為一個 PMP 而言,軟體功能其實相當足夠,加上特別保留的開發介面如 Jtag/USB Net 連線除錯功能,也相當事宜拿來 hacking。

CK100 block diagram

最近酷點科技跟老地方影像工作室做了一段有趣的廣告介紹各項功能,可以參考。

就像是 LinuxDevice.com 上的報導「Hacker-friendly karaoke PMP runs Linux」,酷點科技是以自由軟體為基礎開發這個產品,也同時將自由軟體視為一種利基,其他的設備銷售商提供下載的可能是更新過的韌體,酷點提供的是原始碼/開發工具,以及開發的文件。就軟體架構上,雖然 CK100 的主播放元件也是基於 PodLinux,但是與 Rockbox 是有很大的不同,CK100 的程式碼還未能像 Rockbox 那樣有一個開發架構讓開發者開發外掛,更改過得程式碼也稍嫌「直接」,不過這絲毫不影響 CK100 是一個開放原碼的硬體平台。

因此若你想買一個禮物送給愛玩電腦/嵌入式系統的朋友,這是一個可以考慮的選項喔。(若不計較外觀設計的話 :) )

備註: 敝人發表此文時,與酷點科技無往來。

前陣子在 Tossug 的 IRC Channel 上討論除了訂閱 LKML 來了解 Linux Kernel 的各種開發進度外,是否還有其他更有效率的方法 ?

對,你可能是用了超新型電腦設備的資深使用者,或者是某某公司的 Linux kernel 維護/開發者,需要了解相關硬體驅動程式的開發支援狀態,或是 API 的改變。

當然,訂閱 LKML 可以確保你不會錯過任何一條新消息。但每日高達兩三百封電子郵件,許多信件中還包含 patches,光下載就花掉不少時間,更何況需要消化這些湧入的訊息。

比較容易的方式是透過 USENET 或 RSS Feeds 訂閱 LKML,如此只需要下載標題,再選擇標題閱讀即可。若不想透過電子郵件軟體閱讀訊息,網路上有相當多提供郵遞論壇轉網頁的網站可使用,如 Google GroupsThe Mail ArchiveNappleLKML.org 等,你尚可配合其內建或 Google 等網路搜尋引擎來查找你想要搜尋的關鍵字,還算相當方便。

許多網站都還提供 RSS 的訂閱機制,你可以直接在 RSS Reader 訂閱後,看到感興趣的標題在點入閱讀。不過大部份的網站都只讓你訂閱最新的標題,如此還是會收到相當多訊息,不甚方便。

LKML.org 提供了一個追星族 (groupie) 功能,我個人認為相當實用,這功能讓你可以訂閱特定開發者的發言!於是,你可以追蹤一些重要人士的發言,如 Linus Torvalds, Andrew Morton 等,以免錯過重要的決策資訊。

但是我要推薦的是 Gmane,一樣是將 LKML 轉換儲存,Gmane 提供了更多樣的介面,包含了

其中 RSS 訂閱機制,提供了高達四種訂閱方式!你可以

我個人習慣只訂閱郵件標題與內容摘錄,如此就可以只跟著感興趣的題目,而不會分心在其他的議題上。Gmane 除了訂閱方式多元以外,它的瀏覽介面與搜尋也相當神速與方便,特別是所謂的 Loom 瀏覽介面,配合鍵盤指令使用,比在本地端讀取還方便多了!同時也非常方便用來監視其他相關的郵遞論壇

除了追郵遞論壇的討論細節外,你也必須知道大方向的發展狀態。首先要推薦是 LWN,它提供最具深度與時效的報導,且一個月也才五元到十元美金,請以訂閱作為支持這個網站的行動吧。若你是為商業公司服務,請記得告訴你老闆可以使用團體帳號訂閱。若你不想花錢在這上面,上面的新聞只要過了時效就可以免費瀏覽了。

另外 KernelTrap 的熱門話題與新聞也應該要時常閱讀。並也可以透過 Kernel Newbies核心變動懶人包,來了解新版核心的變動資訊。

若你照著前幾篇文章,不小心真的把 WL-700gE 刷成 OpenWrt。一時後悔想換回來的話,這裡是一些技巧與方法。不過既然刷成功了,能夠享用更多的「自由」,何必後悔
;-)

首先,機器上的 Reset 鈕是沒有用的。請不要浪費時間照的手冊試圖 “Reset” 你的機器。凡是透過 tftp 上傳軔體到 CFE 上,你就已經蓋掉官方軔體。既然都已經覆蓋了,就沒有 Reset 的可能性。

要復原軔體最簡單的作法莫過於直接使用 ASUS 所提供的 Firmware Restoration Tool 來重裝所有的軔體。

但是 Firmware Restoration Tool 只能在 Windows 上使用,若你像我一樣只使用 Linux,以下是復原的程序。

WL-700gE 的軔體分成兩個部份,一部分是給 flash 所使用的核心與基本的開機設定工具,一部分則是存在 IDE 硬碟的應用軟體與檔案系統。你在官方網站所下載的軔體都會包含這兩部份。

首先,你該做的是先 flash 部份的軔體從下載的 NAS 軔體檔案中抽出。你需要 nasunpack (uasunpack.exe) 或社群所開發的 AsusTrxExtract (AsusTrxExtract_1.0.0.1.zip),這些工具可以讓你將軔體解出。其中 AsusTrxExtract 是使用 C# 所開發,作者尚提供了原始碼,你可以於網路上搜尋下載。而 nasunacpk 則內含於 ASUS 所提供下載的 GPL 檔案中。

nasunacpk 使用方式很簡單,除了用 nasunpack 解開外,你尚必須去除檔案中的標頭,最後取出的檔案才是我們所需的原始檔

$ nasunpack --sections WL700gE_1.0.7.8.nas
section headers ---
00: type = 0x15 (BRCM_NAS_SECTION_TYPE_TAG  ), length =      126 bytes
01: type = 0x12 (BRCM_NAS_SECTION_TYPE_FLASH), length =  1691648 bytes
02: type = 0x13 (BRCM_NAS_SECTION_TYPE_DISK ), length = 16560128 bytes
$ nasunpack --extract=0,tag WL700gE_1.0.7.8.nas
dumping section 0 into tag...
$ cat tag
BroadNAS System Software
Version: 2.2.1
unknown
Build date: 三  7月 25 15:30:01 CST 2007
Build by: root@localhost.localdomain
$ nasunpack --extract=1,flash WL700gE_1.0.7.8.nas
dumping section 1 into flash...
$ dd if=flash of=piggy.gz bs=1 skip=28
1691620+0 records in
1691620+0 records out
1691620 bytes (1.7 MB) copied, 8.40643 seconds, 201 kB/s
$ file piggy.gz
piggy.gz: gzip compressed data, was "piggy", from Unix, last modified: Wed Jun 27 21:42:29 2007, max compression
$ nasunpack --extract=2,disk WL700gE_1.0.7.8.nas
dumping section 2 into disk...
$ dd if=disk of=crom bs=1 skip=28
16560100+0 records in
16560100+0 records out
16560100 bytes (17 MB) copied, 81.0496 seconds, 204 kB/s
$ file crom
crom: Linux Compressed ROM File System data, little endian size 65536 CRC 0x911b22f7, edition -1278167390, 138541296 blocks, 1226466058 files

其中 crom 是 WL-700gE 會安裝於 disk 上得應用軟體,若你想研究內含的軟體,可以用 mount -o loop 將檔案掛載起來查看。而 piggy.gz 就是我們所需的 Linux kernel 核心檔案,接下來可以利用重新開機並按下 “Ez Button” 的方式,透過 CFE 重新燒錄舊版軔體。細節請參考 Wl-700gE Reflash HowTo

燒錄好原本的核心後,另外一個麻煩的是要重建原本存在 IDE 硬碟的應用軟體。若你沒有手賤的去亂刪除 /dev/mtdblock/2 的資料,核心應該在重新開機後會載入存於 /dev/mtdblock/2 (/dev/mtdblock/2 只是另外一個 MTD block) 的基本工具,其中包含了復原與重新格式化硬碟的機制。

第二個階段是比較妙的,由於 WL-700gE 在接受第二階段的 disk image 上傳時,會作檢驗,系統必須接受某種 UDP 的認證協定後,才會接受新的 disk image. 因此你沒辦法單純的用 tftp 上傳,這時可以用 nasload (一樣內含於 ASUS 所提供下載的 GPL 檔案中) 使用檔案進行上傳。

用法如下

$ nasload /U /P /a /1 /f WL700gE_1.0.7.8.nas

如此就可以將 WL-700gE 完全復原到出廠的狀態了!

在安裝過 OpenWrt 到 WL-700gE 上後,你得作個抉擇。是要持續使用 OpenWrt,或者選用其他的自由軟體套件系統,如 Debian GNU/Linux。若要繼續使用 OpenWrt,你可以將裝好的 OpenWrt Image 再倒入硬碟中,之後就可以以 ipkg 的機制安裝軟體。

也可以選擇安裝其他的套件系統,如已經被移植數千種軟體的 Debian 系統。且 Debian 是少數支援 mipsel 的套件系統之一。

安裝方式很簡單,你可以利用 cdebootstrap 造一個給 mipsel 使用的基礎系統 (base system),操作方式如下

# cdebootstrap -v --foreign --arch=mipsel lenny debian-distro http://ftp.tw.debian.org/debian
P: Retrieving Release
P: Retrieving Release.gpg
P: Validating Release
I: Good signature from "Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>"
P: Parsing Release
P: Validating Packages.gz
P: Parsing Packages
P: Validating gcc-4.3-base
P: Validating libgcc1
...
...
...
P: Writing hosts
P: Writing resolv.conf
W: Creation of /dev/console failed
I: Second stage installer is available as /sbin/cdebootstrap-foreign or /sbin/init

上述指令,會為你建立一個 lenny 版本的 Debian 系統。若想擺入核心或其他套件的話,可加入額外參數如 –include=linux-image-2.6-sb1a-bcm91480b

你可以將上述 debian-distro 目錄壓縮後,丟到 WL-700gE 上再解到 IDE 硬碟的分割區中。然後透過修改 flash 中的 OpenWrt 之 preinit 等指令,預先載入該分割區,並利用 pivot_root 或 chroot 來更換系統目錄。待正確切換入系統後,再以 root 執行 /sbin/cdebootstrap-foreign 即可完成所有安裝程序。

開機的流程將會是 CFE -> OpenWrt -> Debian. 不過若使用 pivot_root 或 chroot 都會使系統使用 OpenWrt 的核心系統。

若想於 Debian 中使用不同的核心,不妨使用 kexec ,mipsel 平台的版本也已經被移植好。當然,你也得修改 OpenWrt 軔體中的 /sbin/init,讓系統自動搜尋你想使用的核心,並透過 kexec 線上重新載入新的核心系統。目前這個技術尚未有標準的設定檔作法或範例,戲法巧妙不同,就看你如何應用了。