2011年5月18日 星期三

Mac OS X 10.6 的 32-bit 與 64-bit 核心切換

更新日期: 2011/05/18

參考資料:
MacBookPro 32bit? 64bit? | 阿倫基's free DNA


一. 查詢目前系統運行的位元為何.

A. 方式一: 終端機下執行
$uname -a
Darwin SnowLeopard.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 ---> 32 位元.

B. 方式二:
左上角的黑蘋果 > 關於這台 Mac > 更多資訊 > 內容 > 軟體

---> 64 位元 kernel 和延伸功能:


二. 設定為 64 位元的系統
A. 終端機下執行:
$sudo systemsetup -setkernelbootarchitecture x86_64
setting kernel architecture to: x86_64 changes to kernel architecture have been saved.

B. 查看結果:
$uname -a
Darwin SnowLeopard.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:16:10 PST 2011; root:xnu-1504.9.37~1/RELEASE_X86_64 x86_64 ---> 64 位元.

---> 64 位元 kernel 和延伸功能:


三. 設定為 32 位元的系統
A. 終端機下執行:
$sudo systemsetup -setkernelbootarchitecture i386
setting kernel architecture to: i386
changes to kernel architecture have been saved.

2011年5月12日 星期四

Git 單一開發者與遠端備份機制




更新日期: 2011/05/12

參考資料:
1. I touchs: Using git in Xcode 4
2. 竹林七賢: Git 遠端備份


一. 環境:
A. Mac OS X: 10.6.7 Snow Leopard
B. Xcode: 4.0.2


二. 安裝 Git:
A. 打開終端機, 檢查是否有安裝 Git, 以及其版本.
$git --version
git version 1.7.3.4

B. 下載並安裝 Git:
http://git-scm.com/download
1. 在此採用版本: git-1.7.5-x86_64-leopard

2. 掛載後, 有 4 個檔案:
a. README.txt - 說明文件

b. setup git PATH for non-terminal programs.sh -
執行後, 將 git 的安裝路徑 /usr/local/git 加到 ~/.MacOSX/environment.plist 裡,
可讓非終端程式找到
git , 登出再登入才會生效.
c. uninstall.sh - 反安裝
d. git-1.7.5-x86_64-leopard.pkg
- 安裝程式(下次再安裝最新版的, 就自動更新了)


三. 用 Xcode 4 建立一個 Workspace (選擇性):
A. 特點:
1. 方便組織多個專案.
2. 可以在同一個地方幫多個專案 commit changes.
3. Xcode 4 Workspace 允許在單一個地方儲存: 你所有的
projects, documents, folders, schemes 的 links(連結),
它並沒有控制住實際的資料; 只是一種參照
projects, folders, various documents 的自由集合.

B.步驟: 打開 Xcode 4 > File > New > New Workspace
瀏覽要存放的位置後, 然後給個名稱.
(在此: 路徑為 /Lanli/RD ; 名稱為: iOS4Workspace )


四. 建立 Local Repository:
步驟如下:

$mkdir /Lanli/RD/iOS4_Projects
$cd /Lanli/RD/iOS4_Projects
$git init

// msg: Initialized empty Git repository in /Lanli/RD/iOS4_Projects/.git/

$touch README
$git add README

$git commit -m 'first commit'

[master (root-commit) 1c71074] first commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 README
說明:
1. 查看 git 的用法 -> git --help

2. git 的 online manual: Git User's Manual


五. 加入 Projects:
A. 用 Xcode 新增一個(或多個) projects 放在 四. 建立的 local repository 下:
Xcode 4 > File > New > New Project
瀏覽要存放的位置後, 然後給個名稱.
(在此: 路徑為 /Lanli/RD/iOS4_Projects ; 名稱為: helloBlock )

B. 將此專案加入 repository:
$cd /Lanli/RD/iOS4_Projects
$git add helloBlock

$git commit -m 'helloBlock project added'

[master b9e233f] helloBlock project added 13 files changed, 1212 insertions(+), 0 deletions(-) create mode 100644 helloBlock/helloBlock.xcodeproj/project.pbxproj ......
說明: 先關閉 Xcode 4 , 再開啟.


六. 當有修改 source code, 可執行:
select modified file (檔名右方會有一個 M 符號 ) > 右鍵 >
Source Control > Commit Select Files.


七. 遠端備份
A. 到 git 的目錄下執行:
$cd /Lanli/RD/iOS4_Projects
$git bundle create iOS4_Projects_BACKUP.BUNDLE --all
Counting objects: 30, done. Delta compression using up to 2 threads. Compressing objects: 100% (25/25), done. Writing objects: 100% (30/30), 10.10 KiB, done. Total 30 (delta 4), reused 0 (delta 0)
說明: iOS4_Projects_BACKUP.BUNDLE 是自行命名的檔名.

B. 將 iOS4_Projects_BACKUP.BUNDLE 上傳到 Google 文件上,
Google 文件本身也有版本控制的機制.


八. 從遠端的備份重建 local 的開發環境
A. 從 Google 文件下載 iOS4_Projects_BACKUP.BUNDLE 檔案.
B. 執行以下的步驟:
$cd /Lanli/RD
$git clone iOS4_Projects_BACKUP.BUNDLE iOS4_Projects

$cd iOS4_Projects

$git fetch

$git pull

說明: iOS4_Projects 為自定的新目錄名稱.

2011年5月10日 星期二

iPod touch 3rd Jailbreak 4.3.3


說明: 採用 Dev-Team 發佈的 PwnageTool 方法.

1. 先將 iPod touch 的 "自動鎖定" 功能, 設成 "永不".
=> 設定 > 一般 > 自動鎖定: 永不

2. 備份 ECID:
a. 在 Mac OS X 下, 連結 iPod Touch 並且下載 Umbrella:
http://thefirmwareumbrella.blogspot.com/
p.s. 在此下載的檔案為: TinyUmbrella-v4.33.00.pkg

b. (目前版本: 4.33.00). 安裝好 TinyUmbrella 後, 點開進入並選擇你的 iPod Touch.

c. 接著按下右上方的 "SAVE SHSH" 按鈕.

d. 儲存好的 SHSH 會各放一份在 CYDIA 的 server 和本機(MAc) 上的
/Users/
(your username)/.shsh 目錄下.

3. 備份 iPod touch 資料:
a. 使用 iTunes 同步並備份 iPod touch 的資料.

4. Download iPod touch Firmware : (在 6.b 中會用到)
iPod touch 3G
=> 在此使用的版本為: iPod touch 3G (4.3.3/8J4)

5. 將 iPod touch 進入 DFU Mode:
a. 開啟 iTunes 並將手上的 iPod touch 連接至電腦.
b. 強制關機.(同時按著 "電源開關鍵" 及 "主目錄鍵" 不放)
c. 當 iPod touch 重新啓動後(螢幕整個變暗), 放開 "電源開關鍵", 10 秒後,
再放開"主目錄鍵".
d. 進入 DFU Mode 後及按回復之前, 主機將維持黑屏及不會顯示任何東西.

6. 使用 iTunes 回復 DFU Mode 的 iPod touch:
a. Mac 電腦: 按下鍵盤 option 鍵, 並同時按下 iTunes 裏的回復按鈕.
b. 彈出提示框後, 選取剛剛下載的 iPod touch 3G 4.3.3 官方韌體,
並等侍 iTunes 回應.
說明:
(1). 如果出現訊息: "This device isn't eligible for the requested build"
, 代表你可能曾經更動過 hosts 這個檔案,並且在其後面加了一行:
"74.208.10.249 gs.apple.com", (可能是當初要降級用的),
只要拿掉這一行即可正常更新了:
sudo vi /private/etc/hosts
......
#74.208.10.249 gs.apple.com

(2). 若仍然無法回復到最新版本的話, 先回復成原本使用的版本 (4.3.1),
然後再更新到 4.3.3 版本.


7. 回復 iPod touch 的備份資料:
說明: 由於還沒有越獄並安裝 Cydia 與相關軟體, 因此有些軟體目前
無法安裝是正常的
.
說明: 再此處在備份一次 ECID (步驟 2)


8. 下載 PwnageTool
官網: http://blog.iphone-dev.org/
下載: http://mayask.com/PwnageTool_4.3.3.1.dmg
檔名: PwnageTool_4.3.3.1.dmg

9. 開始越獄:
a. 掛載 (點二下) PwnageTool_4.3.3.1dmg 後, 執行 PwnageTool.app 檔案.
點選左上方的 "Expert mode" , 接著選取中間的 "iPod Touch 3G,4G",
再按下一步.

b. 接著瀏覽找到官方的韌體, 在此為: iPod touch 3G (4.3.3/8J2)
檔名: iPod3,1_4.3.3_8J2_Restore.ipsw , 之後按下一步.

c. 點選 "Build" , 按下一步. 確認官方的韌體與選擇要儲存客制化韌體的位置.(桌面)

d. 接著, 便開始建置客制化的韌體.
(需等待一段時間, 也會需要輸入 Mac 管理者密碼 )

e. 建置好後, 會產生檔名: iPod3,1_4.3.3_8J2_Custom_Restore.ipsw
並開始進入 DFU 模式的一系列倒數計時.

說明: 在此處, 我沒有按照畫面的提示來進入 DFU 模式, 而是在不關閉 PwnageTool
的情況下, 採用之前: 5. 將 iPod touch 進入 DFU Mode 的方式.
成功後, 會從 "Failed to enter DFU mode"
訊息轉為成功的訊息.

f. 接著, 關閉 PwnageTool 並採用 6. 使用 iTunes 回復 DFU Mode 的 iPod touch 的方式,
並且在 6. 中回復時選擇
客制化的韌體: iPod3,1_4.3.3_8J2_Custom_Restore.ipsw

g. 重新開機後, 從備份回覆資料.
說明: 由於目前 Cydia 還沒有安裝好相關的軟體, 所以有些軟體尚未能同步.

h. 越獄成功後, 會在 iPod touch 的第二頁桌面上看到 "Cydia" app

10. Cydia 設定:
a. Cydia 開啟後, 選擇 開發者 > 完成.

b. 切換到 "變更" 項目, 並按下左上方的 "更新":

11. Cydia 安裝軟體: 先切換到 "搜尋" 項目
a. OpenSSH: 可在 Mac 上使用 sftp client 的軟體連入 iPod touch 系統中.

b. AppSync for 4.0+: 讓應用程式 (.ipa / .app) 可直接透過 iTunes 安裝.
(1). 開啟 Cydia > 管理 > 軟體源 > 編輯 > 添加
(2). 輸入 http://cydia.hackulo.us/ > 按下 添加源 按鈕 > 若彈出提示框,
選擇 仍然添加 即可.
(3). 完成 Source Update 後, 按下 Return To Cydia, 返回 Source, 再按下
剛加入的 Sources, 選擇 AppSync for 4.0+ 安裝.
(4). 安裝完成後, 請重新啟動主機.

c. CyDelete: 可直接在桌面刪除從 Cydia 下載的軟體.

d. USB Drive: 可當成 USB 硬碟來使用.
(1). 新增安裝源: http://apt.dmytro.me/
(2). 安裝 USB Drive 軟體.

e. afc2add: 可讓應用軟體( iPhone Explorer / DiskAid )瀏覽到 iPod touch
根目錄.

說明: 再執行一次 "變更" 項目, 並按下左上方的 "更新".

12. 更改 iPod touch 的 root 密碼:
a. 確定已用 Cydia 安裝了 OpenSSH.

b. 共享 Mac Book Pro 的網路給 iPod touch:
=> Mac OS X > 系統偏好設定 > 共享 > Internet 共享
(都設定好時要勾選, 此時 Mac 本身可能無法上網)
> 共享來源: 乙太網路; 對使用以下傳輸埠的電腦: AirPort

c. iPod touch > 設定 > Wi-Fi > 選擇網路: SnowLeopard
(同時查看 IP, ex: 10.0.2.2)

d. Mac OS X > 終端機 > ssh root@10.0.2.2 (default password: alpine)
=> 如果出現以下訊息:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
(代表, 之前有 jailbreak 過不同的版本並曾登入過 iPod touch,)
解決辦法: 先移除(這裡用搬移檔案) Mac 上 .ssh 目錄下的檔案, 再登入一次:
$ cd /Users/lanli/.ssh
$ mv known_hosts known_hosts_back_20110510

e. 承上, 鍵入 passwd 來輸入新密碼.
f. 亦可在 Mac 上使用 sftp client 的軟體連入 iPod touch 系統中.

13. 使用 iTunes 同步並備份 iPod touch 的資料:
=> 主要是用來同步之前安裝了 JB 後才可安裝的軟體 ^^.

14. 如果想幫 iBook 增加 "英漢字典" 功能的話, 請參考:
幫 iBooks 增加 英漢字典的文章.

15. 備註:
a. iTunes 備份檔案的位置:
(your home) > 資源庫 > Application Support > MobileSync > Backup

2011年5月9日 星期一

iPhone 開發流程

更新日期: 2011/05/09

參考資料: iPhone UI 設計經典案例 碁峰 2010.08


A. 定義專案(Project Planner)
1. 專案名稱(應用程式名稱, 或暫時用一些關鍵字代表)

2. 專案定義(用一個句子來確切解釋此應用程式是在做什麼)

3. 專案目標與功能
 a. 列出目標清單, 慎選應用程式功能.
 b. 1.0 版應該盡可能輕巧靈活, 而不要有太多限制, 比較容易開發及釋出.
 c. 將不是百分之百必要達成的部份, 當作應用程式在 1.1 版的目標清單.
 d. 1.0 版釋出後, 根據使用者的回饋訊息與 1.1 版的目標清單作比較,
  來進行後續的版本更新功能決策參考.

4. 專案需求(完成應用程式所需的一切資源)

5. 專案預算

6. 專案時程


B. 獲取第三方資源(請求或付費)
1. 尋找良好的資料提供者: http://compete.com/ , 論壇, 聊天室, 社群

2. 事先確認並簽署資料使用協議(data usage agreement).

3. 取得標誌(logo)的向量圖形及品牌指南.

4. 取得使用其 API 的文件說明.


C. 建立流程圖(可用 OmniGraffle 軟體)
1. 從主畫面開始建立流程圖.

2. 每一個分支(視圖)都是使用者能夠採取的動作.

3. 不需要描繪這些圖表的細節, 只要確認需要哪些視圖, 並且讓它們連結起來;
 以產生主要的決策, 並決定視圖的階層結構.


D. 描繪視圖
1. 為流程圖裡的每一個視圖設計 wireframe, 以對應用程式的操作界面進行
 概略的結構規劃.

2. wireframe 為視圖裡的所有物件提供配置, 而不需要處理特定格式化
 (stylization)細節, 很像一張房子的藍圖.

3. 在使用軟體(可用 OmniGraffle)繪製前, 可先在紙上描繪 wireframe
 以節省時間.

4. 可在草圖上增添一些無關細節的趣味塗寫, 以讓自己開心一下.


E. 美化設計(skinning)
1. 設計決策:
 a. 小型專案, 可直接開始作設計.
 b. 大型專案, 先為應用程式做個原型(prototype),再開始作設計.

2. 設計圖示(應用程式的 logo)
 a. 要有焦點.
 b. 保持單純, 避免使用照片或文字.
 c. 讓它有趣些.


F. 開發與編程
1. 將應用程式分解成很多個微型應用程式, 以此建立里程碑系統
 (milestone system).

2. 微型應用程式:
 a. 主視圖的數量與開發的方式.(ex: 使用 Xcode 的 utility template)
 b. 處理多個子視圖的呈現.(ex: PageControl)
 c. 連結 Web Service.
 d. 資料儲存. (ex: sqlite)

3. 多國語言版本處理.

4. 廣告機制.

5. 版本控制(Version Control): Git

6. 其它: 字體, 載入畫面, iPhone Human Interface Guidelines


G. 測試與部署
1. 測試:
 a. 將測試的應用程式交給潛在的客戶.
 b. 若要交給非潛在的使用者測試, 至少提供一些使用案例(use case)
  或情境說明以指引方向給狀況外的使用者.
 c. 網路連線測試.

2. 部署:
 提交給 App Store 之前, 把整個專案好好檢視一遍.