November 23,2009

電影流水帳(2009/11/11~2009/11/19)

終於想起來了,上次我漏寫的片子就是 Coco Channel。以後還是要記在筆記上好...

  • 非誠勿擾 (IMDB, Wikipedia)。馮小剛拍的片子,拍的很不錯。從註明非誠勿擾的徵婚啟事開始的一段故事,當然非誠勿擾的結果,往往會有人來亂,舒淇就是。一個別人婚姻裡的第三者,想跳脫卻又無法割捨情感,心裡苦悶無人能傾訴,只好找陌生人,貼徵婚啟事的葛優就雀屏中選了。從陌生人到朋友,從朋友到自殺前的伴遊,北海道的風光和葛優的情還是無法讓舒淇跳脫她的苦惱,最後還是自殺。但自殺沒死成,卻讓舒淇看開了一切,重新開始人生。值得一看的片子,裡面很多台詞都很有梗,片子一開始的發明很有趣,據我同事說真的有產品上市,讓我忍不住想買一個。
  • Coco Chanel(TV)。這不算電影,是電視公司拍攝的戲劇,但這片榮獲多個獎項。主要是介紹 Chanel 的前半生平,片子以交叉的倒敘來介紹 Chanel 的生平。我覺得這個女人最令人佩服的是能追求自己的夢想,勇於跳脫現有的生活,原本她是因為愛情而跟某個男爵住在一起,但在她看清男爵不會跟她結婚以後,即便男爵給他富裕的生活,她還是分手。這也是為甚麼這兩年會有人拍她傳記電影的緣故吧。人一旦在一個熟悉的環境久了,就很不容易再跳脫出來,這就心理學上講的"舒適圈",我現在好像就是這樣子。
  • Surrogate(IMDB, Wikipedia),中譯:獵殺代理人。科幻驚悚片,由於機器人工業的發達,讓人類選擇使用機器人來過生活,自己只要在家裏操控就行了。這樣的結果,使得你看到的人,未必是你真的認識的人,這也是這部片子想說的事情,最後由於機器人中了毒,完全停擺,讓人類回到沒有機器人的時代。我個人覺得還蠻普通的片子,因為用機器人出去 social,我覺得還蠻雞肋的,如果這些感官刺激真的能透過網路傳回家裏的本體,幹麼還要機器人,大家只要上網路去 social 就好啦~就像 The Matrix 那樣豈不是樂的輕鬆?話說回來,或許這跟名牌是一樣的,不管名牌的 logo 怎麼樣地醜,有個名牌在那兒,總是讓人比較放心,或許有機器人在,會比網路上的虛擬形象來的讓人放心吧。
  • Four Christmases(IMDB, Wikipedia),中譯:真愛囧冤家。兩個不愛回家過聖誕節的人,因為飛機停飛,湊巧又被記者訪問到,導致被家人逮到,只好乖乖回家過節。由於兩人的父母都離異,導致他們必須一天趕場四個聚會,四個聚會下來,讓他們對人生改觀。還挺有趣的片子,可以讓人思考跟家人過節的真正意義。兩人最後從分手到復合,有點難以理解,我猜或許是四年的羈絆跟當天的重新認識彼此才讓他們復合的吧。


Posted by elleryq at 樂多Roodo!11:40回應(1)引用(0)電影流水帳
標籤:Movie,電影流水帳

November 19,2009

發佈你的 Python 程式

因為覺得老是從專案目錄下執行程式也不是很方便,所以想,應該要把程式弄的標準一點,能依循比較正式的方法去發佈程式。一般來說,各大語言都會有建議怎麼去散佈、發佈你的程式。

所以今天早上胡亂地用 python deployment guide 找了一下,發現找不到這樣的 guide。後來才發現找錯關鍵字,python 裡是用 distribute/spreading,改變一下關鍵字,就能找到這幾份:

文件不難,照著試一試,的確一下子就寫好了。

比較麻煩的是程式如果要用到 module 裡的一些檔案時,會不知道路徑。舉例來說,我是把 glade 產生的 gtkbuilder ui 檔案放在 module 路徑下,那程式該怎麼讀取呢??總不能寫死吧。還好 Stack Overflow有解答:Retrieving python module path,就是用 os.path.dirname(module.__file__) 取得。

Posted by elleryq at 樂多Roodo!15:48回應(0)引用(0)Python
標籤:python

November 12,2009

Bing translate in Python

根據 Microsoft Translator HTTP 介面,然後用Python寫的。程式不長,其實跟 google translate 的方法很相似,最下面有使用範例。

附帶一提的,Bing翻譯網站上完全沒提到要怎麼申請 appid,申請 appid 要去 Bing Developer Center 申請,所以你要自己去申請,取得 appid 之後,把程式裡的 your_app_id 換成你申請的 appid。

#!/usr/bin/env python
# -*= coding: utf-8 -*-
import sys
import os
from urllib import urlencode
import urllib2
from urllib2 import Request, urlopen, URLError, HTTPError
import json
from translate import *

class BingTranslate:
	appid = 'your_app_id'
	base_uri = "http://api.microsofttranslator.com/V1/Http.svc"

	def __read_from_req( self, req ):
		try:
			response = urllib2.urlopen( req )
			result = response.read()
		except HTTPError, e:
			print e.code
			print e.read()
			result=""
		return result

	def detect( self, text ):
		uri="%s/Detect?appId=%s" % ( self.base_uri, self.appid )
		req = urllib2.Request( uri, text, { 'Content-Type':'text/plain'} )
		return self.__read_from_req( req )
	
	def getLanguageNames( self, locale=None ):
		"""
		Thanks MSDN, I still don't know the value of parameter 'locale'
		Don't pass any parameter to getLanguageNames, or you will get error.
		"""
		uri="%s/GetLanguageNames?appId=%s" % ( self.base_uri, self.appid )
		req = urllib2.Request( uri, locale, { 'Content-Type':'text/plain'} )
		return self.__read_from_req( req ).split( '\n' )

	def getLanguages( self ):
		uri="%s/GetLanguages?appId=%s" % ( self.base_uri, self.appid )
		req = urllib2.Request( uri, None, { 'Content-Type':'text/plain'} )
		return self.__read_from_req( req ).split("\r\n")

	def translate( self, text, fr="en", to="zh-CHT" ):
		uri="%s/Translate?appId=%s&from=%s&to=%s" % ( self.base_uri,
				self.appid, fr, to )
		req = urllib2.Request( uri, text, { 'Content-Type':'text/plain'} )
		return self.__read_from_req( req )

if __name__ == "__main__":
	t = BingTranslate()
	print t.translate( "test" )
	print t.translate( "鬼", "zh-CHT", "en" )
	print t.detect( "中文測試" )
	print t.detect( "中文测试" )
	names = t.getLanguageNames()
	langs = t.getLanguages()
	print "Language Names (total %d):" % len(names)
	for l in names:
		print l
	print "Languages (total %d):" % len(langs)
	for l in langs:
		print l

Posted by elleryq at 樂多Roodo!15:26回應(0)引用(0)Python
標籤:python,bing,translate