On twitter

我這禮拜走 @Randylien 路線, 都不跟同事一起吃飯 ~

follow me on twitter

Posts Tagged ‘python’

PiCloud 0

PiCloud 這個真的好屌, 感覺很好玩的樣子! 來試著把 stickeraction 的 queue 丟上去跑, 應該很適合 :D

March 2nd, 2010 Programming Tags: ,

stickeraction 全新改版 2

其實新版的 stickeraction 上線了一個禮拜左右了, 除了版面整個改掉之外, 也從 php + codeigniter 換成 python + django, 換成用最大的好處就是馬上就多了後台可以用 ( 笑 ) 看起來像是下面這樣。

另外這次也加了多國語系, 目前有繁體中文、簡體中文以及英文 ( 我想也不會有其他的語系了 XD ), 會依照瀏覽器的語系自動切換, 或者可以從網頁的 footer 來切換語系。

這是我的第二個 django project, 由於第一個是公司的網站, 所以不太能亂搞, 弄個一個自己的以後, 想要衝 trunk 就衝, 完全沒再怕的 XD 至少目前知道 django 1.2 rc 1 用 1.1.1 的設定直接衝上去是沒有問題的 XD

其實沒有管 stickeraction 已經好一陣子了, 都靠 monit 在幫我重開 lighttpd, 可是 php fastcgi 仍舊一直變殭屍一直到把記憶體吃光 Orz

機器仍舊是一台 Linode 540MB 的 VPS, deploy 方式是用 apache2 + mod_wsgi 然後一樣是用 virtualenv + pip 來跑。

剛上線的時候比較慘的是, 目前 stickeraction 的 request 差不多是 30 reqs/sec, 晚上會到 40+ reqs/sec, 所以 Apache 的 KeepAlive 沒有關掉, 一上線就被打掛了, 害我一度以為 apache + python 撐不住, 想說程式白寫的了, 趕快開了 server status 來看才知道是怎麼一回事。

目前看來跑起來都很順, 只是 cpu 較先前吃多了點, 不知道是哪個環節, 因為 lighttpd 換成了 apache, php 換成了 python, 而大部分的 mysql table 也都從 MyISAM 換成了 Innodb, 之後在來試一些東西。

stickeraction reborn soon 6

StickerAction reborn ... soon ...

除了把 stickeractionphp + codeigniter 整個換成 python + django 之外, UI 也整個翻新了, 希望能夠趕快弄好上線, 我就不想管了 (攤)

弄 html + css 真的是比寫 code 還要困難, 而且花時間 ~”~

在 app engine 上用 urlfetch 解短網址 0

昨天在寫一個程式, 功能是在把 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
February 8th, 2010 Programming Tags: , , , ,

App Engine 405 Method Not Allowed 2

不太清楚為何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

February 7th, 2010 Programming Tags: , , ,
Partners of Oceanic / 人生海海

jiwo sca wellmeet