2012年11月30日 星期五

隨手程式碼 - mobile01.com 方向鍵換頁

結果: https://gist.github.com/4178423

花了兩個小時做的東西

僅適用 chrome

過程說明

想在 m01 上面使用方向鍵換頁的話,需要做到幾件事情

  1. 開啟特定網頁時,加入換頁程式碼
  2. 換頁程式碼會偵測特定按鈕(在此為左右方向鍵)並觸發事件
  3. 根據按鈕,修改網址,並前往新網址

第一件事情使用 chrome 的套件 Personalized Web 達成

這部份主要是需要 inject javascript 能力

其實可以透過其他擴充套件達成

第二件事情,使用 gist 中的程式碼處理

網路上找到的程式碼都使用 document.onkeypress

這招對方向鍵無效(或者是mac比較特別?)

要改成 onkeydown

裡面的eventobj 和 code 看起來很多餘

但是並不能省略

這是我嘗試了半小時的結果

有人有不同想法,且有成功的話,歡迎討論

第三件事情

主要是偵測網址、修改網址並前往

不過前往新網址後,使用 document.onkeydown 會發現在新頁面中程式碼無法觸發

必須要改用 window.onkeydown 才行..

因為卡了以上三個東西

本來估計頂多 20 分鐘處理好的小東西變成 2 小時的工作 orz

世界果然到處是眉眉角角…

追加:

google serach 左右鍵換頁

https://gist.github.com/4179848

使用側邊欄

http://userscripts.org/scripts/review/152796

2012年11月22日 星期四

mac 可以用 keyremap 一鍵切換輸入法

今天看到一篇文章,提到了KeyRemap4Macbook

這是一套可以自訂幾乎所有mac按鍵的套件

安裝之後(需要重開機),可以在偏好設定中找到設定

然後,根據

http://www.think-in-g.net/ghawk/blog/2011/11/os-x-mappging-a-single-key-to-select-input-source/comment-page-1/#comment-3500

的作法,就可以達成使用一顆按鈕切換輸入法的功能

切换到“Misc & Uninstall”页面,然后点击“Custom Setting”中的“Open private.xml”按钮,打开自定义规则文件。

2012年12月2日 修正:

原本作法會影響到keyremap 中的使用 right option + 方向鍵的設定

所以修改為下面三項中的第一項內容,改成使用右邊 shift + option 切換輸入法(需先按下 shift 才有作用)

其他兩項可以去掉

<?xml version="1.0"?>

<root>

<item>

<name>Switch Input Source by right Shift and option</name>

<appendix>Use the right option and right shift to select the next input source</appendix>

<identifier>private.switch_next_input_source_with_right_option_shift</identifier>

<autogen>--KeyToKey-- KeyCode::OPTION_R ,ModifierFlag::SHIFT_R , KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

</item>

<item>

<name>Switch Input Source by right option</name>

<appendix>Use the right Option key to select the next input source</appendix>

<identifier>private.switch_input_source_with_right_option</identifier>

<autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

</item>

<item>

<name>Switch Input Source by right command </name>

<appendix>Use the right Command key to select the next input source</appendix>

<identifier>private.switch_next_input_source_with_right_command</identifier>

<autogen>--KeyToKey-- KeyCode::COMMAND_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

</item>

</root>

廢棄

該網頁的寫法在V7.5中不能用,請換成以下內容

<?xml version="1.0"?>

<root>

<item>

<name>Switch Input Source</name>

<appendix>Use the right Option key to select the next input source</appendix>

<identifier>private.switch_input_source_with_right_option</identifier>

<autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

</item>

<item>

<name>Switch Input Source</name>

<appendix>Use the right Command key to select the next input source</appendix>

<identifier>private.switch_next_input_source_with_right_command</identifier>

<autogen>--KeyToKey-- KeyCode::COMMAND_R, KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L</autogen>

</item>

</root>

事緩則圓

有些時候,我們提出了自以為正確,但其實也是正確的見解未必會被接受

這背後的因素未必是對方真的固執或聽不懂..

人的思考有兩種基本的呈現

情感,與理性

理性認同的代表可以理解

情感認同的則是可以接受

兩者都不認同的就不說了

理性認同但情感不認同的,就是可理解但不接受

白話來說,就是覺得應該這麼做但不想做

情感認同的但理性不認同的,就是可接受但不理解

白話來說,就是會做但不覺得應該這麼做

有時候事情就是會這樣..

事緩則圓

提出了理性見解讓對方有時間自己消化

並讓自己的理性去說服情感

在當下提出時,就算理性認同了,情感上未必就會認同,可能是因為面子、反應或任何其他因素

所以拋出完整說明的正確想法,確定對方能理解後,就可以先收手讓對方自行思考、說服自己

太咄咄逼人未必就是好事

可以打電話的相機

緣起

http://www.cool3c.com/article/63876

跟朋友討論這相機時

朋友說如果可以打電話會有興趣..

這點與我認知完全不合 XDDD

所以就開始了認真的討論

以前機種

Sony Ericsson Cyber-shot系列手機

        ▪        2006年7月-K800i

        ▪        2007年2月-K550i

        ▪        2007年4月-K550im

        ▪        2007年5月-K810i

        ▪        2007年10月-K770i K850i

        ▪        2008年-C902 C702 C905

        ▪        2009年-C510 C901 C903

這系列評價不是很好

大概和他的畫素有關.. 8M 只能定位為堪用

一台可以打電話的相機,目標市場在哪?

總有些使用者需要的只是基本手機功能

市面上很多 APP,但真的不是每個人都會用

有些使用者需要的可能只是其中的電話、簡訊、FB

其中,偏好攝影的使用者可能多了照片上傳、分享、濾鏡功能

稍微擴大的話,可能會發現一個大部分時間只需要用到基本電話(電話、簡訊)功能

但是對攝影有偏好,喜歡自拍、分享、編輯相片的使用者群體

(fb、tumblr、instagram 及其他濾鏡-

稍微擴大到使用者最常用 App 的話,可能可以加上 Line、Email 等

這些顧客追尋的是什麼?

一台堪用的電話

簡單/固定的社群應用和少部分的 App (遊戲?)

好用/強大的相機

在 Samsung Galaxy Camera 的基礎上,加入可以打電話的功能會怎樣?

除了第二點之外,應該都能滿足?

而至於第二點,使用內建 App (相關廠商應該會很高興收到授權費?)和觸控螢幕

也許可以讓使用者完成設定,並且在很長一段時間內都不需要再次設定?

2012年11月11日 星期日

普羅米修斯是部爛片..

網路上有些說明普的內容和寓意的,我並不覺得有錯

但是導演手法和劇情還是有許多沒有解釋清楚

不過令我不爽的是裡面的許多設定吐槽點太多了

一部電影最重要的是能自圓其說

科幻設定之類的,劇情能自圓其說就OK了,至於東西怎麼來的,還真的不重要

我可以接受普片中從古文明碎片中找到星系、弄了一台挾帶老人且沒人發現的船飛過去

甚至是弄了那台很雞巴的機器人都可以接受(雖然我還是會吐槽這點 吐舌頭

但是片中牽強、腦殘的片段也未免太多

 

1. 那兩個迷失的人的錄影裝置就算沒人監看,難道不會有錄影嗎?

補充,科學探險隊就不能帶武器?我從沒聽過這種設定阿..

這是人類起源星沒錯,但可不是外婆家

登陸的時候沒有人夾道歡送、張燈結綵,連起碼的智慧生物都沒有

不帶武器?你真以為這顆星球是外婆家啊?

就算是外婆家,這也是 n 千年前的外婆家,裡面的外婆都不知道改朝換代幾次,專門吃外婆的大野狼都不知道生多少小狼了

還不帶武器?

2. 工程師的行為未免太過古怪,開一堆船停在行星上

然後放著那些生化武器(?)不動進入冬眠?

它們冬眠總該有個目的吧?

比如說,大陸在釣魚台上蓋了一個核彈基地並且派駐人員,OK,這可接受

但是把人員冬眠掉?沒留個監視者?或者監視者掛了之後沒人叫醒睡著的人?

這是哪門子的怠忽職守怠掉自己的保命機會?

3. 異形的設定我可以接受,真的可以

就算他們和雄性人類、雌性人類或工程師搞在一起後會產生不同的物種也可以

但是,工程師搞出這種東西後留著幹嘛?

要監視的話,應該在月亮上蓋基地吧?

就算送人類到地球是從那顆星球出發,然後呢?

4. 機器人的行為真的他媽的詭異..

機器人行為三法則有沒聽過?

開發出這麼雞巴表自己人、不聽話的機器人,那老頭還真是自己死了活該

5. 機器人到底是從哪知道看到攻略的?

怎麼第一次進去就可以找到採集點?

6. 第一次開會時,弄了個全景很漂亮

沒人想過隔了 n 光年還可以獲得即時回應很不合科學嗎?

如果是出發前的錄影,那這錄影也太奇怪了吧?

(雖然後來發現那傢伙根本就在船上 XD)

7. 船長很有犧牲精神,good~

不過連原因都沒聽清楚就決定犧牲?

那女的(伊莉莎白)也是個腦殘,只會說你一定要做一定要這麼做,說一句那艘飛船是要去地球破壞,上面裝了很多武器或他要去通風報信之類的話有那麼難嗎?

8. 到底是怎樣的設計會提供船上操作說明給不小心按到鍵盤的人啊..

有人看過進入睡眠模式的電腦,被碰一下鍵盤就出現上一個人如何輸入密碼和輸入那些密碼的影片嗎?

(不過使用音階代替字母組合這設定倒是蠻有趣的

合理推論的話,工程師有可能是使用音階和和弦組成語言並套用到文字

音痴工程師大概和聾子+瞎子差不多了 XD

但是這樣的 UI 介面很難寫教學..只能用影片傳達,而文字相對而言很簡單,紙筆甚至木炭+牆壁都可以用

真要有這種語言的話,應該是文明發展後期演化出來的,不會是原生語言

針對這設定,我只能說很炫、很有意思,不過很不科學

尤其是使用這種介面的工程師基本上和人類很類似,如果是沒有眼睛只有耳朵的種族也許還能有一些討論空間)

9. 那個伊莉莎白,你為何上了逃生倉之後第一件事是拿氧氣罐…

好好的逃生艙不住(章魚明明還被關在裡面),硬是要往外面跑?

你都幾歲了,還在玩離家出走的梗?

10. 迷失的人碰到異形生物

說真的,一開始的好奇接觸行為是可接受的

不過都看到對方有反應了還不節制?

你在路上看到野狗會引誘一下,但是看到它疵牙裂嘴時還會想逗他嗎?

而且這不是看習慣的野狗,是外星生物耶…

話說那個同行(最後跌倒)也是蠻孬的…

2012年11月6日 星期二

windows 8 開發–loadState

原來 LoadState 只能用來記錄從下層回來時的狀態 (選了第五筆紀錄後跳到下一畫面後再回來,第五筆還是選取狀態)

而非再次從上層進入時的狀態 (選了第五筆紀錄後跳到上一畫面後再回來,第五筆紀錄的選取狀態已經被清空)

花了快 5 個小時在找不存在的Bug orz…

2012年11月5日 星期一

500 元的實價登錄網站

http://www.appledaily.com.tw/realtimenews/article/politics/20121105/150504/1

李鴻源還說,民眾自行製作「實價登錄地圖」,其實與內政部實價登錄網站不一樣,「我們是在蓋房子,他們在窗戶上貼了彩色玻璃」,但已交代,應讓網站使用更友善。

基本上,這是不可能做到的

只要還是政府公務員在主導整個案子的話

這不是說公務員不盡心、不盡力

或者是對案子抱著得過且過的心態

而是結構性使然

哪來的結構性?

一、(很多)政府專案的結案報告都是一堆..公務員在審

想想看,你們公司開了一個社群網站專案

然後外包給外面公司

定下案子的是覺得大家有我也要有的公司老闆

決定規格的是帶著老花眼鏡,有很多業務經驗,待了 10 年以上,只會用 Office 和 Yahoo 的業務主管

主導過程的是只想著準時下班,能閃則閃,網站成果和他沒一毛錢關係的櫃檯人員

外包公司問架構時,櫃檯人員都說可以

開發出草稿時,櫃檯人員也說可以

盡心盡力做出一個 UX 很好的網站時

主管就直接打槍:根據我多年經驗,這不是我們要的東西,重做!

再花 100% 精力做一版後

主管:根據我多年經驗,這個東西不合格

然後呢?專案人力、資源都快滿了

只好 60% 來一版

問櫃檯,櫃檯模擬兩可,okok

問主管,主管勉強點頭說可以

問老闆?

老闆就直接打槍:根據我多年經驗,這不是我們要的東西,重做!

再花 40% 精力做一版後

老闆:根據我多年經驗,這個東西不合格

然後時間到了

只好再花 20% 隨便改一改,趕快送出去

老闆出國考察

櫃檯幫忙遞交

主管不敢點頭答應,就開一個結案會議拉大家一起討論

大家看一看,那邊顏色不對、這邊圖片太小,這個版權宣告不正確

UX? UI? 那是啥鳥?

從頭到尾根本沒有人在乎這東西!

只有上面主管的思考是絕對的!

設計的再好、說服了再多人,都比不過最上面的摸不著頭緒、沒用過網站看一眼就說的一句話

這樣的公務員所「設計」出來的網站

能用才有鬼..

不過我沒接觸過政府資訊部門所開發的網站

都是一些小單位

所以以上說法也許有所偏頗(大概5-99%?)

還是請以實際經驗為準

--

不過公部門專案被主管打槍好像是常態就是了..

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月3日 星期六

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月2日 星期五

windows 8 使用心得感想

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

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

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

2012年11月1日 星期四

在 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:@", "];

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

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