電影流水帳(2011/5/26~2011/10/7)

快年底了…

  • 奶奶強盜團(IMDB)。3個奶奶好不容易攢了錢,要去夏威夷玩,很開心的去預約了行程,然後要付款,可是旅行社卻告訴她們要把錢存到戶頭去才可以。去到銀行存款,卻遇到搶案,存摺陰錯陽差地沒有刷到,銀行經理就跳出來說,不算,你們怎麼證明有拿八百萬來存款?於是,一番哭天搶地之後,還是沒能拿回錢。她們決心自己去找到搶匪,把錢要回來。很幸運,她們找到其中一個,不過這傢伙手上沒有錢,因為他被背叛了。這下絕望了,本想說再撐幾年繼續攢錢的,可是其中有一個人已經沒有時間了,她得了癌症。沒辦法,只能靠武力解決了,於是她們就要脅搶匪教她們搶銀行。經過一番訓練之後,她們要出擊了。第一次被呼弄,第二次真的就搶了,也順利搶到,可是來不及逃出,就被警察包圍了。她們跟人質訴說了她們遇到的情況後,人質深感同情,反過來幫她們逃出去(斯德哥爾摩症候群?!)。展開一段追逐之後,最後還是在機場被逮,瑯噹入獄。在獄中,得癌症的那個奶奶就病死了。後面真的很感人,眼淚差點就流下來,相當好看的片子。
  • Piranha 3D(IMDB, Wikipedia),中譯:3D食人魚。超簡單的劇情,可是看起來很爽,有辣妹、有裸體、有殺戮、有血也有肉。食人魚因為地震的關係從原本與世隔絕的洞窟中被放了出來,開始肆虐。在河邊發現片頭老人的屍體之後,下水探勘的生物學家也被幹掉,活著的人趕緊走人,然後運氣不錯,有逮到一隻魚,就去找魚類博士(這是演”回到未來”的那個怪博士!!)鑑定,說是遠古時代的超級食人魚。媽呀~太可怕了,警長就趕緊去疏散湖邊的人,沒人鳥…想當然爾,食人魚展開一場殺戮。警長的兒子情竇初開,不想幫警長媽媽(警長是女生,是好久沒出來演的伊莉莎白蘇)帶孩子,就用錢收買妹妹,叫弟弟妹妹們乖乖待在家裡,自己就跑出去看有料的了。弟弟妹妹不安份,也跟著跑出去,後來被困在島上。警長的兒子跟拍寫真的大叔與正妹們,後來也遇到食人魚了,就趕快逃走。路上遇到困在島上的弟弟妹妹,就要脅拍寫真的大叔說,我媽是警長,快過去救人~然後就救人,救完人,船就觸礁了。該死,食人魚也來了,又是一場殺戮。警長兒子的女友被困住,該死的人都死了,警長兒子趕緊向老媽求救,最後警長就救了她的兒女,炸死一堆魚。最後的最後,那個魚類博士又打電話來,說你們抓到的這隻還不是成魚喔,應該還有爸爸媽媽在活動,接著,我被嚇到從椅子上彈起來。

z4root

網路上可以找到很多文章,不過大多都是講怎麼用,而沒有提到原理,所以就想找找看。
最初找到的是這篇:Android adb setuid提权漏洞的分析,裡面就寫得很清楚了,他寫的不是 z4root,而是 RageAgainstTheCage,主要是靠著一直建 process,建到極限值,然後試著砍掉 adb,再靠 adb 程式沒有檢查 setuid 傳回值的漏洞來取得 root 權限。一般的 daemon 程式都是這樣子,一開始是 root,之後會用 setuid 切換身份,所以在 setuid 之前都是 root。而 setuid 通常不會失敗,但是因為可用的程序限制到了,才失敗 (參考 kernel/sys.c 裡的 set_user)。
好,那跟 z4root 又有什麼關係?還好 z4root 有源碼
z4root 裡就有用到 RageAgainstTheCage,z4root.java 是主要的 Activity,當你 click root 按鈕值,會啟動 Phase1 Activity,這邊就會把包成 resource 的 RageAgainstTheCage 寫到z4root的應用程式目錄下,然後變更其權限並且執行。噹噹,執行完以後,當然 adb 就有 root 權限了。
然後 Phase1 有 thread 去持續檢查執行 RageAgainstTheCage 的程序,如果成功了,會利用 Alarm 服務去啟動 Phase2。Phase2 這邊我有點不太明白,最後是將 su、busybox、SuperUser.apk 都搬到系統分割區了,然後就重開機,可是這個時候怎麼會有權限可以作這些事情呢? 如果照上面的 RageAgainstTheCage 來看,我猜想應該是在執行 RageAgainstTheCage 時,把程序數衝到最大限制,然後之後所執行的程序其實都是 root 啟動的,要切換使用者身份時失敗,所以之後的程序都是 root,也因此 Phase2 Activity 也有同等的 root 權限。這邊因為跟 java 的 thread 作法不是很熟,所以就不了了之。
z4root 最後是重開機,此時已經有埋必要的 su 跟 SuperUser.apk 在系統裡,也就有了可以 root 的可能。

老師的喪禮

在教師節談老師的喪禮,好像不是很適合。不過我上周六(9/24)的的確確去參加了導師的喪禮。
雖然相處只有一年,時間不是很長,但老師的笑聲跟爽朗讓我有很深的印象,另外,也因為導師的喪禮是以天主教/基督教(真的很抱歉,我實在搞不清楚)的形式來舉行,所以我就毅然決然地參加了。
時間是在13:00,喪禮很準時的開始了。一開始是唱詩、福音,然後是師丈、老師的哥哥跟老師的好朋友出來講話,在邊講話的同時,後面還放著老師的生平照片投影片,從小時候到高中、大學學生時代,再到結婚、出國玩的照片,這邊真的很感人、很催淚,我眼淚都盈框了。等到講完,是證道,邀請了主任牧師來證道,這邊我要跟老師說抱歉,我差點就睡著,因為證道只有兩個重點,第一個是要把握現在,珍惜生命,第二個,就是講老師在神的引領下,到了天國,信了神,以後就可以再見到老師。再來,就又是唱詩,然後追思。最後可以再去看老師最後一面,我沒去看。
這樣的喪禮我覺得除掉證道以外,我很能接受,所以我的喪禮以後就簡單舉行吧,沒有人上台講對我的懷念也沒關係,就大家看完投影片(投影片我看我自己在死前做好好了,才不會沒人做),一起默哀個三分鐘,然後把遺體丟去火葬就好。總之,這次的喪禮對我來說是一個很特別的體驗。

在Android直接以zxing去解碼圖檔

zxing的Android client 端,是直接不斷的進行自動對焦的動作,然後接 Camera 的 Preview,這時候接出來的影像是 YUV 格式的,然後就直接去做判讀。所以,我當下的想法是在這邊直接去讀取一個 YUV 格式的影像檔,讀完就給 zxing decoder 去判讀,但是失敗。我認為可能是我轉換出來的 YUV 有問題。我是這樣轉換的,先用 ImageMagick 的 convert 把 png 轉成 ppm,再用 ppmtoyuv 轉成 yuv。
後來去看了 zxing 的 JavaSE client,他是用 awt 去做影像轉換,就想,可以把 awt 移植到 Android 去嗎? 上網找了一下,還真的有人做,只是後來專案就沒再開發了。
最後還是 stackoverflow 的幫忙:android – Embed Zxing library without using Barcode Scanner app,原來 zxing 裡的 Android client 測試程式裡就已經有一個 import com.google.zxing.client.androidtest.RGBLuminanceSource 可以處理這件事情,所以就先用 BitmapFactory.decodeFile 把圖檔讀出,得到 Bitmap,再把 Bitmap 丟給 RGBLuminanceSource 裡,就可以再用 new BinaryBitmap(new HybridBinarizer(source)); 得到 BinaryBitmap,decode 就可以根據這個 BinaryBitmap 取到條碼了。詳細的程式可以參考Stack Overflow 文裡的程式碼。,這裡不再摘錄。

link2sd

link2sd 是一個可以把應用程式從內部記憶體移到 SD Card 上的應用程式,你需要把 SD Card 切成兩個主要分割區(primary partition),第一個分割區作為正常的 SD Card 使用,第二個分割區就拿來存放應用程式。
之前用的時候,我是將第二個分割區格式化為 vfat,但用了一段時間以後,覺得效率不是很好,也為了 journaling filesystem,就想把 vfat 換為 ext3。研究了好一陣子,昨天決定下手了。
首先先說明我對 link2sd 的了解,照理說,一般要額外掛載分割區是需要額外寫 script 的,link2sd 是寫在 /system/etc/install-recovery.sh 裏面。所以我就簡單修改這個 script,然後關機把 SD Card 拿出來將第二個分割區備份,再格式化為 ext3,再把備份出來的檔案回存回去。但很遺憾,不行。
於是我去看 init.rc,裏面沒有啟動 /system/etc/install-recovery.sh 這一段,我知道編譯 android 源碼以後得出來的 init.rc 是有這段的。於是我修改 init.rc,加入這段,可是重開機以後,再去看 init.rc,我加的這段居然消失了。
沒辦法,只好還原回 vfat,乖乖的使用。

git support in Visual Studio 2010

因為用 git 管理源碼,在切換 Visual Studio 跟 Command Prompt 之間,頗為麻煩,就想說,應該是有人寫了 Visual Studio 的 git 擴充套件了吧~
進 [Tools][Extension Manager] 一找,果然已經有人寫了,主要有兩個:Git source control provider 跟 Git Extensions。Git source control provider 主要是一個給 Visual studio 用的介面,你可以設定實際上以哪個軟體去作 git,例如:msysgit、git extension、tortoise git…等等,所以容量不大,小小的。試用結果還算可以,唯一的缺點就是更動較多檔案時,會導致 Visual studio 重啟動。
Git extensions 我就沒安裝了,因為我已經裝了 msysgit。目前是以 Git source control provider 跟 Command prompt 交互使用中。

Android上的電子書

昨天想起介紹 Kobo eBooks 的那篇文章說 Kobo eBooks 可以吃 epub 格式的電子書,可是一直都忘記試,今天早上上班時,就試了一下,發現閱讀的效果真的比 FBReader 好很多。fbreader用來對付一般的小說是綽綽有餘,但遇到有程式碼的epub,整個就爛給你看,而且是爛的可怕。Kobo eBooks 的處理就好很多,網站上有提供免費電子書可下載,也有像類似 foursquare 的打怪機制,讓你讀書跟打怪一樣,讀的愈多,拿的勳章愈多。
Kobo eBooksKindle 比的話,在記憶體少的機器上運行ok。每次開 Kindle,就常讓我的Asus A50重開機,重開機之後再去開啟程式才能正常進入,常常讓我不知道該不該賭一下,我想這應該是Linux Kernel 發現記憶體不足而砍應用程式的關係。
要說 Kobo eBooks 缺點的話,大概就是沒辦法查字典,Kindle是可以查的。Kindle 在長按單字時,他會自動去查英英字典,第一次查的時候,程式會告訴你要額外送你一本英英字典,下載以後,就可以有自動查單字的功能,畫面是以 pop window 的方式呈現,再點選,會進到英英字典,顯示更多資訊。
如果沒意外的話,我想我以後都會拿 Kobo eBooks 來讀 epub。
除了上面的3個電子書以外,我還有試過 iReader,是同事推薦我的,Market 裡的評價不錯,但iReader網站上的書太多,一時不知道要下載什麼,大多都是簡體中文,又考慮到翻譯品質良莠不齊,所以乾脆就移除掉了。
我還有額外下載獨立電子書的 app:明朝的那些事儿-全集黄河鬼棺-全集,這兩個也不錯,作者是同一個,作者有在積極改版,可是我覺得最早用的那版還不錯用,不太需要改。目前明朝的那些事儿-全集還沒看完,才看到第五集,等看完才會看黄河鬼棺-全集。這兩本雖說是免費,但實際上應該算是盜版吧~

語言治療(8)

這次實際上是第十一次,下次一上課會有一個小測驗,老師會根據這個來決定是否要繼續上課,雖然老師已經有跟我們說過他應該不用來上課了。
老師似乎忘記了上次上什麼,不過我也不知道,因為上次是太座帶大公子來的。反正將錯就錯,老師就繼續講,主要是拿出一組卡片,共兩張,一張是因,一張是果,讓大公子練習描述人事地物與前後的因果關係,這樣的圖片之後陸陸續續講了六組。簡單的說,主題就是加強他描述的能力以及教導他在遇到圖片時該怎麼去說裏面有什麼。
圖片上有,但大公子不知道怎麼講的東西:滅火器、打火機、消防隊員、客廳。回去要記得再跟他加強描述,因為這幾次上課的關係,讓我明白到大公子對很多東西還是不知道該怎麼說。
這次上課,老師有以畫圖輔助說明,跟他說這是什麼東西。
發音問題還是老樣子,這些音還是不太能擺脫慣性:火,多,對,拼圖,風,戒掉用奶瓶喝奶會不會比較好呢? 有跟大公子講過用杯子喝奶,可是他很妙,他覺得牛奶就是要泡在奶瓶裡,所以我決定要買奶粉回來泡給他看,讓他知道也可以用杯子喝奶。

Windows 上的 python + virtualenv + django

安裝上並不難,只是最後有卡到一個問題,特別提出來分享一下。

  1. 下載python 2.7安裝檔,然後安裝
  2. 下載setuptools安裝檔,然後安裝
  3. 打開命令提示字元,先 cd /d c:\python27\scripts ,再 easy_install virtualenv,你公司有 proxy 的話,記得先 set http_proxy=http://your_proxy:port
  4. 安裝好 virtualenv 以後,就可以去創建環境了,假設你的環境都在 c:\envs,那就先 cd /d c:\envs ,再 virtualenv –no-site-packages myenv ,這樣就建好環境了
  5. 啟動你的環境,要先 cd /d c:\envs\myenv ,再輸入 scripts\activate 。Linux 下的activate 是放在 bin 下,這是比較大的不同。
  6. 安裝 django:scripts\pip install django
  7. 使用 django 指令:scripts\django-admin.py startproject myproject ,嗶嗶嗶,卡住了。

哈,我就卡在這裡。django-admin.py 會說找不到 django.core ,我苦思了好久,終於才想到,Windows 下是不鳥 python script 第1行的 sha-bang 的啊,所以雖然 django-admin.py 的第1行指定了說要用 c:\envs\myenv\scripts\python.exe 來處理,可是實際上卻是 .py 註冊在 registry 裡的 c:\python27\python.exe 在處理。因此會有找不到 django.core 的情況,改用 scripts\python scripts\django-admin.py 就可以順利找到 django.core 了。