小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

顯示具有 ajax 標籤的文章。 顯示所有文章
顯示具有 ajax 標籤的文章。 顯示所有文章

2008年1月6日 星期日

GoogleBack Machine

像是壞狗這類的寄人籬下型 Ajax 應用,一個大問題是無法儲存。
比方向是壞狗不道德,儲存搜尋出來的結果,或者編輯常用關鍵字清單。壞狗疊疊樂中,如果那些列表能夠讓使用者自行修改多好。又如果能夠定期紀錄排名,然後追蹤,不是能夠更有用嗎?
理論上既然能夠利用別人的服務來自動讀取資訊,那應該也可以利用別人的服務來自動儲存資訊吧,但這樣其實多半代表這個服務有一些安全上的疑慮,主要原因有三個:
  1. 大多數的服務提供者並不希望自己的儲存空間被他人自由利用。畢竟不是慈善事業。
  2. 就算提供了給使用者儲存的空間,這個私人空間如果能夠被壞狗這類網頁寫入,那這已經算是 XSS 的漏洞了。
  3. 就算真的能利用某種方式,在某個空間中自動儲存東西(不管是公開或私人空間),那麼別人也可能用相同的方式來破壞或者干擾我儲存的資料。
所以其實仔細想一下,好像除了利用 cookie 或者利用 Google Gear 之外,別無他法。但兩個方式都不完美,前者儲存量太少了,後者要另外加裝軟體。
在繼續這個主題之前,我們先看一個服務,Wayback Machine 。這個服務主要是自動將整個 Internet 做備份。但有個缺點,就是新的資料無法很快更新,他只提供六個月之前的資料,而且更新的頻率你也無法控制。
另外有一個服務叫做 Hanzo:Web,就是讓你自己客制化的 Wayback Machine,你可以自己定義多久抓一次,要抓哪些網頁。不過這個服務會提供多久還不清楚,而且也抓不到 script 生成的動態資料。
現在我們可以利用 Mashup 來 DIY 一個 Wayback Machine,而且能抓到 Script 生成的資料。
其實很簡單,我用 Openkapow 寫了一個機器人,你只要利用下列的網址http://service.openkapow.com/weijr/googleback.rss?URL=http://slashdot.org
就能產生一個包含 slashdot.org 網頁內容生成的 RSS。
把slashdot.org 換成其他的網址,就能變成其他的網頁內容。
好吧,但是這樣並沒有辦法儲存舊網頁啊?這就是 Mashup 的精神了,接下來,你用 Google Reader 來訂閱這個 RSS, Google Reader 自動幫你把舊的 feed 存檔。接著再利用 Google Reader 提供的分享功能,產生 feed(配合 c=xxxxxx的參數,可以讀取舊的資料)。再利用 google feed API,就能造出一個 Google Back Machine了。

Remark
  1. 這樣只能替單一的網頁做備份,但 OpenKapow 有 Crawl 的功能,技術上你可以砍站,或者做個 Sitemap 來備份 Sitemap 中的連結。但雖然 Openkapow 遵守機器人協定,這個還是太有侵略性了,所以自己寫比較好。
  2. Google Reader 的 feed 會過濾掉一些 html語法的東西,所以要完整的網頁資訊,最好先將 html 語法編碼成安全的文字。
  3. Openkapow 似乎不支援 Ajax ,但支援許多script 語法。如果你要儲存動態產生的資料,可以特別的寫些網頁,然後利用 script 產生一些內容。最後再用 Openkapow 抓取動態內容。
回到壞狗疊疊樂的例子。如果我想要每個星期紀錄一次「話題女王」的排名,那麼直接利用上面的 GoogleBack Machine 法,似乎不錯。但是壞狗因為用到了 Ajax,所以 OpenKapow 其實無法正確的生成內容。
理論上,我可以用 OpenKapow 做一個和壞狗疊疊樂相同的功能的機器人,產生報表,然後用 Google Reader 紀錄。配合 GoogleBack 的概念,我可以利用壞狗的名單 script,產生一個 google url 搜尋列表,然後用 OpenKapow 機器人去抓這些 Google 搜尋結果就可以了。這樣我只需要維護一份清單。
至於名單的紀錄就比較麻煩,但是我可以利用 Kapow,產生包含名單的 feed,然後讓使用者訂閱這些 feed。最後再用 Cookie 紀錄使用者的 Google Reader feed 網址就可以了。這樣還能支援無限 Undo 的名單編輯。
Hanzo:web 還有 Google 筆記本也可以做類似的運用。

2008年1月2日 星期三

壞狗疊疊樂

繼之前的壞狗不道德搜尋引擎(感謝有興趣的朋友的試用,大陸的朋友 Matrix也將該文貼到Solidot上了),我們又有了一隻新壞狗:「壞狗疊疊樂」。簡單的說,壞狗能幫你看看誰在網路上最紅最有名?是星光幫還是斧頭幫?林志玲還是馬英九?朱學恆還是林一平?豬頭、蔡頭還是蔣友柏?XDite 還是丁丁大站?
名稱由來:
在 Mobile01 以及其他地方,常常會看到一些「比較文」,其中不能免俗的,會有所謂的「疊疊樂」圖片,把要比較的手機、PDA、電腦,甚至汽車、自行車,疊在一起,讓讀者能一目了然,對於這些小玩意的外型做最直接的比較。
壞狗疊疊樂就是取其中「比較」的含意。從 Yahoo 、Google 開始成為網路重心以來,我們常常會用搜尋結果數量來當作熱門度指標,比方「其實我比你有名」這篇,就是一個典型的例子。
有需求,就會有人發展工具。相關的工具從很早以前就有了。現在甚至已經有官方的工具, Google TrendsYahoo Buzz。但你要有名到變成星光幫、馬英九、蔡依林、謝長廷、Monkey,Google Trends 才會幫你畫圖。
壞狗疊疊樂不但幫你一次算出各式各樣的 Google 搜尋結果數量,而且還讓你把各種結果放在一起,玩疊疊樂。
網址:
壞狗疊疊樂
壞狗(疊疊樂和不道德搜尋)的特點在於,沒有主機,完全寄生於 Google 的服務上,純 Ajax。
這些特點一方面是優點,另外一方面也是限制。
有時 Google 會把壞狗當成是惡意軟體,不讓你連線,這時,你可以設定 Proxy試試看,比方說 Hinet 的可以設成 proxy.hinet.net 80,很有可能就能連了。
另外也可以試試看用匿名瀏覽的方式,只是這樣會很慢。
使用說明:
一開始使用壞狗疊疊樂的時候,可以點選左邊預先設定好的列表,看看誰是台灣最紅的名模?星光幫裡面誰最紅?總統候選人誰人氣最旺?飛輪海紅還是F4 紅?
然後,你可以清空所有結果、從上面搜尋框加入新的關鍵字,點選不同欄位改換排序。
也可以編輯右側的文字名單,一次整批搜尋,或者紀錄到左邊暫存。
你可以把右側名單複製,然後留在自己電腦的文字檔中。下次用壞狗疊疊樂的時候,直接貼回到右側的文字框中,然後按送出,就能整披查詢了。

2007年11月28日 星期三

壞狗不道德搜尋: Google 不想讓你看的圖片


有善就有惡,有光明就有黑暗,有咕狗就有壞狗。
可能很多人都知道,Google 的圖片搜尋可以設定安全選項,使用者可以選擇「高安全性」、「中安全性」或「無」。依照選項的不同,Google 會把一些他認為不好的色情圖片過濾掉。
但正所謂有光亮就有陰影,在 Google 大神教導我們什麼是合乎道德的同時,祂同時也幫我們把不道德的東西找出來了。
因此,壞狗就誕生了。壞狗依照咕狗大神的判斷,將搜尋的結果分成「道德、不太道德、邪惡」(Good, Bad, Ugly) 三類。
壞狗的英文名字是 Bagle,因為 Google - Good +Bad =Bagle.
有興趣的人,可以到 Bagle 試試看。不過似乎 Google 的人工或智慧還不是那麼強,所以很多判斷很無厘頭,也許你會發現原來自己的照片被 Google 認為不適合讓小孩子看。不管怎麼樣,看看 Google 到底認為哪些圖片是限制級、不想讓你看,也挺有趣的。似乎人名和英文的判斷會比較準一點。
更新:
感謝各位的留言和回應(也包含PTT、黑米、推推王上面的)。
小明建議的名字:「悖骨」也不錯,頗有一點反叛的味道。原本的 More Bad,More Ugly,也改成了問句「More Good? More Bad? More Ugly?」,為善為惡只在各位的一念之間,可以自己決定。


更新:目前因為年久失修,已經無效。


技術細節:
這是一個概念測試,所以很多東西還不完整,比方倒退瀏覽功能鍵還沒有支援,一些搜尋結果資訊也不完整。另外 UI 也不是太好。
雖然「全部-好=壞」這個概念很簡單,但是實際要寫成程式有點麻煩,主要是 Ajax 的技術細節。照例,我不想自己架設主機,所以要用寄生蟲的方式。但 google image 沒有好用的 API(video有 rss,可以配上 google ajax feed api),當然可以用 openkapow, bookmarklet, grease monkey 等方式達成,但這次我試著使用 Google 翻譯來完成。Google cache 應該也可以這樣玩。
基本上,這是把 Google 翻譯當成匿名瀏覽的用法,所以用一般的匿名瀏覽網站也許也能辦到。不過用 Google 翻譯的好處是 Google 太強壯,不會倒,而且一些 Ajax 動作比較直接。

2007年6月24日 星期日

兩個跟 AJAX 和 BBS 有關的: ptt blog 聯播, BBS 病毒

第一個是 ptt 部落格聯播,弄的方式和親友部落格類似,但是由於這個名單不是我管的,所以部落格名稱用另外一個方式取得。缺點是比較慢一點。所用的色調還是我一直用的藍綠大和解色調。聯播網也本身只是 css 加上一些 javascript 程式碼,並不包含內容。只要更改 google api key 還有 feed 的來源,就能用在騎他的聯播上。其實 google reader 有續抓的功能,可以列出所有的文章,不過目前沒有放上去。
另外一個就是我剛剛去目前有名的 ajax bbs gaaan.com 上註冊了,這個 web based 很有 bbs 的感覺,相當有趣的作品。不過我測試了一下,就發現了不少問題,理論上,可以利用這些問題寫出病毒,也就是當使用者閱讀文章時,文章會被自動複製、傳染到其他信區。當然我沒有真的寫下病毒,只是寫信給站長,並且在 test 板寫了幾個無害的示範。
這個也許可以算是第三個 bbs 病毒。我之前發現過兩個,第一個是 kkman 病毒,利用 kkman 的一種進階功能,引誘使用者點一些連結之後,病毒能自動複製傳染。我在 kkcity 上面也寫了幾個範例。但是很早以前, kkman 這個功能就已經是預設關閉了,所以其實不是大問題。另外一個是利用 netterm bug。早期 netterm 算是佔有率不低的 telnet client,但我發現了一個嚴重的 bug,某些特定的控制碼有 buffer overflow,這足以寫出可以入侵到電腦上的病毒。我在自己的 BBS 上寫了一個示範,會讓 notepad.exe 自動跳出。算是挺嚴重的。
其實推廣我處理聯播的方式,搭配 gaaan 的類 bbs 介面,可以創造出一個無主機的虛擬 bbs。

2007年6月23日 星期六

親友部落格聯播

做了一個簡單的親友部落格聯播。技術上是用 google reader + google ajax feed api 然後放到 google page creater 上。 其實也可以用其他的組合比方說現成的 blog 聯播服務、 google reader 的 javascript api,但是要達到我要的效果,似乎只有用這個組合或者用 feedburner 的 javascript api 取代 google ajax feed api。
可惜 google ajax feed (包含選擇 xml 格式輸出)和 feedburner 的 javascript 似乎都無法保留 google reader 的 source 屬性,我只好手動弄個 url 和 blog 名稱的對照表。
整理一下發現寫 blog 的人真是多。想當年我首先知道有 blog 這個東西,是因為有個常常來問問題的學生, email 裡面放入他的網站,有一次我就點進去看了,看到他寫了一堆生活瑣事和照片。因為自己以前也寫過一些網頁,馬上就意識到這種網頁出版的模式的魅力。後來找了一下,才知道這種東西叫做 blog。那時已經是 2001 年了,距離 blog 概念產生之日已經 4 年了。
不過在這之前參與 Charlieb81 1000,應該算是類似的東西,不但是 blog,還是共筆 blog。不過發表平台是 bbs ,更沒有 rss。
回到聯播 blog,ajax 本身倒是沒什麼難度,反而是因為我的工作平台是 firefox/firebug,所以 IE 的 CSS 還搞得比較久。由於寄 google 籬下,也有一些缺點無法克服,比方說聯播的排序不盡理想,這個也許 google api 的 sort 功能有用。另外就是 google reader 和 google ajax feed 的更新都不是即時的,這個用了一些小技巧來改進他,似乎有用。

2007年5月30日 星期三

建立 wikipedia 參考

範例:在文章中自動搜尋字詞,然後連到 wikipedia 的解釋。用法很簡單,用 script tag 載入 list_b5.js(charset=big5) 之後, wikify(document.body)就行了。
利用的是 wikipedia 下載的關鍵字資料庫,把裡面一些字丟掉,變成了大約 900k 的 json 資料,所以特別是地一次看的時候,載入會比較慢,最慢可能會到三十秒左右,但是快的話會在五秒左右。
用簡單的編碼,可以把字典檔案縮小到 500多k,但是解開字典檔似乎會花掉更多時間。
特別是 IE ,會造成程式整個卡住,範例在這裡