2012年11月6日 星期二

Windows 8 練習範例 檔案存取和選擇器 問題

今天練習 Win8 開發時卡住了

範例程式內的程式碼有問題

Windows 市集應用程式 > 文件 > 開始使用 > 選擇 C# 與 Visual Basic > 第四部分:檔案存取和選擇器

http://msdn.microsoft.com/zh-tw/library/windows/apps/jj655411.aspx

最後一部分「步驟 3:儲存和載入狀態」 一直無法成功

查了一下,發現進入 PhotoPage 時,LoadStae 中的 PageState 是空的..

因為對於 Win 8 還不熟,一直搞不定(以後要搞定才行)

所以就直接用了 ApplicationDataContainer

然後就 OK 了

可是這是 MS 本家的範例程式碼耶..

這樣真的可以嗎?

windows 8 市集修改區域設定

一直覺得 Windows 8 的市集內容很少

爆發點是保哥在 Facebook 上分享了 Khan

可是我怎樣都找不到

後來就查了一下怎麼修改 Windows 8 市集的區域設定

參考

http://mcakins.wordpress.com/enable-all-apps-windows-store-localizations/

請先開啟市集

滑到右邊開啟偏好設定

(Windows 8 的這個設計對於現在越來越寬的螢幕來說,非常不合適

MAC 也就算了,有滑動加速設計

對於 Windows 筆電來說,為了準確點選,通常不會設計的很快

結果就造成用觸控板至少要滑兩次才能到定位....)

取消其中的只顯示偏好語言

然後就可以看到所有市場的 App 了

進階作法是在區域中把英文加入偏好中並開啟偏好語言設定

這樣就可以挑選自己喜歡的語言

再 G 一個

Windows 8 市集的排序很..緊湊

這不是缺點,但可能也不是優點

資料太多就很難仔細看

對我來說,會出現一種懶得挑選、仔細看的壓力

他們應該把中間的留白多放一點

2012年11月4日 星期日

Acronis 2013 clone disk 失敗解法

從以前我就沒有成功使用過這功能..

以前是因為磁碟分割莫名變成動態,根本不能用

現在的電腦是 Sony S15 (這點很重要,等會會說)

使用 Clone Disk 功能也是一直失敗

一、在 Win7 上使用 Clone Disk

重開後,Clone Disk 工作不會繼續執行

二、使用 Rescue Media 開機光碟開機

記得要先把 Boot Mode 從 UEFI 改成 Legancy

會出現 "Run time exception; Failed to detect graphic output mode; code 21495812"

(是說 Acronis 官方有說使用 Rescue Media 開機執行 Clone Disk 會比較沒問題

不過在程式執行時完全沒有提示

提示一下很難嗎..)

三、使用 Yumi Multiboot + Rescue Iso 開機

參考網頁 http://forum.acronis.com/forum/33546?page=1#comment-104462

大致情況是直接使用 Rescue Media 開機時太早載入資料,會造成第二的問題

所以有人就使用 Multiboot + ISO 檔案

YUI 的使用方法請自己處理

iso 是 True Image 的 Rescue ISO

不過使用時會碰到和使用光碟開機一樣的問題

記得 Bios 要設定 boot mode 為 Legancy 才能使用 USB 碟上的 Acronis ISO 開機

進去後就一切正常了

竟然花了我快 6 個小時的時間..

2012年11月3日 星期六

windows 8 使用心得感想

MS 以前有出過一個產品,叫做 bob

http://zh.wikipedia.org/wiki/Microsoft_Bob

Microsoft Bob是一個介紹Windows功能的軟體。此軟體具有動畫助手和有趣的圖片,同漫遊 Windows XP 相似。但是,在Bob推出不久,他就在市場上立不了足了。

2012年11月2日 星期五

在 Custom 按鈕中建立 Border

按鈕是個很煩的東西..

背景圖片常沒有明顯邊界

有邊界的又會受限大小

所以可能的話,我一向偏好按鈕用背景圖和 Border

檔案要先 import QuartCore

指令

[btn_pick.layer setBorderColor:[[UIColor redColor] CGColor]];

[btn_pick.layer setBorderWidth:4.0];

btn_pick.layer.cornerRadius = 8.0;

Border 其實是 CALayer 做出來的

這表示所有的 view 基本上都可以套用

BoderColor 吃 CGColorRef, 所以要用 CGColor 方法轉換一下

用 UIWevView 呈現文字內容

這工作聽起來很簡單的東西

不過還是碰到了一些小問題

基本工作是設定 HTML 檔案

複製到 xCode 中

如果 html 中有使用目錄的話,這邊要注意選擇 create folder

然後使用以下指令載入

NSURL *indexFileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];

[webView loadRequest:[NSURLRequest requestWithURL:indexFileURL]];

畫面呈現上,要注意一下

HTML 預設會有 40 px 的 padding

進 debug 模式查後,發現有 -webkit-padding-start: 40px; 的預設設定

我的解法是在 html body 中設定另一個替代性 div,然後設定 padding: 0

理論上應該是要放 body {} 中比較完美,但是一直無效(css 苦手...)

utf8, c 字串轉換(CLGeoCoder, 地址處理問題)

先來個簡單的 NSString CString 字串轉換

from http://mobiledevelopertips.com/c/converting-between-c-and-objective-c-strings.html

// NSString object to C

NSString *str = @"String object to a C string";

const char *ptr = [str cStringUsingEncoding:NSUTF8StringEncoding];

printf("%s\n", ptr);

// Another approach with the same result

const char *ptr2 = [str UTF8String];

printf("%s\n", ptr2);

// C string to NSString object

ptr = "C string to string object";

str = [NSString stringWithCString:ptr encoding:NSUTF8StringEncoding];

NSLog(@"%@", str);

然後更進一步,解 \uxxxx

NSString *s = [NSString stringWithUTF8String:"\u53f0\u7063 114 \u53f0\u5317\u5e02 \u65b0\u660e\u8def143\u5df7 4\u865f"];

NSLog(@"%@", s);

接下來是 \U

這邊其實有個問題,\U和\u並不相同

\U 是從 json parse 出來的結果

會處理這問題其實是因為取得資料時碰到一點小問題

如下字串:

\U53f0\U7063 114 \U53f0\U5317\U5e02 \U65b0\U660e\U8def143\U5df7 4\U865f

這組字串是從 CLGeocoder 的 FormattedAddressLines 中取出

原型是 NSArray,網路上的簡單處理方法是直接合併取得字串

NSString* ss = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "];

不過這一串到底是怎麼來的我還是搞不清楚..

先在此做個註記,日後繼續處理

2012年10月26日 星期五

MKMapView 使用者拖移事件檢查

MKMapview有提供自己的- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 事件監測地圖移動

唯一缺點是不能檢查是使用者拖動還是程式移動

對我而言,導致的主要問題是第一次進入時就會觸發事件

因為我打算在移動地圖時讓某些元件半透明增加可視區域

這問題會引起一些小小的 UX 遺憾

所以採用了額外的監測方式:

使用 UIGesture 檢查是否為使用者移動,是的話才呼叫程式

一、設定 UIGesture

//加入手勢偵測

UIPanGestureRecognizer *mapPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(hideMapItems:)]; //使用者移動時隱藏物件

mapPan.delegate=self;

[mapPan setMinimumNumberOfTouches:1];

[mapPan setMaximumNumberOfTouches:1];

[self.h_map addGestureRecognizer:mapPan];

isMapPanned = NO; //flag

isMapPanned 這邊作為flag, 使用者第一次觸發後就成立,因為這時地圖已經載入完成,不需擔心regionDidChangeAnimated 事件被重複觸發(ios 5.1.1下,ios6 應該也不用擔心?)

另外要注意的是,mapview 不能直接套 UIGesture

因為 MKMapView 有自己的手勢偵測 http://stackoverflow.com/questions/5005597/uipangesturerecognizer-on-mkmapview

所以必須要指定委託並實作方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

isMapPanned = YES;

return YES;

}

二、設定相關方法

//檢測使用者畫面移動

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{

//使用者開始移動結束,重新顯示物件

if (isMapPanned) {

[self showMapItems:nil];

}

}

此方法不算完美,在網路連線不佳時,有可能發生地圖資料尚未載入完成,使用者就先移動的情況

不過因為相關物件已經載入完成,所以實作上目前沒有看到問題

使用正規表示法處理大量 img 連結和書籤name

由於 http://adisonwu.blogspot.tw/2012/10/99.html 東西有點多 所以有人建議提供書籤方式 也由於內容實在有點多.. 所以使用了正規表示法處理 以下為處理步驟筆記
  1. 抓原始碼,去掉不處理的部份
  2. 為每行加入行號,作為稍後書籤名稱位置依據
  3. 過濾出不處理成書籤的部份移除行號:^\s?[0-9]+(.*(img)+.*)$,取代成 \1(a檔案)
  4. 先將上述內容複製一份,作為等會添加連結之用(b檔案)
  5. a檔案:將有行號的加入連結 ^\s*([0-9]+)(.*)$ ,取代成 <a name='\1'></a>\2
  6. B檔案:移除有img的行,^.*(img)+.*$,取代成空白,這邊會出現空白行,使用 \r+ 取代成\r
  7. b檔案:^\s*([0-9]+)(.*)$取代成 <a href='#\1'>\2</a>
  8. 整合 A檔案和 B檔案,收工
  9. 當然還是有一些小問題,例如有些圖片不只一行,這時候就需要手動檢查 b檔案內容,不過已經節省很多時間了

2012年9月24日 星期一

心得 台灣智慧型手機使用行為,Android 下載 47.3% 勝 iOS 的 34.1%

http://www.techbang.com/posts/10812-taiwan-used-smartphones-android-download-473-ios-341-the-most-common-type-of-app-released

減安
這篇分析有點亂來..
母體:智慧型手機使用者
統計行為:下載安裝app比率和種類

分析會變成這樣,不是PM太腦殘,就是業主有特殊要求
所以只好改分析方法取得要的結果:android使用者下載app的人比較多

不管anroid/ios下載比率的話,這篇文章還是有用的
基本上是可以把智慧型手機視為一個群體,看出這個群體的app使用下載行為偏好哪些方面
所以可以得到目前智慧型手機使用者最常用的類型依序為遊戲、IM、社交、股票+新聞、資訊(美食、旅遊)、照片、工具等
不過不同陣營的行為應該還是有差異
至少我覺得ios上面的工具程式app用量應該不大,主要應該都是anrdoi的系統管理,ios上沒啥好管理的

不過我常用手電筒和計算機(手電筒好好用阿!!!)
女性的話,可能偏好生理管理和記帳
不知道他們怎麼分類的


不過裡面的使用地點統計很有趣,家中第一?why?
光看這趨勢的話,會變成智慧手機成為第二電腦(隨身裝置),但是這與一般思考不符(行動使用為主而非居家使用)。
唯一想到的是在家裡玩遊戲、整理資訊

那樣的話,就變成遊戲市場為最大宗
而且設計上要以可長時間沉浸為主,可以隨時退出變成第二目標
以前都是可隨時中段、不用長時間沉浸為主要目標