2010年6月30日 星期三

iPhone PNG 解密


今天下載了舊同事開發的 Baby Classical Lite,發現內裡有個 Slide to unlock 畫面。好奇之下,在網上尋找製作的技巧,可是卻用上了 Private API,要是放到 App 內,Apple 未必能通過。所以同事應該是使用別的方法。於是我把 App 的檔案拷到 Mac mini 內,但 PNG 被加密了而看不到。最終在網上找到一個名為「iPhonePNGApp」的 Mac 軟件把 PNG 解密。發現這個 Slide to unlock 是自行扮出來,而不是調用到系統的 Slide to unlock。

http://www.macupdate.com/info.php/id/29611/iphonepngapp

2010年6月29日 星期二

在 Snow Leopard 下啟動 root

1. 打開 Finder
2. 移到 /System/Library/CoreServices/
3. 啟動 Directory Utility
4. 解開左下角的鎖
5. 在 Edit 選單選 Enable Root User
6. 設定 root 密碼
7. 把左下角的鎖鎖上

2010年6月22日 星期二

從 WWDC10 學到很多


今天突發性地需要到廣州辦公室處理「帝國」提交事宜,為了不想浪費時間,我帶了昨天下載的 WWDC10 影片,並從 30GB 的影片中,挑選了 4GB 燒錄到 DVD 碟上,打算在一個小時的火車車程中學習。首先看的是「Session 116 - Model-View-Controller for iPhone OS」。當中的 MVC 模式似乎十分好用!我打算在往後的 Project 使用這套方法。

2010年6月8日 星期二

為何火炭的「五金舖」特別多?

火炭另一個引起我興趣的是「五金舖」特別多。按照邏輯,在火炭工作的人是五行欠火的多,而開「五金舖」則是五行欠金,看來背後一定有甚麼理由。我的老闆跟我說「由於火剋金,被剋者為財,金為財也」。驟眼看來似乎是對,但直覺告訴我不是這般簡單。翻查古書關於「五行生剋制化宜忌」,有一句「金旺得火,方成器皿」,可能就是因為火炭火旺,最適宜從事「金」的行業吧。

2010年6月7日 星期一

在同一 Project 下分辨不同 Target

前幾天,我成功利用一份代碼,按版本的不同而加入不同的檔案。但這個技術只能在同一份代碼的環境下使用。為了進一步在真實情況下使用到,今天研究了可以加入 Target 指定代碼的方法。其實都很簡單,在代碼內如常地利用 #ifdef 來分辨當前的 Target:
#ifdef TARGET_VERSION_FREE
NSLog(@"### FREE VERSION ###");
#endif

#ifdef TARGET_VERSION_FULL
NSLog(@"### FULL VERSION ###");
#endif
然後按以下步驟做一次:
1) 在 Configuration Bar 點選 FREE Target
2) 點選 Project -> Edit Active Target "FREE"
3) 在 Preprocessor Macros 欄輸入 TARGET_VERSION_FREE
4) 關閉視窗
5) 在 Configuration Bar 點選 FULL Target
6) 點選 Project -> Edit Active Target "FULL"
7) 在 Preprocessor Macros 欄輸入 TARGET_VERSION_FULL
8) 關閉視窗

2010年6月6日 星期日

為何火炭的「煙民」特別多?

公司遷入火炭已經有一個星期,最深刻的印象是「很多人抽煙」。我自己不抽煙,也不喜歡別人抽煙,特別是那些騰雲架霧的「煙產」就更加厭惡。不過,為何火炭的「煙民」特別多?其中一個可能性是,在火炭工作的人都是五行欠火的多,抽煙能補充欠缺的火也。

2010年6月2日 星期三

自動 Build Count 作成

在開發程式的過程中,有時需要設定一個版本號碼,以方便找出錯誤或分辨功能是否提供之用。最簡單的方法是在 Info.plist 中建立一個「Build Count」值,然後透過 Run Script Build Phase 自動更新數值。方法如下:

1) 在 XCode 左面的 Targets 點右鍵
2) 選 Add
3) 選 New Build Phase
4) 選 New Run Script Build Phase
5) 在 Shell 輸入 /bin/bash
6) 在 Script 輸入:

OLD_COUNT=`/usr/libexec/PlistBuddy -c "Print :\"Build Count\"" ${PROJECT_DIR}/Info.plist`
OLD_COUNT=`expr $OLD_COUNT + 1`
/usr/libexec/PlistBuddy -c "Set :\"Build Count\" \"$OLD_COUNT\"" ${PROJECT_DIR}/Info.plist

8) 把 Run Script 拖拉到 Copy Bundle Resources 之上
9) 完成

如果是使用 SVN 的話,還可以直接拿 SVN 值來用:
SVN_REV=`svnversion -n | sed 's/\([0-9]*\):\([0-9]*\)M/\2/'`
/usr/libexec/PlistBuddy -c "Set :\"Release version\" \"$SVN_REV\"" ${PROJECT_DIR}/Info.plist

特別嗚謝 howang 提供技術支援