quilt

今天終於試用了 quilt,這是一個可以管理 patch 的工具,最早由 Andrew Morton 的一些 script 而來。
專案本來就有寫一些 script 來作 apply 的工作,只是,在想要倒回去或向前的時候,會變得非常麻煩!用 quilt 的話,可以方便的向前或向後。
因為已經有 patch 了,所以施作的方法很簡單,先 import,再 push。

quilt import patch01
quilt push
quilt import patch02
quilt push

之後就可以用 pop 往回推,或用 push 繼續往前了。
小記:坦白說,本來想放棄直接用 git 來作的…因為剛好在看 ProGit,覺得 git 或許會更適用也不一定,不過只是想簡單地往前或往後測試 patch,用 quilt 應該就夠了。
參考資料:

Python 練習 – 抓書

早上用了大概兩個小時搞這個,這是用來抓的,除了抓以外,還直接把 script 、廣告…等都清掉,只留下書的內容。用法很簡單,執行這個 script,參數帶上那本書的網址就行了。
程式碼怎麼排都不行,所以丟到這裡了。

電影流水帳(2009/8/25~2009/8/31)

為甚麼會喜歡看電影呢??今天早上我隨意瀏覽電影類 blog 文章時,突然想到這件事情。好像也沒什麼來由,就喜歡上了。我想,人應該都是喜歡看、聽故事的,不管故事是以電影、小說、路邊潑婦罵街…等或是其他的方式呈現出來。但是,主要的原因是什麼呢?

  • 雲のむこう、約束の場所,很好看的動畫電影,流暢的配樂、恰當的口白,完整地、動人地述說故事,你一點也不會發覺到這是科幻電影,只會覺得…很好看…
  • Blood, The Last Vampire (2000)(Wikipedia)。這是動畫版的Blood: The Last Vampire,片子不長。我個人覺得比 09 年的真人版來的好看,真人版故事大架構跟動畫差不多,原本的護士被替換為駐守基地的將軍的女兒,反派角色被換為小雪,然後加上了串場的故事情節。但是看過動畫版,我覺得真人版加上的一些東西其實一點都不需要,把故事當作是像怪談之類的鬼故事來看,會比較恰當,這也可以說明為甚麼最後會有那一段口述。
  • 17 again(IMDB, Wikipedia),中譯:回到17歲。失意的中年人因緣際會下回到17歲,藉此了解了他的兒女和找回愛老婆的原點,很老梗的故事。但裡面配角 Ned Gold 把妹的經過卻深深吸引了我,簡單的說,Ned 是個深愛 Star Wars、The rings 的阿宅,他遇到了吸引他的女校長,用盡各種怪招,卻始終不得其門而入。女校長也很困擾,一直擺脫不了 Ned,後來為了 Ned 的捐贈,而接受了他的晚餐邀約。晚餐裡,女校長嚴詞拒絕了 Ned,Ned 脫口而出的甘道夫,居然成為叩關的關鍵,接著不可置信的,女校長說了精靈語,於是兩人就用精靈語交談起來。這實在是太妙了!

會自殺的類別

坦白說,我從沒想過物件可以自殺這件事情。當我看到這樣寫的時候,實在是很令我驚訝…實驗的結果,還真的是可以。

#include 
class SuicideSample {
public:
SuicideSample() { std::cout << "ctor." << std::endl; }
~SuicideSample() { std::cout << "dtor." << std::endl; }
void DoIt( void ) {
delete this;
}
};
int main( int argc, char* argv[] )
{
SuicideSample* obj=new SuicideSample();
obj->DoIt();
// of course, object can kill itself, but if you try to kill it again
// program will crash.
//delete obj;
return 0;
}

電影流水帳(2009/8/14~2009/8/24)

為什麼家裡裝了 CentOS 的 Server 的 CD-ROM 會莫名其妙地 eject 出來?是因為太熱導致 CD-ROM 短路而自動 eject 嗎?完全找不到原因,看來過幾天要來拔電源線,一方面是避免莫名其妙地 eject,一方面是避免二位公子去亂搞。

  • Blood: The Last Vampire(IMDB, Wikipedia),中譯:血戰:最後的吸血鬼。聽了J同事的說明,才知道這部片子是由漫畫改編的,2000年的時候還有出動畫的版本。劇情的主軸是個復仇的故事,女主角是翼手(類似吸血鬼的生物)跟人類的混血兒,由於翼手將他的父親殺害了,所以她決心報仇,故事的最後,她發現自己要殺的人居然是他的母親。真人演出的這部,坦白說,讓女主角以人類身份將自己母親殺害的理由有點薄弱,而且,她的母親也被殺的太快了,最後,Alice 看起來也應該是會被關到精神病院的,卻在莫名其妙的審問狀態下結束。雖然沒看過動畫或是漫畫,不過我想動畫版或漫畫應該會比較好看吧~
  • Terminator Salvation(IMDB, Wikipedia),中譯:魔鬼終結者-未來救贖。開始一個新的故事架構是正確的,不過誠如朱學恆大大所說,設定實在有些不太合理啊~The matrix 裡,人類都在地底活動,這我可以理解,那是電腦故意放水,但是 Terminator 前三集不是說,人類都被打趴嗎?怎麼會有空軍還能跟機器周旋?這實在是有點奇妙啊~算了,總之看起來應該是會有第五集,希望是可以說明的更清楚一些,這一集普普通通。
  • Ice Age: Dawn of the dinosaurs(IMDB, Wikipedia),中譯:冰原歷險記3恐龍現身。故事借用了地心理論,讓恐龍繼續存活在地底,相當的不錯。個人覺得這個續集的笑點不錯,我很喜歡Buck、Crash跟Eddie這三個瘋狂的傢伙,特別是他們要經過充滿笑氣的峽谷那段,讓我不自覺地笑了好幾次~這部片子是不難看的續集電影。

Python 練習 – 將 Bing 的每日桌面圖像變成 GNOME 桌面

上星期看到這篇:如何将Bing的每日桌面图像变成我的Windows 7桌面,就順手試試看改用 Python 來作,執行這個 script 以後,會自動拿 bing 的圖片來作為你 GNOME 的桌面背景圖片。
目前只有一個小問題,就是 xml.dom.minidom 有時候會因為 & 的關係導致解析失敗。

#!/usr/bin/env python
import random
import os.path
import subprocess
import urllib2
import xml.dom.minidom
from xml.dom.minidom import Node
def get_xml():
response = urllib2.urlopen('http://feeds.feedburner.com/bingimages')
xml = response.read()
return xml
def parse_and_get_first_image_uri( xml_str ):
if xml_str=="":
return ""
doc=xml.dom.minidom.parseString( xml_str )
urls=[]
for node in doc.getElementsByTagName("enclosure"):
urls.append( node.getAttribute("url") )
index=random.randint( 0, len(urls)-1 )
if len(urls)>0:
return urls[ index ]
else:
return ""
def get_uri( uri, output ):
response = urllib2.urlopen( uri )
image_file=open( output, 'w' )
image_file.write( response.read() )
image_file.close()
return
def set_wallpaper( filename ):
args=[]
args.append( 'gconftool-2' )
args.append( '/desktop/gnome/background/picture_filename' )
args.append( '--set' )
args.append( filename )
args.append( '--type=string' )
subprocess.call( args )
uri=parse_and_get_first_image_uri( get_xml() )
tmp_dir = os.path.join( *(os.path.expanduser("~"), "tmp") )
if uri!="":
if not os.path.exists( tmp_dir ):
os.mkdir( tmp_dir )
filename, extname = os.path.splitext( os.path.basename( uri ) )
image_filename=os.path.join( *( tmp_dir, "bing" + extname ) )
get_uri( uri, image_filename )
set_wallpaper( image_filename )
else:
print "get nothing."

電影流水帳(2009/7/29~2009/8/3)

趁著家庭休憩日,把蘋果核戰記以及續集看完了,很讚的電影。看完以後把昨天去 IKEA 買的書櫃組合起來,這次組的很成功,超有成就感的,當然也很佩服 IKEA 的貼心設計,讓組裝變得簡單許多。

  • Watchmen(IMDB, Wikipedia),中譯:守護者。這片超級對我胃口的,我很喜歡這部電影。跟超人特攻隊一樣,這片其實想說的是超級英雄的內心世界。片子的最後,是英雄選擇了當大壞人,讓世界各國能因此攜手合作,完成世界和平的目標,不看到最後,絕對不知道為什麼 Ozymandias 要這麼作。裡面的演員除了演一代絲靈的Carla Gugino大姊姊我認識以外,其他人都不認識。
  • Appleseed(IMDB),中譯:蘋果核戰記。很讚的 3D 電影,跟漫畫的話風差很多,雖然有些地方交待不清,不過還是很讚。
  • Appleseed Ex Machina(IMDB, Wikipedia)。很讚的 3D 動畫,這集是吳宇森擔綱製作人,裡面很多的動作、場景都借鏡了駭客任務以及吳宇森的風格,所以動作場面就顯得很讚。

jquery 與 iframe

假設 iframe 的 id 是 f,裡面有個按鈕 id 是 btn,那麼要存取 iframe 裡的元素,可以這樣寫:
[javascript]
// http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/
alert( $(‘#f’).contents().find(‘#btn’).html() );
[/javascript]
再假設父頁面裡有個 id 是 ta 的 text,iframe 裡要存取父頁面裡的元素,有兩種寫法:
[javascript]
// 方法一 (http://webdevel.blogspot.com/2007/03/iframes-and-jquery-working-with-iframes.html)
alert( parent.$(“#ta”).val() );
// 方法二 (http://groups.google.com/group/jquery-en/browse_thread/thread/5997ef4a60a123af?pli=1)
alert( $(“#ta”, parent.document.body).val() );
[/javascript]
不過,在碰到 cross domain 的情況時,就會行不通了。拜 Google 大神 的時候,大神有提到一些,但我嫌麻煩就沒再去試了…

參考資料:

電影流水帳(2009/7/20~2009/7/28)

看片速度變慢了,這幾天要在晚上抽空看 Apple Seed,這片 3D 超細膩的,跟漫畫比起來真的差很多,希望可以如願完成看片計畫。

  • Night at the Museum: Battle of the Smithsonian(IMDB, Wikipedia),中譯:博物館驚魂夜2。這一次,主角已經是公司老闆了,不過他不是很快樂,所以主題就是要作自己快樂的事情。飾演Amelia EarhartAmy Adams比較吸引我目光,而且很面熟,原來她之前演過Enchanted (2007),這就難怪面熟了。
  • 河童のクゥと夏休み(Wikipedia),中譯:河童之夏。河童因為地震被封起來而穿越時空來到現代,遇到了人類所發生的事,很溫馨。原本以為後面會來個超級催淚彈的,後來幸好只是小催淚彈,最後當然是快樂的 happy ending,超適合小朋友看。

在 Ubuntu 9.04 使用 svk 出現 Can’t locate Time/Progress.pm

在公司正想用 svk 把 monodevelop source code 拉回來時,發現有 Can’t locate Time/Progress.pm 訊息,然後就停止運行了。
Launchpad 找了一下,發現已經有人回報了:Bug #317487 in svk (Ubuntu): “2.2.1 needs Time::Progress”,後續的回覆裡,也提供了好幾個 workaround,我選擇直接修改 Notify.pm,因為以後 apt-get upgrade 時,新檔案會把舊檔案覆蓋掉。