2013年6月30日 星期日

Smart Doll 活動影片


Smart Doll 的手工造得好,而且加入機械人元素,吸引了我的眼球。真希望到日本時能購買得到。最近,第一段活動影片已上傳到 YouTube。可以看到 Smart Doll 的動作感覺跟二足系也很相似。期待上市的日子。

2013年6月29日 星期六

拯救死亡 iPhone 4

昨晚朋友拿來一台 iPhone 4 給我修理。她的 iPhone 會一直處於啟動狀態。即是開機的蘋果圖案轉為載入花花後,就一直都是花花圖案。早前她已拿去旺角先達廣場給專家們鑑證過,認為是 Jailbreak 後升級所引致的問題。

由於她沒有作任何備份,而 iPhone 內卻藏滿了珍貴及重要的內容,十分希望能保存這些數據。基於以上的資料,我嘗試使用 RedSn0w 的 Recovery Fix,希望能把手機重新啟動。過了三分鐘,手機依然在重啟後保持著載入狀態。然而,Mountain Lion 的 Image Capture 在不久後自動彈出。當時畫面仍然是花花畫面。於是我把手機內的相片及影片下載到電腦內,萬一有甚麼問題發生,至少有部份數據得到備份。進度過了三份二時,手機再次重啟,再次進入無限載入的狀態。可是,今次卻沒有 Image Capture 彈出來。我只好按 Home + Power 來強制關機,再重覆 Recovery Fix 步驟。

Image Capture 再次彈出來,我也繼續下載相片。幸運的是,這了不久後,手機能正常進入 Springboard。發現沒有 Cydia,手機應該沒有被 Jailbreak 過。打開 Settings 中 General 的 Usage,發現可用空間是 0 byte。證明了是由於沒有空間,導致啟動失敗!

朋友的 iPhone 4 只有 8G,機內的應用不多,只有兩頁。主要是拍照太多,加上 WhatsApp 及 WeChat 內有大量相片及影片,佔據了所有空間。相信是 WhatsApp 打開了自動下載功能。正常情況下,普通使用者不會知道沒有空間,也不會自行刪除 WhatsApp 內的相片。在低容量的 iPhone 下會較容易出現問題...。

2013年6月28日 星期五

Sita 陳僖儀紀念冊

Sita Chan's Likebook

上個星期得知《Likebook》這個產品能把 Facebook 內的時間軸打印成一本精美的紀念冊。這是一個好的概念,但當時覺得沒有可以應用的地方;我的相片整理得很好,而狀態又沒有紀念的需要。後來想到我喜歡的女歌手《Sita 陳僖儀》。如果能把她的 Facebook Page 製作成一本紀念冊,相信是一件很有意思的事。

按照《Likebook》的指示一步一步建立起我的《Sita 陳僖儀紀念冊》。選擇了 2011 年 6 月 7 日 Sita 建立 Facebook Fan Page 的日子開始,致 2013 年 4 月 17 日 Sita 發生意外的日子。內容加起來總共多達 239 頁。價錢是 US$120,另加 US$26 DHL 運費。折合為 HK$1174.23。對我來說很貴,但想到它的紀念價值時,還是認為值得。萬一日後連 Fan Page 也關閉,到時想生產也無能為力。

今天,收到了《Sita 陳僖儀紀念冊》。以下是部份版面,製作得很好。








2013年6月27日 星期四

小研超聲波

Ultra-sound Study

同業在手機 App 利用超聲波作單向溝通已經有一段時間。我一直提不起興趣研究及開發。一來沒甚麼吸引的地方;二來同行都做得好,爭不過;三來技術上有點難度;四來可以跟其他行家合作,把時間花在別的研究還有效率。不過,最近第邊有相關的事情出現,知多一點也不是壞事。於是稍為研究一下。

利用 Objective-C 編寫了一個產生兩段高頻訊號的程式。音頻介乎 18KHz 至 20KHz。從科學上來說,這段音域稱不上是 Ultra-sound,是屬於 Acoustic 20Hz - 20KHz 的範圍。可能是上了年紀的關係,我聽不到 18KHz 至 20KHz 的聲音,可以拿來進行測試。

把 Apple 的示範程式修改一下,放在 iPad 上,用來檢查發出的高頻聲。圖中頂方兩條虛線就是了。下方的是 Sita 陳僖儀的一首歌曲。可見用這段高頻音域收藏訊息是可行。當中還有點雜音問題需要處理,才能實際應用。

2013年6月24日 星期一

PWM Table


Tri 小組希望新機體的主板的功能較為完善,跟組員溝通過後,打算讓控制埠輸出較大的 PWM 範圍。不論接上 Servo 馬達還是 LED,一樣能夠控制得到。我們得出結論,把 PWM 值分為兩階,上圖就是 PWM 輸出的時間長度。單位為 us。

2013年6月21日 星期五

LED 手套

LED Glove

公司其中一位拍檔希望製作一隻手套,用來控制 iPad 上的應用。起初聽到這個想法是 PlayStation 及 Xbox 360 使用手勢輸入都有幾年的歷史,現在還造穿戴的輸入裝置,未免十分落後。而且上次得獎的應用,也體現了動作輸入,不用穿戴的輸入才是王道。

不過,畢竟這是拍檔提出的項目,不做也有點過意不去。相比起我,他是真金白銀拿錢出來開公司的。但要我花時間精力於沒價值的東西,更對自己過意不去,唯有想個值得做的理由。花了點時間,終於想到了應用的情景。目前開發出來的動作輸入,條件是充足的光線及靜態的背景;要是改用手套的話,能在黑暗環境中使用,也剋服了動態背景的影響。有了這個理由,製作手套及示範程式才顯得有價值。同事花了一個星期製成了示範程式,算是體現到操作效果,但使用起來不夠準確、反應也不理想,有待改善。還有一個問題,A 戴過的手套給 B 戴,B 戴完又給 C,C 之後又 D,看來衛生的問題也要考慮一下...。

2013年6月20日 星期四

Session 問題

最近替國內客人開發了一個 Mobile Web。在香港開發好後發給客戶測試,似乎在國內無法順利進行。當填妥資料登記後會回到登入畫面,可是卻登入不了。同事及我分別找身在國內的弟弟及朋友幫忙,也發現相同情況。甚至需要 12 秒才能載入首頁。檢查過後,找到問題出在 Session 方面。由於網頁寄存公司方面對專用 SSL 的索價太高,目前只能使用他們提供的共用 SSL 證書。正因如此,網址便不能使用客戶要度的域名。我們的解決方法是以 Frame 包著網頁,使其能以想要的域名示人,又可以享有 SSL 的保障。而在 Frame 之下則會導致 PHP API 之間讀到的 Session 值不同,數據無法在 PHP 之間共通。最後,只能放棄使用 Session 以應付問題...。

2013年6月19日 星期三

拉闊圖書館.六:拮拮降頭仔


又是一月一度的《拉闊圖書館》的日子。今次由同事 G 教授《拮拮降頭仔》。起初聽到這課的名字時,還在想究竟是甚麼玩意?不會真的是降頭吧!


原來是用羊毛及針拮成的公仔。老師把材料放到枱上,同事們以最快速的身手取去喜歡的造型,只留下豬仔給我。倒也不錯吧,豬,雖則不是我喜歡的類型,卻是最旺我的動物。以往製作的手機圖案中,我所畫的豬是賣得最好的!到目前為止,還有人用來作為 Facebook 的頭像呢!


同事一邊教導製作的方法,我們一方不停地拮。拮了個半時小,終於有點模樣了。我也把小豬變為小兔,送給喜歡小兔的內子。

2013年6月18日 星期二

同 WebSocket 玩遊戲

拍檔在下周跟新客人見面,打算展示我們 2011 年時開發的 HTML5 WebSocket 飛機遊戲。於是我準備一下,發現遊戲已經無法運作。檢查過後發現 WebSocket 的握手及回應內容不同了。一直沿用的是第二版本握手內容:

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: 192.168.18.168:12345
Origin: http://nas.beyondz.com.hk
Sec-WebSocket-Key1: ;3 u1Q676( V5 /< QZH3362
Sec-WebSocket-Key2: 226 "5p \765 0 3 3

$?'EK4?N

而服務器的回應是:

HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://nas.beyondz.com.hk
Sec-WebSocket-Location: ws://192.168.18.168:12345/

u|??s??Ū??_??

可是,利用最新的瀏覽器或 iOS 6 裝置時,握手內容卻變成第三版本:

GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 192.168.18.168:12345
Origin: http://nas.beyondz.com.hk
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: fIRLUAZ9JhS8V0OH+pquSQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
Cookie: qtoken=88ab9c6d40a0a77323af7a23de9ae5af; redirectLogin=; remeber=1; nas_1_u=YWRtaW4%3D; nas_1_a=MC45OTM2MTQ3OTAyNjI2NTQ0LXgteC14LTAuNjMwMDg5OTUwNzQ3Nzg4; nas_lang=ENG; nas_tree_x=240; nas_tree_y=370; NAS_SID=; NAS_USER=

服務器的回應要改為:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: RRlQrroMNOcjYHJ06xjR8kw17CA=

回應內容多一點或少一點都無法連線。連線後,第二版的傳送格式為「0x00+data+0xff」;而第三版則是:

滿以為花了半天時間才弄出來的方案能解決問題,卻遇上另一困難。原本的遊戲在第三版 WebSocket 下執行時,會在新裝置連接時,自動把舊裝置斷線。搞了很久亦摸不出解決方法。幸好,找來三台 iOS 5 的 iPad 運行時,卻沒有出現問題。暫時只好以這樣的組合作示範...。

2013年6月17日 星期一

SVN Error


替客人開發的 iPad 應用程式在一連兩日的 VIP 聚會中使用。由於項目已經完成,所以打算 Checkout 最新代碼保存起來。可是卻出現了錯誤。


打開記錄一看,似乎是跟 .JPG 檔扯上關係。登入 SVN 服務器了解情況,發現在同一個目錄中出現兩個相同名稱,但大小寫不同的檔案。似乎問題是拷到 Mac OS X 後因為檔名視為一樣而出問題。於是在 SVN 服務器內把大寫的 .JPG 刪除,之後便能成功 Checkout...。

2013年6月14日 星期五

重構 AMIGO Controller

Re-write AMIGO Controller

《AMIGO Controller》換膚成功後,繼續控制器的開發。早前隊友發現最新版本的控制器無法成功送出動作指令,因此檢查一下。原來是沒有加入動作間的計時值,導致指令分解失敗。簡單修改後,已能正常運作!

由於加入了 iPhone 版本,考慮到某些功能要易於共用,想了想後決定改動程式結構,方便維護的工作。使得日後修改一個地方,兩個版本都能同時生效。其實當初也應該抱持這樣的心態去設計系統,只怪自己懶隋,沒有好好想清楚...。

2013年6月13日 星期四

AMIGO Controller 換膚

AMIGO Controller Re-skin

完成了 iPhone 版本的《AMIGO Controller》後,就輪到 iPad 版了。原先初版設計中使用綠色為介面主色,但因為 iPhone 版採用了《Evangelion》橙色風,我不得不把 iPad 版也改頭換臉後才繼續開發。

2013年6月12日 星期三

收起 iOS Keyboard

Dismiss iOS Keyboard

機體已經收到,餘下的便是控制器的工作。休息了一個多月,是時候追回失落的進度。今日在測試 Google Drive 接口時,發現 iOS 鍵盤沒有收起。由於那是 Google SDK 處理的事,加上是 UIWebView,拿不到輸入欄的地址。只好利用以下語法把鍵盤收起:

[self.googleDriveViewController.view endEditing:YES];

2013年6月11日 星期二

iOS 7 是簡約,還是簡陋?


iOS 7 是簡約,還是簡陋?把玩了一會,感覺系統慢了、圖示差了、使用不便了。目前還未能接受這是一種有內涵的設計,要重新適應。

最後,還是忍受不了,把 iPhone 4 降回 iOS 6.1.3。

2013年6月10日 星期一

AMIGO Controller for iPhone


星期六跟 Tri 隊員召開第四次會議,順便接收機體。暫時還要保密,待控制器完成後,便會正式跟大家見面。原本的《AMIGO Controller》只支援 iPad,這是因為所有動作設計都要較大的屏幕才能勝任。但想了想,還是希望加入 iPhone 版本。由於屏幕細了的緣故,iPhone 版本只會有播放動作的介面,而沒有編輯的介面。這是目前構思的畫面。

2013年6月9日 星期日

第三次工業革命


小一時,鄰家姐姐問我的志願是甚麼;那時我回答:「發明家」。沒有記性的我能印象深刻,是因為在場的人都大笑起來。對我來說,發明家是很遙遠的路,大家的笑被演譯成恥笑,之後一直不願再提。

到長大了,發現自己一直喜歡發明。雖然沒有把志願掛在口邊,但潛意識卻一直驅動著我向前。如今作為一名程式設計師及機體工程師,其實也是發明家的一種。很感謝包姐當年的提問,使得我能在小一時已經清楚自己的方向。

第三次工業革命已經來臨,是我很感興趣與發揮的機遇。希望能做點能改變世界的事!

2013年6月8日 星期六

AKB48


今個周末簡直是「AKB48 周」。自從本周購買了「Asahi x AKB48 牛奶咖啡」後,身邊一直出現關於 AKB48 的消息。之前在銅鑼灣誠品書店看到「AKB48 經濟學」已經想買,但家中太多未看的書,加上書展臨近,遲買享優惠,所以沒買。中午到旺角開益書店,遇上八折出售的「AKB48 經濟學」,忍不住買下來。看完今晚的「AKB48 32ndシングル 選抜総選挙」,很想了解 AKB48 更多,於是立即 KO 了「AKB48 經濟學」...。話說回來,AKB48 牛奶咖啡十分好味!飲完再飲!

2013年6月6日 星期四

Javascript 的數學練習

小學生的末期考試開始了!就讀一年班的長女已積極備戰。為了增添女兒的溫習氣氛,特別為她編寫了一個數學練習。花了 75 分鐘寫成的 Javascript 程式,能在 iPad 上跑。她玩了很久。每次成功算出答案時,都會開心地跑過來接受我的讚美。我也很高與她喜歡這個應用。是第一次為她製作的應用。

 
 
 
 

2013年6月5日 星期三

七七四十九天


已經七七四十九天了。今天是 Sita 陳僖儀的尾七。再過一會,就要轉世投胎。希望下世有緣能欣賞你的好歌。

2013年6月4日 星期二

Retail Expo 2013



一連三日的《Retail Expo 2013》正式揭幕。上年在同一展覽能接到生意,所以今年繼續。這就是 BeyondZ 的攤位。今年的 Foamboard 數目多了很多,一半是由我設計,三分一是由我製作。很喜歡這些設計。配合即日上架的《Talkpic》問卷平台,在會場當然大力推銷。希望能取得好成績!

2013年6月3日 星期一

《Talkpic》是這樣誕生的


《Talkpic》這個概念已經有一年半的時間。我發現大多數人在搭車時,不是睡覺、不是無無聊聊,就是玩 Facebook、WhatsApp。希望能好好利用這段時間做點有意思的事情。如果一個人多一分生產力,七百萬人就多七百萬分。實在不錯。

於是我著力去想能在一兩分鐘內完成的事。記起以前在街邊的訪問員,完成一整份問卷的話能得到 HK$90 報酬。連資料輸入員及訪問公司的成本,客戶需要付出至少 HK$150 的金額。如果把它流動化的話,我收 HK$50 一份也相當可觀。而且數據能實時反映,比以往的方法更快更加有效。甚至反應不如理想時,能立刻修改問卷內容,是一套很好的系統。

問題是,如何能吸引市民使用?我想到贈送禮品。要是一份問卷能收到 HK$50 報酬,那我用 $20 回饋用者也買到不錯的東西,甚至是廣告主贈送的禮物。似乎不錯吧!不過,市民會否因為贈品而填寫不實的資料呢?就此我查證過,發現就算傳統的調查也有這樣的煩惱,他們會去除最高及最低幾個巴仙的調查結果。為了減輕問題的出現,我加入了記錄機制。意思是一旦輸入重要數據,便不能修改。如:性別、出生日期。例如問卷對象只有男性,答完會得到禮物一份。用者為了得到某份禮物而填上男性。那麼日後有以女性為對象的問卷便不能作答。就是這樣,一點一滴地完善用戶的資料,讓客戶能針對指定用戶群作出調查,提升結果的質素。

由廣告客戶提供問卷及禮物,經由《Talkpic》這個平台發放,市民在搭短程車或無聊時花一至五分鐘回答,得到禮物。是一套三贏的方案!

現在,一切準備就緒。到市務部的同事上場,看看他們怎樣把它發光發熱!

2013年6月2日 星期日

StartLab.HK 開幕禮



本來想出席昨天的 StartLab.HK 開幕禮,是因為有王維基作嘉賓分享創業。最終還是想倍女兒而沒有參加。

對於王維基的分享,感覺新鮮之餘,亦很實用。他說打第一場仗,不拘大小,必須是勝仗。這是對全組人在意志的激勵。

他說要成為創業家,要喜歡困難,喜歡挑戰。這點我有,廿年前進入遊戲界已經是個挑戰。沒課程、沒渠道、沒課本、沒公司,要不是有信念,根本入不到。找女朋友是一個挑戰、找老婆是一個挑戰、解決編程問題是挑戰。到現在,開發機械人也是挑戰。

他說創業家沒有「生活平衡」,這點我沒有。我要「生活平衡」。我就是有平衡的生活,才有這麼多的創意。不充電,何來放電?不過,我認同「一分耕云一分收獲」。可能我不適合做成功創業家,或者就只能做剛好糊口的創業家。