Archives

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。