Archives

gravatar

iPhone 2.0 firmware jailbreak 韌體破解

iphone-dev team 已經正式開放 PwnageTool(Mirror) 軟體下載。這個軟體不是用來 unlock 電信網路業者的功能。主要是提供軟體相容性和允許 3rd party 軟體的使用,支援的硬體是 iPhone or iPod touch + 2.0 firmware 或是 iPhone 3G。使用教學。

gravatar

[RSS] 訂閱 AppStore 的軟體更新與狀態

除了上 iTunes AppStore 去找有哪些新的軟體被加入,有哪些是免費的軟體,哪些是 Top 100 的方式外,還可以透過 RSS 訂閱到自己常用的 Feed Reader 來比較清楚了解到底有哪些軟體的更新與狀態。

  1. Top 100 免費 Apps
  2. 最近加入的 Free App
  3. Top 100 付費 Apps
  4. 最近加入的 Apps
  5. 更新的 Apps
其中第一二項免費的 Apps 應該是最多人下載的項目。 :P

gravatar

iTunes Store 有 Taiwan 囉

iTunes Store 已經將台灣列出來囉。不過當然販售的不是 Music、Movies、TV shows。而是 App Store,就是 iPhone 或 iPod touch 的軟體。其中一項可以免費下載的軟體,就是把 iPod/iPhone 當作 iTunes 的遙控器。

gravatar

[wine] 在 Mac OS X 下執行 KKBOX

WINE(WINE Is Not a Emulator)最近出了 1.0 版,加上 MacBook 也是 Intel CPU,有些 Windows 程式當然就可以靠這種方法在 Linux 或 Mac OS X(Intel) 下執行。當然 Microsoft Internet Explorer 已經不成問題,在網路上有 ies4linux 和 ies4osx 的安裝程式,很方便就可以創造出執行的環境。而 KKBOX 也有不少人安裝成功過,我在 Mac OS X 下使用 Darwine 1.0rc2 和 Xquartz,當然在 WINE 環境要安裝有 IE 和 WMP9,以及主要的程式 KKBOX,以及一些很瑣碎的設定,最後終於可以在 Mac OS X 下直接使用 KKBOX。不過過程有點複雜,最後大概需要哪些步驟,其實步驟寫下來還不太困難。但是因為嘗試過程花了不少 try & error 方法,所以步驟比較繁瑣。有空再來整理全部簡化的安裝流程,先來看執行畫面和效果。

全螢幕的擷圖,iTunes, IE, KKBOX

選項設定對話框

歌手總覽

選注音符號不是很好選,大概是 WINE 對字型大小和選取範圍處理有問題。

播放暫存區/全部歌曲/下載

選取的文字畫不出來

動態歌詞

gravatar

用 Safari 作快速的 Google 搜尋

通常在瀏覽器裡面像是 Firefox,把文字選取後按右鍵就可以作 Google search 的動作。如果是在其他的程式中,有段文字要到 google 上面找找東西,傳統作法就是:複製文字,開 Safari,在搜尋輸入框貼上,然後按下 enter 開始搜尋。
但是通常 Safari 會出現在 Dock 上,這時候在其他應用程式中,跟先前動作一樣要先選取,然後只要拖拉到 Safari 的圖示上,就會自動幫你開啟 Safari 然後在 Google 搜尋引擎上找你所選取的文字。

gravatar

Google Maps、GPS 軌跡、和小工具

Google 有兩套跟圖資有關的產品,一是 Google Maps,另外一個是 Google Earth。這兩個產品都有提供軌跡的功能,但是卻大大不相同。Google Earth 的功能比較完整,而 Google Maps 則是比較簡單且限制。
以我自己的 GPS track 而言,上次從北橫到宜蘭市區,每 20m 就標定一點,印象中共有八千多點。在 Google earth 上,這個軌跡很漂亮的就是一條 path。同樣的 Google Maps 也提供 My Maps 功能,可以 import .kmz/.kml 到網頁上,把軌跡畫出來。但是,問題就出現了,上傳之後發現軌跡變成好幾段,甚至被分成好幾個 page,要切換到下一頁才會把該頁列的 path 畫出來。
首先,第一懷疑的是不是從 GPS logger 下載的資料有問題,造成一段 path 被切成好多段。結果也不是,把已經上傳的 kmz 從 Google Maps 上用 View in Google Earth 再看一次,的確被切了好幾段。做了簡單的實驗後,發現只要 path 大於 401 點,就會被分成另外一段(大概是網頁版的 Maps 為了 performance 問題)。這是第一個實驗。第二個實驗是,在 Google Earth 看到有六條 Path,上傳到 Google Maps 後只看到五條,而且沒有下一頁。
 
第三個實驗是,共有七條 path,上傳到 Google Maps 後的確看得到七條。那前一種狀況是怎樣,bug 嗎 = =。
 
然後在第一頁下並沒有全部畫出所有的 path,要切換到下一頁才會畫出 path 6,7。

然後,重點就來了,在 Google Maps 中 My Maps 的單一個路徑,就是要全部畫出來才好看且明暸,還有下一頁這樣就不太好看,因為如果不是獨立的軌跡的話,被分段分頁真的是不爽。所以重點就是要介紹一個 TOOLS FOR GOOGLE EARTH 工具網頁,他有很多功能,但是第一個的 Generalize 就有足夠的功能,把太多的點簡化掉。目的是因為一次要把完整的 path 畫在 google maps 上,所以 google maps 上面一頁可以有 5 段 path,而每段 401 個點,所以 kml/kmz 中獨立的 path 不能超過 2005 個點,才會同時被顯示出來成為完整的一段。假設我這次有 8000 點,所以我在 Generalize 的 Reduction Factor 填入 4,然後把 kml file 上傳後,他就會提供另外一個可以下載個 kml。再上傳到 google maps 上面去,所以 8000/2000 大概會產生 4 段 path。所以就能完全一次呈現一條完整的路徑,雖然被分成好幾段很怪。
連結到完整Google Maps路徑。

gravatar

拿掉 FunP 轉過來的 iframe

在 淺入淺出 iframe (1), 淺入淺出 iframe (2), 和 別再說為什麼XX 就可以用iframe 而funP 不行 中提到很多原因,我也不喜歡在上面有個 FunP 的 control bar。所以之前不知道在哪邊看到的文章,教人家在 HTML 加入

if (top.location != location ) top.location.href = location.href;
就可以重新 redirect 到正常的網頁去。不過有個問題呀,最近在 blogger 裡面要改 layout,結果整個畫面被導到 layout 設定畫面,上方的 blogger 設定像是 Posting, Settings, Layout 和裡面的 Edit HTML 都不見了,這樣之後怎麼改東西。所以額外加了一些東西上去,才避免連 blogger 自己的 iframe 都被轉光光。
if (top.location != location && (top.location.href.substr(0,23) != 'http://www.blogger.com/') ) top.location.href = location.href;

gravatar

Google Developer Day Taiwan 2008 - AppEngine

今天的新聞應該就是 Google 在台北舉辦 Developer Day,休假了一整個禮拜,週末就只去參加這一場不是休假的活動。除了開場的主題演講外,整天都是 AppEngine 場次,所以也只能講這些了。除了 Code Lab 之外,其他都有錄影,應該上 http://code.google.com 都找得到。所以整天看到聽到的都是 Pete Koomen 和 Brett Slatkin。Pete 是 Product Manager,Brett 是 Software Engineer。

AppEngine 讓一般 user 也可以使用到 google 的內部儲存空間跟 computing power,在一定的 quota 內是免費的,超過就要依量計價。不過我在想,比如說 HTTP Requests per Day 最高 650,000。這時候當有這種人氣時候,擺個 AdSense,然後用 AdSense 賺的錢再買更多的 resources,這樣有沒有可能打平變成免費。

第一場 Pete 介紹 AppEngine 入門,由 Brett 簡單花幾分鐘從無到有寫個 live demo,有點類似留言板的功能。當 Deploy 到 appspot 之後,Pete 秀了幾手,終於大家看到網址,也上去留了幾句。等 Pete 重新載入或留言時,發現多了好多資料嚇了一跳,當然是哄堂大笑。暫存的內容如又圖。 另外學 Python 語言感覺是還好,如果 syntax 練一下,API 看熟一點,加上 AppEngine 不讓你用某些 system native API,盡量都要用他的 DataStore、memcache、URL fetch... 所以也不是要整個學到爛。但是 DataBase 的部份 - DataStore 這邊就比較麻煩,雖然用 GQL 很像 SQL 作 query,但是為了 scalability 而無法做出很多一般 SQL 的用法。為了提高平行度,表格設計和 get()/put() 方法也跟一般不一樣。加上現在還沒有 Database import/export 工具,連改個 application name 就會整個 DataStore 就消失一樣。很多東西都還在進行中,連未來將會支援哪些語言,連半點字都沒有透漏。

另外在 Code Lab 到處問答時候,旁聽到 AppEngine 其實是 Google Engineers 花他們 20% 的時間做的創意。當然 BigTable、GFS... 這些都是 Google 本來就有的 fundamental,在 Google 允許工程師花他們的 20% 時間,作自己想要做的事情(當然不是打混摸魚看股票兼拍賣等等)。所以 AppEngine 就這樣生出來了,提供了一個環境讓 internal 工程師很容易開發的環境,現在還可以提供給外界使用。另外,AppEngine SDK 環境當然也是這些工程師花 20% 其中的時間在 Mac 上開發出來的環境,所以有些地方 Windows 平台會不順會有問題,只能等以後修正囉。

今天 Google Lab 部份,投影片跟程式碼在 http://code.google.com/p/google-app-engine-codelab/,雖然 Brett 講解的投影片是用 Google Docs 來簡報,但是下載的卻是 PowerPoint。大概是從 Google Docs 轉成 ppt,因為 AppEngine 的 icon 在簡報時候是在左下角,而 PowerPoint 卻是變成置中大圖,看來 ppt 版本是不太對的,相信原版是 Google Presentation 做的。

今天的圖片集:
會場入口的大"看板"

另外一邊的 Google Logo

報到處


連飲料零食都搬來了


當然 Wii 和 Xbox 也不例外

第一場簡介演講,沒辦法,原場地客滿了(簡立峰老師要大家下次努力報名達 3000 人,就可以租樓上的大場地。)

Pete 講 AppEngine 入門

手足球台後來也出現了(打的人不少,不過用轉的是犯規的,反正大家好玩就好。我也有下去玩幾球,二打一還沒被進球)

排隊領 T-shirt(其實大家都有,還說數量有限)

今天最大收穫,就是衣服兩件 當然是學到 AppEngine 很多知識。然而 AppEngine Code Lab 免費送一件 AppEngine Logo 的 T-Shirt,再加上 Google Developer Day 2008 的,就兩件了。

gravatar

AppEngine程式開發實作報名成功 Google程式開發日

Just got the mail notification from Google Developer Day

參加AppEngine開發者您好,

歡迎您參加AppEngine程式開發實作。提醒您本課程僅限50人參加,全長160分鐘,不得中途進場。您已在報名成功的50人名單上,若您在課程開始前5分鐘未出現,我們會開放您的席位給候補。
在參加 AppEngine程式開發實作之前,建議您先依照 開始使用 Google App Engine 上的指示完成練習,並在您的筆記型電腦上,預先設定好開發環境。

由於 Google App Engine 是用 Python 開發的,如果您還不熟悉 Python , 建議您可以從 Python 教學 開始,以獲得足夠的資訊。

Google研發小組敬上

gravatar

Safari: 更快的 JavaScript 速度

根據 Surfin' Safari 最新的文章和測試,新的 JavaScript 引擎,代號為「SquirrelFish」的 interpreter,讓 Safari 的速度加速為 WebKit 3.1 的 1.6 倍(SunSpider benchmark suite)。可望讓 Firefox 3.0 引以為傲的速度不再專美於前。 最主要的改變是採用了 virtual machine。什麼是 SquirrelFish?這是一種以暫存器為基礎,direct-threaded,高階的 bytecode 引擎。使用一個簡單的 one-pass 編譯器為 syntax tree 產生 bytecode。SquirrelFish 擁有很多目前高效率虛擬機器的很多設計最新的研究,包含 Lua 程序語言(玩 World of Warcraft 的應該都知道)開發者 Professor M. Anton Ertl, et al, Professor David Gregg, et al, 所作的研究。
繼續閱讀

gravatar

[FON] Fonera 安裝 DD-WRT 韌體與超頻

本文是關於 FON 無線網路的修改,這篇文章主要是教學和紀錄用,一方面記下步驟供自己參考不用重找。 FON 蠻小巧又方便的,但是官方韌體過於簡陋,功能又不多。加上最近天氣溫度高,連線量可能大,常在遠端連線到公司電腦時候,AP 訊號斷斷續續。或是從休眠階段醒來,雖然有 AP 訊號但是卻連不出去,常常要關掉 AirPort 再開啟才正常,因為下定決心一次解決所有問題。
**刷新 DD-WRT 韌體
首先先下載必需要使用到的檔案。

  1. root.fs
  2. vmlinux.bin.l7
Mac OS X 的作業系統已經有內建 TFTP server,以及終端機程式,就不需要再有任何的軟體安裝,只要開啟這些 server。TFTP server 則自行打開 Terminal 程式,輸入
sudo /sbin/service tftp start
就可以啟動 tftpd,傳輸的檔案路徑放在 /private/tftpboot/。 FON 當然要已經破解過,可以使用 ssh 進入到系統內的 command line 模式。原本的 FON 設計無法讓使用者自行透過 RedBoot 刷新韌體內容,要先用破解過的 kernel。透過 ssh 連到 FON 內部後,輸入
cd /tmp
wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot
之後會重新啟動,當啟動完畢後,一樣連到 FON 內部,輸入
cd /tmp
wget http://fonera.info/camicia/out.hex
mtd -e "RedBoot config" write out.hex "RedBoot config"
reboot
在這步驟後,重新開機,FON 就會停在開機的 RedBoot 階段,不會再啟動 FON firmware。這時候把 FON 網路線連接到電腦,把電腦的 IP 設定為 192.168.1.166,然後把 FON 接上電源,等一會兒,在 System Preferences 的 Ethernet 狀態變成 Connected 時候,就 telnet 192.168.1.254 9000,接著敲下 Enter 鍵就可以看到 RedBoot> 的符號。 把 root.fs 和 vmlinux.bin.l7 放到 /private/tftpboot/ 下,然後在 RedBoot 裡面輸入
ip_address -l 192.168.1.254/24 -h 192.168.1.166
fis init
load -r -v -b 0x80041000 root.fs
fis create -b 0x80041000 -f 0xA8030000 -l 0x002C0000 -e 0x00000000 rootfs
load -r -v -b 0x80041000 vmlinux.bin.l7
fis create -r 0x80041000 -e 0x80041000 -l 0x000E0000 vmlinux.bin.l7
fis create -f 0xA83D0000 -l 0x00010000 -n nvram
接著打 reset 後,重新啟動。之後在無線網路的 SSID 中可以找到 dd-wrt 的 AP,預設帳號密碼為 root/admin。
**更新到最新韌體 V24 第 7 版 5/20/2008
下載 http://www.dd-wrt.com/dd-wrtv2/downloads/v24/Atheros%20WiSoc/Fonera/linux.bin 韌體,一樣放到 /private/tftpboot/。這時候需要非 Mac OS X 的終端機和 telnet 程式,例如用 Parallels 跑 Windows 下的 Putty 或是 linux console,因為 Mac OS X 下的 telnet 不會馬上送 ^C 到 AP,無法中斷開機過程讓我們進入 RedBoot> 裡面刷新韌體。 一樣,在開機過程中,會有 10 秒鐘的時間,可以讓使用者 telnet 然後按下 Ctrl-C 送出中斷而進入 RedBoot,如果時間超過,就得重來一次。當進入 RedBoot 後,一樣照著這個步驟
ip_address -l 192.168.1.254/24 -h 192.168.1.166
fis init -f
load -r -v -b 0x80041000 linux.bin
fis create linux
完成後,繼續打
fconfig
接著就按 enter 到 enter the bootscript: 出現為止,然後輸入
fis load -l linux
exec
(空白為結束)
接著也是一直按 enter 直到提示要不要把設定存入 nvram,這時就確定後,一樣輸入 reset 重新啟動。之後就有 V24 第 7 版的 DD-WRT AP。 *** 注意,fis create 的時間會很久,AP 也不會有任何反應,時間長達甚至十幾分鐘。這時候連終端機或 Putty 視窗上都不要碰任何按鍵,免得軟體送出按鍵的封包後,然後因為 timeout 而造成終端機或 Putty 斷線而中斷刷新過程。
** 超頻到 200MHz
FON 2100/2200 的 CPU 速度大概是 183MHz,在討論區有人透過軟體修改把 CPU 超頻到 200MHz。 透過 ssh 連接到刷新完畢的 FON,輸入
cat /dev/mtdblock/0 > /tmp/RedBoot.bin
後,再自己 Mac OS X 電腦上開終端機,輸入 scp root@192.168.1.1:/tmp/RedBoot.bin RedBoot.bin 把檔案傳輸到自己電腦來修改。我建議是用 0xED 這套 hex editor 來作修改,修改的部份為
偏移位址 0x1e3 把 0x03 改為 0x01
偏移位址 0x1ef 把 0x5c 改為 0x28
然後存檔,一樣輸入
scp RedBoot.bin root@192.168.1.1:/tmp/RedBoot.bin
接著回到 FON AP 的命令列,輸入
mtd -f write /tmp/RedBoot.bin RedBoot
reboot
重新啟動,之後就可以從 DD-WRT 控制網頁的系統狀態看到 CPU 速度為 200MHz。

gravatar

[Mac] QuickTime 網路廣播重複問題

最近直接用 QuickTime Player 聽網路廣播,常常發現會重複播放。好幾次是因為當作背景,根本不知道是回到前面重新播放,直到聽到好像比較熟悉的地方,才發現是重複了。
經過幾次 try & error,大概知道原因,如圖片上所看到的,現在正播放的 mark 離 buffer 時間只剩下一丁點,這時候就很容易出事。網路廣播的 wma 都是透過 Flip4Mac 這個 QuickTime plugin 來播放。當網路有問題、停頓、或是 buffer 不夠,player 就會自己重新跳回到開頭直接播放,屢試不爽。但是在 Player 設定裡面,Loop 的選項並沒有勾選。而 Player 就是會莫名其妙的跳回前面自己就播放先前的 buffer 起來(可見從一開始的東西都還在記憶體)。
比較惱人的是,這個東西沒有選項可以設定,理論上 buffer 不夠,應該是停住等一段時間的 buffer 夠了繼續播放,至少看 QuickTime 串流影片都是這樣。此外,有可能 buffer 機制因此就死掉了,也就是就算把時間移到最後頭去 play,但是其實他已經不再 buffer 現在正在播放的串流資料,只能關掉視窗重新開啟。

gravatar

Mac 版的雅虎奇摩中文輸入法


雅虎奇摩竟然也推出自己的中文輸入法程式,注音輸入法叫做好打注音,而且有 Mac 版本。基本上是以 OpenVanilla project 為基礎,搭配雅虎提供的一些查詢服務。對於使用者介面上,已經有一些簡化和固定式配置。輸入法候選字的視窗改為直列,很不習慣。有些輸入法像是倉頡或簡易,基本上根本沒機會去使用到,如果可以移除也不錯。 在 Leopard 安裝後,包含重新開機,都看不到 Yahoo KeyKey 輸入法。似乎安裝程式有點問題,因為安裝到 /Library/Input Methods/ 裡面,權限不是 root,所以 Leopard 系統基於安全性理由,不會啟動這個輸入法。只好自行打開 Terminal,然後

sudo chown -R root:admin /Library/Input\ Methods/Yahoo\!\ KeyKey.app/
再次登出登入後,就 okay 啦。快樂嘗試中。

gravatar

[Firefox] 消失的記憶體

最近消失的十億很熱門,但跟主題無關係,雖然電腦上用掉十億很簡單(1GB=1,073,741,824 bytes)。在 Firefox 的網址列打 about:cache,可以看到 memory 和 disk 的 cache 容量和消耗。 一定會有人好奇,怎麼 memory cache 的 Maximum storage size 是 5000 KiB(這是我設的,因個人設定或電腦記憶體容量而定),結果 Storage in use 反而比 Maximum 還大。如果是 disk 部份就正常,不會超過 Maximum storage size。這個原因是,記憶體的 cache 有部份會存放的是「解壓縮」後的圖片,例如 jpeg、png 這類解開通常容量都不小。所以實際上 memory cache 的檔案可能沒有超過 5000 KiB,但是 cached 未壓縮圖片檔容量卻已經超過這個容量。點選如圖片上面的 List Cache Entries 就會列出每個詳細資料,我的範例如下,一定會有人好奇例如 http://css.funp.com/base/css/v3/nt.png 這個不是照片的圖檔有 3,840,000 bytes,約 3.66MB。第二個 http://css.funp.com/base/css/_4939/B0.png 也不遑多讓,有近 3MB 的空間。實際上,第一個 nt.png 檔案只有 44.33 KB (45392 bytes) 這麼大,但是解析度是 400px × 2400px,也就是 400×2400×4 (32bits color) = 3,840,000 bytes,沒錯,就是上面的大小。只要有 10 個類似的東西,加上 firefox 本身程式內部用量,消耗的記憶體馬上破百不是問題。
當然這是拜 CSS 之賜,可以用 clip 的方式來選擇顯示範圍的圖片,這樣好處當然是瀏覽器只要 cache 一個小圖檔(壓縮後不大),也減少 http server request 和檢查 expire 次數。所以網頁中看到很多用到小圖的地方,可能是圖檔中不同的部位去選擇要呈現的範圍。但是,事實上,圖片上蠻多空白(不會用到)的地方,當然這些空白的地方,電腦還是要花記憶體的空間去儲存地。
後記:為啥拿 funp.com 上面的 background png 來舉例?因為,剛好大小榮登上面排行榜前幾位,純屬巧合 :P。

gravatar

Intel廣邀部落客一起愛地球

現在的處理器都強調耗電量低,但是無可避免的notebook上除了CPU外,最基本還有硬碟、LCD螢幕、主機板等等也會耗電的裝置或晶片。雖然notebook在耗電量上已經比Desktop或Server省很多,但是節能一直是notebook上不可必免的問題,移動性高就必須要電池能使用時間長。此外notebook也要充電或是插著電源使用,即使不是充電,省電當然也就直接節省能源。
所以這邊要介紹一些技巧,嘗試盡可能在Mac OS X下降低MacBook/Pro的能源消耗,也可以讓電池使用時間增加。

  1. 停用螢幕保護程式,縮短螢幕關閉的時間間隔。
    LCD螢幕原理,持續的畫面轉換並沒有達到保護,反而要持續地切換每個像素上的電晶體。且加上Mac OS X內建的螢幕保護程式,有些是使用OpenGL來達到渲染和3D特效,所以使用保護程式時反而消耗CPU和GPU。不如關閉螢幕保護程式,把螢幕關閉的啟動間隔縮短,讓背光板關閉節省電源消耗。

  2. 手動關閉螢幕
    現在Leopard和新的MacBook都可以透過Shift-Ctrl-Eject來直接把螢幕關閉,而不用透過等待螢幕關閉的間隔。如果電腦還在處理某些東西不能關閉,卻要離開一段時間,立即啟動此功能把螢幕關閉,達到省電效果。
  3. 避免在強光之下使用
    由於液晶螢幕是透過背光將顏色呈現到眼睛,如果在強大環境光源下,會使畫面表現不自然,也需要將背光亮度調整到最大才能看得清楚。如果可以適當將使用地點或是背對光源方向作個調整,顯示的背光可以調整到適當舒服亮度,節省電源的消耗(非LED背光螢幕)。
  4. 關閉用不到的裝置
    像是藍牙,平常沒用可以關閉。當使用網路線時候,可以將無線網卡關閉。開關這些裝置非常容易且輕鬆,在Mac OS X 上整合介面做得很好,如果你有把這些裝置顯示在Menu Bar上,簡單幾個滑鼠鍵就可以開關。

  5. 將動態畫面但目前不使用的應用程式縮小或隱藏
    有些程式會持續地更新畫面,或是有動態圖片/Flash,這些更新動作都會消耗CPU資源,如果不正在使用或背景的程式,就把他隱藏。在Mac OS X上很輕鬆地按Cmd-H就可以把程式隱藏,Alt-Tab配合滑鼠很容易叫出程式。Mac OS X Aqua 的使用者介面上,有個程式叫做 WindowServer 是用來管理視窗和處理螢幕內容合成。因為程式動態的畫面更新,也會使得 WindowServer 的使用率增加。使用 Terminal 執行 top 後用 CPU usage 排序,就可以看得到其實 WindowServer 使用率一直在 5%~10%,如果有動態的畫面更新,則會更高。所以能將目前不使用的視窗隱藏,減少 WindowServer 在處理畫面上的 loading。
  6. 使用 Adblock plus for Firefox 或 SafariBlock for Safari
    一方面可以減少額外的下載資料量和增加版面清晰,另外一方面降低內嵌Flash廣告、WMV/MP3等消耗資源的影片廣告。
  7. 使用CoolBook調整CPU速限和降低廢熱
    雖然切換到Intel平台,Performance Per Watt高很多,但是相對速度的增加,廢熱也大量產生,有些能源就不可避免轉成熱量散逸到空氣中。在PowerPC時代,Energy Saving還有可以調整CPU速度的選項。到了Intel x86-based機器上,就沒有這個選擇,一切都是Mac OS X自動調整。但是手動限制不僅可以避免CPU在無謂的時候直奔最高速度,用低速對付非重量級的工作都還很輕鬆。也可以在電池模式下,限制CPU速度也可增加電池使用時間。
  8. 使用Deep Sleep來選擇休眠模式
    短時間間隔內會使用電腦,則直接用Sleep後回復速度也快。但是會消耗一點電力,長時間下不可用,或是外出攜帶不想關機重新開機,則Deep Sleep將記憶體寫入到硬碟後完全關機,就不會消耗電池的電力。
  9. 把一些快取、暫存檔移到RAM Disk
    現在電腦有2GB以上記憶體是稀鬆平常,使用多餘的記憶體當RAM Disk來存放快取、暫存檔案,會使其讀寫效能要比硬碟來得快,也能減少硬碟磁臂seek次數和距離,或是使長時間不用的硬碟進入停止狀態,畢竟機械動作要比電子動作有更多的功耗。
  10. 兩個月將電池校正一次
    根據這篇Apple文章,大約一兩個月就把電池校正一次,以達到電池的最大效能,延長電池的壽命,減少因容量不足而常常充電的能源轉換消耗。當然不是刻意要去浪費能源跑些程式來消耗電力,在校正時候還是可以正常做事情,只是特別注意當電力警示時候,要把工作中的檔案存檔關閉。

gravatar

Installer source for UDNReader

剛建了一個給 Installer 用的 source repository,把這個 source 加入到 Installer 中,就可以讓他自己下載和安裝/移除 UDNReader。

http://safaripowertoy.googlecode.com/files/repo.xml
網址有點長,加入後就到 eBooks 裡面安裝 UDNReader。

gravatar

UDN Reader for 1.1.4

終於把
UDN Reader
移植到 1.1.4 的機器。需求環境:Jailbreak 過的才能裝軟體呀。所以現在可以在 iPhone/iPod touch 實機上跑,直接選新聞讀內容。目前無 repository source link,所以看你要 ftp/sftp/AFP 或從 ipod 上面用 wget 抓,反正擺得進去 /Applications 就好。icon 方面,沒有能力和時間作個漂亮的 button,直接抓 UDN 的 logo swf 來剪裁。(iPhone SDK 上是會自動把平坦的 icon 加上立體光亮的觸感,可惜 1.1.4 沒有)。另外,不知道怎麼去擺到 source repository 上,讓 Installer 可以自動下載安裝,如果有人在管理 repository 的話,可以考慮加入上面的 link。

最困難的地方大概就是 1.1.4 以下 API 並沒有 fully documentation,全都是靠網路上 objc class dump 出來的 header file 來看有哪些 method 可以使用。而且不像 iPhone SDK 有 IDE 介面可以 debug,丟到 iPod 上去跑,大概就只能用 printf 大法。然後 1.1.4 的很多 view 並不成熟,例如 iPhone SDK 可以輕鬆做到的 WebView 滑動縮放,在 1.1.4 要自己作。

gravatar

降低MacBook電源接頭的高頻聲

MacBook 的電源接頭那邊,只要接上 AC Power,就會有高頻的滋滋聲。其他使用者也有類似問題,看板上的網友回答是,這是 MacBook 的"三高"之一。以前用過其他 IBM 的筆記型電腦也有類似的聲音。Anyway,聲音不是很大,但是在安靜的房間仔細聽起來也是蠻惱人的。不過後來發現,接上 iPod Touch 之後,聲音就沒有了。但是接上耗電量比較少的裝置,像是 USB Solid-state disk,Optical Mouse,還是一樣會有這個問題。所以就是要讓 USB 消耗大一點的電源,才能降低高頻聲。但是不可能一直開著 iPod touch 放在那邊。看來可以找些小玩意來裝,例如 USB 臭氧、負離子產生器,USB 風扇(夏天快到了),NoteBook散熱底座,...

gravatar

My First iPhone App

This is my first iPhone application written in iPhone OS 2.0 SDK. Unfortunately, it only runs on iPhone simulator not the real iPhone or iPod touch device. Even I use iPhone toolchain from third party to rebuild the source code, some UIKit classes are miss in current iPhone/iPod touch 1.1.4 firmware.
The purpose of this application is to help users to browse the UDN news items and read news page more easily. Rich content web pages with javascript are not user-friendly on mobile device and touch device. However, this might not have chance to run on iPhone platform due to Apple's App Store restrictions and 2.0 firmware.
iPhone SDK provides an integrated environment and simulator to develop applications easily. But under the restriction, the 3rd party iPhone toolchain and jailbreaked environment should be more useful for ordinary developers.

gravatar

iPhone雙重開機

iPhone Dual Boot / Jailbreak。應該也可以適用 ipod touch。

gravatar

MacBook vs iBook G4

MacBook 13.3" 2.16Ghz vs iBook G4 12" 1.2Ghz
花了 34,900 元帶他回家, 但是 3/6 馬上又降價了, 改成 31,900 元。打去退差價 3000. ^+++^

gravatar

iPhone SDK 開放下載

Apple 首頁已經刊出 iPhone SDK 開放下載(但是似乎連不上 ADC server)。也可以試用 Enterprise Beta Program。

gravatar

iPhone SDK 新聞

節錄自MacRumors部份內容及翻譯。給企業使用者的功能, iPhone下個更新將會包含有 Push Email、Push Calendar、Push Contacts、Global Address List、Cisco VPN、WPA2/802.1x、安全原則、裝置設定、Remote Wipe、ActiveSync(用來同步 Exchange 到現有的 mail, calendar, contacts)
SDK 部份, Apple 釋出他們用來開發 iPhone 應用程式的相同 API。給 OS X 用的 iPhone 模擬器可以幫助開發者。支援動畫、3D、攝影機、網路、檔案存取和錄音的強大 API。
原生(Native)的iPhone應用程式需要透過iTunes的應用程式商店, 用無線網路下載。開發者決定價格、並且可以得到 70% 的收益。沒有其他的額外費用。每個月付給開發者。
SDK 今天起可以免費下載。然而要發佈應用程式, 則需要 $99 美金 (約三千台幣)的開發者費用。

gravatar

[OSX]更多的browser效能評比

利用 WebKit 所提供的 SunSpider benchmark 來測試 Mac OS X 上各家的瀏覽器裡面 JavaScript 的效能。 測試平台是 Mac OS X 10.5.2 Leopard on Apple iBook 1.2Ghz。瀏覽器包含正式版的 Firefox 2.0.11、Safari 3,測試版的 Firefox 3.0b5pre、WebKit Nightly Build、Opera 9.5beta。測試結果看來都是測試版的瀏覽器大獲全勝,其中又以 Firefox 3.0b5pre 最為突出,一改 Firefox 讓人詬病的速度問題。再來是 WebKit,效能上只輸 Firefox 3b5pre 一點,很難想像用他來作為核心的 Safari 竟然會有這麼大的差距。接著是 Opera 9.5beta,雖然他們號稱速度上是第一,可能整體上來說沒錯,但是畢竟在單純 JavaScript 上沒有這麼好的成績。敬陪末座的就是舊版 Gecko 核心的 Camino 1.5 和 Firefox 2.0.11。
在 Firefox 3b5pre 釋出後不到一天,一些 Addons 已經更新支援最新的 Firefox 3 beta nightly build,例如 Adblock Plus。

gravatar

Firefox 3 Beta5 Pre-release

Firefox 3 的第五個測試版本出來了,舊的測試版用戶可以透過 Update 直接升級。但是升級的缺點就是一些 addons 都不能用,其實應該是相容,但是受限版本檢查限制,全部不能用。尤其我最重要的 adblock plus 一失效的話,yahoo、udn 等等廣告全部跑出來了,花花綠綠的真是不習慣。
順便做了 WebKit 上得 Sunspider 效能測試,來試驗現在各家版本的 JavaScript 效能。

  1. Firefox 3 b5pre: 13495.8ms
  2. Firefox 2: 53977.4ms
  3. Safari 3: 42380.8ms
結果很明顯,Firefox 3 的速度完全勝出。測試平台為 PowerPC G4 1.2Ghz。

gravatar

Firefox 3 beta pre4

Firefox 2 在 mac os x 執行,除了網頁資料下載速度快點,顯示還有效能都不如 Safari。連字體都是只有醜醜的 Gray Level AntiAlias。Firefox 3 測試版出來時,就迫不及待的去嘗試。因為主要是把 Carbon 換成 Cocoa,把畫面和字型繪製改由 Cairo。結果一試就大失所望,因為效能真是慢到一個不行。以常用的 Google Spreadsheets 來說,在儲存格上上打注音輸入中文真是慢到一個不行。所以還是想等到他推出正式版本再說吧,畢竟現在還是 beta。在 Slashdot文章和這篇 Undocumented API 才是王道提到一些主要原因。接著再下載最新的 Firefox 3 nightly build 來試試看,果然感覺速度或效能已經比 Firefox 2 快了,搭配 Arial Unicode MS 字體,Cairo 畫出來的 CJK 字型很美觀,已經有點迫不及待想要丟掉 Firefox 2.0。
至於 Apple 在 WebKit 裡面擺的 binary lib 果然是大有來頭,因為從 WebKit repository checkout 的程式碼,擺著沒有 source code 的 lib 就已經很讓人猜疑。

gravatar

iPhone SDK on 3/6

MacRumors 消息 apple 將在 3/6 舉辦一場特別的活動,並且在禮拜二已經把邀請函發給記者。此外除了 SDK,還有令人振奮的新 enterprise features。

Please join us to learn about the iPhone software roadmap, including the iPhone SDK and some exciting new enterprise features. The event takes place at Apple, Building 4, Town Hall on March 6 at 10:00 a.m. Registration begins at 9:00 a.m. Arrive early for this invitation-only event. RSVP to rsvp.media@apple.com

gravatar

Fully software jailbreak for 1.1.3 iPod touch/

ZiPhone 可以直接針對 1.1.3 firmware 的 iPod touch/iPhone 作 jailbreak。在我的 Mac OS X 10.5.2 環境下,iTunes 為 7.6,iPod touch 1.1.3版。直接接上 usb 後,離開 iTunes,執行 ziphone -j -v 一段時間後,iPod 就自己重新開機,並且顯示一堆文字模式的開機和安裝過程。經過再一次重新開機,裡面就已經安裝有 Installer,這時候就算已經 jailbreak 成功,並且可以自己安裝程式。
破解原理:透過 Apple Mobile Device 的介面把 zibri.dat 這個 ramdisk 傳送到 iPod/iPhone,然後設定 nvram 裡面屬性(把要做的事情記在 nvram),並且設 boot-args rd=md0 pmd0=0x09CC2000.0x0133D000,OpenFirmware 使用者應該很清楚,可以設定 boot-args 在開機時候指定 root disk,這裡指定到 memory disk。開機後就會執行到 /etc/profile。然後就 mount 系統本來 flash 裡面的 disk,開始 patch,然後清掉設定的 nvram 屬性,恢復原本開機 root disk,重開機 done。Great Works!!

# System-wide .profile for sh(1)
PATH="/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin"
export PATH
/bin/sleep 5
/bin/echo "Starting unlock..."
if [ "`/usr/bin/nvram -p|/bin/grep unlock1`" != "" ] ; then /zib/gunlock /zib/secpack /zib/ICE04.02.13_G.fls; fi
if [ "`/usr/bin/nvram -p|/bin/grep unlock2`" != "" ] ; then /zib/gunlock2 /zib/secpack /zib/ICE04.02.13_G.fls a12345
6789012345 ; fi
/sbin/fsck_hfs /dev/disk0s1
/sbin/fsck_hfs /dev/disk0s2
if [ "`/usr/bin/nvram -p|/bin/grep jailbreak`" != "" ] ; then
/bin/echo "Starting jailbreak..."
/sbin/mount_hfs -o noasync,sync /dev/disk0s1 /mnt1
/sbin/mount_hfs -o noasync,sync /dev/disk0s2 /mnt2
if [ -e /dev/rmd1 ]; then /bin/dd if=/dev/rmd1 of=/mnt2/root/mem_dump.bin bs=4096 count=4096; fi
#/zib/bbupdater -l /zib/BOOT03.09_M3S2.fls
#/bin/sleep 20
# jailbreak
# disk0s1
if [ "`/usr/bin/nvram -p|/bin/grep activate`" != "" ] ; then 
/bin/echo "Patching lockdownd..."
/bin/ipatcher -l /mnt1/usr/libexec/lockdownd
/bin/cp /zib/fstab /mnt1/private/etc/fstab
/usr/bin/unzip -o -K -X /zib/Installer.zip -d /mnt1/Applications/
#/usr/bin/unzip -o -K -X /zib/BSD_Subsystem.zip -d /mnt1/
#/usr/bin/unzip -o -K -X /zib/openssh-4.6p1-1.zip -d /mnt1/
# disk0s2
if [ "`/usr/bin/nvram -p|/bin/grep activate`" != "" ] ; then
/bin/echo "Activating youtube..."
/bin/mkdir -p /mnt2/private/var/root/Library/Lockdown
/bin/cp /zib/data_ark.plist /mnt2/root/Library/Lockdown/
/bin/cp /zib/device_private_key.pem /mnt2/root/Library/Lockdown/
/bin/cp /zib/device_public_key.pem /mnt2/root/Library/Lockdown/
/bin/mkdir -p /mnt2/mobile/Library/Installer/Temp
/bin/mkdir -p /mnt2/root/Library/Installer/Temp
/bin/cp /zib/LocalPackages.plist /mnt2/mobile/Library/Installer/ 
/bin/cp /zib/LocalPackages.plist /mnt2/root/Library/Installer/ 
#/bin/cp /zib/RemotePackages.plist /mnt2/mobile/Library/Installer/ 
#/bin/cp /zib/RemotePackages.plist /mnt2/root/Library/Installer/ 
/bin/cp /zib/PackageSources.plist /mnt2/mobile/Library/Installer/ 
/bin/cp /zib/PackageSources.plist /mnt2/root/Library/Installer/ 
/bin/cp /zib/TrustedSources.plist /mnt2/mobile/Library/Installer/ 
/bin/cp /zib/TrustedSources.plist /mnt2/root/Library/Installer/
/bin/cp /zib/com.apptapp.Installer.plist /mnt2/mobile/Library/Preferences/
/bin/cp /zib/com.apptapp.Installer.plist /mnt2/root/Library/Preferences/
#end jailbreak
/bin/echo "Unmounting filesystems..."
/usr/bin/umount /mnt1
/usr/bin/umount /mnt2
/sbin/fsck_hfs /dev/disk0s1
/sbin/fsck_hfs /dev/disk0s2
/usr/bin/nvram auto-boot=true
/usr/bin/nvram boot-args=""
/usr/bin/nvram -d unlock1
/usr/bin/nvram -d unlock2
/usr/bin/nvram -d jailbreak
/usr/bin/nvram -d activate
#/usr/bin/nvram -d unlock2
/bin/echo "Now rebooting..."
/sbin/reboot
while (true); do sleep 1; done

gravatar

iJailBreak 0.4.1

iJailBreak 0.4.1出現了,可以適合用在破解 1.1.3 的 firmware,不過很巧合的有同樣的限制,必須在已經 jailbreak 的 1.1.1 或 1.1.2 才能使用。而且也是使用 iPhone 的 firmware。因為 iPod touch 的 firmware vfdecrypt key 還沒被解出來。雖然這是個 13 歲的開發者寫的軟體,不過其實他應用的就是前幾介紹的方法。詳細內容請參考 iJailBreak.app/Contents/Resources。

gravatar

看別人的尾牙

在永遠的真田幸村中的看到一篇「看了種花電信的尾牙,覺得自己單位真的很幸福」。仔細去看那兩篇分別為2007、2008的為牙文章內容,感覺作者還真是苦中作樂。也感覺的確自己的單位比起來是幸福多了,雖然常常跟前面的比,實在完全是比不上,但是能說是比下有餘嗎 XD。至少最低通通有獎 2k,這樣也能說是約等同於「種花電信」的大獎了;抽到 5k,就等於頭獎了;抽到 8k,那就可以算特獎囉。所以大家都有抽到大獎就不用太計較了。

gravatar

Mac OS X 上推薦的瀏覽器字型

在 WebKit based 的瀏覽器上,瀏覽器顯示的字型是以 International Pane 所選擇的地區順序設定來挑選 fallback 字型。(當該字型沒有該字的 Glyph,則繼續選用候選字型)所以常常可以在某些網頁上看到本來是細明體的字型,穿插著黑體字。或者是在黑體字中間,穿插著粗細或高低不一的字。尤其是在 firefox 瀏覽器上常常看得到。 這個原因是 firefox 本身有 unicode 地區的編碼分類,以及各種語系之間使用不同的字型因素。像是台灣中文是 Apple LiGothic Medium,日文是 Hiragino Kaku Gothic,韓文是 Apple Gothic。而當某些 unicode 網頁中出現某些字型,可能會依照該字碼挑選地區來選擇字型。或者看起來像是繁體的中文字,卻挑選了日文的字型來繪製。而這些字型的挑選,雖然在程式已經提供了讓使用者可以挑選各地區的字型,但是真正繪出文字的字型可能不是使用者希望的。所以最好的方法就是,在這些 CJK 語系地區使用統一的字型,而且該字型又有幾近完整的 unicode glyph 資料,才不會到時候缺字又要使用其他字型補字。 在 Mac OS X 上,有一個字型叫做 Arial Unicode MS。雖然名字有 MS 但不是微軟做的,是一家 Monotype 字型公司。英文字型看起來是 Arial,亞洲字體看起來像是黑體(雖然經過 Apple AntiAlias後看起來沒有黑體那麼黑和清晰)。用起來在 firefox 上效果不錯,對於本身我自己習慣看 Sans-Serif 字體來說,是相當好的選擇,就連 Safari 預設字型都設成這個字型。

gravatar

iPhone/iPod Touch 1.1.3 jailbreak 軟體內容

再述前一篇的 1.1.3 firmware 升級方法,並沒有將你的 firmware 完全升級為 1.1.3,實際上是 1.1.1/1.1.2 jailbreak firmware + 部份 1.1.3 軟體。舉例來說,如果手動下載一個韌體後, 把 .ipsw 改成 .zip 後解壓縮,其實裡面包含了一些 dmg, flash, darwin kernel。而其中它把某個 dmg 抽取出來處理後再透過 iPHUC upload 到 iPod/iPhone。所以說它並沒有將其他部份,像是 kernel/driver 的部份升級到 1.1.3 對應的版本。你自己也可以將他透過 vfdecrypt 所產生出來解密的 dmg 打開來看,其實裡面跟一般 Mac OS X 的目錄和檔案 layout 很像,但是裡面並沒有 kernel 檔案。所以說,目前的作法是將 1.1.1/1.1.2 已經 jailbreak 的 kernel 和驅動程式保留住,只升級內部的軟體。所以如此升級的話,結果就是 1.1.1/1.1.2+1.1.3 的混血版本。對於 iPod Touch 來說,比較沒有差別,因為 touch 不會有太多的 driver,像是手機 base band, BT,...。所以如此升級,還是可以保留大部分優點,像是 Application 部份的 bugfixes,以及免 USD 20 元的軟體。

gravatar

iPhone/iPod Touch 1.1.3 firmware 破解

目前網路上找得到的 1.1.3 firmware package maker 破解方式都經由原版 iPhone 1.1.3 firmware,透過已知的 decryption key 把 dmg 解開,然後再安插 1.1.1/1.1.2 的 patch 後再 upload 到 iPhone/iPod 上,前提是機子要是 1.1.1 or 1.1.2 已經 jailbreak 的韌體。 如果是在 PowerPC based 機器上作這件事,需要先將 package maker 的 data 目錄內一些執行檔再重新編譯一次,sdelta & dmg2img 可以在裡面 source 目錄編譯完後,複製到 data 目錄使用。而 vfdecrypt 則可以到 Google Code iphone elite team 去下載,然後把 #include <byteswap.h> 刪除後,gcc -o vfdecrypt vfdecrypt.c -lcrypto 就可以了。 更詳細的教學和畫面在http://www.iclarified.com/entry/index.php?enid=606

gravatar

iBook LCD Display

自從上次 iBook 螢幕顯示壞掉之後,螢幕就是花花綠綠一片。於是就拆掉螢幕,接上大的寬螢幕使用。這樣用起來還蠻有一番趣味,因為 iBook 放在外接螢幕前,就好像只是鍵盤一樣,不會有 LCD panel 擋住外接螢幕視線。但是缺點就是,本來 portable 就變成不 portable。前幾個禮拜看到有人在賣 iBook 零件,剛好有上蓋那部份整個 LCD panel,而且不貴加上運費才不到 2.5k。於是就敗了回來,但是拆 iBook 實在也是一件浩大工程,所以遲了幾天後才正式開工。經過一陣子 iBook 解剖之後,終於把螢幕給裝回去。順便把 Hitachi 的硬碟拆下來接到 PC,用 feature tool 把調整 acoustic level 為 quiet seek mode。因為說實在的,從以前新硬碟裝上去之後,都覺得三不五時常常會有「框搭」的聲音,尤其夜深人靜時候更是明顯。而 feature tool 又只能在 PC 上跑,所以趁這個機會挖出硬碟來改。又一陣兵荒馬亂之後,把整台 iBook 完全組裝完畢。於是 iBook 又有自己的「頭」了,不過,嗯,怎麼每拆一次 iBook 就莫名其妙生出一些小螺絲,記得明明都有鎖到 XD。
ps: 先前順便把壞掉的螢幕拆掉,原來裡面用的是 LG Philips 的面板。

gravatar

SafariPowerToy next stage

基本上因為有些 code 是牽涉到 platform/machine dependency,所以在沒有 x86 機器情況下,我沒辦法去測試,所以就不包這部份的 binary。那功能上的部份就不探討這些方面。
那下一個 stage 是什麼,比較簡單的就是改掉簡繁轉換的某些字元衝突。像是簡體字"只"對應到正體可能也會有“隻“,"斗"或許是對應到"鬥",但是只和斗也是正體常用的字,把他們任意轉換之後,正體文就怪了。另外一招就是學中文 wikipedia,建一堆辭彙轉換。不過當然就是增加一堆 trade off。試想,在內部都用 unicode 表示下,簡繁字體都可以並存,drawing 時候全部丟去辭彙 search/replace,應該不是一個好方法。目前只是單一個字元,並且用 GNU perfect hash 產生出來的表格,至少快很多。那為什麼不直接把儲存的 unicode 內容本質上就改成正體編碼。我想還是不要任意去更動使用者內部儲存的資料比較好,因為目的和用途不知道情況下,這樣可能會破壞使用者在網頁上的輸入和 submit 資料。
另外一個部份,是想實作類似 Firefox 上使用 google toolbar 的 translation 其中一個功能,在滑鼠游標下的英文字彙,可以有類似 Dr.eye 的翻譯效果。這對看英文網頁幫助不少(汗),因為 firefox 的肥大和速度讓我不喜歡在 Mac OS X 下使用,所以有這樣的東西相對就拉近兩者所需功能的距離。如果你有打開 Universal Access 的話,在 Safari 裡面滑鼠移動到某個英文字,然後按下 Ctrl-Cmd-D,就可以直接在內建的 Dictionary 裡面查到英英解釋。這就是透過 Apple Accessibility API 所得到的效果,當然 WebKit 裡面也是有支援 Accessibility API 才有辦法。但是研究了很久 Apple Accessibility API,以及 WebKit 裡面的支援(這部份都還沒 document)。還是沒有辦法只取到單一個英文字,頂多只有整段片段。另外一個方法就是反組譯 Dictionary.app 去看他怎麼抓這部份單字,當然這也是一個苦差事,因為反組譯和他使用的 API 方式都很難懂。所以有對 Accessibility API 有經驗的朋友,希望能夠得到一些分享經驗或知識,就像隔行如隔山,搞不好點破就一切通了XD。

gravatar

Dedicate swap partition for Leopard

Prior to 10.5, it needs to modify /etc/rc.local to mount the disk partition because that dynamic pager is run before mounting volumes.
In Mac OS X 10.5 Leopard, /etc/rc.local does not no longer exist. Instead, lanuchd is used to run some daemons after system start. In /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist, it controls the dynamic swap size and location. In my case, I have a separated partition name ".swap" and will be mounted under /Volumes/.swap. Just run Terminal.app and sudo vi com.apple.dynamic_pager.plist to edit it. Here is a portion of an example,

<key>Label</key> <string>com.apple.dynamic_pager</string> <key>ProgramArguments</key> <array> <string>/sbin/dynamic_pager</string> <string>-S</string> <string>1073741824</string> <string>-H</string> <string>4096</string> <string>-L</string> <string>1073750016</string> <string>-F</string> <string>/Volumes/.swap/swapfile</string> </array> <key>OnDemand</key>
After reboot, the swapfile will be relocated to /Volumes/.swap and size is fixed to 1GiB. note: remember to delete /var/vm/swapfile* to release unused swap spaces.

gravatar

SafariPowerToy 0.2 for 10.5 Leopard

Only available and tested for PowerPC 32-bit Mac OS X environment.
Objective-C 2.0 and the WebKit build of 10.5 Leopard are incompatible with previous build of SafariPowerToy on 10.4. A new version for Leopard is released.
The InputManagers installation is not like that on 10.4 Tiger. Please refer to the manual for the detail.
For developer compatible topics: 1. Objective-C 2.0 does not support

IMP func = [class methodFor:@selector(method)]
to get the method address. It will result coredump in Leopard Objective-C 2.0. Using class_getClassMethod() and method_getImplementation() instead. For example,
Method method = class_getClassMethod(NSClassFromString(@"NSString"), @selector(initWithString));
IMP func = method_getImplementation(method);
2. Method.method_imp is not supported in Objective-C 2.0. MethodSwizzle will not correctly work. Instead, using
method_exchangeImplementations( method1, method2 );
is simple and easy.

gravatar

SafariPowerToy 0.2

SafariPowerToy is now open source in Google code. SafariPowerToy 0.2 supports Safari 3 for traditional/simplified Chinese glyph conversion on-the-fly. However, it contains only Power PC binary bundle. Without the environment of Intel Mac, it is not able to write and test the assembly code.

gravatar

雅虎輕鬆付-ATM還要多付10元

薪資戶頭的跨行提款轉帳都不用手續費, 用露天付款快手還有多種銀行可以選擇. Yahoo輕鬆付就是包給中國信託, 信用卡也還沒上線. 結果選用web ATM付款, 還要多繳10元給yahoo或中信. 下次不用輕鬆付了, 寧願額外開瀏覽器用別家可以抽獎的 Web ATM, 雖然多打了些字, 但是至少省 10 元呀.

gravatar

SafariPowerToy is not compatible with Safari 3

Recently people reports that SafariPowerToy did not work in Safari 3. It is a known issue already. Safari 2.x uses a branch of WebKit of apple build. SafariPowerToy is based on this old WebKit framework. Safari 3 uses new WebKit and includes some new architectures which are not compatible with SafariPowerToy. I know this and some technical issues have to be solved for original functionalities of SafariPowerToy.

gravatar

新聞談話節目還是少看

今天陰森新聞台在講些台灣經濟和科學園區, 不過還是那堆媒體人在胡扯?? 科學園區明明就電子工業, 還說是資訊工程?? 國科會我聽過, 到沒聽說過有關國建會; CMOS 叫做雙氧半導體?? VLSA 叫做超大型積體電路?? 韓國半導體技術落後台灣10年?? 導播應該也請個有知識的人來校稿. 或許有些歷史來龍去脈沒錯, 但是感覺一堆小地方亂扯. 所以還是少看這種談話節目比較實在.

gravatar

Shrink the Disk Image

Trying Carbon Copy Cloner to copy the whole DVD to disk image. Unselect language packages, printer drivers, and Xcode tools; Using block level copy to new sparse image. After the copy completion, you mount the disk image and you can find the used size is < 4.7G but the disk size is ~= original DVD size. Because the underlay partition and file system is still the same as them in DVD. However, just run this 'hdiutil resize -size min xxx.sparseimage'. It will shrink the partition and file system size to possible minimum.
Note: If you delete some file and resize it, the disk size is still not changed because some files might be still occupied in the tail of the file system.

gravatar

黑店與白店的差異

雖然無關主題, 但是還是紀錄一下供其他人參考. 原因是換機油時候發現機車會漏機油, 換機油的地方是在新竹科園三期金X社區金X街上ㄣ轉角的車行(離家近+貪懶). 師父問一下老闆修的話要多少, 結果答案是要 3k, 並且要放三個工作天(修了就沒有代步工具), 還要拆引擎檢查原因. 想到這個大工程我就馬上不修, 上網爬文看別人推薦的機車行, 最後就跑去園區門口 70Y07A (這家sales也是很屌很跩, 如果不用看車試乘只要通電話訂車, 服務態度大概是最好) 隔壁聖洋車行, 花了一個工作天和 1.2k 就修完了, 就換油封墊片這些, 也不用動到引擎. 排除錢的因素, 其實還有其他原因, 這些就是經驗了. 之前都是在金X街那邊換東西, 頭燈壞了, 第一次去換他竟然換錯燈泡(雖然可以用, 但是一直都是遠燈). 第二次是去換煞車皮, 換完前輪在慢速時煞車都會有聲音. 第三次是惰速或低速起動感覺會有頓挫和暴衝感, 是說裡面普利珠磨損, 換了之後剛開始還好, 之後還是一樣有這個問題. 所以以後要更換比較大的零件就去好一點的地方. 當然黑店也不只這些, 例如水果店的 iPod Touch 果凍套要 380 大洋, Y拍或是露天價格不就在 75~140 之間, 頂多加運費加轉帳手續費 200 都不到.

gravatar

iNdependence

摘自 iNdependence 網頁

iNdependence is a Cocoa-based application for Mac OS X which provides an easy-to-use interface for jailbreak, activation, SSH installation, and ringtone/wallpaper/application installation on your iPhone. It's open source under the GNU v2 license.
話說回來 iPod touch 也可以 jailbreak 裝上 iPod applications, 還有 SSH (dropbear). 想到這邊真是吸引人呀.

gravatar

iBook G4 螢幕畫面再次壞掉

繼去年8月初發生螢幕失效(應該是背光壞了)和硬碟損毀, 過了一年多一點點的時間, 螢幕畫面再次壞掉. 不過壞掉的原因應該和 LCD 以及前兩者原因不同, 因為 LCD 每個顆粒顯示還蠻正常的. 壞掉的原因是當螢幕啟動時, 畫面上會出現各種的顏色, 有點像是中國水墨畫加上印象派的畫面, 還會慢慢移動渲染; 等一段時間固定之後, 就不再有反應, 接著出現幾條細直紋. 因為是一直外接 LCD 來使用, 外接螢幕也蠻正常的, 所以到底確切是哪個時間點壞掉也很難推敲. 又因為外接螢幕很正常, iBook 整台操作也沒問題, 推敲應該是內部訊號線路方面出了問題.

gravatar

Vista 初探

因為幫家人買了一台 ASUS U5F,預裝了 Windows Vista Home Basic 版本。順便安裝一些程式所以只好用用 Vista。用起來的結果,感覺是比 Windows XP 難用又耗費資源多了。Vista 主題配色真的很怪,用起來還有看文字,眼睛久了會覺得很不舒服。雖然新增加了微軟正黑體,但是搭配 ClearType 根本就是雞肋,而且感覺更糊,一點也沒辦法跟 Apple 的 font smoothing 比擬。加上一開機就吃掉了將近 700MB 的記憶體空間,不知道電腦是拿來跑程式還是只單純跑 OS + 防毒用的。雖然停用了一些 services 和切換回傳統 windows 佈景主題,記憶體消耗還是 5xxMB,最後也不知道要怎麼降了(IBM X31 XP 開完機和 IBM 自己的公用程式,也不到 300MB)。每次執行一些系統維護程式或是 asus 工具或是自己安裝的程式,都會跳出對話框確定要不要執行,真是有夠煩的(雖然可以關掉 UAC,但是這樣跟直接用 admin 權限跑 XP 沒啥兩樣)。問完一次,畫面上的視窗會 redraw 閃一次,這是什麼 GUI 設計。使用無線網路也是很不方便,可能是被 apple 寵壞了。但是重新掃描都找不到網路訊號,最後停用無線網卡再啟用就可以找到,真是怪異的用法。至於 icon,雖然是新的又更花俏,但是卻很沒特色,沒有統一的色調或主題,比較像網路上到處抓來的 icon 就亂套用。同樣是 1GB 的記憶體,又是 DDR2,使用休眠和回復的速度還比 IBM X31 的 1GB DDR 還慢。所以下個機器還是選 Mac OS X 好了,至於要跑 windows,那只好有空再裝個 XP。

gravatar

Secure Google Mail

Google mail 支援 SSL 的 HTTPS 協定傳輸, 好處當然是內容經過加密, 還有就是可以用 HTTPS 躲過一些像是 web content filter 的過濾來上外面 web mail. 內容都加密了還能靠 http header 過濾什麼鬼東西

  1. 先上 http://www.google.com/ 然後透過裡面的 login 登入自己的帳號
  2. 自己到網址列打 https://mail.google.com/mail, 就可以透過 SSL 連入 gmail
  3. 有簽章問題警告, 不管他直接放行. 這是因為 SSL 的簽章是發行給 www.google.com domain 而不是 mail.google.com, 所以沒關係反正都有加密就好.
還是不行, 直接 nslookup www.google.com 找出的 IP address, 然後去編輯 WINDOWS/SYSTEM32/drivers/etc/hosts 加入剛才的 IP
mail.google.com    66.249.89.99
其他 Docs & Spreadsheet 也可以照這種做法避開被 web content filter 過濾. Web MSN Messenger 也類似可以這樣惡搞.

gravatar

Meeting

Meeting 其實就是浪費時間和消耗體力精神的最好方法. 而 RD 要開會的目的如果是工作上專業有關的就算了, 比如說系統架構, 程式方面等等, 並且確保程式出來是 spec 和 user 需要的東西. Spec meeting 我倒是覺得改叫 spec 同意大會或是批鬥大會算了. 一方面 RD 在 spec meeting 來說, 主要應該負責看這種架構合不合理, 容不容易做, 需要多少技術跟工作時間. 但是往往在 S 公司 RD 是 design spec 全權主導的對象.TM 收集了 user requirements, 本來 spec 就是他們的工作卻一直都落在 RD 身上, 所以 RD 不僅只要會寫 code 也還會要開 spec, 還要制定 use model; 最好 programmer 身兼 layout designer 還知道他們需要什麼, 要怎麼操作比較方便. 開完一場 spec 下來其實根本也還沒完全定案, 會中討論的不定性還要跟 customer 或是 TM 自行再去確定.
總歸簡單的來說, spec meeting 就只是批鬥大會, 一堆 TM 在裡面爭論各自的論點. 不過請你們自己 TM 部門都確定了 user requirement 和 use model 再來請 RD 做完整 design spec 不是更好. RD 作 use model & spec 只是更浪費時間, RD 要寫 code 改 bugs, 找 TM 問 spec 常常找不到人. 所以說 TM 自己忙得沒時間寫 spec, 要 RD 寫只是再繼續拖累 RD schedule. 我只能說我乾脆先幫你們 booking 時間讓你們自己去開會去爭論, 然後結束了再 call RD 進去整理你們的定案.
最扯的是連 spec 或是 use model 都不知道, 只有 user requirements 的一些 description, 上面高層就排定說這個版本要做這功能. 如果 spec 有問題或是根本不需要, 是不是不用作了, 所以這個 release 階段個人的 schedule 就鬆了? 我猜也不是, 反正都排了就大家批鬥完, 看誰認輸誰勝出, 就照那個做. 沒有達到 user 真正要的, 沒關係下次出 patch 再繼續改.
RD: patch 只有一個月的時間又有一堆其他 bugs 要改, 這個 user 要的 model 根本跟之前 spec 提的不同, 怎是 patch?
Head: 有什麼完全不同嗎? 不就是把這個改成那樣? (真是xx比雞腿. 見識一下 Oral programming)

gravatar

Update the firmware of SE phones

我的手機是 SE Z520i,因為 Sony Ericsson 有推出軟體更新的服務,在他們的網站就可以下載這樣的軟體,使用者在家裡可以透過傳輸線或是底座,來更新手機裡面的軟體版本。更新服務的軟體大概有 40~50 MB 之大,照 SE 的慣例,這些工具程式都是 IE/ActiveX/Flash/Java/JNI 的合體,所以這麼大就不用大驚小怪。
SE 的手機,以我的 Z520i 來說,關機後按住 "C" 並且接上傳輸線,這時候手機在 Windows 裡面就會被辨識為 USB Flash Device 而非 Mobile Device。所以這類更新程式就是在這種模式下更新手機內部的程式,但是並非所有 SE 都是如此,我看過別的組合是按住 2 5 兩個數字。
按照著 SE 軟體更新服務的程式,一步一步照著螢幕的說明指示往下作,就可以更新完成了。但是之間軟體更新時候花費的時間通常需要不短的時間,雖然接上傳輸線,但是在 USB Flash Device 模式下,是不提供充電功能給手機,所以更新軟體前最好把電池充滿,可以維持半小時以上。然而最大的風險還是存在,就是在更新期間更新失敗或是中斷,那麼手機可能就無法再正常使用。雖然還是可以透過 "C" 來進入 USB Flash 模式,但是 SE 更新服務的軟體會判別手機內部軟體已經是最新,不會幫你再次更新。所以想要透過再次更新來強迫覆寫上次沒有更新完全的資料是不可能的,SE 這樣作也很奇怪,一旦手機更新失敗就無法使用,而且沒有提供復原方法。使用者可能就得送修,遇到不會用的維修工程師,可能是直接換機板,如果過保固可能需要花上一筆錢; 就算沒有過保固但是他判斷是人為因素,可能還是得要錢。
很不幸的,我的手機就是在更新到一半的時候,不知謂何就連接中斷,軟體更新服務的程式就無法繼續更新,繼續使用重複更新就跟上述一樣,他判斷我的手機已經是最新版的軟體,不再繼續更新。之後就拿去西大路的 SE 直營店請他再次更新軟體,但是結果也是他們沒輒,一個店員忙著聽 Windows Media Player 裡面的播放清單音樂,一個店員則是拿進去看了不到一分鐘就說他也沒辦法修。還好沒辦法修,不然因為 SE 只有保一年,所以維修的話要付 300 元。不過 SE 自己的工程師對於手機都沒救,看來直接裁撤掉省點人事和店面支出算了。但我的手機是神腦代理,所以有兩年保,他建議我去中華電信隔壁的神腦維修處,直接換機板應該就沒問題了,不過神腦維修處只有營業到晚上七點,對於要上班的我實在是也沒辦法,況且機板本來就沒問題,要是換一個良品機板之後碰到更多問題不就更慘。
後來其實覺得網路上 SE 手機方面的軟體和工具其實不少,如果可以自己更新就好了,也不用換機板。最後找到 Phone XS++ 可以 flash 手機的韌體,再找 Z520_R3J017_FS_TAIWAN 和 Z520_R3J017_MAIN_TAIWAN 檔案,R3J017 應該是台灣版最新的韌體,分別為 FS(檔案系統) 和 MAIN(主要程式),然後透過 XS++ 把這兩個更新寫到 Z520i 裡面,更新時間大概十來分鐘,更新完之後拔電池重新開機,手機又是一尾活龍沒問題了。Phone XS++ 和韌體檔案都可以透過 google 找得到,而且程式檔案才不過幾 MB,跟 SE 更新服務比起來真是小多了,而且 SE 更新服務還是得再透過網路下載更新檔案。另外 Phone XS 還可以上傳檔案到手機檔案系統內部,放到平常手機不給你放的資料夾,或是把手機內不給你刪除的檔案像是圖片或是預設音樂,直接透過他刪除掉。此外還可以把看不到的檔案,像是相機照相的聲音檔給殺了,如此拍照時候就沒有任何聲音。總之,這樣以後更新失敗就不用花錢了,也比較方便自己更新,不用每次都用 SE 那麼肥又麻煩功能又少的更新服務程式。

gravatar

SSH X-Window Forwarding

SSH 提供了 X-Window forwarding,也就是把遠端機器的 X application 畫面設定到自己 local 的 X Server 來顯示。通常就是ssh -X hostname之後,在遠端機器就會幫你在環境變數加入 DISPLAY=xxx.xxx.xxx.xxx:10.0 這樣的設定。之後執行 X Window 應用程式,畫面就會透過 SSH tunneling 把 display 顯示到自己的機器上。但是如果是 sudo 成別的帳號,可能會遇到這樣的情況。

X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown).
明明就是可以,但是 sudo 之後就不行了。這時候,只要在本來的帳號下,使用 xauth list ,然後他可能列出好幾行。
foo.bar:2 MIT-MAGIC-COOKIE-1 4ef2e2cefdb15f6e9a44a7e698ba0584
foo.bar/unix:2 MIT-MAGIC-COOKIE-1 4ef2e2cefdb15f6e9a44a7e698ba0584
foo.bar:1 MIT-MAGIC-COOKIE-1 5a3617cc83069d0af6684a8aeedca705
foo.bar/unix:1 MIT-MAGIC-COOKIE-1 5a3617cc83069d0af6684a8aeedca705
foo.bar/unix:12 MIT-MAGIC-COOKIE-1 175a25ba1e7b9b3c82272bc097094cad
foo.bar/unix:10 MIT-MAGIC-COOKIE-1 e50fadee8f3fc8492fc095539e3ac93d
foo.bar/unix:11 MIT-MAGIC-COOKIE-1 25195e4d102ac24b4ea943806382ea7c
這時候就挑其中一個對應到目前 DISPLAY 設定的,比如說 :10.0,就把 foo.bar/unix:10 那行整段 copy 起來。然後再 sudo 之後,執行 xauth,然後 add foo.bar/unix:10 MIT-MAGIC-COOKIE-1 e50fadee8f3fc8492fc095539e3ac93d的方式,再 exit xauth。之後如果沒有設 DISPLAY 就手動設定一下。然後就可以透過這個 SSH X Forwarding 來使用。

gravatar

Safari 3.0 beta

MacOSX 上的 Safari 出了 3.0 beta, 更驚人的是出了 windows 版本. 雖然說支援 Windows XP/Vista, 但是 Windows 2000 還是可以安裝, 也跑得很好. 只是說真的是 beta 會經常 crash. 但是看到的使用畫面, 真是驚為天人, 字型跟 Mac 上的細緻和精美程度完全讓 windows 其他字形沒得比, apple 在人機介面與互動方面能力果然厲害,. 而且我也沒有安裝這些什麼黑體字型, 真的是很好玩. 而且在我的 win2k 上也沒有出現別人 screenshot 的黑體夾雜標楷或是細明的畫面; 另外 windows 的 menu bar 在 window 上方, 用起來還真不習慣; preferences 的 Appearance 裡面的 Font smoothing, 也出現在 Safari 裡面的 Appearance, 表示 apple 自己用自家的 font rendering engine, 不用 MS anti alias/clear type.
另外隨著 windows 版的推出, opera watch 也寫出新的文章, 質疑 safari 的速度跟記憶體消耗能力. 長久以來, opera 就致力於這方面的努力, 並以 IE & Firefox 為箭靶. Safari for Windows 的推出, opera 又可以多一項正式的箭靶. 我承認 opera 真的快, 但是記憶體用量的確也比 firefox 省, 但是真的很省我很質疑, 因為就有用到爆出幾百 MB. 只要是軟體就有 bugs, 就可能有 leakages. 唯一辦法就是用久了一段時間重開. 另外 opera 在 mac 上的中文字體因為用不同的字型而產生上下標的中文結果, 還有某些 firefox 可以看的網頁 opera 甚至不能看. 所以能寫的就拼命評比 speed & memory, 稱讚自家 opera 多棒 :P, 不過有比較才有進步.
Update: 常常在 form input 輸入東西時候掛點, 什麼 DummyWindowless 的, 靈機一動把 auto fill 都關掉, 終於比較正常了.
Update 2: 似乎不支援 https =_=

gravatar

HiNet Radio List

HiNet Radio 改版了,原本使用 Hinet Sucks! Radio Widget 會聽不到,既然 HiNet Radio HTML 不支援非 WMP & IE 的瀏覽器,那只好自己來。
ASIAFM衛星音樂台
Apple line 蘋果線上
BestRadio 台中好事903
BestRadio 台北好事989
BestRadio 花蓮好事935
BestRadio 高雄港都983
HitFm 聯播網 台中91.5
HitFm 聯播網 高雄90.1
HitFm聯播網台北91.7
KISS RADIO 南投廣播
KISS RADIO 台南知音廣播
KISS RADIO 大苗栗廣播
KISS RADIO大眾廣播電台
KISSRadio 網路音樂台
中廣古典網
中廣流行網
中廣音樂網i radio
台北之音經典音樂台
台北愛樂
台灣之音-音樂
太陽電台
奇美古典音樂網
台灣之音-華語
復興廣播電台 短波網
復興廣播電台 第一網
復興廣播電台 第二網
正聲台北調幅台
正聲台北調頻台
漢聲光華網-中波
漢聲光華網-短波
漢聲廣播電台
漢聲廣播電台全國調頻網
ICRT
台灣之音-FM
台灣之音-亞洲
台灣之音-歐美及方言
ASIA FM92.3亞太電台
ASIA FM92.7亞州電台
GOLD FM-台中城市廣播
GOLD FM-台北健康電台
IC之音
佳音廣播電台
佳音電台2台
全國廣播
台中廣播
台北廣播電台- 都會資訊頻道
台北廣播電台喔海洋頻道
台視數位廣播
大千電台
大愛網路電台
宜蘭中山電台
環宇廣播
警廣長青網
飛碟電台
中廣客家頻道
大漢之音
寶島客家
寶島新聲廣播電台
新客家廣播電台
高屏溪客家電台
警廣全國交通網
警廣台中台
警廣台北台
警廣台南台
警廣宜蘭台
警廣新竹台
警廣花蓮台
警廣高雄台
台灣之音-華語
復興廣播電台 短波網
復興廣播電台 第一網
復興廣播電台 第二網
正聲台北調幅台
正聲台北調頻台
漢聲光華網-中波
漢聲光華網-短波
漢聲廣播電台
漢聲廣播電台全國調頻網

gravatar

FON AP 另外的用途

最主要的其他用途就是拿來當 SSH server,有了 SSH server,就可以做 SSH tunneling。雖然 FON AP 內建的是 dropbear 0.48,不過還是可以拿來玩(當然要先把 FON AP 破解掉才能有這功能)。因為在外面用別人的 FON AP 或是免費無線網路,可能會有安全上的疑慮,比如說有人在中間抓封包,或是某些網路功能被禁掉,blah blah。所以用 SSH 加密先連到自己的 FON AP,所有封包都透過自己的 FON 再經由 ISP 出去。 自己測試的結果是,用 "dynamic" port forwarding (ssh -D),也就是可以讓 Applications 透過 SOCKS 的方式,會非常的慢。甚至用 MSN/gaim/adium 可以連上 server 去一直會無法正常完成登入程序。(wireshark 抓到的封包顯示的確有透過 FON 與 MSN server 連線並且取得 contact list,但是卻會一直不會完成登入過程)。使用 browser 透過 SOCKS 瀏覽普通網頁,甚至會停頓。 如果使用 local port forwarding (ssh -L) 然後指定到 proxy.hinet.net:80(前提是用 hinet ADSL),則一切正常,速度上也很好。使用的程式也都可以正確上線和瀏覽。但是缺點就是需要用 http proxy 的方式,而且無法用 CONNECT method,也無法像 SOCKS 那樣由 Applications 指定直接連到目的地。 所以,反正大部分都是用 MSN & 瀏覽器而已,所以第二個方法就沒問題。而且完全透過那一台小小的機器就可以完成,不用再開電腦或架設 server。 如果是跑 OpenWrt 或是 dd-wrt,裡面甚至內建有 DynDNS,以及 openssh-server。有 DynDNS 就可以很輕鬆知道自己動態的 ADSL IP。另外 openssh-server 對於 "dynamic" port forwarding 可能有比較正常吧我猜。

gravatar

Notes on Mac OS X

Flip4Mac 2.1.1.70

• Added support for Windows Media 9 Advanced playback. • Improved ASX handling. • Improved support for MPEG 4 playback. • Resolved some issues related to 2-pass VBR encoding.

Ignore case with Teminal tab completion

echo "set completion-ignore-case On" >> ~/.inputrc

gravatar

中文的 Opera 網站

Opera 推出了中文(chinese)和台灣(taiwanese)的網站 http://tw.opera.com/。

gravatar

Hash Table with Regex

Hash table 是 computer science 常用的一種 data structure。在已知 key 的情況下,可以很快的找到相對應的 value。通常這個 key value 可能是數值,pointer,或是字串;通常字串會經過 hash function 算出一個數字來當作的 key。那如果 key 是 regular expression,當程式在做 lookup 動作時,是拿一串文字去 hash table 找,是否有一個 regular expression 的 key 符合這串文字,並且找出相對應的 value。例如

hash[ "^abc.*$" ] = 1;
print hash[ "abcdef" ]; // output 1
問題可能在於 regular expression 怎麼做 hash function,並且由文字去 lookup 得到相對應的 regular expression 為 key 的 value? 這個問題蠻難的,不過看到的這個應用,倒是並不會完全都是 regex 特殊字元(像是 ^[a-zA-Z]+$)。應用的例子,可能大家都有在用,就是 Firefox add-ons 的 AdBlock Plus。filter 內有上百個廣告 URL 的 patterns(雖然它只提供 wildcard 字元,但是內部是轉成 regex 來 matching),如果使用者 subscribe 多個 filter list,甚至可以多到上千個吧。當 Firefox 瀏覽一個網頁時,少說幾十個網址需要去跟這幾百個 patterns 做比對。當然最簡單的方式就是,每遇到一個網址,就拿去從頭到尾地把 patterns 拿來作 regular expression 的 matching。當然比到了就是可能 white-list or black-list 裡面的一項,看要阻擋還是放行;沒有比到當然就是放行。Regular expression 實際上在比對時,當然所花費的成本比一般 string compare 高很多。 AdBlock Plus 怎麼做呢?其實說穿了就蠻簡單的,事實上它並不是真的完全拿 regular expression 來做出特殊的 hash function。而是用 regular expression 中內含一般文字,像是 "http://ad*.udn.com/*" 這種(會先轉成 /http:\/\/ad.*\.udn\.com\/.*/ 的 regex 格式供 javascript 比對用),裡面穿插了一些普通的字串。而 AdBlock Plus 它會從中去找出這些特徵(它是從 pattern 後半段去找,因為通常大部分 patterns 前面開頭不是 http:// 就是 *.udn.com/* 這種,從頭找對 URL 似乎沒有好處),並且長度是 8 的特徵字串,像是 ".udn.com",並且不包含 regular expression 特殊字元(當然可能找出來不只一種,像是 "udn.com/" 也是 8 個字)。然後就拿這段文字當作 key 去存 hash table。之後瀏覽 udn.com 內容,每次做 URL 比對時候,例如 "http://ad1.udn.com/RealMedia/ads/something.gif",它就從字串的頭開始,取每一段長度 8 的字串出來給 hash table 去找,所以它依序是給 hash table 找了 "http://a", "ttp://ad", "tp://ad1", ... 到了 ".udn.com" 終於在 hash table 中有找到東西,然後當然就把相對應的 regex 拿來比對是不是符合這個 filter pattern。 其實說穿了,前面的問題並沒有解決,如果是這個例子,用上面的做法就非常不適用:
hash[ "[0-9]+" ] = 1;
hash[ "[a-z]+" ] = 2;
hash[ "[A-Z]+" ] = 3;
print hash[ "abc" ];
事實上後面的做法,並不是真的拿 regular expression 去算出 hash 來作 pairing,而只是剛好在 URL filter patterns 上有這種特徵,就是內含部份網址或路徑,也是因為有這些特徵才比較好辨別哪些是正常內容,哪些是廣告才會有的 URL。利用這種特性,剛好去找出裡面的一些 signature 來建立 hash table,用來作為之後比對時加速尋找真正要比對的 patterns,並不是盲目地完全都去一一比較。 Ref 1: Perl Tie::Hash::Regex Match hash keys using Regular Expressions Ref 2: How does Adblock Plus process its filters and which filters are faster?

gravatar

五一勞動節

五一勞動節,放假一天。工程師節(6/6)沒有放假。所以是勞工(字面解釋 XD)。 記得距離上次 patch 才沒多久,這是又準備要 Code Freeze 進 QA cycle,不過沒有準備來得及 resolve,也不太想那麼趕。雖然說上次是 patch,不過我怎麼感覺做的東西是 new item or enhancement,一點都不像 "patch"。

gravatar

D-Link DI-524 Source Code

DI-524 是一款低階又功能完整的 wireless/broadband router,在英國的 d-link 網站有提供 DI-524 的 source code 可以下載(Technical Support->Download->Product->DI-524),他的授權是以 GPL 釋出,其中核心就是以 Linux 為基礎。不過他所針對的硬體版本應該是 revision E1 的機器,在台灣的機器應該都是 revision A 或 B 開頭的機器。

gravatar

Google Spreadsheets 要多加油

用 google 找 spreadsheets,可以在右手邊發現廣告欄位。有一個叫做 Zoho 的網站,倒是做了一堆 office 的產品。除了Writer、Sheet、Show,還有 Project、CRM、Planner、Mail 等等一堆,當然 google 也是有,像是 gmail, gtalk 這些。另外 google 在幾天前幫 spreadsheets 加入圖表功能,當然要看一下這家產品有哪些,還好有 sample sheets 可以看一下裡面的功能,首先,界面幾乎蠻類似 office excel,然後圖表種類也是幾乎都有,中文也沒問題,操作起來速度感覺上比 google spreadsheets 還快,還有 API 可以給外部程式來 view、modify、upload/download。在 Spreadsheet Roundup 評比裡面,zoho sheet 排第二名。 再來就是 Safari 可不可以使用,結果是不行,進得去但是看界面就知道無法使用。WebKit 問題比較少,主要是 cell 對齊,使用上可能會有問題。

gravatar

RD = Redo & Debug

聽說 SS 社的 L 大作在 '05 狂 crash,銷售也不佳,後來 training 以及 code review 時機乎最重要的重點就是,注意 pointer。只要遇到 pointer 的情況,有 * or -> 就很容易被 focus。例如 function body 前面加入對 pointer 類型的 parameters 做 check,只要情況不對馬上謝絕掉。或許這招不錯用,至少可以馬上降低 crash 次數,畢竟幾乎所有的 invalid segment access 都可以避掉,立竿見影。至少這樣可以避免得到 crash comment 一枚,因為程式沒到該有的功能所以得到 bug functional。(註:只要列出來 call stack 就是 core dump,所以單純 return 沒做事至少不會出事)。 不過源頭呢?為什麼會有 invalid address 傳進去?當然就是程式有 bug,一定有地方出錯了,所以才讓那個 bug 一直存活下來,然後還傳遞給其他地方使用。現在好了,大家看情況不對,就盡量謝絕掉。那最後一定還是會出錯,只是出錯就會錯在無法避免的地方。可能最終的源頭跟最後出鎚地點相差十萬八千里,但是 AE/QA 就會看 call stack 或執行過哪些 commands 就把 bug submit 給誰。更慘的是,如果是遇到無法 reproduce 的 bugs,更是查不到來源,因為無法再重複一次,但是他就是曾經 core dump 出來給你看。最後只是 RD 猛去 disassemble 那個位址的 assembly code 來看,然後找相對應 source code 那邊是否有 pointer access 沒有保護好或有 bug。 再來是,大家一定遇過 core dump,最常見的就是 windows 的程式執行錯誤。或是 firefox 遇到 crash 也會有。Apple 也有 crash report 功能。裡面有什麼東西,大家一定看過,不外乎就是 call stack、thread list、module list、environment variables、registers、stack dump、memory dump。就連 unix-like 的環境,也可以產生一個 core file。最神奇的是 SS 社,雖然有 segment fault handler,雖然有 coredump file,但是其實裡面是 call stack 而已,連個 registers values、stack dump、memory dump 都沒有。如果是單純的筆誤 bug,很容易看一下相對應的 source code 就查到了。但是大型軟體下,又無法 reproduce,什麼都沒有 dump,只有 call stack function chain,查得到來源才有鬼。

gravatar

踩到 WebKit 地雷

更新了 WebKit nightly build,結果使用出現一些小問題,其實也不是大地雷。第一個是,可以看到網頁內容但是上面的連結或控制項卻無法用滑鼠點選。關掉 tab 或是 reload 都無效,只有重開 Safari。第二個地雷是,本來可以用的 google spreadsheets,現在進去變成整頁的觀看模式,無法編輯。 第一個是不定時炸彈,但是幾乎很少遇到;第二個問題就算用原廠 Safari 的 WebKit 也無法用 google docs。再來翻翻看有沒有以前的 nightly build history 好了,看看之前的 nightly build version 再不再。

gravatar

Safari + WebKit Core

找到兩全其美的辦法了,因為跑 WebKit 的話雖然也是 Safari 的外殼,但是某些 plugin (Input Managers) 無法使用。後來用了類似 WebKit 在 WebKitTools/Scripts/run-safari script 的方法,在環境變數裡面增加了:

export DYLD_FRAMEWORK_PATH=/path/to/WebKit/framwork/...
export WEBKIT_UNSET_DYLD_FRAMEWORK_PATH=YES
其中的 path to WebKit framework 就是去下載 WebKit 後,進去 WebKit.app/Contents/Resources 可以看到 JavaScriptCore.framework、JavaScriptGlue.framework、WebCore.framework、WebKit.framework 那些檔案,把路徑只到這個 Resources 就可以了。 然後接下來只要下指令 open /Applications/Safari.app 一樣是跑 Safari 但是骨子裡卻是新版的 WebKit,同時一些 plugins 也可以繼續使用 :D ps: 目前似乎有的小問題的就是中文輸入選字時候按空白鍵,同時會被當成網頁按空白鍵,也就是下一頁的功能。不過問題還好也影響不太大。

gravatar

blogspot

主旨大概就是以後將以jclin.blogspot.com為主。如果您使用的 feed URL 是 feedburner 所提供的,那就不必做任何更新。
最先的原由是,blogspot.com 在 google 整合之前,提供的服務其實也還蠻陽春的,沒有 category or label,layout 方面也是蠻簡單需要看手工打造細節。所以在種種情況之下,在 wordpress.com 有提供 WordPress 的 blog services,還有 category、trackback、還有一些不錯的 theme 可以選。於是就在申請到 invitation 情況下,將主要的作業都搬到 wordpress.com,而使用 gslin’s copyblog 將文章貼回 blogspot 去。
但是後來也是有些問題陸陸續續產生,像是 wordpress.com 速度過慢,最差的遭遇就是上次恆春地震,震壞了幾條海纜,但是 blogspot 和 google 還上得了速度也不錯,wordpress.com 就連不太上。平常使用的話 wordpress.com 速度上感覺也沒有 blogspot.com 來得快。另外一個問題是 spam 過多,雖然 wordpress.com 有 anti comment spam 的 plugin,但是誤判或是需要手動認證的情況還是不少。
再來自從 google 和 blogspot 整合之後,也提供了 label 功能,也有比較進階的 layout 處理方式,感覺實在是好很多。另外也是 copyblog 的問題因為兩邊無法有 category & label 的同步,導致複製的文章過去那邊都是沒有 labels。所以在一段時間的感覺和判斷後,就又想把主要的作業搬回 blogspot 去。這邊就變成使用 copyblog 方式的備份站。
所以最後等有空把 wordpress->blogspot 的 sync script 改回 blogspot->wordpress 的方式,在這之前,這兩邊的文章可能先會出現不同步和分歧的現象。
另外順便廣告一下,還有新的 wordpress.com invitation 一枚,如果有需要者請私下來信。

gravatar

用 WebKit 後就不想換回去了

WebKit 當然就是 Safari 的 kernel,以前使用 WebKit nightly build 的經驗是,偶而看普通的網頁就會當掉,實在受不了所以只能忍耐用 Apple build 的 WebKit 版本。最近因為在玩 Yahoo! Fantasy baseball,常常會去看一些畫面 layout 比較複雜的頁面和 mlb.com,比較驚訝的是最近開 top 一看發現 Safari 的 RPRVT (Private Memory) 竟然高達 697MB,quit 掉 Safari 後就撿回來不少記憶體空間。第一次遇到這種情況,之前最高也是才 300MB 出頭。所以自己的使用習慣是用一段時間的 Safari 就會 quit 然後重新啟動。不過說也奇怪,把 WebCore cache disable 以及自己寫的 Safari Plugin 來設定 NSURLCache 的 memory/disk size 竟然也限制不了 Safari 一直長大的問題。所以這個問題也就無解,並且不了了之。 最近使用 WebKit 的經驗是感覺蠻穩定了,而且 memory leakage 似乎不會那麼嚴重,至少把頁面該關的都關掉後,就回復到蠻基本的 RPRVT 用量。並且至少新的 WebKit 也可以上 docs.google.com,就不用再開 Camino 來應付。缺點大概就是一些 Safari Plugin 不能用,比如說 SafariBlock,就無法阻擋廣告的出現。

gravatar

Solar Powered Wii

在 Slashdot Tom's Hardware 上看到的 Solar Wii,影片在此。用太陽能板驅動 Wii 和 LCD panel 來玩 Game。Wii 真是太省電了,用太陽能就可以玩了。不過缺點是要在室外並且有太陽的地方,反而太陽太大的亮度會使 LCD 看起來的畫面看不清楚或是看不見。 要是像 PS3 那樣假設需要 peak 300Watt per hour,那麼如果總共賣出個 500 萬台,同時使用就相當於地球上用電量增加了 1500 MWatt。雖然不可能同時使用,而且也是分散在各個國家,但是消耗的能源總計是非常可觀的呀。 BTW,Opera browser 上竟然有個密技是,在網址列輸入 /. 就可以會直接連線到 slashdot.org。真是非常貼切實際網址而且也對需要的人非常有用。:P

gravatar

memory-based storage notebook

傳言不久會推出沒有硬碟的 notebook,包含 apple macbook/pro。當然用 memory based storage 是有比磁性轉盤的儲存方式多不少好處,像是省電、安靜、體積、速度等等。不過這篇 Flash memory-based Apple Notebook rumor: PCM Rather Than NAND 有提到非 NAND 方式的 memory storage。PCM 就是 Phase Change Memory,看起來有不少項目是比 NAND type 更優。光是速度上,比 NAND 快 500x 的讀寫速度;又更可靠,可抹寫 1 億次。當然硬碟的致命缺陷大都是機械原因,像是壞軌、磁頭 crash、或是伺服馬達掛掉,裡面的資料就岌岌可危。而原本的 NAND/NOR flash type storage,則是會繼續比較在常用在 removal storage。

gravatar

SETI 找到東西了

在 Slashdot 上看到的,SETI Finally Finds Something。看到標題大家應該都會期待,到底是真的假的找到什麼外太空生物之類的。其實不是,是因為 SETI@Home client 會跟 server 回報的機制,讓他們可以追到被偷的 laptop 目前正在使用的 IP,進而縮小可能範圍或地區而追回電腦。
不過的確這也是找外星文明之外的一項附加價值和功能 XD;另外這也告訴小偷先生,有點常識的話,應該避免讓電腦直接接上 Internet,盡量把可能會洩漏 IP 的程式刪掉或砍掉,最好是重灌是吧。

gravatar

nVidia GoForce

Source: New cell phone chip from NVidia,沒錯,我沒寫錯,不是 nVidia GeForce 顯示卡晶片,而是 cell phone chip。nVidia 也加入手機晶片的戰場。晶片功能包含有多媒體和 3D 加速、WiFi、H.264 解碼、相機以及聲音部份的管理。重點是 iPhone 內會使用一顆這樣的 chip。

gravatar

Replace the CPU of Mac Mini

在 HardMac 上刊出的文章,如何更換 Mac Mini 的 CPU,Step by step 的教學。從 Core Solo 到 Core 2 Duo 都可以用,還有 1.5Ghz Core Solo 到 2.33Ghz Core 2 Duo 的效能比較。

gravatar

MacBU 10 週年

Microsoft 的 Mac BU 慶祝 10 週年,在建築物上的 icon 畫。

gravatar

Blogger Custom Domain

今天仔細研究一下 blogger custom domain 怎麼使用,然後就把很久前在 yahoo small business 買的 jclin.org domain 拿來用。所以就直接改成 blog.jclin.org 或是 jclin.org 都可以直接看到 blogspot 的文章。並且原本的 jclin.blogspot.com 還是依然有效。另外趁機也把 template 換一下,從此也可以透過簡單的 layout 編排方式來修改版面。另外 page rank 似乎也沒了,目前首頁上看到的是 0。

gravatar

Choices of Guest PC in Virtual PC

很多網站包含 Microsoft Virtual PC 都推薦很多加速的方法,包含檔案系統使用 FAT32。理論上,FAT32 原理簡單、磁碟上的檔案配置結構也簡單,所以對於 Guest PC 的 OS 來說,這部份的 file system driver 應該會得到最佳的效能,因為一切都很簡單。但是我覺得事實上並非這樣,原因在於真實 PC (很老舊的 CPU 約只有 800Mhz,配上當時很快的 ATA66 主機板)上的 Windows XP,使用 FAT32 所得到的開機速度,跟後來轉換為 NTFS 後的結果,明顯發現 NTFS 的開機速度就是比較快。
其實可以想想看,FAT32 不管是原理或是磁碟配置結構都很簡單,但是對於檔案和內容尋找、儲存並非最好。而且 Virtual PC 裡面的 Guest OS 都是以 Host 的 image 檔案當作磁碟,存取速度並不快,所以即使使用最簡單最省 CPU 運算的 FAT32,但是卻花掉不少時間在 disk access,反而是得到更大的 overhead。因此若能選用 NTFS,實際上 Guest OS 在尋找檔案和讀取內容,都會比 FAT32 來得快。因此下了決心把 Virtual PC 的 Guest PC 的 Windows XP 內的磁碟,轉換成為 NTFS,也的確感覺開機速度變快了。其他類似非使用實體硬碟當作 Guest PC 硬碟對象的,應該也是會有類似結果。
另外使用 Gparted 把 VPC 本來預設的 16GB dynamic size Hard Disk image,重新 resize 到 4GB,然後用 Ghost 把他複製到另外一個 fixed size Hard Disk image 上。在 Ghost 複製過程中,發現 Virtual PC 的磁碟效率其實蠻低的。大概 90 MB/min,換算回每秒大概也才 1.5MB。現在隨便一顆 ATA100 的硬碟實際物理讀取和傳輸速度最少都應該可以 30-40MB/sec 。所以 dynamic size image 和 Virtual PC 裡面硬碟傳輸速度其實蠻低的。
沒有錢買 intel x86 的 mac mini 或是 mac book 來用 boot camp 或是 parallel,只好繼續用 iBook,哈。反正也很少需要啟動 Virtual PC 來開 IE。

gravatar

Paint.NET 3.0

雖然我一直在用 mac, 但在公司的環境下, 還是常常需要用到 windows 上的繪圖軟體. Photoshop, Paint Shop Pro, GIMP 都太肥了又太複雜, 感覺不適合. 偶然之下找到 Paint.NET 覺得還蠻簡單符合需求的. 今天看到 Paint.NET 有 3.0 版出現了, 下載之後卻不能安裝, 原因在於他最低需求是 XP SP2. .NET Framework 的軟體需要下載 5xMB 的 runtime libraries, 還宣稱跨平台 (Paint.NET 稍微修改就可以在 Linux 平台的 Mono 上執行). 公司的電腦又不能隨便安裝或升級成 Windows XP, 所以下載的 Paint.NET 3.0 連安裝都成問題. 微軟自己宣稱的跨平台最後是跨到哪邊去了? 最後其實還是個拼命讓 customer 升級成 XP, Vista 的晃子.

gravatar

FON AP: Always Turn On SSH

在 /www/cgi-bin/webif/upgrade.sh 中,有這樣的步驟,會把原先設定的一些資料保存下來,不會因為 FON AP 使用 web 管理界面的 upgrade 把整個 NVRAM 給 flash 掉而消失。而設定要怎麼保存?

tar czf /tmp/config.tar.gz /etc/config/
mtd write /tmp/config.tar.gz config > /dev/null

簡單的說就是把 /etc/config 整個 tar 起來後,透過 mtd 把設定寫入,之後 upgrade 完成後,應該也是照反向方法把設定取回。所以先前設定的像是 public/private SSID、WPA 密碼、network 設定等等,都會保存著。所以我想透過 /etc/config 裡面的修改,嘗試看看讓原本修改 /etc/init.d/dropbear 和 /etc/firewall.user 的方式,變成不需要更動,而依然可以保有 SSH login 功能。原理在於 /etc/config/openports 這個 script,是提供 port forwarding 的設定,以下是我嘗試的修改:

#!/bin/sh
. /etc/functions.sh
iptables -t nat -A prerouting_rule -i $1 -p tcp –dport 22 -j ACCEPT
iptables -A input_rule -i $1 -p tcp –dport 22 -j ACCEPT
[ ! -f /var/run/dropbear.pid ] && /usr/sbin/dropbear
# 在 web 上設定的 port forwarding 會被 append 在後面
open_port $1 22 192.168.10.10 22 udp
open_port $1 22 192.168.10.10 22 tcp

/etc/config/openports 是在啟動時候,由 /etc/init.d/S45firewall 所執行,啟動的命令列大概是 /etc/config/openports eth0。所以 iptables 會把 eth0 的 port 22 打開,同時如果發現 /var/run/dropbear.pid 不存在,則去執行 dropbear 來啟動 SSH daemon。

註:單純理論上測試,還沒真正完全 upgrade 0.7.1r2 ROM image 試驗過。

gravatar

啟用 La Fonera 的 SSH

參考打開0.7.1r1的SSH,由於 0.7.1.1 (0.7.1r1) 的 Firmware 在 Router 網頁管理界面上有漏洞,因此可以透過 HTML Form 的方式把指令 submit 給 AP 上的 CGI 執行,依序先讓 iptables 允許 port 22 的連線,接著把 SSH (dropbear) deamon 啟動。接著就可以透過 ssh 連接到 FON 然後登入。
但是,我收到的 AP firmware 是 0.7.1.2 (0.7.1r2) 版本,這個漏洞已經被修掉了,所以沒辦法如法炮製。但是看到不少論壇或是 BBS 有很多人說無法由 0.7.1.2 downgrade 到 0.7.1.1,但是我試了卻沒有問題,可以回到 0.7.1.1 的 firmware。首先下載 0.7.1.1 的 firmware,官方網站已經不提供這個版本下載,但是可以透過 google search 找到例如這個網站,裡面有不少版本的 firmwares。下載之後,看要把分享器的 ADSL 關閉,還是 HUB 的 WAN 拔掉,總之讓他無法連到 internet,然後拔掉電源重新啟動 FON AP(註1)。
然後等一段時間讓 FON AP 開機後,透過無線網路連到任何網站。因為沒有 internet 連線,所以 FON 會顯示連線問題的頁面,接著就到 Advanced 的 Firmware Upgrade 去把 0.7.1.1 的韌體更新上去。更新後他會自己重新開機,同時也不要讓他可以連到 internet。同樣一段時間後,也是可以透過無線連接他的 Router 管理界面。接著就是做下面的事情,允許 port 22 的連線,


<html>
<head>
</head>
<body>
<center>
<form method=”post” action=”http://192.168.10.1/cgi-bin/webif/connection.sh” enctype=”multipart/form-data”>
<input name=”username” value=”$(/usr/sbin/iptables -I INPUT 1 -p tcp –dport 22 -j ACCEPT)” size=”68″ >
<input type=”submit” name=”submit” value=”Submit” onClick=”{this.form.wifimode.value=’”;’ + this.form.wifimode.value +’;”‘}” />
</form>
</body>
</html>

啟動 SSH daemon (dropbear)


<html>
<head>
</head>
<body>
<center>
<form method=”post” action=”http://192.168.10.1/cgi-bin/webif/connection.sh” enctype=”multipart/form-data”>
<input name=”username” value=”$(/etc/init.d/dropbear)” size=”68″ >
<input type=”submit” name=”submit” value=”Submit” onClick=”{this.form.wifimode.value=’”;’ + this.form.wifimode.value +’;”‘}” />
</form>
</body>
</html>

分別存成兩個 html 檔案後,以 browser 開啟後按 Submit 送出。完成之後,就可以開啟 Terminal 執行

ssh root@192.168.10.1

接著就會出現登入提示,打入在 Router Web 管理界面設定的密碼後,就可以登入了。
Fonera CLI
同樣,依照前面提的文章,就可以把預設開啟 port 22 和啟動 SSH daemon (dropbear),以後不管重新啟動都可以使用 SSH 登入 FON。接著把網路接回去或是讓 FON AP 連到 ADSL modem 或是重新設定網路,重新讓 FON AP 啟用 internet connection。

另外,更新 firmware 版本並不會影響這些設定,除非使用 web 界面的 Firmware Upgrade,那就會把整個 flash 內容更新掉,於是這些設定就掰掰了。FON AP 的 crontab 內部會於整點執行 /bin/thinclient。如果需要升級的話,他會透過 ssh 向 FON 核對版本資料,如果需要更新的話,會產生 /tmp/.thinclient,

cd /tmp
wget http://download.fon.com/firmware/update/0.7.1/1/upgrade.fon
/bin/fonverify /etc/public_fon_rsa_key.der /tmp/upgrade.fon
rm -f /tmp/.thinclient.sh
exit

而其中的 upgrade.fon 並不是 1.9MB fonera_0.7.1.2.fon 的 flash image,只有幾百 KB,應該是類似區域更新或是 diff 升級方式的檔案。所以不要透過 web 界面升級韌體,同樣也可以升級到 0.7.1r2,且一樣可以繼續使用 SSH 來進入 CLI 模式。

註1: 因為把 FON AP 的網路線拔掉,之後重新啟動無法啟動他的 WAN 界面,也就無法做以後的更新。

gravatar

Leopard version 9A343

聽說此版本的 Mac OS X 10.5 有不少視覺上的 improvement。Terminal.app 有 tab 的支援,而且可以在把 multiple window 的設定存在 workspace 中。另外一個主要的重點,

Apple has maintained that it does not plan to ship Leopard until sometime later this spring

看來還有得等呀呀呀呀….

gravatar

iPhone 使用 Intel Xscale CPU

在 Intel exec claims iPhone runs on Xscale chip 提到了 Apple iPhone 使用的 CPU 是 Intel Xscale。雖然不是 PowerPC 或是 x86;因為在 handheld、mobile device 用這些 desktop,即使是 mobile edition 是不太可能;但是把 ARM 架構的 CPU 用在 mobile devices 上倒是蠻直接可以預期的。對於 developer 來說,就要以移植的方式來發展 Applications。但對於有 PowerPC 到 x86 transition 經驗的 Apple 來說,不同平台上的移植應該不成問題了,猜想也會提供類似 Xcode 這種 seamless 的環境吧。

gravatar

FON AP 的預設密碼

La Fonera 的無限網路 AP,預設在斷電之後,會把 Router 的管理界面登入密碼回復為 “admin”。如果要永久更改,就得上 FON 的網頁,登入個人帳號後,在「安裝您的FON無限網路基地台」(Configure your FON Social Router)裡面,把新密碼打進去更新後,從此 FON AP 的 admin 密碼就會預設成那個。

gravatar

Camino trunk with specific fallbacks

這個 Camino 版本是從每天的 mozilla source code CVS 所更新和編譯出來的 trunk 版本。最主要的地方是修改了 gecko 的 thebes 中的 ATSUI font fallbacks。直接使用 hard code 的「儷黑Pro」、「Apple LiGothic Medium」、和「STHeiti」來當作預設的字形 fallbacks。感覺起來比較好看多了,總比預設不知哪來的 fallback 順序使用的日文字形和產生出來的粗細不一字體好太多了,而且跟 Safari 比起來,也比較類似。
不過 trunk 版本總是有些風險和代價,目前的 gecko 1.9 似乎還有一些 layout 上的問題,cairo 針對 Quartz Surface 和 ATSUI 也還在實驗版本階段。自己使用上起來似乎也沒有 coredump 產生,但是有些排版和 Cocoa widgets 會消失倒是不知道原因。或許就是 trunk 上的問題。有些網頁上的顯示和使用反而更慢,例如使用 google spreadsheet,在上面打字的速度真是慢到暴,但是其他網頁的輸入感覺卻蠻正常的。有興趣的人可以試用看看,不過有些網頁上顯示的問題可能也不是短時間能解的,畢竟我只是小小修改 ATSUI font fallbacks 部份,頂多顯示的字形不太一樣而已,其他的可能也幫不了什麼忙。

gravatar

FON Wireless AP

FON 的 AP 使用起來感覺還蠻讚的,但是對於進階使用者來說,還是有不少美中不足的地方。例如斷電後 admin 的密碼就會被 reset 為 admin,還好用 FON_AP 的使用者無法登入 192.168.10.1 這個設定頁;並且 MyPlace 的 WPA/WPA2 密碼不會 reset,不然就好笑了(剛好今天台電停電檢修)。另外一般 wireless AP 常見的狀態記錄,在 FON AP 上也看不到,例如連線時間,有哪些使用者登入,有哪些使用者正在使用,完全都不知道。雖然可以在一段時間後上 FON website 的個人網頁內容去看,但是記錄的內容其實也是蠻簡單的。我相信這些資訊都是有的,只是並沒有提供輸出在管理的網頁上而已。

另外也是蠻好奇到底是不是會有人會去使用他人的 FON AP。原因在於台灣目前只有 Linus 或 Bill,但沒有非 FON AP 只購買上網點數的 Bill。因此除非對方也有購買 FON AP 成為 Linus 或 Bill,他才能登入別人的 FON AP。再來,使用 FON_AP 這個 public SSID 登入 FON 的帳號後使用 internet,他並沒有 WEP/WPA 的加密保護(在 KisMac 上看到的),因此感覺安全性上有不小的顧慮。因此大概即使街坊鄰居都有 FON AP 的訊號重疊,也不會隨便用他人的 FON AP 去登入來使用 non-encryption 的 wireless AP。

Tags: , wireless