2010-09-23

[筆記]Python中使用pickle時出現KeyError

遇到這個問題是在使用google app engine (GAE)中使用pickle的時候遇到的。

我利用pickle的dumps將一個物件序列化成字串存入GAE的datastore中,需要用時再取出字串用pickle.loads()還原成原本的物件。如下會出現"KeyError: \x00"的錯誤

from google.appengine.ext import db
class TestDB(db.Model):
    serialize_obj=db.TextProperty()

obj={'a':1,'b':'c'} #要存入datastore的物件
t=TestDB(key_name='test') #建立entity

import pickle
t.serialize_obj=pickle.dumps(obj) #將obj序列化成字串 並存到剛建立的entity中
t.put() #寫入datastore

#下面將讀出剛的字串並還原成物件
t2=TestDB.get_by_key_name('test') #讀出剛剛存的entity
obj2=pickle.loads(t2.serialize_obj) #理論上會字串還原為物件 並放到obj2變數中, 但是這裡會出現KeyError錯誤
print obj2 #上面沒錯的話 會print出{'a':1,'b':'c'}

其實這個問題很簡單,問題在於GAE的datastore在處理Text的資料型態,會將其存為unicode。而將unicode丟給pickle.loads就會導致這個問題。 修改上很簡單,最好的作法就是將db.TextProperty()改成db.BlobProperty(),不然也可以將unicode再轉回一般字串pickle.loads(str(t2.serialize_obj)),但是這樣只是多做無謂的轉換...

2010-06-22

Facebook遊戲去廣告 - App Clear

簡介

玩facebook的小遊戲時,最討厭的就是遊戲旁邊花花綠綠又沒什麼作用的東西,App Clear這個小工具可以幫你去除掉這些礙眼的傷眼物,讓畫面乾淨。(這簡介中充滿怨念...)

網站:http://nerv.appspot.com/fbp#appclear
有問題請到 Nerv. FaceBook Plugins專頁

安裝&使用

安裝

App Clear(遊戲去廣告) 目前版本ver. 0.3
IE, FireFox, Opera: 右鍵點選上面這個連結,並選取"加入我的最愛(書籤)",IE會有安全性警告,請無視他
Google Chrome : 直接將上面這個連結拖曳到書籤列(若無書籤列可按Ctrl+B開啟)

使用說明

要使用的時候,於Facebook的小遊戲頁面,直接到書籤(我的最愛)點一下App Clear(遊戲去廣告)就可以了。
執行成功之後會看到以下畫面

說明:

  • 執行App Clear之後會把遊戲介面以外的東西都從畫面上清除掉,並且會把背景變成灰色以凸顯遊戲。
  • 一些像是Restaurant City、Pet Society之流的遊戲,會把一些廣告跟遊戲合體,這類的就會清不乾淨,這是App Clear的極限,請見諒。
  • 可能會清掉一些你想用的功能,不過只要重新整理遊戲頁面就會恢復原本的樣子。
  • 每開啟一次遊戲的頁面都要執行一次,並未對所有的遊戲測試過,若有發現對遊戲功能造成影響可以向我回報。
  • 執行後右上角會出現一個App Clear ver.xx的按鈕,按開還有一些功能可以使用。
    • 移除聊天室把聊天室整個拔掉(要重新整理才再出現)。
    • 背景色深淺切換可以改背景顏色(白~灰~黑)。
    • 隱藏App Clear介面如字面,把App Clear本身的介面也移掉。

2010-03-27

[食記]鐵人九番

這家是老姊為了慶祝我和老妹生日找的店。裝潢和logo都蠻有特色的,不像是傳統的日本料理店。

吧台有6個位子,也有些一個人就可以點來吃的蓋飯,不過一個人的話有很多頗具特色的菜就會吃不到了。不管是味道還是外觀,從許多道菜中都可以看出是經過師傅們精心設計過的。

點了「和風生菜沙拉、鐵人生牛肉、綜合串燒、酥炸雞軟骨、綜合握壽司、明太子薯片燒、鐵人精選壽司、泡菜豬肉燒、鹽烤鯖魚、味增豬肉鍋、手捲、日式炸麻糬」這幾道都還不錯,下次想嚐嚐他的丼類。


和風生菜沙拉,份量蠻多的,適合多人一起吃,醬調得還不錯。


鐵人生牛肉,這道菜真的很漂亮,我很喜歡他顏色的搭配,當然味道也很不錯。


綜合串燒,烤的剛好,吃起來不會乾乾的,只是其中有幾個還蠻油的。另外值得一提的是右上角的綠茶粉,跟串燒還蠻搭的,不過有點太鹹就是了。


綜合握壽司,魚還算新鮮,醋飯也OK。


明太子薯片燒 ,雖然照片失焦而且角度照的很爛....,讓他有種變難吃的感覺,不過這道真的很好吃,菜如其名就是焗烤馬鈴薯厚片,上面有鋪一層魚卵。



鐵人精選壽司,內容可能不是每天都一樣,點的時候可以問一下今天是哪種。我們吃得這道壽司中間是包炸蝦,上面有蓋鰻魚,不知道本名叫什麼,光是看起來就讓人流口水了。


酥揚嫩豆腐 ,嗯...就是炸豆腐,不過是軟軟鹹鹹的那種(哪種..?)


醬燒中卷,也是烤得很剛好,不會太乾太硬。


生巧克力蛋糕,(咦......跳tone跳很大),旺旺的生巧克力蛋糕,聽老姐說這是他特地跑到神旺飯店裡面買得,吃起來真的不錯 都不會油膩(雖然實際上應該也蠻多油的..),好吃!

這次點的菜裡面,我覺得比較特別而且會推薦的是「鐵人生牛肉、明太子薯片燒、鐵人精選壽司、日式炸麻糬」這幾道。日式炸麻糬忘了照,乍聽之下名字還蠻普通的,不過這道真的還蠻特別的,在麻糬裡面還包了疑似米漿的東西,口感和味道都挺不錯,意外的好吃。

鐵人九番料理亭
Tel:(02)27761108
地址:台北市忠孝東路4段223巷10弄9號

檢視較大的地圖

2010-01-03

FaceBook處理邀請工具 - Accept Helper

因為國軍online中,久久才能上一次網,所以每次放假都累積一大堆的邀請。FaceBook的處理邀請介面蠻討厭的,都要跳到別頁,所以才做了這個Accept Helper,對我自己是蠻實用的,分享給各位。

簡介

接受邀請小幫手,提供更方便的介面一次處理多個邀請,不會每點一個連結都要離開本頁。

官方網站 http://nerv.appspot.com/fbp#accept_helper

安裝&使用

安裝

接受邀請小幫手 目前版本ver. 0.9.2

IE, FireFox, Opera: 右鍵點選上面這個連結,並選取"加入我的最愛(書籤)",IE會有安全性警告,請無視他

Google Chrome : 直接將上面這個連結拖曳到書籤列(若無書籤列可按Ctrl+B開啟)
這個連結在FaceBook中會被過濾掉內容,請到官方網站安裝。
最初的0.6版接受跟忽略按鈕弄相反了XD,如果現在開起來還是顯示0.6版,請重新安裝。

使用說明

要使用的時候,於Facebook的邀請頁面,直接到書籤(我的最愛)點一下接受邀請小幫手就可以了。

執行成功之後會看到以下畫面

說明:

  • 首先每個邀請的按鈕會被[接受!] [忽略]所取代,您可以直接按這兩個連結來處理邀請。
  • 開啟於選單則可以設定接受邀請之後頁面要顯示的位置,預設的本頁面中會顯示在畫面中那個白色的區塊(看不懂的話,實際使用就會馬上瞭解了),選擇開在本頁面中時可以上下拉動下面的灰槓調整大小
  • 過濾使用者選單可以讓你依照邀請人只顯示來自那個人的邀請。
  • 接受第一個如字面,就是接受畫面中第一個邀請,同樣 適用於過濾使用者之後。