2007年11月25日 星期日

清朝奏章上的「囧」

今天去故宮看到的 XD

2007年11月24日 星期六

Flickr API undocumented limitation

我目前在學校有個 project 需要從 flickr 抓取大量資料,包括照片的 tag、owner 等 meta data。但是我發現我拿到的 data 怪怪的,一些常用的 tag 竟然只有幾百筆。我用的 API 是 flickr.photos.search,它可以接受很多條件,然後傳回符合的照片,其中有兩個條件是最早跟最晚的上傳時間。於是我只好把時間間隔縮小很多。

直到昨天,我收到一封恐嚇^H^H警告信,說明 query return 回來的 offset 不能超過 4000,換句話說頂多拿到 4000 筆左右的結果。API 的文件沒提到這件事,query 傳回來的 status 也都是正常 ...

還好我抓得夠暴力(?),不然如果沒收到這封信,之後學校的實驗就可能是錯的了 :(


Greetings!
We have noticed that the api key 72157602728288126
registered to you is sending very large offset queries to
us.
example (offset=16893165)
Can you please check your usage and reconsider using these
high offsets? They are heavy/costly queries that tax our
backends.

Also to note: the search backend currently will not return
any results greater than offset 4000.

If you could limit the max offset to below 4000, we would
greatly appreciate it (and not have to disable the key -
not because we want to, but because our backends can't take
very much of it).

Thanks!
- Flickr Team

2007年11月13日 星期二

.museum domain

太帥了,竟然有 .museum 這種 top level domain!

首頁: http://musedoma.museum/
所有 second level 的列表: http://index.museum/

Wikipedia 的 Top level domain list

2007年9月1日 星期六

iGoogle _IG_FetchContent supports Big5

前幾天發現 iGoogle gadget API 的 _IG_FetchContent, _IG_FetchXmlContent 和 _IG_FetchFeedAsJSON 開始支援 Big5 了! 以前寫 gadget 時,只要遇到要抓取 Big5 的網頁,就沒辦法用。因為之前這三個 function 假設網頁的內容是 UTF-8。不過前幾天我抓了一個 Big5 的網頁,發現內容竟然正常了。看來他現在會幫你猜網頁的 encoding 了! 這樣開發 gadget 就方便多啦。

Mapplet 也是一樣,因為 mapplet 也可以用 gadget 的 API。

也許 Google 正在辦的比賽會有更多的 idea 跑出來。

2007年8月9日 星期四

中研院數位典藏展

今天下午去中研院看一個數位典藏的展覽,到下禮拜一之前展的是一些地圖、歷史地圖的東西。展出的單位是中研院 GIS 實驗室

裡面還有幾張地圖是國民政府來台之後,跟美國合作,偷偷由中華民國飛行員開美國的偵察機 (好像叫 U2?),飛到大陸那邊去照的數十(百?)萬張地圖。而且解析度還滿高的,不知道有沒有比 google earth 清楚。之前國家不允許這種東西展出,所以現在應該是剛出來見世人吧。

他們用了相當多 google earth 跟 map 來作 demo 平台,加上 multi-touch 的桌椅組 (MITSUBISHIDiamondTouch) 配合 google earth 做簡單的平移、旋轉、跟縮放。

還有 google map 上古今地圖對照,可以看你家幾十年前或一百年前是農田還是什麼的。我們有清楚看到台北市的市民大道以前是鐵路,還有基隆河截彎取直前後的樣子。

其中我覺得最酷的是一個 3D 瑩幕 (他們買來的)。他是一個特殊的瑩幕 "直接"接上顯示卡,畫面上的 3D (OpenGL, DirectX) 就直接變成立體 (當然視角很有限)。身為 CMLab graphics 組的,當然要知道原理啦。我猜他應該是去讀 z-buffer! z-buffer 是顯示卡上記錄瑩幕上每一個 pixel "深度 (離眼睛的距離)" 的記憶體,3D 的程式通常會用到。於是有了景深,這個瑩幕就可以對左右眼射去不一樣的光線 (坐在椅子上),看起來就有立體的感覺!

另一個也很酷的是 3D 印表機 (只展出影片跟成品 不過印表機本身不是他們做的)。他是在一塊板子上一層一層塗上粉,要留下的地方的粉上膠、不留的不上。一層一層塗完之後把粉倒掉,剩下的就是那些有上膠的部分。3D 的模型就這麼印出來了!

這一個下午真是不虛此行! 下禮拜一之前,如果大家有空,可以去看一看 :) 地點在中研院圖書館。

2007年8月4日 星期六

中信局設備選擇器 1.4

中信局設備選擇器更新「電腦及伺服器 (LP5-960018)(契約期間自96年7月31日起至96年12月31日止)」。

中信局併入台銀之後,網址出現一堆 random number。還好 WWW::Mechanize可以用 regular expression 抓一個網頁的網址。

2007年7月30日 星期一

立體地圖

中研院 GIS 小組用 Google Map API 做的立體地圖: http://gissrv5.sinica.edu.tw/GoogleApp/stereo.htm

他有兩種立體地圖,一種是「紅藍立體」(但其實是紅綠,就是小時候玩的那種)、另一種是「光柵立體」。前幾天無聊去買了紅綠玻璃紙來看,還滿有趣的,道路也有高低地伏 XD。不過光柵就不知道怎麼看,LCD 耶? 或是他有其他 output device?

其他的 demo: http://www.ascc.sinica.edu.tw/gis/googlemap/

screen bug #20277

我用 utf-8 跑 screen,上 bbs 用 :encoding big5 來轉碼。但是裝了新的 screen 中文全變成問號。

trace 一下發現是 configure.in 的問題,問題跟解法我 post 在 screen-devel 上: [screen-devel] bug #20277,希望有人理我 ...

後來發現 screen 的 #20277 這個 bug 跟我遇到的一樣。

2007年6月29日 星期五

爆料

今天早上在公司的 mailing list 上看到 Life at Google - The Microsoftie Perspective 這,後來看到「Google離職員工爆料 「免費」背後有代價」這篇的整理,覺得有種莫名奇怪的感覺。我看原文的時候,明明覺得他寫得還滿正面的,至少不是這篇全部都是批評。怎麼翻成中文會差這麼多 XD

2007年6月11日 星期一

Motion Vector Extraction

為了做 MULTIMEDIA ANALYSIS AND INDEXING 這門課的 project,我們這組需要從 MPEG video 裡面取出 motion vector(它在 MPEG video 裡的用途是用來做壓縮。一個物體在畫面裡面移動時,其實只需要描述它的位移,而不需整個重新 encode)。

不知道是不是因為大部分的人需要的都是 video 的 frame,而不是 motion vector(其實在解壓縮時只差一步),我 google 了好久都找不到工具可以用。後來發現 ffmpeg 的 ffplay 可以直接把 motion vector 邊撥邊畫出來,但是還是沒辦法 dump 出來。

$ ffplay -vismv 3 xxx.mpg

vismv 那個參數其實是三個 bit,第一個 bit 代表 P-Frame,第二個代表 B-Frame 的 forward motion vector,第三個 bit 則是 B-Frame 的 backward vector。

不過,這只能看。所以我參考 Using libavformat and libavcodec 跟 ffplay 的 source code 寫了一個程式。這個程式可以把 video 每個 frame (除了沒有 motion vector 的 I-Frame)的 motion vector 取出來。如果要改成取第幾個 frame、或是某個 range 之類的,也很好改。

g++ compile 時需要加上 -lavcodec -lavformat 兩個參數,當然也要先裝上 libavcodec 跟 libavformat 兩個 library。有裝 ffmpeg 就會有。

http://cmlab.csie.org/~victor/archive/motion_vector.cpp

2007年6月9日 星期六

Parallel::ForkManager

在 Perl 裡面如何把這種程式平行化? 假設每次 interation 是獨立的。

foreach $data (@all_data) {
eat_cpu($data);
}



超簡單



use Parallel::ForkManager; # !!
$pm = new Parallel::ForkManager($MAX_PROCESSES);


foreach $data (@all_data) {
$pid = $pm->start and next;
eat_cpu($data);
$pm->finish;
}

2007年5月22日 星期二

google suggest

下午用 google suggest 試打一個字母,想看看第一筆會是什麼。背 26 個英文字母,以前是 a for apple, b for banana,現在是不是可以改成 a for asus, b for bt XD

在非個人化的搜尋時,這些是目前只按 a, b, ..., z 時的結果
asus bt canon dictionary emule foxy gmail hinet ikea kkbox lv msn nokia openoffice pchome qq realplayer skype tvb urmap vista wii xuite yahoo zara

1 ... 9, 0 的結果
104 2000fun 300 400d 5566 6300 7-11 8591 9mil 007

.(點) 跟 _(底線) 的結果
.net framework _desktop.ini

很多數字的結果真是沒什麼意義 XD

2007年5月7日 星期一

geotagged photos

現在有很多相機有內建 GPS,每次照相時相片的 EXIF 會多記錄拍照地點的經緯度。之前我們從 flickr 收集了大量 geotagged 也就是有經緯座標的照片,從中找出所謂的「地標」,並讓電腦記得這些地標長什麼樣子。接著如果有一天,有一張新照片進來(可能是沒有 geotag),系統可以自動認出這張照片是那個地標,甚至這個地標在那個城市、那個國家。這中間牽扯到怎麼從照片認照片、ontology tree 的建立等等問題,不過這並不是我想說的重點。在這個過程中,我畫了一些圖,想跟大家分享一些比較有趣的:

這是把我們 mirror 來的資料按經緯度畫出來,顏色越偏紅表示照片數越多(指數成長)


這是舊金山金門大橋 :D 對照空照圖


這是那些照片中,有被標上「beach」的

2007年4月16日 星期一

Our-Conf

maintain 多台 debian 機器的設定檔很麻煩,所以我寫了一個 package 來做這件事。

下載之後,目錄裡面會有個 ROOT 目錄,直接對應到你系統上的 /。直接把設定檔放進去,就像裡面的 ROOT/etc/hosts 那樣。然後 make,就會生出 our-conf.deb 了 :D

Our-Conf

2007年3月30日 星期五

post code visualization

http://eagereyes.org/topics/ZIPScribbleMaps 這個人把郵遞區號座標(來源是 Geonames)拿來畫在地圖上,按照號碼的順序連在一起,結果畫出來的圖還滿有趣的。雖然說各國當初在設計郵遞區號應該就是照著地區排,但是看到畫出來的圖,美國洲跟洲的邊界真的跟行政區很符合,真的很有趣 :p

BTW, Geonames 提供很多地理方面資訊,還有 API 可以用。

2007年3月16日 星期五

Google Sets

發現 Google Sets 這個有趣的東西。

網頁裡面可以輸入五個字串(Ontology),例如 yankees, redsoxs, mariners,然後他就能給你其他相關的字:Cubs, CARDINALS, Braves, etc. 當然,輸入的字必須是英文。

這個 project 是從 2002/05/20 加入 Google Labs 的,到現在還沒畢業 :p 我猜也是因為這個原因,他們並沒有說如何建立這些 ontology sets。

2007年3月15日 星期四

ip over ptt over wifly

最近 ptt 推出「用 WiFly 免費連上 ptt/ptt2」的服務,詳細內容請見活動網頁

不過如果只能連 ptt 好像很不方便。於是我就想到可以 ip over ptt XD (當然,我用不到所以也不會寫 :p)

首先,除了用 wifly 的電腦,外面也事先要跑隻 daemon 來轉送封包。它們要做的事是連上 ptt,進 chatroom (水球會 lag,又會掉),把對方送來的 packet 往下(e.g. tcp)送。這樣就可以用 wifly 隨意上網了 XD

不只是這樣,因為 daemon 裡面外面(wifly 的裡面外面)透過 chatroom 連在一起,是對等的,所以裡面還可以跑 server 喔。當然前提是外面必須能把 packet 丟到 wifly 發的 ip。

如果上面的 idea 能成真,就可以做出一台 router 來做這些事 XD 真是邪惡...

2007年2月28日 星期三

中信局設備選擇器 v1.0

把之前的中信局設備選擇器整理一下,變成了 1.0 XD

跟一開始的版本比起來,現在可以找更多的中信局商品、支援各家 browser、可以存成 url、還有一篇簡單的說明

2007年2月9日 星期五

中信局設備選擇器

[lang_zh]
實驗室最近要買 computational farm,於是我第一次要 survey 中信局的機器。不看還好,看了才發現表格大的那麼可怕,要用人眼從裡面找東西…不但費時,又容易出錯。於是就寫了一支程式來幫我過濾我不需要的訊息。

目前 online 的版本在 http://victor.csie.org/ctoc/。雖然寫得不是很漂亮,但是我自己用起來還滿 ok 的。歡迎有需要的人來當白老鼠^H^H^H試用,應該可以減少大家不少時間。
[/lang_zh]

2007年1月30日 星期二

ipw for macosx

最近我把之前裝 Gentoo 的 partition 又拿來玩 OSX86 XD 但裝好之後的問題是,ipw2100 不能用,而我的 eepro100 不知道幾年前就壞了,這樣等於沒網路啊。

找了好久,總算看到有一個人最近一個月左右開始在嘗試把 ipw2100/2200 系列的 driver port 到 MacOSX 上。他自己是用 2200,所以 2200 好像已經 ok 了,他說等到夠 stable,會把它加到 osx86 的 3rd Party Driver List

我看這兩天他在這個 forum 上都還有文章,希望過陣子 ipw2100 也能在 osx86 上跑。

Project url: http://code.google.com/p/iwidarwin/

2007年1月28日 星期日

Multi-touch

Multi-touch: iPhone介面在桌面上的真正威力!? 提到 iPhone 的 multi-touch 跟 Jeff Han 去年二月在 TED2006 demo 的相似。

他的 demo 影片超有趣的!

2007年1月18日 星期四

e17 in Gentoo

結果我在這篇文章看到,昨天 e17 消失的原因是 maintainer 把它從 portage tree 搬到他自己的 overlay 方便更新。那我還真不巧選在這個時候裝...

Hi, Portage

[lang_zh]
一直很想玩玩 Gentoo 的 Portage,所以期末考爆炸期間,就把 windows 砍掉試灌 Gentoo,等到一切 ok,再把 Debian 灌成 windows,反正還有一大堆 Debian 可以玩。

結果前天吧,把 ACCEPT_KEYWORDS 改成 ~x86(本來是 x86),結果今天早上 update system 時 expat 更新到 2.0,而且他沒留 1.0 的 library,然後 expat 又是一大堆人要用到的東西,結果整個系統就炸了 Orz

還有一點很倒楣,一開始我裝了我目前最喜歡的 wm: e17,在 portage tree 裡面是 x11-wm/e。裝好之後一切都很棒,除了 CVS HEAD 多少有雷 ... XD 然後呢,今天早上 rsync portage tree 之後,x11-wm/e 就不見了! 一開始還懷疑是我的問題,結果到幾個 mirror 站看都是一樣,而且其他像 x11-libs/ecore, x11-libs/evas 等大概有十個吧,也不見了好幾個(不確定是不是全不見,因為我全沒檢查)。

所以既然系統這麼髒,就重灌吧。第一次灌(好像也不是第一次了..),就當成是 tune USE 參數吧,所以就重裝了。正在 make world 時就來寫一寫東西吧,先講從 Debian 換過來遇到的第一個問題。

在 Gentoo 裡面,因為 dependancy 是「動態」的(例如改了某個 USE flag),所以他很難做到像 Debian 那樣,直接移除所有相依的 package,換句話說,那些 package 很有可能就這樣炸掉了。

所以如果系統上有這些可能會炸掉的 package,看是要重編或是直接移除。但是那些是可能炸掉的 pacakge 就要間接得知了。Gentoo Portage 介紹裡面是建議這麼做:


# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild


Package compile 時用的 USE flag 可能跟目前的不一樣,所以第一行就是用最新的 USE 把改過的那些重編,原因是 USE 改變可能導致 dependancy 的異動。

接下來的 depclean 是把那些不應該存在的 package 拿掉(根據 manpage,應該只是把被用到的 package 跟用到它的全列出來,然後看看實際上裝的有那一些不在這個列表裡面)。

最後剩下的可能還是有問題,例如我遇到的 expat 的例子,USE 沒變(就算變了還是有可能出問題),但是 expat 升級導致用他的人也要重編。這時候就得跑 revdep-rebuild,這其實是還滿噁心的一個步驟。參考 gentoolkit,首先,他會去 scan 所有 ebuild,看看那些 library, elf 執行檔是不是用了不存在的 library,如果是的話,就得把這個 package 更新到比較新的版本(或只是重編)。

很累人地做了這三個步驟,package 間的 dependancy 應該就修好了吧,好累,不想驗證 XD

現在正在編 gcc,不知道編到 stage 幾了...
[/lang_zh]
[lang_en]
I'm too lazy to translate this long post. Sorry about that.
[/lang_en]

2007年1月17日 星期三

C++ 發明人談 C++

C++ 的發明人 Bjarne StroustrupThe Problem with C++

有很多想法不知道怎麼表達。反正,我是懂越多 C++ 越不想用 C++,能不用 C++ 就不用 C++ 啊 Orz

2007年1月13日 星期六

Eval Google Analytics

[lang_zh]
Google Analytics 真是太邪惡了。剛才念不下書,把 Google Analytics side report 左邊 menu 全看過,結果發現「所有報告」->「內容最佳化」->「網頁設計參數」下面有一大堆邪惡的東西,包括造訪者的「瑩幕解析度」、「瑩幕色彩(他這樣翻我還不知道是指 depth..)」、有沒有 enable Java、Flash 版本 ... 的確差不多就這樣啦,用 livehttpheader 看到的就只有一個 request,夾帶這一些訊息。

Digg 上有一篇 Hacking Google Analytics,提到 Google Analytics 很容易惡搞。如果你看誰的 Google Analytics 不爽,就在你自己的網站幫他假冒 id 一次送一堆 request ...

不過原來的連結已經不見了。有人幫他的原文備份 XD
[/lang_zh]

[lang_en]
Google Analytics is Evil! If you go to your site report, and look at "All Reports" -> "Content Optimization" -> "Web Design Parameters", you'll find google records user's screen resolution, depth, java enabled or not, visitors' Flash version, etc. THAT's EVIL! Yeah, by this time those are the information they are collecting, if you check the http request using, says LiveHttpHeader.

By the way there was a post "Hacking Google Analytics" on Digg, mentioned about if you're not happy to somebody, and he used Google Analytics, you can take his Google Analytics id, and send some request(more?more!) as if you were him.

But the original post is gone, this is someone's backup XD
[/lang_en]

2007年1月6日 星期六

Sun 的演講

下午系上演講請了 Sun 的人來,提到 Google Spreadsheets 其實是 OpenOffice!? @@

然後講演中還偷偷婊了 IBM,大概是說,Sun 跟 blah blah 等廠商都同意 follow 某個 open standard,但是 IBM 覺得自己比較強,所以要自己做 XD 最後還幫 Google 廣告,說這是一家不錯的公司,有興趣可以去 Orz

整個演講還滿中肯的。