2010年7月31日 星期六

Apple iPad Case 到着


昨天除了新增了兩台 iPhone 4 之外,原裝 Apple iPad 套也送到家。盒子雖大,但內容很少。不過,原裝 Apple iPad 套的質地比想像中不同。面板內使用了金屬來增加強度,放入 iPad 後,整體感覺不錯!

iPhone Dock for iPhone 4


兩年多前買 iPhone 時,隨盒附送了一個底座。由於我的 iPhone 使用了「矽膠套」的緣故,一直都沒有使用這個底座。然而,新的 iPhone 4 已沒有底座附送,加上暫時沒套可用,於是我拿出底座嘗試與 iPhone 4 結合。我曾試過 iPhone 3 及 iPhone 3GS 都不能使用的 iPhone 底座,現在 iPhone 4 能順利而穩固地使用,實在太好了!

2010年7月30日 星期五

iPhone 4 Case Program - HK


終於都到香港地區有 iPhone 4 套送喇!
http://www.apple.com/hk/en/iphone/case-program/

9 月 30 日前發售的 iPhone 4 都被指有「天線門」,所以 Apple 就用送套來解決。至於送套的方式,是需要下載 Case Program 應用程式(必須在所屬地區的 AppStore 下載),然後在應用中選購套的款式。有 Apple Bumper 及十個左右其他廠的套可供選擇,全部都由 Apple 付費。

雖然我沒有發現「天線門」及「BlueTooth」問題,但既然 Apple 有套贈送,當然第一時間 Order 一個啦!不過款式就麻麻地,大部份都是「硬膠殼」,只有兩個「矽膠殼」,還要是很多透氣孔...

不過,大家要小心地選擇,只能選擇一次。選完之後再登入 Case Program 是不能再選購呢!

款式可以參考:
http://www.ilounge.com/index.php/backstage/comments/apple-iphone-4-case-program-here-are-the-best-worst-picks/

iPhone 4 到手!


今天很早便醒來,可能是因為 iPhone 4 首賣而興奮到睡不著。由於還未到 8:15am 出門上班的時間,於是打開報紙了解世界發生甚麼事情;然而竟給我發現 Smartone 在今天提早至 8:30am 開門,計一計時間,如果我能排在頭 5 名,便能在 9:30am 回到公司。於是原本打算放工出機的我,決定改為出機後才上班。幸好我排第 4,最終也能按照計算一樣 9:30am 回到公司。

2010年7月29日 星期四

訂購成功!


經過十五分鐘的攻勢後,終於都成功訂購 iPhone 4,收到確認信。信中寫了出機時間為 7 月 30 日至 8 月 2 日,若過了這個限期的話,便當作取消訂購。我打算明天到門市出機!

不過,我太太及一個朋友都有訂購 iPhone 4,但卻收不到確認信,可能是排在隊的最後,未能確認日期。事關有朋友的朋友,收到 Smartone 的確認信,但出機的時間為 8 月 6 日...。

2010年7月28日 星期三

Smartone 客戶優先訂機


明天(7 月 29 日)下午 2:00,Smartone 客戶可在網上優先訂購 iPhone 4。

香港各台的 iPhone 4 月費計劃

http://spreadsheets.google.com/pub?key=0Au_hDCvSI8ygdHctcDllWF9IbXJtZzFUcllrN3hlcFE

2010年7月27日 星期二

香港 Apple 網頁有 iPad 賣喇!


這幾天,我為了缺貨的原廠 iPad 套,日日到豐澤一會,也日日上 Apple 官網一看。今天發現 Apple 官網正在更新。原來更新過後是出現 iPad 及原廠套等周邊產品。最開心的是原廠套能在 24 小時內付運,我也急不及待立即訂購了一份。

2010年7月26日 星期一

破解 Sally's SPA 的 PVR 檔


由於工作的原固,我拿了 Sally's SPA 來參考,並破解了其 PVR 格式。首先我把 PVR 檔拖拉到 HexEdit,看看內容會否有很多重複的部份,如果有的話,代表了內容沒有被壓縮或編碼。確定沒有編碼後,我在 Photoshop 把檔案以 RAW 格式讀入,發現在 16-Bits 格式下,圖片偏移了 26 點,亦即是說 PVR 格式有 52 個字符的 Header。

利用 Photoshop 讀進來的檔案只是以灰階呈現,實在不能滿足我的需求,可惜的是我找不到合適的 Photoshop Plugin 來處理;我也不懂得 Snow Leopard 的編程方法;最後我決定使用 iPhone Simulator 來解決。因而開發出以下代碼:
+ (void)convertPVR2RAW:(NSString *)fileName  {
NSString *fileNameWithExt = [NSString stringWithFormat:@"%@.pvr", fileName];
NSString *mainPath = [[NSBundle mainBundle] bundlePath];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", mainPath,
fileNameWithExt];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
NSData *data = [fileHandle readDataToEndOfFile];
const Byte *dataByte = [data bytes];

// Convert RAGB-16bits to RGBA-32bits
int width = 512;
int height = 512;
int headerSize = 52;
int imageSize = width*height;
int totalSize = headerSize+imageSize*2;
int outputSize = imageSize*4;
Byte *rgbData = malloc(outputSize);
int rgbOffset = 0;
for (int i=headerSize; i< totalSize; i+=2) {
int channelValue = (dataByte[i]<<8)+(dataByte[i+1]);
int red = (channelValue>>12)&15;
int alpha = (channelValue>>8)&15;
int blue = (channelValue>>4)&15;
int green = (channelValue)&15;

rgbData[rgbOffset] = (blue<<4);
rgbData[rgbOffset+imageSize] = (green<<4);
rgbData[rgbOffset+imageSize+imageSize] = (red<<4);
rgbData[rgbOffset+imageSize+imageSize+imageSize] = (alpha<<4);
rgbOffset++;
}

// Get documents directory
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// Generate output file
fileNameWithExt = [NSString stringWithFormat:@"%@.raw", fileName];
filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,
fileNameWithExt];
NSData *outputData = [[NSData alloc] initWithBytes:rgbData length:outputSize];
[outputData writeToFile:filePath atomically:NO];
[outputData release];

// Release memory
free(rgbData);
[fileHandle closeFile];
}

最終都能成功解碼。說穿了,PVR 只不過是多了 52 Bytes Header 的 16-Bits RGBA RAW 格式。不過它的排列不是 RGBA,而是 RAGB。

2010年7月25日 星期日

iOS 4.0 下的 Icon 檔名

在 iPhone Developer Center 下載了一個 Sample Code。打開之後,發現了六個以 Icon 為首的檔名,分別為:
Icon.png / Icon@2x.png / Icon-72.png / Icon-Small.png / Icon-Small@2x.png / Icon-Small-50.png。

在好奇之下,搜尋了相關資料。Icon.png 就是原本 iPhone / iPod Home 畫面會用到的圖示;Icon@2x.png 是在 iPhone 4 Home 畫面顯示的圖示;Icon-72.png 是 iPad Home 畫面顯示的圖示;而有 Small 字眼的是在 Spotlight 下出現的圖示。

2010年7月24日 星期六

iPad 套也售罄

今天打算購買 Apple iPad Case,於是我走訪「灣仔電腦城」、「new:Vision」、「298 電腦商場」及「豐澤」。可惜不是沒有貨,就是有現貨但價錢卻要 HK$680! 是香港定價 HK$298 的一倍有多!聞說昨天 iPad 首賣時,每家店只得到 10 個原裝 iPad 套,難怪今天找了很多地方也沒有貨,而且價錢能飆升一倍。相信也只有 Apple 才能造出這樣的景象。

2010年7月23日 星期五

iPad 64GB WiFi 入手!


今天是香港首日發售 iPad 的日子,在日本買不成 iPad 的我,特地拜托了媽媽到我家商場的豐澤購買 iPad。在早上 8:15,我正在回公司的路途,已經看到約有 20 人在豐澤的門外排隊。到了 9:00 時左右,媽媽到了,這時她已經排第 50 左右了。到正式開門時,已經有過 100 人排隊。店員把顧客以 10 人分為一組,每人限購 2 台,分批進入店內購買。到了 12:00 時,終於到媽媽進場。這時的 16GB 及 32GB 都已經售罄,幸好我打算買的 iPad 64GB WiFi 版本仍然有貨。由於我媽不懂得試機,所以我委托店員幫忙,最終亦沒有問題,成功購買。今之真的辛苦媽媽!

在另一邊廂,我兩位朋友分別到 Apple 專賣店購買 iPad,他們都被迫地以 HK$500 及 HK$600 左右的價錢,購買 iPad 保護套、保護貼、清潔啫喱等指定的周邊產品。不過他們最終都能購買到 iPad 32GB WiFi 版本。

2010年7月20日 星期二

YouTube 問題


今天打算用我的元祖 iPhone 來看 YouTube,殊不知無法連接 YouTube 服務器,起初以為是 YouTube 的問題;但我的 Mac mini 又能正常使用 YouTube。於是乎我把 iPhone 重啟,可是仍然無法進入 YouTube,相信很可能是 JailBreak 的後遺症...

2010年7月18日 星期日

XCode 小秘技(四)


在編程時我有一個習慣,會把 #define 類的名稱全用英文大寫來表示。例如:TITLEVIEW_ACTION_LOADGAME。很多時名稱會由變數名稱演變出來。變數名稱則是以小寫為首,次字第一個字母為大寫。例如:loadGame。若遇上大量的名稱需要定義時,便會很花功夫。在 XCode 的 Preferences 內有一欄名為 Key Bindings,我們可以自定義「快捷鍵」及「功能」。今次我就加入了 Upper Case 的支援,使得編程時更加方便。

2010年7月17日 星期六

iOS 3.2 下的 setStatusBarHidden

進入 iOS 3.2 之後,原本設定狀態列的語法改變為:

// Hide status bar
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

2010年7月15日 星期四

iPad 售價

2010年7月10日 星期六

再買 iPad


今日再次到「秋葉原」,嘗試到電器店購買 iPad。可惜店員指 WiFi 版本沒有貨,只有 3G 被本。對我來說,WiFi 版已經足夠,所以沒有購買 3G 版本。後來回到「新宿」,在大型百貨公司的電器樓層找到 Apple 攤位,一問之下,那裡也沒有 WiFi 版。但卻可以為我這些外國人訂貨,不過時間約為兩個星期...。我明天便回香港,再加上有消息指香港在 7 月 19 日也有 iPad 上市,所以沒有訂購。

2010年7月9日 星期五

iPad,只留給日本人


今日特別地到了涉谷,目的是到 Apple Store 購買 iPad。當我問日系店員時,他說沒有貨;而我問老外店員時,則說只能賣給本地人,外國客會說成沒有貨,所以我買不成 iPhone 4,也買不到 iPad。明天打算在新宿及秋葉原碰碰運氣。

2010年7月7日 星期三

體驗了 Retina Display 的魔力


今天是 2010 東京之旅的第一天,我到了秋葉原拜訪兩家機械人店之外,亦看看 iPhone 4。拿在手上看時,終於體驗到 Retina Display 的利害,真的很細緻。拍照時的速度很快,而且相片很美!不說的話,還以為自己拿著日系手機。可惜的是買不到...

2010年7月4日 星期日

SDK 4.0 下編譯 3.1 應用


今日我把 XCode 更新到 SDK4,嘗試最新版 XCode 能否編譯 3.1 應用,並在第一代 iPhone 上執行。結果証實能成功運行。只要在 Project Settings 裡的 Deployment 中 iPhone OS Deployment Target 選 iPhone OS 3.1 就行了。

2010年7月3日 星期六

PositionApp


今日試了一套名為「PositionApp」的軟件,它能顯示出一個軟件在不同地區的排名變化。我最欣賞它的不是排名的數據(因為我不懂得怎樣利用這些數據),而是它的介面設計。總括而言是:快、靚、正、爽、簡潔。比起我現在做的遊戲真是蚊脾對牛脾。有待國內同事好好學習。

2010年7月2日 星期五

Payment 系統升級


今日收到 Apple 發出的電郵,要求我把帳號內的銀行資料升級。不過,似乎不是所有開發者都收到這封郵件。

2010年7月1日 星期四

Apple 趕盡殺絕的技倆


由今天開始,所有提交到 Apple 的軟件,不論是新的還是更新,都必須以 SDK 4.0 來生成;而舊有以 SDK 2.x 生成的軟件將會被強制下架。本來這個並沒有不妥,但想深一層便會發現意義重大。

作為 iPhone 第一代用家,能享用新軟件的數量已經因為 iOS 4.0 的不支援而變得越來越少。作為一位生意人,過去一年來的作品都是以 SDK 2.x 生成,若想繼續把作品放在 AppStore 售賣,則必須要使用 SDK 3.0 或以上。不過,Apple 硬性規定了更新軟件也需要用 SDK 4.0 來生成,而 4.0 的軟件是無法在 iPhone 第一代使用,無形中趕絕了第一代可用的軟件數量。今次 Apple 繼 iOS 4.0 後再補上兩招,勢必把 iPhone 第一代打入困境,間接造成的電子廢物頓時增加。

更正:有網友指可以在 Project Settings 中的 General 檔選 Base SDK 為 4.0,而 Project Format 選 Xcode-3.1 compatible。