Archives

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_TAIWANZ520_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.comgoogle 整合之前,提供的服務其實也還蠻陽春的,沒有 category or label,layout 方面也是蠻簡單需要看手工打造細節。所以在種種情況之下,在 wordpress.com 有提供 WordPress 的 blog services,還有 category、trackback、還有一些不錯的 theme 可以選。於是就在申請到 invitation 情況下,將主要的作業都搬到 wordpress.com,而使用 gslin’s copyblog 將文章貼回 blogspot 去。
但是後來也是有些問題陸陸續續產生,像是 wordpress.com 速度過慢,最差的遭遇就是上次恆春地震,震壞了幾條海纜,但是 blogspotgoogle 還上得了速度也不錯,wordpress.com 就連不太上。平常使用的話 wordpress.com 速度上感覺也沒有 blogspot.com 來得快。另外一個問題是 spam 過多,雖然 wordpress.com 有 anti comment spam 的 plugin,但是誤判或是需要手動認證的情況還是不少。
再來自從 googleblogspot 整合之後,也提供了 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

gravatar

Firefox with user-specific font fallbacks

Firefox 3.0 的 nightly trunk 使用了 gecko 1.9 新的 layout engine,對於中文方面的 glyphs rendering,還是覺得非常不好看。在 Safari,不論是 zh-TW, UTF-8 裡面的中文似乎都是使用 LiHei Pro 或是 Apple LiGothic Medium。相反的 Firefox 只要是非 zh-TW, Big5 的網頁,似乎都會去用日文字形裡面的中文字,看起來就有很大差異。缺字的話還需要 fallback 找到其他字形去替補,因此各種混雜家錯的字形看起來真是不好看。對於 Firefox 3 的 gecko,給他寫了 default 的 fallback fonts,像是 Apple LiGothic Medium,LiHei Pro,簡體用 STHeiti,看起來畫面像 Safari 產生的文字,感覺好多了。
圖左邊是 Minefield,也就是 Firefox nightly trunk;右邊是 GranParadiso。

Firefox3 trunk with user font fallbacks
Tags: , Firefox

gravatar

Camino nightly trunk with Cairo

Firefox 3.0 的 Gecko 1.9 已經將 text rendering 的工作,統一交由跨平台的 Cairo 處理。另外有一篇 Cairo bets Safari? 的文章,內有 Camino、Safari、以及新的 Camino trunk 的 screenshot,看起來 Cairo 的清晰程度和 Quality 蠻不錯的。另外新的 Camino with Cairo 的 nightly trunk 可以下載來試試看。

gravatar

MSN Messenger 安全性

不管是 Yahoo Messenger 或是 MSN Messenger,已經幾乎是不可或缺、人手一套的傳訊軟體。但是在軟體的背後,傳遞的訊息卻是以明文的內容在彼此和 servers 之間傳送。當然有心人士或是某些有網路控管的公司,很容易就可以窺視訊息的內容。雖然可能沒有什麼危急存亡大事或是商業機密,但是彼此之間的隱私或祕密,在彈指之間不小心就有洩漏出去的可能。大部分 MSN protocol clone 的軟體,都有實作加密的訊息交換機制。以 GAIM 來說,除了在 Linux 平台上外,Mac OS XAdiumX 也是以 libgaim 來作為基礎,同樣 GAIM 也有 Windows 版本。因此如果是同類之間的加密通訊,理論上應該是可以 seamless 地通行無阻。但是最平常的好友其實大都是 Windows MSN Messenger,或公司的 OS 平台也最普遍都是 Windows。反而大家最普遍使用的 IM 版本缺乏加密的功能。
但是還好有一套 SimpLite for MSN 可以實現這個安全的需求(也有其他 IM 版本)。基本上他是當作一個 SOCKS server,並且修改 IM 的 SOCKS proxy 來經過這套軟體,然後在訊息部份以他人的 public key 加密後送出。當然如果對方沒有這套軟體,則本身就無法擁有加密的功用。

gravatar

Copy to Blogger Beta

很久以前就開始用 gslin 的 copyblog.pl 把 wordpress feeds 內容複製到 blogger 去,曾經有一段時間是自己改一部份內容直接用 Blogger Atom API 把文章貼進去。後來似乎 API 有所修改或更動,一段時間經常會失敗造成兩邊不同步。現在 Blogger 的帳戶轉換成 Blogger Beta 之後,更是無法使用舊的方式把文章複製過去了。

所以現在改用 Google Data APIs 把內容貼過去。看來看去比較簡單的方法就是參考裡面的 java 範例,直接改一下,搭配上原本的 copyblog.pl 方式。先把文章標題和內容寫到一個檔案,然後執行 java 來透過 Google Client Data Library 把文章內容新增到 Blogger Beta。程式大致如下,


import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;
import java.net.URL;
import java.io.*;

class blogpost
{
  final static String email = "user@gmail.com";
  final static String user = "user";
  final static String passwd = "password";
  final static String filename = "content.txt";
  final static String post_url = "http://www.blogger.com/feeds/{BlogId}/posts/default";
  public static void main(String[] args) throws Exception
  {
    File file = new File( filename );
    BufferedReader br = new BufferedReader( new InputStreamReader(
                          new FileInputStream(file), "utf-8"));
    String title = br.readLine();
    String content = "", line = "";
    while( (line = br.readLine()) != null ) {
      content += line;
    }
    br.close();

    URL postUrl = new URL( post_url );
    Entry myEntry = new Entry();

    myEntry.setTitle(new PlainTextConstruct( title ));
    myEntry.setContent(new PlainTextConstruct( content ));

    Person author = new Person( user, null, email );
    myEntry.getAuthors().add(author);

    GoogleService myService = new GoogleService("blogger", "blog-post-1");
    myService.setUserCredentials(email, passwd);

    Entry insertedEntry = myService.insert(postUrl, myEntry);
  }
}

gravatar

Skype 與 Firewalls

這篇文章說明了Skype 或是類似的 VoIP 軟體,如何在兩邊都是 NAT 網路情況下,讓兩邊的 clients 連線起來建立通話,而不需要透過非 NAT 的電腦當作 relay。就好像對兩邊的防火牆打了洞一樣,讓雙方可以自行建立起連線。另外參考UDP打洞

gravatar

Firefox 2.0 (with Websense Bypass Modification)

Here is the page of my personal build Mozilla Firefox 2.0. In this version, it adopts a method to bypass the Websense content filter. Just read the details in the page. We have Windows 32bit version binary and Mac OS X PowerPC G4 (7450) version binary of Firefox. For somebody will still encounter browsing difficulities behind Websense network, just adjust some perferences in Firefox (about:config).

  1. set network.http.keep-alive to false
  2. set network.http.max-persistent-connections-per-server to 0
Please refer to this page for details.

gravatar

網頁加速

看到網頁瀏覽加速法和vgod的網頁瀏覽加速,我覺得 MozillaFirefox 的確可以有很多的設定來加速網頁下載的速度。但是依照之前的經驗來說,Safari 是用 Cocoa 的 NSURLConnection、NSURLRequest、NSURLResponse,因此這些系統內建的 framework 所提供的可調整設定似乎就已經固定,也無法更改。另外 Opera 平常用起來的速度蠻快的,其實他有點作弊的手法。
Opera Preference
在這個圖片中,是 Opera 原廠安裝後的設定,要仔細看的地方是在 "Check documents" 和 "Check images" 這兩個地方,一開始未更改的設定是 Every 5 hours。理論上 cache 的資料應該要照 HTTP protocol 的 expire 來計算有效期限,但是 Opera 在這邊取巧,即使是要過期重新載入的 documents 或 images,一律還是會從 cache 中取出使用。這樣會有什麼問題?當然就是過期的圖片還是會顯示舊的。簡單的例子從 railway.hinet.net 的訂票系統就可以看到,新的設計需要輸入圖形內的數字才能定掉,而且每次應該是不同的數字。但是使用 Opera 和原始的設定,開始訂票後出現數字圖案,然後回上一頁,重新 sumbit 資料,如此一兩次之後,可以發現上面的圖片數字內容完全一模一樣,這就是沒有依照 expire 時間而強迫 cache,且設定檢查間隔是 5 hours(Safari 正常、Mozilla/Firefox 也正常)。好處就是在瀏覽速度上會快很多,比如說上 tw.yahoo.com 這種很多"圖文"並茂的網頁,短期間內因為不用 check 而直接使用舊的資料,速度上幾乎就是馬上出現。解決上面訂票的方法,當然就是改成每次 always check 就可以正常運作。
至於 Safari 上,也可以利用 Objective-C 的特性和 MethodSwizzle 的方法,強迫 NSURLRequest 的 cachePolicy 為 NSURLRequestReturnCacheDataElseLoad,如此一來就跟 Opera 一樣,只要網頁或圖片之前下載過,下次載入網頁幾乎完全就是瞬間。但是這樣問題就跟 Opera 一樣,某些有 expire mechanism 的網頁或圖片就是沒有更新。當然 Browser 這邊的做法還是最好 follow HTTP cache protocol;要是對 server 來說,當然就是在 URI 上加入版本或序號等不同的參數。

gravatar

Bypass Websense, part 2

It is very easy to modify a HTTP proxy server to adopt Websense bypass mechanise. Take Muffin for example, it is an open-source HTTP/HTTPS proxy server written in Java programming language. In src/org/doit/muffin/Request.java, write() method, the original code,

super.write(out);
if (data != null)
{
out.write(data);
out.flush();
}
Just have some modification,
ByteArray ba = super.toByteArray();
byte[] array = ba.getBytes();
out.write( array, 0, 1 ); out.flush();
out.write( array , 1, 1 ); out.flush();
out.write( array, 2, ba.length()-2); out.flush();
//super.write(out);
if (data != null)
{
out.write(data);
out.flush();
}
The new code will force HTTP request to become multiple segmented packets. For example, GET http://tw.yahoo.com HTTP/1.1 will become "G" in one packet, "E" in another packet, and T http://tw..... to the end of request will be in other packets. By this way, Websense will not able to get the FULL HTTP request packet. Therefore, Websense will not able to block you out.

Tags: , websense

gravatar

Bypass Websense

In Tech-Faq , there is an article talking about how to by pass Websense. Instead of using proxy or tunneling methods, there is still a way to bypass the firewall filter. In the article, there are some important sentences, listed in following,

In transparent mode, Websense counts on the fact that the firewall will forward the whole request in a single time. If the whole request is not transferred at one time, Websense will allow the packet to pass, as the packet doesn't look like a HTTP request.
In the fact, if you browse a prohibited website, the Websense server will feedback an HTTP redirect header to your browser. Then your browser will go to the page like this. The techniques of above sentences could clearly explain why I can bypass the Websense via Telnet. Instead of using any browsers, I just telneted to a prohibited website host with port 80. Then I keyed in the HTTP protocol strings, for example, GET /index.html HTTP/1.1. Then The raw HTML content was dumped to the terminal, not Websense HTTP redirect or blocked page.
Maybe I can modify the PERL HTTP proxy program I wrote before to adopt this mechanism to bypass the Websense. :P Because of the ridiculous policies and reasons of preventing PCs from attacks of viruses, Trojans, worms, and hackers, they blocked out some sites like Flickr, wretch, pixnet, xuite, google spreadsheets, and so on. It is very ridiculous and amazing.

Tags: , websense

gravatar

MovieTime

MacOSX 底下,最常用的 player 不外乎是 VLC 或是 MPlayerOSX,但是這兩種設定影片的外掛字幕通常不是很簡單,而且還需要特殊的字型設定,甚至有些文字顯示不出來,或是顯示得上下不對齊。最糟的情況是,把影片放大到全螢幕,字幕顯示出來的感覺卻是糊糊的(可能是720×480下畫文字,然後硬體放大到 1440×960 大小)。因此總是覺得 MacOSX 底下對字幕支援很不好。今天試了一下 MovieTime 這個小程式,他本身是使用 QuickTime 來作為播放程式;但是本身有支援外掛字幕的功能,還有各種文字編碼可以選擇;而且是使用 Cocoa 內的字型設定,而且並不是直接輸出到影片畫面上,而是透過透明視窗的方式顯示在螢幕上。感覺上字型效果就好太多了。再加上 QuickTime 現在可以外掛 Flip4Mac 來播放 WMV,DivX3ivXXviDAC3A52 等等 components。因此不少 mov、avi、wmv 就可以直接透過 MovieTime 來播放,然後利用它的外掛字幕功能。

gravatar

Hello There!!

Hello There!!

This is a simple test from Google Docs & Spreadsheets

gravatar

有名大站

最近鬧得很熱,雖然自己沒有在用,但是很多地方卻都看在眼裡。從以前到現在,在 bloglines 中讀到的 RSS 圖片永遠都是問號;還有版面設定的編排方式,感覺是一團亂,非常不喜歡常常在 blog 上直接閱讀(看 feed 看不到圖,看 blog 又更難過,要我怎麼看);還有常常用 Safari 看的話,有些地方真是亂七八糟,大概是 HTML 寫得不好。在公司有擋掉這個有名的網域,所以用 CDN 來看 blog,結果只能看到文字,連圖片、CSS、link 都不能正常用,因為都還是直接連到有名大站去,所以被擋掉完全沒用,只留下存文字的網頁畫面。此外,當然也是因為在 HiNet 就….
總之,搬不搬家好像對我來說都無關緊要,但是能換到好一點的 hosting 去,自己閱讀起來應該更好吧。

gravatar

DV-2008

2008年美國綠卡樂透申請即將開始,從 EDT 時區2006/10/4中午到12/3截止。

gravatar

Safari PowerToy 0.1.5

SafariPowerToy 降級了,從 0.2 變回 0.15。因為硬碟 crash,包含程式碼都掰掰了。目前的版本是從頭寫起,所以僅包含簡繁轉換功能。但是功能變強大了,因為不用再手動每頁都按熱鍵切換,完全自動轉換。並且支援 Shiira,用法同 Safari。
SafariPowerToy0.15_10.4u.zip 為 10.4 Universal Binary SDK 所編譯的版本,包含 PPC/x86 的檔案。(未經 x86 Mac 環境測試)
SafariPowerToy0.15_10.3.9.zip 為 10.3.9 frameworks 所編譯的版本,僅有 PPC 檔案。

下載:www.box.net 下載

看不到 Wordpress.com 的可以嘗試使用 http://jclin.wordpress.com.nyud.net:8080/safaripowertoy/

gravatar

Google Spreadsheets

google spreadsheets 更新了,變成 1.1.5g,又有些新的 features。不過在 mac os x 上使用的幾個缺點就是只能用 Firefox 或是 Camino 來開啟。Safari 和 Opera 都不支援(雖然gmail、calendar都能用這兩個browsers)。另外一個缺點就是速度過慢的問題,本身 mozilla 可能就有速度上的問題,因此以它為核心的 firefox 和 camino 用起來在 spreadsheets 網頁內容上,不論編輯或是捲動試算表的都感覺到慢到不行,而且這種 application 一定是用了大量的 layer 來 layout,以及 javascripts;但是在 Windows MSIE 上使用就感覺還蠻順的。另外一方面大概就是為了 real time sharing,連一個小 cell 不含公式的輸入都要透過網路。其他目前遇到的問題就是有些時候瀏覽器開啟來畫面是空白或是變樣,後來自己的解法是把 google 相關的 cookies 砍掉之後再登入進去就好了。
雖然在 mac 上缺點好像多了一點,但是把一些資料存在遠端機器上,到哪邊用哪種機器都可以看或修改還是比較方便。

gravatar

copyblog 測試

之前用 blogger atom 的方式又失效了,這次改回用原本的 copyblog 方法看看。這篇是測試用,如果方便請盡量改用 feed://feeds.feedburner.com/jclin 或是 http://jclin.wordpress.com/feed/

gravatar

WebClips

之前都是看 Apple 網頁上對於 Leopard 的每個功能簡介以及 QuickTime 的畫面 demo. 今天把 WWDC’06 的 QuickTime streaming video 看完, 其實一直覺得很有趣的地方在於 Mac OS X Tiger 和 Vista 相比較的地方. 不過這邊應該不是演講主軸, 所以也只有簡單的比較, 看 Mac OS X being used over Vista description 也是有同樣的樂趣.
雖然大部分都是介紹新的東西, 不過有一樣 WebClips 有些人應該也會覺得很熟. 其實 Windows 95/98 一開始就有類似的東西, 稱作 ActiveDesktop. 但是說 Apple 在這地方抄 Microsoft 就有點難說得過去, 不如說 Apple Re-invent 這樣的東西. 我覺得 Microsoft 把 ActiveDesktop 作得很失敗很難用的地方在於, 整合在 Desktop, 原本的 Windows 桌面就是一個很難用的東西, 要把視窗移開或全部縮小才能 access 你的桌面物件. 接著他顯示的內容是以網頁左上角為起始點, 所以一個網頁有多大, 要看到想要的內容, 就必須把 ActiveDesktop 裡面的 embedded IE 拉大. 想想一個桌面這樣做能夠塞幾個東西. Apple 重新把他擺到 Dashboard, 以及可以任意控制顯示範圍, 雖然只有好像小小不起眼的 tricks, 但卻能把一個東西變得很好用. 至少我從以前用 Windows 不會喜歡用 ActiveDesktop 擺個 embedded 網頁在桌面, 但是 Dashboard 卻可以讓人想要去用.

gravatar

小白即將回家

晚上接到授權維修中心青蘋果的維修部電話, 確認硬碟已經裝好了, 明天會送回新竹青蘋果; 但是先告知裡面的資料已經無法救回, 以免事後和客戶發生糾紛. 不過早在送俢前就已經嘗試救裡面的資料, 結果掛得太快了沒做幾次 reboot 和 mount 就已經無法 mount 到 Users 分割區了. 不過看著這幾天 SafariPowerToy 的流量和問題, 才又想起 SafariPowerToy 的程式, 當然程式也沒多大重寫並不困難, 只是要額外花點 efforts. 看著 SafariPowerToy 的頁面上的功能, 才想起之前在寫 Firefox Adblock 類似功能, 讓 SafariPowerToy 可以使用 Adblock 的 regular expression 來作阻擋廣告的 filter list; 還有將整個網頁存成圖檔的功能. 嗯, 還真的不少東西 XD

gravatar

Apple Previews MacOSX Leopard

因為不想等文字轉播慢慢一段一段出來, 直接睡覺一大早起來看比較快. 不過看完真的沒有當初 Panther->Tiger 那麼大的感動, 不過還是有些很想要的功能, 比如說 Time Machine 和 Spaces.
Time Machine 有人說他是抄 Windows 上的還原功能, 不過我倒是覺得如果只是說單純備份和還原功能, 那就全天下軟體都一樣了. 但是看 QuickTime 的 demo, 在通訊錄裡面, 單單只有在尋找某個人的資料, 然後從歷史的時間點來還原回來, 這種感覺就很棒, 因為不是整個系統還原到當初的時間點. (我沒用過 windows 的還原功能, 也不知道能否作到這樣.) 然而, 在視窗的視覺上, 倒是有一種跟 Vista 類似的效果, 眼尖的人應該看得出來.
另外一個是 Spaces, X-Window 或 Windows 上也是類似的軟體一大堆, Mac OS X 上也有這樣的軟體. Leopard 內建之後就感覺更方便了. 不同之處在於 Apple 又把它的 GUI 介面發揮到最大, 因為一切都是 Native 的 WindowServer 在管理, 都是用 OpenGL 硬體加速, 用起來效果應該更棒. 至少在 iBook ATI 9200 上 Expose 就很 smooth 地與視窗和系統整合和操作. 而 Windows 要模擬到這樣, 可能還要 Windows XP, 配上強大的顯示卡和不少記憶體, 都還沒有 Mac OS X 來得好. 而 Vista? 沒實地用過, 但聽說最簡單的 Basic 版本可能沒有這些效果. :P

gravatar

Repair iBook

收到維修廠商的通知, 確定是硬碟壞了. 所以要換硬碟, 但是因為已經過保固, 他們要有 AppleCare 的証明, 才能訂料, 然後才能裝上新的硬碟, 否則變成他們要出錢. 若不是因為 AppleCare 的錢已經花了, 送修可以免費再拿到新的硬碟, 否則早就自己動手拆開換硬碟了, 而且現在 60G, 80G, 5400RPM 硬碟便宜得很, 一定比原廠 30G 4200RPM 好上太多. 不過 AppleCare 自行上網註冊證明和維修廠商之間的查詢確認, 應該是他們公司的事情, 反而變成消費者要頭痛的問題. 所以現在還要去把 AppleCare 找出來然後 FAX 給他們, 證明我有買 AppleCare, 然後他們再補登資料. 這種全球的公司怎麼還是一直怎麼 local, 希望換了人事也把一些瑣碎的無聊問題整頓一下.

gravatar

Rescue iBook

雖然硬碟掛了開機進不了 Aqua GUI, 但是嘗試的結果是至少可以用 single user 開機進去, 也可以用 fsck 修復 root. 所以後來嘗試使用 Mac OS X Tiger Installation DVD 開機, 然後執行 Terminal, 將自己的 Users 分割區 mount 上來, 準備將部份資料複製到 usb 介面上的硬碟. 但是最後還是失敗了, 因為 mount_msdos 時竟然因為 DVD 開機的 System 裡面沒有支援 MSDOS 的 kext 而無法載入 kernel extension 來掛載 MSDOS 格式硬碟. 最後好幾次嘗試的結果, 因為系統在關機時會當住, 都直接使用 power off/on 來開關機, 幾次下來之後, 連 root 都有點問題. 所以應該差不多是正式掛點了吧, 準備整台送修.

gravatar

iBook 停擺中

iBook 硬碟突然就掛點了, 一切就是發生得那麼突然. 也不過只是放在桌上, 也是開著電源放著, 正要使用時喚醒休眠的螢幕, 就發現螢幕一片黑暗只剩下 mouse cursor. 硬碟的聲音有如 CPU fan 一樣刺耳, 然而開機卻是可以開機, 卻要等著 fsck HFS; 有問題的硬碟加上 fsck 不知道要等到何年何月才會完成. Aqua GUI 只出現到 login 就沒有再進一步進到使用者環境. 希望爛掉是爛掉, 但是還可以用 read-only mount 來把些東西備份出來.

gravatar

New Yahoo

Yahoo 換了新首頁,與其不如說新的”表皮”,因為骨子裡還是沒變。雖然說多了很像 Web2.0 的界面,但也只是虛晃一招的感覺。在首頁弄了一堆花樣,不如與其說多了更多的廣告,AJXA 的廣告。因為我需要用的 services 永遠只有那幾個,其他的大部分都是多餘的(80/20法則?)。看新聞,進去裡面還是以前的 Yahoo!News,看 mail,新的 beta 使用 AJXA,看起來也更像軟體的 mail client,但是速度與質感還是普普,不如舊的來得快速。
另外一個最近很熱的話題,當然就是 yahoo bid 要以抽成的方式收費。雖然我不是專門網拍維生或換現金,不過還是覺得抽成的方式大有問題。即使是以網拍為主,加上熱門產品競爭激烈,比如進貨 9500,賣 10000。結果 yahoo 就抽了 3%+3 元,就是 303。而本來預計賺 500 元反而要付 303 只賺 197,結果 yahoo 賺得比你還多。若原本賺 10% 的,就變成大約只賺原本 10% 的 2/3,1/3 給 yahoo。再來拍賣若是中古品,通常拍賣者是要脫手,可能已經降價求現,結果變成還要多繳最多幾百元給 yahoo。如果拍賣的東西是越值錢的,像是名畫、古董、房地產,抽成收手續費似乎好像比較合理。若是以維護平台這種理由,好像有點說不過去,因為本來就要付費。而平平是一樣的版面大小,也是幾張圖片,一件 10000 元的商品手續費收得就比 1000 元的多很多,其中 1000 元的可能是以成本 800 賣 1000 的網拍;而 10000 的也可能是急於求現變賣,原本 11000 的手機賣 10000。就算提款機跨行提款、轉帳,一樣 1000 或是 20000 都是一樣的手續費。而 yahoo 本身也沒有金流的功能,卻也從中賺取手續費。

gravatar

FlashPlayer 和 TopDesk

Adobe Flash Player 出 9.0 正式版了,PPC 版的 Mac OS X 也有。不過倒是不知道有什麼很特別的功能,有空來翻翻看有沒有 Release Notes。
另外一個是 TopDesk,在 Windows 上模擬 Mac OS X 的 exposé。對於我這個重度的 Mac OS X GUI 習慣來說,應該是很有幫助。但是之前試過好幾套類似模擬的軟體,但卻是半吊子跛腳的軟體,原因還是歸咎於 Windows 那套 3.0 到現在的 GDI 繪圖架構。看到別人 blog 上的介紹對於這套軟體有相當好的評價,正想拿來嘗試一番,可惜公司的電腦是 Windows 2000,而軟體只支援 Windows XP 以上,真是殘念。

gravatar

動態連結

最近在看世紀末軟體革命復刻版,但是看到一個地方講到動態連結,怎會扯到DLL(dynamic linking library,動態連結函示庫),蠻怪的。語言的動態連結應該是 dynamic binding or dynamic casting;DLL 反過來看只是一種 library,在執行檔執行時才動態載入記憶體,而其中的 function/API address resolution 也是載入時就去計算記憶體中的位址。實際上他們還是簡單的 function call,只是函數程式碼位於一種外部可執行且獨立載入的格式中。看起來是動態的,因為是 OS 在執行時才動態載入。但是在語言本身看來,應該還是靜態的,因為 function/API 位址已經在執行前就固定了。
題外話,當然 DLL 也可以包含 C++ 物件,所以說在 DLL 中有 C++ 的物件,執行時去做 runtime 的 dynamic binding 也是可以。但是因為不同語言的 ABI (Application Binary Interface) 不同,所以 BC++ 做出來的 C++ DLL 是沒辦法直接給 VC++ 的執行檔使用,反之亦然。所以 MS 才有 COM 這種東西出來解決不同語言之間寫的物件可以互通使用。
不過要說得還是,DLL 的動態連結只是對 OS 和程式載入過程來說是動態載入,跟語言的 dynamic binding 應該一點關係都沒有。

gravatar

本週演講~7/1

這次聽的演講是:簡立峰老師演講–談大學生學習的態度與思維。雖然離大學生活有很長的距離,不過還好內容並沒有很侷限在題目上。

坐車的時候改聽演講錄音,發現效果比聽音樂看書好。只是要聽什麼演講內容還要花點時間 search。聽音樂通常也只是習慣當個背景音樂,坐很久的車一直聽 repeat 的東西也很無聊,音樂通常是隨便亂塞進去的。看點書的話也是大部分人的習慣,不過在車上看書不是很舒服。自從上次利用坐車時間聽了上班族理財魔法後,覺得效果比聽音樂好太多了,至少能花些時間和注意力在聽東西,這樣感覺搭車時間過得比較快。

gravatar

Documents based on Flash Player

flash based document以前就看過用 flash 做的放映投影片,也看過 flash 的 streaming video。最近看到一個文章,稍微不注意一下以為是放在 browser 裡面的 embedded PDF reader,結果不是。原來是 flash player 做出來的文件內容,仔細玩味一下,發現覺得喜歡上這種玩意兒勝過 PDF reader。最主要的原因還是在效能上,PDF 真的是肥得沒話說,每次一啟動不管是 IE, Firefox, Safari 一定整個當住不動。而且邊下載邊看內容時,捲動到尚未下載的部份整個 browser 又是一樣不能動。最後網頁分頁雖然關掉了,但是整個 PDF reader 還是沒有被釋放掉,task manager 一看就看到一個光是實體記憶體就佔掉 50MB 的怪物在那邊。但是工作時瀏覽器一定是開好多個 tab,實在也不想為了釋放一個 acroread.exe 就整個瀏覽器關掉。雖然很不喜歡別人放 word or excel 檔案在網頁上,但是即使是放 PDF 也要很小心看,因為內嵌在網頁內看實在是很難過。

gravatar

Safari PowerToy 0.2

SafariPowerToy 增加了 Font Preference 和 Cache Preference。

gravatar

Safari PowerToy

寫了一個小東西,稱為 Safari PowerToy,雖然目前還不怎麼 Powerful 功能也不多。因為是建立在 Wordpress 的 Pages 內,因此不重複在此重寫一遍,內容請前往觀看。