2013年10月30日 星期三

Git Submodule 教學

一、新增模組

- git submodule 相關的指令必須要在 project 的根目錄下(就是要有 .git 的地方)才能夠執行。

- <Destination Path>,請勿先建立空的目錄,若該目錄存在就會產生衝突,所以並不需要額外幫 module 建立目錄

git submodule add <Destination URL> <Destination Path>

Destination URL:
ex:gary@hamawill.dsmynas.com:/volume1/homes/gary/git_server/iOS/Module/Categories

Destination Path:
ex:BleLuggage/Categories


- 在目錄底下打入指令 git status,會發現多了兩個檔案需要 commit

# On branch master
# Changes to be committed:
#       (use "git reset HEAD <file>..." to unstage)
#           new file:     .gitmodules
#           new file:     BleLuggage/Categories

- 注意第一個檔案 .gitmodules,裡面記錄 submodule 的對應關係,我們實際打開看內容

[submodule "BleLuggage/Categories"]
      path = BleLuggage/Categories
       url = gary@hamawill.dsmynas.com:/volume1/homes/gary/git_server/iOS/Module/Categories
- 接著就直接 commit 至 project 底下吧
git add .gitmodules
git commit -m " Init submodule"

二、更新模組

CocoaPods

一.簡介
CocoaPods是一個負責管理iOS項目中第三方開源代碼的工具。
我只需要將用到的第三方開源庫放到一個名為Podfile的文件中,然後執行pod install。CocoaPods就會自動將這些第三方開源庫的源碼下載下來,並且為我的工程設置好相應的系統依賴和編譯參數。

二.安裝與使用介紹


安裝

安裝方式異常簡單, Mac下都自帶ruby,使用ruby的gem命令即可下載安裝:

$ gem install cocoapods 
$ pod setup


使用

使用時需要新建一個名為Podfile的文件,以如下格式,將依賴的庫名字依次列在文件中即可。
platform :ios 
pod 'JSONKit', '~> 1.4' 
pod 'Reachability', '~> 3.0.0' 
pod 'ASIHTTPRequest' 
pod 'RegexKitLite'


然後你將編輯好的Podfile文件放到你的項目根目錄中,執行如下命令即可:

cd "your project home" 
pod install

現在,你的所有第三方庫都已經下載完成並且設置好了編譯參數和依賴,你只需要記住如下2點即可:
  1. 使用CocoaPods生成的 .xcworkspace 文件來打開工程,而不是以前的 .xcodeproj 文件。
  2. 每次更改了Podfile文件,你需要重新執行一次pod install命令。

查找第三方程式庫

你如果不知道cocoaPods管理的庫中,是否有你想要的庫,那麼你可以通過pod search命令進行查找,以下是我用pod search json查找到的所有可用的庫:

問題1:當macbook系統升級時,ruby可能會被移除,這樣就不能使用cocoapods的相關指令?
1.先到apple官網下載commendLine tool,並且安裝
2.嘗試使用以下指令
-> rvm get head
-> rvm reload
-> rvm reinstall ruby-2.0.0
ps:過程中系統提示你有缺少一些工具,使用"rvm requirements"將會自動安裝所需要的工具


轉貼文章:
http://blog.devtang.com/blog/2012/12/02/use-cocoapod-to-manage-ios-lib-dependency/

2013年10月4日 星期五

iOS 開發工具

一. 開發
1.xcode
2.git 以及 用Gitosis 架設 Git server
3.bug track system(可連接git)
4.cocoapod

二.測試
1.GHUnit
2.測試日誌email回報

三.紀錄
1.appledoc生成文件

2013年8月15日 星期四

Vim編輯工具

ctrl+C 進入編輯模式
按ESC進入命令模式+":wq"儲存並退出


連結:
http://blogs.longwin.com.tw/lifetype/vi-vim-cheat-sheet.png
http://blog.eddie.com.tw/2011/12/28/vim-tips/
http://ithelp.ithome.com.tw/question/10073146?tag=rt.rq

2013年8月4日 星期日

使用Terminal 編譯以及實機測試

一.building Project
  xcodebuild -project MySkyBox.xcodeproj -alltargets
  xcodebuild -project MySkyBox.xcodeproj
  xcodebuild -scheme MySkyBox -sdk iphoneos build

二.實機測試
fruitstrap <-d //--debug> -b [app位置] [Device ID]

QA:
1.輸入指令 xcodebuild 會出現以下錯誤
Error: No developer directory found at /Volumes/Xcode/Xcode.app/Contents/Developer. Run /usr/bin/xcode-select to update the developer directory path.

solution:
輸入sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

2.都是使用Release分支,所以會在build資料夾出現Release-iphoneos資料夾,如何改成Debug分支??

solution:
於project 的 info標籤將下方command-line build 改成debug

2013年7月31日 星期三

口試重點

1.      e-mail給每個口試委員,詳細口試地點與時間,並附上個人電話。
2.      準備引導海報,張貼顯眼處。
3.      審定表格一張
4.      口試費用表格一張
5.      評分表格三張
6.      初稿三份
7.      口試ppt規格:直式且12
8.      簡報筆準備三支
9.      空白紙(做筆記用)
10.  每位都準備白開水(加紙杯)、咖啡、茶、水果、點心、便當

11.  伴手禮(必須與指導教授討論大小與價格)

Linux常用指令

移除檔案/資料夾(包括子資料夾) rm -rf file/folder' name 
查看目錄路徑 pwd
回到根目錄 cd ~
移除所有子目錄下指定的檔案 find . -name \.DS_Store -type f -delete
顯示隱藏檔 
1.defaults write com.apple.finder AppleShowAllFiles TRUE
2.killall Finder

  

2013年7月30日 星期二

發現了ubuntu進入root帳號的方法

其實Ubuntu預設是不想讓使用者root登入,ubuntu是希望大家先去改root密碼,然後做事情儘量用sudo,不要用root,改root密碼是怕人家使用暴力法把ubuntu預設的root密碼算出來,所以安裝完畢後必須要改root密碼,但是取得後還是儘用sudo

2013年7月12日 星期五

Doxygen 程式文件產生器 與 簡易筆記

Doxygen 是一套程式文件的產生器, 會抓取程式的內容、註解來自動產生程式說明文件的系統.
下述內容太多, 若只想要快速上手, 只要下述三個步驟即可.
doxygen -g Doxygen # 產生 Doxygen 檔(預設設定檔)
vim Doxygen # 修改符合自己要得設定
doxygen Doxygen # 產生程式文件
Doxygen 相關文件

Doxygen 首頁
Doxygen - WikiPedia
Doxygen 說明頁面
Doxygen Config - 設定檔所有參數說明
Doxygen Usage - 如何使用
Doxygen 參數清單 - @param, @brief 等等, 有哪些變數可以使用, 參考此篇
Doxygen Start - 快速入手
Doxygen 快速入門 - 這篇快速入門是中文版(Big5)
Doxygen 操作、設定

產生一份 Doxygen 預設 Config 檔, 並由此設定檔來修改.
指令

doxygen -g <config-file>
doxygen -g # 會產生 Doxyfile
doxygen -g Doxygen # 產生檔名叫 Doxygen 的預設 Config 擋
doxygen -w html header.html footer.html stylesheet.css <config_file> # 產生文件到 html 目錄
操作

doxygen -g Doxygen # 產生 Doxygen 的設定檔, 都是預設值
vim Doxygen # 下述是我有做修改的部份, 請依照自己的需求設置
PROJECT_NAME       = PROJECT_NAME
PROJECT_NUMBER     = 1.0
OUTPUT_DIRECTORY   = ../docs
CREATE_SUBDIRS     = YES
EXTRACT_ALL        = YES
OUTPUT_LANGUAGE    = Chinese-Traditional # default: English
FULL_PATH_NAMES    = NO # default: YES
EXTRACT_STATIC     = YES # default: NO
FILE_PATTERNS      = *.php
RECURSIVE          = YES # default: NO
REFERENCED_BY_RELATION = YES # default: NO
REFERENCES_RELATION    = YES # default: NO
INLINE_SOURCE = YES # 要不要把 source code 印在文件裡面
若要將所有 Function 都列出來, 需要設下面參數, 不然只會列出物件的程式文件.
EXTRACT_ALL  = YES # 這會列出所有檔案
其他參考可見此篇, 下述取自: CSCI 102: Doxygen Tutorial
EXTRACT_ALL = YES
Extract documentation even from those elements you haven't yet commented.
INLINE_SOURCE = YES
Extract the relevant parts of the source and associate them with your description.
HAVE_DOT = YES
Use Graphviz for class and collaboration diagrammes.
CALL_GRAPH = YES
Generate a dependency graph for functions and methods.
GENERATE_LATEX = NO
Skip generating LaTeX sources for PDF.
Doxygen 參數清單

Doxygen 於註解中, 有哪些特定的參數可以用 (ex: @param), 可參考此篇: Doxygen 參數清單 (此文中的 "\" 可以用 "@" 代替)
Doxygen 常用註解範例

多行註解
/** Brief description which ends at this dot. Details follow
* here.
*/

/**
* Brief description which ends at this dot. Details follow
* here.
*/
單行註解
/** Brief description (e.g.\ using only a few words). Details follow. */
List
/**
* Text before the list
* - list item 1
* - sub item 1
* - sub sub item 1
* - sub sub item 2
* .
* The dot above ends the sub sub item list.
* More text for the first sub item
* .
* The dot above ends the first sub item.
* More text for the first list item
* - sub item 2
* - sub item 3
* - list item 2
* .
* More text in the same paragraph.
*
* More text in a new paragraph.
*/
Group
/** @defgroup group1 The First Group
* This is the first group
* @{
*/
/** @brief class C1 in group 1 */
class C1 {};
/** @brief class C2 in group 1 */
class C2 {};
/** function in group 1 */
void func() {}
/** @} */ // end of group1
Link
<a href="linkURL">link text</a>
Doxygen 產生文件

上述設定全部完成後, 再來就是執行來產生文件, 執行下述即可.
doxygen Doxygen # Doxygen 是設定檔名稱, 此步驟會開始產生文件
再來就可以在 "../docs" (依照設定檔 OUTPUT_DIRECTORY 的參數而定) 看文件囉~

2013年2月1日 星期五

iOS平台應用開發的敏捷設計流程


對設計師來說,iPhone和iPad是全新的平台。相比圖形和網站設計的經驗積累,在iPhone和iPad上的設計進化還都處於萌芽期。
在這裡,Sarah跟大家分享了簡單明了的火車時刻表軟件設計流程和基本原則,可能對你自己的設計項目有所啟發。為了簡化過程,我們假設獲取火車運行數據的API是現成的。
1.首先,要確定你的創意還沒有人做過。如果你發現已經有類似的App,那你需要比它做的更好,有一些獨特的優化設計。最好的調查方式是到iTunes Store上搜索已有的iPad程序。
2.當有了創意,你還需要有個明確的定位,它會在後續的設計過程中決定App的設計要點。App定位可以通過蘋果的人機界面指南(Human Interface Guidelines)圖來確定。
距離圖中坐標原點位置越遠的App,特點越明顯,越需要精美易用的界面設計,讓他們與其他競爭者明顯區分開來。在這個案例中,我們把App定位在原點位置,即簡單使用的輔助工具。
3.確定App定位後,接下來需要聚焦App的核心功能。在團隊合作設計時,這一點尤其重要。團隊在提出各種功能需求時,很容易陷入哪些功能要包含在第一個版本中的爭論。Apple把這個過程叫設計ADS(Application Definition Statement),或者叫設計精簡的ADS。
4.走到這一步,很多人會認為對App的設計已經想的很清楚,可以直接開始設計圖形界面甚至編碼了。實際上,前面的過程,僅僅設計的導入階段。我們接下來要做的,是產品草圖設計。一般我們用紙和筆來畫,它們是最簡單,學習成本最低的工具。按照我們的設計經驗,勾畫出用戶需要用到的界面,包括像按鈕之類的界面交互元素;篩選出核心用戶最常用的,最適合移動應用場景的功能。
5.我們要設計的是輔助工具軟件,通常,它只需要主界面,和一個在背面顯示相關信息的輔助界面,它通過信息按鈕觸發後翻轉顯示。如果你設計的是其他App,可能還需要更多的界面。重點是要設計界面與界面之間的切換方式,這一點在設計交付給開發人員時會顯得尤其重要。我們把這個過程叫做App功能穿越(App Functionality Walkthrough)。
6.現在,開始App的低保真原型設計。重點是不要陷入過多的細節,低保真只是把你紙面上的草圖數字化,便於在電腦上持續的改進。所以,盡量使用黑白,粗糙的線條和圖形來制作低保真,別在細節上糾結,浪費時間。
7.低保真原型完成後,開始設計注重細節和精度的高保真原型。我使用PhotoShop,你可以選用自己熟悉的其他工具。一般,我會為iPad設置尺寸為1024X768的畫布,然後根據低保真原型進行細節設計。
8.當我們設計App的主界面時,顯示列車時刻表是設計的重點。它不需要包含所有功能,應著重顯示列車到達時間,出發時間,列出延誤或者取消等必要信息。
9.鑑於Apple提倡有質感,有仿真度的圖形界面,我們讓App的界面設計盡量接近用戶熟悉的火車站時刻表。在配色上,使用灰色,黑色,亮黃和紅色,配合一些個性化的圖標來表示遲到和取消狀態。
10.很重要的一點是,App所展現的信息,必須簡潔明了,沒有多余的文字。所以,在界面設計上,我們沒有引入任何華麗的圖形或者其他的信息來干擾用戶,讓他們能一眼就看明白App的用途。在數據條目之間使用間隔色,用醒目的字體顯示到達和出發時間,這些都是很好的設計體現。主界面背後的相關信息界面,使用Apple的標准界面即可,為用戶提供搜索列車後加入關注的功能。
11.我使用了很多細微的漸變和一些材質,重要的是,確保所有的信息都一目了然,不隱晦,不誤導用戶。
12.現在可以開始考慮icon的設計。這將決定App在App Store上的辨識度。你可以從簡單的輪廓設計開始設計,先把核心創意表現出來。
13.除非有必要,你的icon最好不要包含文字,盡量使用跟你的App圖形界面一致的材質和漸變。你如果想給用戶呈現高質量的UI設計,別忘了把icon設計成29×29,72×72,和512×512三種尺寸。
14.如果你自己不開發App的功能,還需要把清晰的設計指南交付給開發人員。我會把界面和描述集中到一張大圖,並盡可能的把所有可遇見的情況都給開發人員描述清楚。
15.最後,我們把低保真原型,所有的圖形界面設計圖(一般是PSD)和圖標打包在一起,做上清楚的標注,發送給開發人員。有時候,你可能還需要對PSD進行切圖,存成PNG,方便開發人員直接使用。
關於Sarah Parmenter
英國艾塞克斯(英國英格蘭東南部的郡)Youknowwho設計工作室的創始人,Sarah Parmenter專注於網站,iPhone和iPad應用的設計。設計工作室創立於2003年。Sarah Parmenter在訪談中介紹了她在設計列車時刻表App時的流程和設計原則。
譯後感
Sarah所講述的設計流程,跟我們設計傳統web軟件的流程沒有太大差別,都是基於統一的設計方法論。但是,App Store開創了一個全新的軟件生態系統,它不僅改寫了軟件的交付和消費方式,也對軟件的設計產生著顯著的影響。
App Store上成功的應用,絕大部分都是面向個人的軟件,它們功能簡單(相對於傳統的B/S或者C/S軟件來說),注重滿足用戶的核心需求,設計上極力追求完美,我把他們叫做微應用。由於這個微字,要求這些應用的設計過程要比傳統的UCD過程更敏捷;同時,微字帶來了App Store超過30萬的應用(截至2010年12月),也造就了贏家通吃的生存法則。
成功的App設計,要求在上線第一天就能夠吸引用戶。如果你上市的第一個月沒有進入排行榜,那馬上會在第二個月死亡。 微應用把Release soon, Release often法則打破了,它執行的是蘋果法則,Release awesome, Release incredible。
Sarah的設計流程,可以歸納為以下的步驟:
市場定位 —》App定義(ADS) —》概念草圖 —》低保真原型 —》高保真原型 —》設計交付物說明和整理 —》外包開發
在這個流程中,並沒有傳統UCD方法論中強調的用戶分析,場景分析,信息架構設計等環節,他們已經變成基本原則,融入到具體的原型設計過程中去了。為什麼會這樣?還是因為微應用的特性決定的。軟件足夠小,不需要也不可能承受冗長的基礎分析和設計過程所帶來的成本,它需要的是更敏捷的設計流程,用盡量完美的設計,來滿足用戶的特定需求。
同樣的,敏捷設計流程,逼迫設計團隊必須裁剪需求,才能更好的適應贏家通吃法則。一個小軟件的失敗,損失的可能只是4周的工作時間,這並不是什麼大不了。你完成可以通過另一個新產品來獲得成功。
這篇訪談給我最大的啟發,就在於敏捷設計對於App設計的重要性,還有老外在面對微應用時,對於設計流程的堅持。