2010-11-05

智慧型手機與資料的保全

所謂的智慧型手機,普遍的定義就是把個人助理的資料(行事曆、聯絡人、待辦事項、記事),以及可以執行程式的環境,與行動電話通訊結合在一個電子設備上的機器。

在 Palm OS 剛出現,台灣還沒有代理商的時候,我也有了一台,當時真的很驚喜,它的規格大概就像 Apple ][ 電腦一樣,只是體積小到可以放在手掌上操作。

當時統稱「PDA」,在 Palm OS 全盛時期,有很多家廠商授權可以製造販售,我陸續買了 TRGpro/HandEra,以及最後三款同樣也是 Palm OS 的 Sony Clie。

圖:這是我的最後一台 Palm OS 的 PDA,Sony Clie TH55

我最早建立的資料(這四大天王),不會因為更換機種而消失不見或是重新建立,反而可以一直順利轉移過去。

這是我今天這篇的核心:資料的保全。


當時,我認為這些資料很重要,所以 PDA 不可以與行動電話一起,所以我最後一款 Palm OS 的 PDA: Sony 的 TH55 一直用很久!

然而,這期中我也用過 Windows CE 的 PDA,但也是因為無法好好轉移資料過去,而一直無法用上手。不只是我被 Palm OS 的這四大天王緊緊黏住,相信有很多人都跟我一樣!

後來,Palm OS 已經快要消失,Apple 剛發表 iPhone,我認為將來 PDA 與行動電話勢必要走上整合之一途。所以,當同樣採用 iPhone OS 的 iPod touch 先上市之時,我馬上就買了一台,我想辦法要讓我多年建立在 Palm OS 的資料可以順利轉移過去,另外可以同時研究在發表會提到的 App Store。

我知道多年資料的轉移沒有那麼簡單,幸好在這之前,我已經陸續把常用的聯絡人、行事曆... 等資料,透過 Mac 的「通訊錄」與「iCal」建立,以藍牙方式與我當時的手機 SE K800i 同步,漸漸地過渡了幾年,等我依賴「通訊錄」與「iCal」的比重越來越高,「通訊錄」與「iCal」等資料和 iPod touch 是可以更完美結合之時,到了我認為比較成熟的 iPhone 3Gs 上市,我就馬上購入,無痛地把資料順利轉移過去。

圖:我曾一度考慮再把 K800i 拿來用,搭配 iPad 也不錯。

剛開始還不大適應 PDA 與行動電話在一起,不過這幾年的習慣讓我也認為已經不是問題了,我重視的資料保全問題,都是以目前的 iMac 為主,這是我的資料中心,我可以任意同步到 iPod touch、iPhone,以及後來加入的 iPad 上面。
(就算我換電腦,Mac 的轉移也更神奇,帳號下的資料與檔案都可以完美轉過去)

甚至我以前在 iPod nano 的音樂,在 iPhoto 多年的照片... 都可以不用想太多技巧,只是決定要不要讓哪一台設備可以同步資訊、音樂、照片、影片,以及哪些程式... 等等

我的資料保全,不用擔心會被行動電話影響,就算不見了,我還可以透過 MobileMe 遠端把它清除掉。

我的電腦如果誤刪了某些資料,還可以搭「時光機」去找回來。


當你的資訊資料/照片/音樂/影片越來越多,越來越多年,你還在用「資料夾」分類管理嗎?你有多少個你幫你記憶?

交給 Mac 幫你吧!

.

2010-10-19

「iPad/平板電腦」如何取代「小筆電/筆記型電腦」

我在之前的不要用技術人的思維來看 iPad 有提過,Steve Jobs 強調 iPad 是個介於 Mobile Smart Phone 與 Laptop Computer 的中間產品,並不是要來取代小筆電或是筆記型電腦。

在 iPad 暢銷到全球持續缺貨的情況下,很多廠商一窩蜂地投入生產所謂的「平板電腦」想要與 iPad 一較高下。或許有的人會冷眼旁觀,認為其他的都會像 2002 年的 Windows 平板電腦一樣失敗。

而 iPad 為何這樣熱銷?媒體炒作?不!

是觸控介面的作業系統!

當初 Windows 平板電腦失敗的原因,是使用者介面還是以鍵盤滑鼠的操作思維下的產品;而 iPad 是以這一整片的觸控介面與 iOS 緊密搭配出來的成功設計。

我們再來想看看,這麼多廠商投入,市場是不是有這樣的需求?

有,最大的需求大多是:
  1. 收發 email
  2. 上網
  3. 閱讀電子書
  4. 文書處理
  5. 玩遊戲
光是第二點就有一半以上的需求了。
比如說以下的狀況,我通稱「上網」:
  • 在客廳看電視,突然間某個新聞、景點、美食、人物... 等的訊息,你想知道多一點,會想要上網查看看,但是還要開電腦等啊等的。
    但是用 iPad 就不一樣了,打開馬上查,不用等!
    如果電視要回頭繼續看,找到的資訊想要稍後再看?可以!馬上加入書籤,甚至與 MobileMe 同步,過幾天回到電腦,又可以繼續看!
    這個狀況在我們家最常用,我女兒都會,我老婆看到不錯的手提包、鞋子、衣服,也是用 iPad 上網查價格、比價...
  • 寫部落格。是的,我就是這樣。想寫的,可以開 iPad 先寫一些儲存成草稿,滿意後再發佈文章。
  • 社群溝通。沒錯,Facebook、Plurk、Twitter... 或是用了很多年的 MSN/Yahoo/SKYPE 我也幾乎都是在 iPad 上使用。
我的電腦是工作用的,專心用在寫程式上面,其他的都移出去了。

「文書處理」的需求呢?
在 iPad 有 Page/Number/Keynote,開啟 Word/Excel/PowerPoint 編修都沒問題。
專案工作要開始之前,原本我會在電腦前面利用「文書處理」的軟體把大綱流程等先寫好,再按照計畫進行。
現在我只要在客廳有空閒的時間、突然想到,或是陪小孩讀書的時候,隨時利用 iPad 來編寫記錄,如果簡單的文案,可以輕鬆寫完,但是如果比較複雜的文案,我也是可以寫完大綱流程後,細節部分再回到桌上型電腦繼續處理。

「玩遊戲」的需求?
這個不用多說了, App Store 上面一大堆遊戲軟體讓您玩。



用到小筆電或是筆記型電腦?都沒有。

小筆電與筆記型電腦會不會被取代?有機會!甚至會。
筆電太貴,同樣的花費,我寧願買好一點的桌上型電腦讓工作更有效率。

您認為呢?



***2013/5/20 補充***
電腦玩物(異塵行者) 之 iPad App 下載推薦整理,今年我的五種iPad使用情境心得


2010-10-18

AdMob 的廣告收入分析參考

我在去(2009)年10月將「台灣樂透彩」加上 AdMob 與 Google 的 AdSense 廣告,這樣一年下來 AdMob 累積了 us$150+,AdSense 是 us$190+,兩個廣告收入合計後,換算台幣大概一萬多元。
剛好可以換一個墾丁凱撒四人房的假日一泊二食一晚住宿,攜妻子小孩去度個假也不錯。

在 AdMob 最好的收入是月入 us$24+(當月應該是累積好幾個月的上億元彩金),最少的是 us$3+(剛開始第一個月)。

這只是單一軟體的收入狀況,使用族群應該是對樂透彩有興趣的朋友而已。

於是我在這個月再將「台灣氣象衛星」加上 AdMob 的廣告,使用族群應該會更廣泛,才5天不到的時間,就已經累積超過 us$9,超過了「台灣樂透彩」第一個月的收入的3倍。

展示的次數一直在往上衝


未來會如何?您可以繼續鎖定我的 Blog,我將持續分析給大家參考,也請大家多多報給您的親朋好友,多多使用這兩個軟體,也能多多按下廣告的連結,我會寫更多教學文與分析文來與大家分享。

*2010-10-19(第6天) 參考:

*2010-10-21(一星期) 參考:
趨勢圖:

*最多應該是 us$16+ 了吧,我想應該是颱風的關係,這天特別多人關心


*名詞與公式:
有效的CPM:(收益/展示)*1000
廣告投放率:展示/要求
點擊率CTR:點擊數/展示

.

2010-10-16

網路傳輸時 UIActivityIndicatorView 的動作

這已經是習慣了,大家都習慣要有這個符號出現。
當你的程式有使用到網路傳輸,通常就需要放一個 UIActivityIndicatorView 在畫面上,讓使用者知道目前正在傳輸中,以免讓人覺得沒有回應,像是當機一樣。
可是,為何你照著書本範例加到自己的程式卻不會動呢?

原因是:UIKit 的 main thread 一次只有做一件事,如果你在 ViewController 傳輸檔案,那麼其他的動作會等傳輸完之後再接下去做,所以你要另外再生出一個 thread 去處理 UIActivityIndicatorView 的動作。

使用 Objective-C 來處理 thread 是很簡單的,比 Java 還容易,在後面的說明裡會看到。


首先,在 .h 檔的 @interface 內加上

UIActivityIndicatorView *activityIndicator;


以及

@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *activityIndicator;


另外,再加上兩個 method

-(void)actIndicatorBegin;
-(void)actIndicatorEnd;


開啓 .m 檔,在 @implementation 的下面加上

@synthesize activityIndicator;


在 (void)loadView 內把你的 UIActivityIndicatorView 加上去你要的 View 上面,我這裡加在 UIToolbar 工具列裡面的一個 UIBarButtonItem 按鈕

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
[activityIndicator setCenter:CGPointMake(12, 12)];
[activityIndicator setHidesWhenStopped:YES];
[activityIndicator setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];
UIBarButtonItem *activityItem = [[[UIBarButtonItem alloc] initWithCustomView: activityIndicator] autorelease];


再把這個 UIBarButtonItem 加到 UIToolbar 內

NSArray *items = [NSArray arrayWithObjects:activityItem, nil];
toolbarTop.items = items;


在處理網路傳輸之前先執行這個 thread

[NSThread detachNewThreadSelector: @selector(actIndicatorBegin) toTarget:self withObject:nil];

//需要時間下載檔案的程式寫在這裡

url = [NSURL URLWithString:@"http://網址/圖片檔.jpg"];
img =[UIImage imageWithData:[NSData dataWithContentsOfURL:url]];


網路傳輸完之後再執行這個 thread

[NSThread detachNewThreadSelector: @selector(actIndicatorEnd) toTarget:self withObject:nil];


再加上這兩個 method 開關旋轉狀態
- (void) actIndicatorBegin {
[activityIndicator startAnimating];
}

-(void) actIndicatorEnd {
[activityIndicator stopAnimating];
}


就這麼簡單,做看看吧!

.

【台灣氣象衛星】V2.0 更新

好長一段時間沒有寫教學文,去年上架的兩個軟體也都沒有在更新,實因為這幾個月有些事情。
生活,雖然總會遇到一些變化,但是,對於軟體的興趣不會變。

在結婚週年紀念日(10/2)隔天,我把【台灣氣象衛星】重新改寫,大概用了一個早上寫好,利用平常日下班後的時間修飾之後,在 10/9 上傳去審核,沒想到 10/14 就收到通知上架了,扣除假日兩天,這次 Apple 的審核還真快,大概只有三天就完成!

程式不難,這次也沒有用 IB,很想再將一些用到的功能寫幾篇教學文放上來,讓更多人知道,其實寫這樣的軟體是很簡單的,也吸引更多人來加入 iOS App 的開發行列。


*2010/11/2,因為用到了手勢的功能,但是只能在 iOS 3.2 以後的版本使用,一上架之後罵聲不斷,所以趕緊把這段加上 runtime check,讓 iPhone OS 3.1 以前的設備也可以使用。於是更新為 2.0.1,有問題建議敬請不吝賜教。



.

2010-05-21

新成員 iPad

終於在五月的第二個星期天,母親節的這天拿到 iPad。




等了一個多月,終於拿到了,剛好當作送給老婆的母親節禮物。

我也打算寫一些可以在 iPad 上面運作的 App。

.

2010-04-01

在 Blogger 使用SyntxHighlighter

http://itouchs.blogspot.com/2011/11/blogspot-objective-c-syntax.html

http://scottdensmore.typepad.com/blog/2011/04/objective-c-syntax-highlighter-reboot.html

https://github.com/scottdensmore/ObjectiveCSyntaxHighlighter




- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

// Converting RGBA color for use with UIColor
UIColor *colorFromRgba = [UIColor colorWithRed:23/255.0f green:45/255.0f blue:145/255.0f alpha:1];
NSLog(@"converted rgba color is: %@", colorFromRgba);

[self.window makeKeyAndVisible];

return YES;
}

2010-02-24

如何利用有限的時間學習 Xcode 與 iPhone 軟體開發

如果你也與我一樣(白天上班有公司的工作,下班後晚上有家庭、小孩課業,肯定也是沒有很多時間的朋友),自己的時間已經很少了,但是要怎麼著手學習 Xcode 與 iPhone 軟體開發?
你看到我前幾篇的文章提到,有那麼多的開發手冊要看,光是看目錄就暈倒了,還要看到何時?

我把我之前的經驗在這裡與各位分享,大家參考看看。

除了讀開發手冊之外,可以快速進入開發狀況的是史丹佛大學的 iPhone Application Development 課程,目前的「Winter 2010」版已經第三年了,之前兩年訂閱後都是在 Podcast 內,今年的訂閱後會歸類在 iTunes U 裡,而且還有字幕,對於聽力不是很強的朋友,是一個很好的機會。

訂閱後你就可以下載每個課程,然後同步在 iPhone/iPod touch 裡,隨時隨地可以利用時間學習。

訂閱方式如下:
從 iTunes 左側的 STORE 點選 iTunes Store

進入 iTunes U,按右邊選單的 Universities & Colleges

這時候你會看到很多學校,用英文字母分類,我們找到 S 的 Stanford
(如果你對其他學校的課程有興趣,也可以多看看)

進入之後,你可以從 CATEGORIES 的 Science and Technology 找到,或是直接從 WHAT'S NEW 就可以看到 iPhone Application Development (Winter 2010)

在 iPhone Application Development 的介紹頁面,按下 SUBSCRIBE 訂閱之後,就可以在 iTunes 的 iTunes U 資料庫內看到課程列表

另外,最快的方式(省略上述步驟)是直接從 iTunes 「功能表\進階\訂閱 Podcast..」. 輸入以下的 URL
http://deimos3.apple.com/WebObjects/Core.woa/Feed/itunes.stanford.edu.3124430053.03124430055

這樣也可以直接訂閱,然後就可以下載你要看的科目了。


*2010/11/06:
如果對物件導向不熟的,可以參考一下這篇


.

2010-01-28

不要用技術人的思維來看 iPad


Apple 在 2010/01/27 發表的 iPad 又帶來驚喜!

雖然我也是個技術人,但是,對於 iPad 這個中間產品 (Mobile Smart Phone 與 Laptop Computer) 不能用技術人的角度來看。
您可以從 iTunes 訂閱 Apple Keynotes 來把 2010/01/27 的產品發表會看完,就可以了解,因為在這段發表會開始與結束,Steve Jobs 都很明確地提到這件事:

我認為 iPad 是繼音樂(iPod)、軟體(iPhone/iPod touch) 之後,要讓書籍出版可以有個人發行的機會,Apple 這次把版圖表達得很清楚:iTunes Store、App Store、iBookstore。
iPad 不是一部電腦,而是個有繼往開來的產品角色,Apple 從音樂、軟體,到書籍出版,讓喜好寫書的人,不用透過書商賣書,賺取微薄版稅,自己掌握收益的一個舞台。

喜歡寫書的朋友,這會是您的舞台,換您可以發揮的機會了!

不要說你需要多工等等,想要多少技術在這個產品上,如果要這些技術,應該考慮的是用 Laptop Computer 去處理。
而且還是這句話:「去看完2010/01/27的產品發表會」,看完之後,您就不認為需要多工、需要其他來自 PC/Windows 的技術了,您要的是:怎麼專心去做好一件事(註:我的意思是說,看書就專心看書就好,不要做這個又想做別的)。


*** 2010/01/30 更新想法
音樂與書籍,是有悠久傳統的媒體,經過幾個世紀的衍化,在目前的市場上已經有一套商業模式,Apple 應該不會去破壞這個架構;因此,電腦軟體與這兩種媒體相較起來,大量開放比較沒有爭議,也不會破壞既有的利益架構。
所以,我認為這次的 iBookstore 應該會與 iTunes Store 一樣,Apple 與唱片公司、書籍雜誌出版商簽約,然後在 iTunes Store 販售音樂、書籍、雜誌。

我要調整一下先前的說法:很有可能 iBookstore 也會採用 iTunes Store 的模式(如獨立廠牌的歌手),讓獨立作家也一起加入 iBookstore,簽約發行書籍雜誌。
至於要如何運作,可能不會像 iPhone Developer Program 加入 Members 的方式那麼簡單,但至少,我們寫軟體的,還是可以繼續在 iPad 上發揮,而且畫面內容更寬廣,可發揮的事情變多了。
.

2010-01-05

轉換 .pvr 檔案格式

最近用 Cocos2d 載入一個背景圖頻頻出錯,原來是 Sprite 圖檔的長寬不可以超過 1024x1024!

如:Sprite *background = [Sprite spriteWithFile:@"BG02.png"];
要是 BG02.png 超過 1024x1024 就會出問題。
我試著把原稿縮小,再於程式裡放大,background.scale = 1.5f;

可是這樣比例又會跑掉了...


可以用 pvr 去處理圖片,但是找遍 Google 卻發現資源不多。
原來 pvr 的工具軟體就在 Xcode 裡。
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/texturetool

找到這份技術文件:
Creating textures in the PVRTC compression format

以及 OpenGL ES Programming Guide for iPhone OS 裡的 Using texturetool to Compress Textures

看來又要仔細研究一下了。

.

2010-01-02

討厭的 EXC_BAD_ACCESS

相信有很多人遇過 EXC_BAD_ACCESS 的錯誤訊息,有時候進 debug 也查不出個所以然,這種記憶體的問題,不管在哪種開發工具都會遇到。

而 Xcode 有個 Zombie 的方式,可以指出哪裡出問題!


從 Xcode 左側,展開 Groups & Files 內的 Executables 分類,點選 Project 名稱的項目,按右鍵選 Get Info。

切換到 Arguments 的標簽頁,在底下 Variables to be set in environment 下方有個「+」與「-」,按下「+」後,在「Name」輸入 『NSZombieEnabled』,「Value」輸入『YES』。

以後只要有物件建立,Zombie 也會自動建立,這樣在 debug 過程,如果有錯誤訊息發生,也可以透過 Zombie 找到進一步的問題點。

.