2013年1月31日 星期四

此圖只有Hana有,人間能得幾人聞的LINE圖片分享

快要過年了,隨著最近LINE愈來愈火紅,今年改用LINE來拜年似乎是個不錯的Idea。新版的mini.Hana特別加入分享圖片到LINE的功能,並且添加了過年主題的圖片,就連剛好在年假裡巧遇的西洋情人節,也貼心地提供了表白圖片讓我們傳送不敢當面講出的真心話。接下來,就讓彼得潘為大家介紹如何從mini.Hana App來跟朋友拜年吧。

1. 選擇適合對方的拜年圖片 (”紅包拿來”這張一定要慎重挑選對象,不是人人都可以送的呀)




2. 選擇老少咸宜的"柿柿如意"

點選左下角的分享按鈕



3.  點選右下角的LINE按鈕,啟動LINE大神





4.  選擇傳送的對象

除了可以指定某個人,也可以選擇群組或是已經開啟的聊天室



為了避免傳錯對象表錯情,我們還有反悔的機會。點選後將跳出確認訊息讓我們可以再做確認。




按下確定傳送後,圖片立馬傳出,讓對方立即感受我們火燙的心意。

古人說”此曲只應天上有,人間能得幾回聞”。如今”此圖只有Hana有,人間能得幾人聞",這些圖片可是不存在於LINE內建的貼圖商店呀,相信到時候收到的人一定會覺得格外珍貴,倍感窩心吧。






2013年1月23日 星期三

LOCOMO 2.5的全新體驗

全新的LOCOMO 2.5版,為使用者帶來了更好的運動體驗。打鐵要趁熱,最近梁朝偉的一代宗師超紅,讓我們了解了運動健身的重要。彼得潘決定除了當一個文青作家,也要像電影裡的梁朝偉一樣強壯,希望2013年能夠每天用自己公司出品的LOCOMO好好運動,希望有天也能成為文武雙全的一代宗師 !


1.  不再偏心直立摸式,照片,軌跡也支援水平瀏覽模式了

想當初,彼得潘好不容易在千鈞一髮之際,拍下了這張叫不出名字的白毛高人漂浮於湖上的珍貴照片。可惜此照片是以水平角度拍攝,在直立畫面下會留下大塊叫人心煩的黑邊。



現在,LOCOMO不再偏心直立角度,只要輕輕將iPhone 90度轉為水平角度,即可馬上享受全螢幕的橫式照片。



不只照片,連地圖也可以翻轉唷。仔細看了地圖,才發現原來彼得潘時常漫步的碧湖在地圖上形狀就像顆愛心,難怪常看到甜蜜的情侶在湖邊約會。




2. 縮放照片找正妹

在觀看照片時,除了可以發揮一陽指觸碰照片讓上方和下方的bar害怕地躲起來,還可以縮放照片,尋找正在慢跑的美女。如下圖所示,彼得潘不知怎麼地,突然對這位白毛高人感到害怕,嚇得趕緊把照片放大,將此神秘的白毛高人移到畫面之外。








3. 運動過程全都錄

運動記錄頁面記錄的是完整的數據結果,但其實運動就像談戀愛一樣,重要的是過程,不是結果。LOCOMO早已把我們運動過程的每分每秒都補捉了,只要將運動記錄頁面翻轉90度,成為水平模式,即可看到運動過程中,每公里的數據分析。




過程中最快和最慢的段落也被標示出來了。彼得潘猜測Sunny這樣子的運動正妹,最慢的段落可能是遇到路人搭訕,才影響了健步如飛的速度。




4. 更方便的照片和軌跡分享

現在分享照片和軌跡更方便了。在觀看照片或軌跡時,畫面下方的"按讚留言bar",多了一顆分享按鈕,變成”按讚留言分享bar"。



只要點選分享按鈕,馬上跳出分享頁面,浮現琳琅滿目的分享管道任我們挑選。




5. 一覽無遺的月曆瀏覽

彼得潘立下了一個星期要運動三天,成為一代宗師的目標。然而原先的運動記錄,是以列表的方式呈現,在此模式下彼得潘只能一個一個辛苦地比對時間,檢查一星期是否運動了三次。



現在有了月曆模式,終於可以一目了然,輕易看出一星期,一個月的運動記錄。糟糕,彼得潘2012的12月竟然只有運動三天( 當日期數字為橘色時),過去的就讓它隨風而去吧,彼得潘2013年一定會努力做到的。





6. 汗水累積的運動數據

新版的運動記錄頁面,畫面的上方區塊顯示著個人的運動累積數據。在剛剛的兩張圖,我們分別看到了總距離和總卡路里的數據。只要以手指左右滑動,即可切換不同的數據,如下圖所示,彼得潘小指一滑,瞬間變成顯示總時間。咦,怎麼彼得潘只運動了一個半小時,嗯,其實彼得潘運動不欲人知,所以實際的運動數字是它的好幾千倍啦。






2013年1月20日 星期日

學習王家衛拍電影的精神做App



也許,我們該學習王家衛拍電影的精神來做App

十年磨一劍,梁朝偉的大作”一代宗師”即將上映。王家衛為了拍出最好的電影,走訪大江南北,花了多年的時間考究各大門派的功夫。在App市場愈來愈競爭的情況下,如何能在App海裡冒出頭呢? 

是要投資更多的時間鑽研最新最眩的技術嗎?還是關在辦公室裡埋頭苦幹,以公司為家? 也許我們該學學王家衛,想做什麼,就走出去外頭闖闖看看,深入分析研究,了解想做的App的真正本質,而不是只想到表面,或是愈加愈多自以為的新奇功能。

比方想做記帳App,也許我們一開始也像梁朝偉對於詠春拳一樣,什麼都不懂。不懂沒關係,外面的世界充滿許多記帳的達人,記帳的需求,記帳的故事,等著我們去挖掘。甚至是不同的國家,幾百年前的古人,也都藏著和現在台灣全然不同,但值得學習的記帳方法和習慣。若是能真正花時間去做記帳的研究,學習以拍電影的講究態度來做App,集各家之長融會貫通,相信一定能做出深入人心的App。


為瘦身的Xcode安裝進階套件

強大的Xcode包山包海,幾乎各種程式開發相關的技術它都略懂。好處是我們只要裝了Xcode,就可以應付絕大多數的開發需求,不用再安裝其它軟體。但壞處就是它吃掉我們許多的硬碟空間,而Xcode好心幫我們安裝的許多東西我們卻可能一輩子都用不到。

新版的Xcode發揮強大的意志力,瘦身成功,只包含一些重要的套件,其它額外的套件我們需要時再從網路下載。以iPhone模擬器為例,預設只安裝最新版的模擬器,但為了開發能支援舊版iOS 5機器的App,彼得潘需要額外安裝iOS 5的模擬器,以下為完整的安裝步驟:

1. 點選Xcode -> Preferences ,顯示Xcode的偏好設定面版



2. 切換到Downloads頁面

Downloads頁面顯示我們可以安裝的套件清單。已安裝的會顯示Installed,尚未下載安裝的則顯示Install按鈕。彼得潘一眼就看到目標iOS 5.1 Simulator,點選Install後即可開始下載安裝。



3. 安裝成功後,在選擇App的執行目標時,清單上冒出了新的iPhone 5.1 Simulator和iPad 5.1 Simulator。



執行清單的最後一行,"More Simulators”,其實是安裝舊版模擬器的快捷管道,點選它將立即跳出剛剛的Downloads頁面,若是連iOS 5.0也想支援,可接著繼續安裝iOS 5.0 Simulator。










2013年1月19日 星期六

這是100k的最好時代,也是22k的最壞時代




"這是最好的時代,也是最壞的時代”(狄更斯) 
”這是100k的最好時代,也是22k的最壞時代”(彼得潘)

最近22k話題殺很大,面臨22k處境的台灣看來應該是處於最壞的時代吧。其實彼得潘和”下班後的黃金8小時”作者都覺得現在是最好的時代。從前如果不是含著金湯匙出生,大概只能靠”十年寒窗無人問,一舉成名天下知”。但是現在處處都存在著機會,科技的進步讓我們不再受限於距離,住在北極的聖誕老人也可能是我們的顧客。對程式有興趣的,創作App一天可以賺3萬。對寫作有興趣的,電子書, blog讓我們出書更容易。對環遊世界有興趣的,邊玩還能邊做旅遊節目主持人。對唱歌有興趣的,滿目的選秀比賽任君挑選。

現在到底是一個什麼樣的時代呢?它可能是個什麼事情都可以帶來財富,帶來快樂,輕易100k的時代,但也可能是22k的最壞時代。最好,最壞,全看我們如何運用,如何把握一天的24小時。


2013年1月15日 星期二

暗藏殺機的App隱私權限設定

作為和使用者日夜相伴的iPhone,其上頭已經藏有太多私人的私密資料。為了防止陳冠希的照片事件重演,Apple在iOS 6更為重視使用者的隱私。如今App在存取使用者的照片,行事曆,通訊錄等私密資訊時,都需要先 徵求使用者的同意。而使用者也可以隨時改變心意,從”設定"App裡改變某個App存取個人資料的權限。

如下圖所示,從"設定"App -> 隱私 -> 行事曆,我們可以看到存取行事曆的App。每個App旁邊有個開關,控制著此App是否有權存取行事曆。

       

然而,誰也想不到,只是小小地調整開關,改變App存取的權限,竟會帶來殺機!"君要臣死,臣不得不死",在iOS的世界,為了一些正當且不得不的理由,系統有時會痛下殺手,偷偷地將背景中的App殺掉。最常見的原因莫過於系統的記憶體不足,所以只能把那些在背景中佔據大量記憶體的App殺掉,以挪出空間給目前真正跟使用者互動的前景App。而當我們修改App的隱私權限,比方將LOCOMO App存取行事曆的權限從on變為off,將使得LOCOMO App被系統殺掉,立即上天堂,如以下Apple的技術文件所說:if permissions changes, app is quit


其實這也不能完全怪系統。系統這麼做是有原因的。唯有這樣做,才能真正保護使用者的隱私。比方原本彼得潘同意LOCOMO存取行事曆,但後來彼得潘想想沒有人是可以信任的,約會的行程最好還是不要給第三人知道,因此決定將LOCOMO存取行事曆的權限關掉。此時系統若不馬上終結LOCOMO App的生命,將讓原本正在執行中的LOCOMO繼續在它自以為有權存取行事曆的假設下執行,可能會產生難以預料的可怕後果。







2013年1月14日 星期一

快速取得unix time對應的Mac系統時區時間

關於時間的問題,找Python大神就對了。經由Mac內建的python,我們可以很方便地查詢unix time對應的Mac系統時區時間:

1. 啟動terminal

2. $ python
python
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>


3. >>>  from datetime import datetime

4. >>>  datetime.fromtimestamp(1358171586.312390)
datetime.datetime(2013, 1, 14, 21, 53, 6, 312390)

輸入unix time 1358171586.312390,
回報對應到目前Mac系統時區的時間2013年1月14日晚上9點53分6秒


2013年1月12日 星期六

好東西就是要和好朋友分享: Reminders分享

Mac和iOS上的Reminders讓我們可以很方便地設定提醒事項,有了它的貼心提醒,理論上,彼得潘跟女朋友約會不再遲到,期末考高分過關,寫書也不再拖稿。

結合強大的iCloud,不只設定彼得潘帳號的iPhone, iPad, Macbook Pro Retina可以共用存取同一份資料,所謂好東西要和好朋友分享,我們也可以分享給有iCloud帳號的好朋友。接下來,彼得潘將以小時候的偶像梁朝偉作品集為例子,說明如何分享彼得潘花費一生精力整理的”梁朝偉作品集”給朋友。


1. 在Mac上啟動Reminders App,新增”梁朝偉作品集”。




2. 點選右邊的分享圖示,輸入分享的對象

將滑鼠游標移至梁朝偉作品集的右手邊,將浮現”分享圖示”,點選後即可呼喚出分享視窗,於其中輸入分享對象的email。



3. 被分享的對象,將收到通知的email。

放心,這不是紅色炸彈,不會讓你的銀行戶頭少一毛錢。email內容明白說明了分享的內容為”梁朝偉作品集”,如果你也像彼得潘一樣是梁朝偉的粉絲,就可以開心地點選Join Reminders,共享此份清單了。



4. 登入iCloud網站。
https://www.icloud.com

被分享的對象,可以在任何有設定iCloud Reminders同步的機器上看到”梁朝偉作品集”。即使沒有也不用心灰意冷,埋怨老爸不是李嘉誠,沒錢買iPhone 5。只要從瀏覽器上網,以被分享的帳號登入iClound網站,一樣可以看到分享的內容。




點選網站上的Reminders Icon進入Reminders頁面。



Reminders網頁成功顯示彼得潘分享的”梁朝偉作品集”。Apple果然一視同仁,不會因為對方從Windows的IE登入,就不讓他看到分享的內容。





2013年1月8日 星期二

明明就 明明就 明明就播放了,怎麼會聽不到呢?

播放音樂,透過iOS的AVAudioPlayer物件,成為一件再簡單不過的事。以下為播放音樂的標準程序:


 NSString *path = [[NSBundle mainBundle] pathForResource:@"明明就.m4a" ofType:nil];
 NSURL *url = [NSURL fileURLWithPath:path ];
 AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
 [audioPlayer play];
說明:
(1) NSString *path = [[NSBundle mainBundle] pathForResource:@"明明就.m4a" ofType:nil];
      NSURL *url = [NSURL fileURLWithPath:path ];

取得周杰倫的最新主打歌”明明就”的檔案路徑,然後建立NSURL物件。

(2)  AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

建立專長播放音樂的AVAudioPlayer物件audioPlayer,只要 透過檔案路徑的url點歌,它即可正確無誤的播出歌曲,完全不會忘詞。

(3)  [audioPlayer play];

開始播放

如此簡單的程序,彼得潘馬上寫了個測試程式,在畫面上加入周杰倫新專輯的封面圖片做為按鈕,在按鈕被點選時的Touch Up Inside event觸發呼叫method
  - (IBAction)playMusic:(id)sender, 而此method的定義當然就是剛剛那一段程式碼。



明明就 明明就 明明就播放了,怎麼會 怎麼會 怎麼會聽不到呢? 連前奏也不給我們聽。失戀已經夠難過了,更難過的是連失戀情歌都聽不到。難道連iPhone都如此無情嗎?

iPhone當然是有情有義呀。問題完全出在我們寫的程式碼裡,和iPhone無關。我們剛剛在playMusic: method裡宣告AVAudioPlayer物件, 因此它是一個local變數,它的生命週期將隨著method執行完畢而終結。iPhone CPU的快是名震天下的,此method不用一秒鐘的時間就執行完了,我們當然聽不到一丁點的音樂呀。

現在彼得潘在原來的[audioPlayer play];後加入以下程式碼,

    [NSThread sleepForTimeInterval:10];

此行程式碼將延長此method的執行時間,要10秒後此method才執行完畢。當我們再此執行App後,終於可以聽到前奏了,但是只維持了10秒,還來不及聽到周杰倫的歌聲。


為了聽到完整歌曲,我們是要把sleep的時間加大,變大到300秒嗎? 當然不是,這不是個好方法。尤其像這種失戀時聽的情歌,最好是24小時不間斷地重覆播放,我們永遠無法確定要傳入多大的數字,有些人可能失戀療傷只要一天,有些人卻需要一年365天一直聽”明明就”呀

一勞永逸的方法很簡單,我們只要將AVAudioPlayer物件宣告為物件的member,而不是local變數,即可讓此物件不會因method執行結束而跟著死去。在剛剛的例子裡,彼得潘將AVAudioPlayer物件宣告為負責主畫面的ViewController的member。

@interface ViewController : UIViewController
{
    AVAudioPlayer *audioPlayer ;
}

然後將ViewController的playMusic: method稍做修改

- (IBAction)playMusic:(id)sender {
    
    NSString *path = [[NSBundle mainBundle] pathForResource:@"明明就.m4a" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path ];
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    audioPlayer.numberOfLoops = -1;
    [audioPlayer play];
    
}
說明:
(1)  audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

audioPlayer不再是local變數,生命不再因playMusic: method執行結束而終結。

(2)  audioPlayer.numberOfLoops = -1;

將AVAudioPlayer物件的numberOfLoops設為負數時,音樂將不間斷地重覆播放,直到我們走出失戀情傷,結束App,才會停止音樂的播放。




2013年1月3日 星期四

數位藏寶箱iTunes 11 (PC home 2013.1)






幸福插畫mini.Hana的Collection View (MacToday 2013. 1)






iOS 6 全新推出的 collection view 元件,讓我們更容易在畫面上呈現整理好的大量資料,比方結婚時分享的甜蜜照片集,神秘的X 檔案清單等。雖然說傳統的 table view或scroll view也能勝任這些工作,但是畢竟它們是舊時代的產物,在許多方面早已跟不上新時代的腳步,接下來就讓我們好好深入了解collection view,學習利用它呈現可愛的 mini.Hana插畫圖 片,實現在傳統table view需要大費周章才能實現的功能。