Google appengine的Dev Environment中文問題

| 2010年2月18日星期四

今天終於升級到app engine 1.3.1,然而可以預期的,一堆中文的錯誤問題,這些通常是在datastore的管理介面會遇到的  http://localhost:8080/_ah/admin/
這是其中一個例子:

Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 507, in __call__
handler.get(*groups)
File "C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py", line 839, in get
field = data_type.input_field(name, value, sample_values)
File "C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py", line 940, in input_field
value = str(value)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)



這一隻程式一直都有錯誤,之前反應給Google,不過他們不理我,可能他們不會中文。


檔案位置在這裡:

C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py


這是我改過的版本:

http://paste.plurk.com/show/176672/


這是原始的版本 (在您原本的環境應該都有,而且是一樣的)

http://paste.plurk.com/show/176676/


有興趣的人自可自行線上diff以下,可以使用 線上文字比較工具


python中的中文問題基本上有幾個條件:


  1. str()前必需要是 utf-8,比如  str( utf8_var.encode(‘utf-8’) )
  2. print 任何字串前,請先確認是utf-8,方法同上
  3. 請確認您測試的瀏覽器,在refresh時的編碼是utf-8
  4. sprintf的方法前,不能是utf-8,比如   “Hi, I am %s ” % utf8_var.decode(‘utf-8’)
  5. 操作replace或是re的時候,儘量使用 unicode


以上幾點是之前學到的經驗法則。

在windows中使用VIM來撰寫python的設定

| 2010年2月17日星期三

個人不喜歡很肥大的IDE(Intergrated Development Environment),像是M$的studio或是Eclipse。python不像其它的程式是用用 { 和 }來進行槽狀結構,它是用空格的。python中標準的空格不是用tab,是使用4個空格的。但vim內建的卻是tab。

只要在vimrc中加了這一段,就OK囉!

Windows中的路徑是  C:\Program Files\Vim\_vimrc

au BufRead,BufNewFile *.py set expandtab
au BufRead,BufNewFile *.py set ts=4
au BufRead,BufNewFile *.py set sw=4
au BufRead,BufNewFile *.py set softtabstop=4

如果要讓其它檔名也支援,將 *.py的地方改成   *.py,*.php  就可以了。

Beautiful Soap:使用python擷取html內容

|

這是一個python的html library,之前在製作美食邦的時候用到的。一般來說,在製作網路爬蟲時,如果要擷取這份html裡面的某一段資料,大多是使用Regular Expression(正規表達式)來完成。

http://paste.plurk.com/show/176500/

有時候,還真希望可以使用jQuery一樣,直接指定路徑即可擷取內容。

不過有了Beatutiful Soap之後,這個願望是可以實現的,比較可惜的是,要使用python。

不過是有相關串接的library可以使用。

請參考Beautiful Soap:

http://www.crummy.com/software/BeautifulSoup/

Google App Engine 推出1.3.1 - 解決了分頁問題了嗎?

| 2010年2月11日星期四

Google App Engine又有了新的版本。
變動還真是大,又興奮又難過。
主要是datastore上有三大變動:
1. 新增指標功能
2. fetch取消上限,原本只能一千筆。不過其它的限制依然還在,比如說上限只能1MB
3. 大幅修正big table的內部錯誤,並且會自動重做。

在cursor功能上,不能加上filter或in 的查詢(也就像是sql的where),其實這樣限制又大了許多。
這是範例程式
cursor依然沒有解決分頁的問題,因為datastore很難設計成這麼單純,通常一定會有附加條件的。
不過,此法對於備份來說幫助卻非常大哦!

Google App Engine Blog: App Engine SDK 1.3.1, Including Major Improvements to Datastore!: "n with paging URLs,"

AppEngine推出 SDK 1.3.0,新增BLOB容量1GB

| 2009年12月15日星期二

原本AppEngine提供1GB的datastore來儲存,但是圖片檔案一樣是儲存在datastore。這次AppEngine直接再送1GB的datastore儲存空間,而且程式撰寫起來更是異常的簡單。不過不知道是否支援304的header就是了。單檔可以儲存50MB,真是超級大的。

其實看到這個消息個人感覺蠻無言的,因為前天才剛寫完圖片上傳的程式(詳見美食邦的圖片網址),並且handle了304的request header。

資料來源:Google App Engine Blog: App Engine SDK 1.3.0 Released Including Support for Larger User Uploads