Click here to check if anything new just came in.
February 08 2010
tzangms: FANTASY - Mobile01 貼圖
February 07 2010
tzangms: 在 app engine 上用 urlfetch 解短網址 | Oceanic / 人生海海
在 app engine 上用 urlfetch 解短網址
昨天在寫一個程式, 功能是在把 twitter 上帶有 mp3 連結的訊息, 轉成 podcast 好讓我可以用 iTunes 訂閱, 自動下載 XD 推特那一段就直接用了 twitter search 產生的 json, 然後 mp3 的連結都是 tinyurl 產生的短網址, 直覺我就透過了 longurl 的 api 來回復短網址。
誰知道 longurl api 常 request 失敗, 也許可能是因為連續的 request 造成的。後來就突然想到了, 反正 header 都會帶有轉址的原網址吧, 所以就用 urlfetch 單純只抓 header, 然後 parse header 抓出來正常的網址就好啦~ 誰知道看了一下 urlfetch 的文件有居然 final_url 這個 method, 噗, 結果解短網址就變得超簡單。
result = urlfetch.fetch(tinyurl, method=urlfetch.HEAD)
if result.status_code == 200:
url = result.final_url
"YouTube - 李慶安之_那是我的錢_廖小貓出品 (簡單製作版)" ( http://bit.ly/9dgPWI ) # XD
tzangms: 美顏賞‧捌肆肆‧WEI @ 美 顏 賞 ♥ 網路相簿美女 ♥ 680萬人次達成 :: Xuite日誌
tzangms: App Engine 405 Method Not Allowed | Oceanic / 人生海海
App Engine 405 Method Not Allowed
不太清楚為何webapp 為何沒有 implement HEAD method, 所以一開始在 MyAudioCast 的 DashBoard 就常看到一些錯誤, 多是一些 web crawler, 但卻都是 405 Method Not Allowed 的錯誤訊息, 用 curl -I 來測也是得到相同的回應, 本來不以為意, 後來為了要讓 MyAudioCast 上面的 Podcast 可以 submit 到 iTunes store, 卻也得到 405 的錯誤訊息, 無法 submit, 才覺得這事情有點大條 XD
google 之後找到一篇寫到說, 用 app engine 開發的網站無法 digg, 就是因為 405 這個問題, 因為要新增網址到 digg 的時候 digg 會用 HEAD method 來確認網頁是存在的, 所以說先前 Dashboard 上看到的 web crawler 也會先用 HEAD 來檢查網頁是否存在, 這麼一來只要是 HEAD method 都回 405 Method Not Allowed 的話, 那機器人不就都不來了嗎?
不過這問題其實很好解決, 幸好這次在開發的時候有先寫一個 RequestHandler 來繼承 webapp.RequestHandler 所以直接在 RequestHandler 增加一個 head method 就可以解決這個了。
def head(self, *args):
pass
最簡單的就是這樣 XD 不過不知道是否改為執行 get method 然後把 content 去掉只留 header 這樣會不會比較好 :p
tzangms: 必須保衛摩斯(漢堡) | HOW's SketchBook
February 06 2010
tzangms: 送給何飛鵬先生關於痞客邦未來的建議 @ 創意學堂 :: 痞客邦 PIXNET ::
tzangms: ericsk - gaeo reboots
tzangms: 【私‧生活意見】:出書沒有你想的那麼好賺 - 樂多日誌
"YouTube - moodspin PictureBooth - LIVE photo-morphing iPhone 3Gs app" ( http://bit.ly/b2zbky ) # photo booth ㄝ
tzangms: Django | Weblog | Django 1.2 beta 1 released
"YouTube - Don't Judge too Quickly" ( http://bit.ly/bWotyP )
tzangms: App Engine BlobStore 試玩心得 | Oceanic / 人生海海
App Engine BlobStore 試玩心得
一開始構想 MyAudioCast 的時候, 原本是想說把檔案都送到 S3, 然後透過 CloudFront 還可以玩 rtmp streaming, 後來發現 urlfetch 只能傳 1MB 所以放棄, 就只好使用 BlobProperty, 沒想到 BlobProperty 也只有 1MB, 後來才知道 app engine 1.3.0 有了 BlobStore, 可以放 50MB 的檔案, 雖然還在實驗中, 不過到還是真的可以用, 所以就把東西都放在 app engine。
不過要使用 BlobStore 之前就得先開啟付費的資料, 準備開始扣款, 而 BlobStore 每天的 free quota 也只有 1GB, 原本以為有點小, 但其實只要給他 $0.10 / day 就可以有 40GB per day, 老實說其實滿划算的。 只是單檔 50MB 的限制 … 我是覺得 100MB 比較寬裕一點。
後來才發現, App Engine 真的貴的是在出去的頻寬。 outgoing bandwidth 的 free quota 也是 1GB per day, 可是當我 budget 設定 $0.66 / day, 也才提昇到 6.5GB per day。
所以最後我還是試了一下這一篇寫的方式, 來把檔案丟到 S3。 雖然剛開始用 S3 就有看過這個辦法, 可是根本不會想去試, 不過現在在 app engine 上似乎是成為唯一能傳大檔到 S3 的方式了, 只是就少了一些可以控制的東西, 也需要一些 workaround。
不過現在用 S3 + CloudFront 感覺良好 XD 另外, 我一直把 Blob 打成 Blog Orz
tzangms: 超克藍綠 - 中國官員說:該死的台灣假護照.....(比利星人Jalo西班牙新聞翻譯)
tzangms: 30 Amazingly Creative Social Bookmarks Icon Sets : Speckyboy - Web Design, Web Development and Graphic Design Resource
tzangms: MongoDB - Hosting Center Update
"YouTube - 美貌稱霸一條街~師大 紅茶店花 蟲子 【就是愛把咩】2010.02.04" ( http://bit.ly/bxplnj ) # 真的滿漂亮的~
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
