2012年12月31日 星期一

2012 回顧


又到了回顧的時候。今年想要完成一架二足機體,花了點時間及心血,二足機體沒能完成,AMIGO mini 只完成了三份一。幸好完成了 AMIGO Hexapod,算是第四台完成的機體。第一台是 AMIGO Spider。第二台是 AMIGO Striker,已經是 2007 年的事。第三台是 AMIGO 03。第五台是令人興奮的二足,目前處於保密狀態,將於上半年發表。

技術方面,DartsRevenge 的創新玩法最令我滿意,是全球第一個利用 iPad 前置鏡頭進行的 Kinect-Like 遊戲。Get Recharged 利用改裝打火機的遊戲不是創新,但也是一個好的嘗試。在 SMART WAY 中第一次使用 Box2D 引擎。在 Jacob's Creek 中把有限的 Location Push 作無限使用也是一個聰明的突破。總體來說,沒學到甚麼新技術,倒是創意發揮了不少。

公司方面,員工由 2 位增加到 7 位,是長足的進步,能開發更多項目。新客戶 8 個中有 2 個是我建立,算是交到貨。客戶項目有 21 個,當中 7 個是由我的人際網絡建立而來,成績算是不錯。自家研發項目完成 2 個,但只有 1 個能順利推出,成績不好。

2013 年要繼續努力提升,有更多實質的成果!

2012年12月28日 星期五

例會是多餘嗎?

我管理的部門在每周一早上都會開會,說明該星期要處理的項目及公司發展情況。好讓同事了解公司的想法與安排,從而增加歸屬感。有這樣的想法是由於在 Gameone 打工時,看到報導時才知道公司在做甚麼遊戲。只有數十人的公司搞秘密,身為中高層的我居然不知道,歸屬感值有如中了「超必」般立即大減。自此以後我都會不時警惕自已,盡量把事情透明化,讓同事理解公司的發展。

話說回來,以往一小時的會議因為同事多起來的緣故,漸漸變成一個半小時。有股東跟我說,$1000 x 8 人 x 4 星期 = $32,000。即一個月花在會議上的時間成本大概為 HK$32,000,是一個不少的數目。這是不是意味著會議的時間要縮短?這樣的計算方法比較像工業時代的產物,適合軟件行業嗎?適合創意工業嗎?幸而,同事們一星期的平均加班時數絕對不止一個半小時。會議可以說是「免費」。這讓我鬆一口氣,不用花力氣去保護一星期一次的例會。讓同事清楚工作範圍才執行,例會是必須的!不過,要是能縮短開會時間也是好事...。

2012年12月27日 星期四

對 Source Code 的執念

一直以來,我對於代碼(Source Code)的想法,就等如產品的設計藍圖。有了藍圖便能複製產品,甚至理解產品結構及箇中設計的來龍去脈,是學習的範本。所以,如客人要求提供代碼時,我會要求三倍開發費用作為定價。至於為何是三倍?原因有:

  • 有了代碼,客戶能把產品複製成新的產品
  • 代碼有很高的學習價值,懂得運用能汲取當中精華的技巧
  • 系統維護也是軟件開發的收入之一。客人有了代碼便能自行為護,變相少了維護的營利。而且很多時都要解答關於代碼的問題

    我也認為這個定價有點高,也不知道這樣的想法是否合理。不過,情況有點像不懂畫的人想用 HK$100 買一幅名畫。到目前為止,除了 ING 外,沒有一個客人會購買代碼,他們大多嫌貴,認為買了回來用途不大。不過這不是問題,反正賣代碼不是我希望的收入來源。
  • 2012年12月24日 星期一

    Windows 8/RT

    客人決定了使用 Windows RT 作為新應用的運作平台。為了準確計算時間及價錢,必須要嘗試 Windows 8/RT 及其開發工具。之前在 Linux 服務器上的 VirtualBox 安裝 Windows 8 不成。今日更新了版本再試也是失敗。於是改為使用 Mac OS X 的 VirtualBox。成功了!








    2012年12月21日 星期五

    人手分配

    2012 年算是忙碌的一年,客人的項目很多但人手不足。到下半年人手才能得到舒緩,但同事們都忙於處理客戶項目,沒太多時間能花在自家項目上。為了有效開發自家應用,公司決定將人手分成兩組。一組負責客戶項目,另一組開發自家應用。不過,人手分配是一個很頭痛的問題。

    舉個例子:
    勝利組:技術好、學習快、質素高、責任高
    普通組:技術中、學習中、質素中、責任中

    開發自家應用理應選擇最好的組別;但把客人的應用交給普通組,又怕他們處理不來,又怕他們不能準時交貨。到頭來苦了大家又影響公司聲譽。把勝利組撥歸客人,又會令自家應用質素下降,對長遠發展又是不利。勝利組放在兩邊都適合,但不可能兩邊都參與。有點經濟學的兩難味道。我想,唯一的解決方法是把普通組提升至勝利組水平吧…。

    2012年12月17日 星期一

    D-U-N-S Numbers

    友人是 App 公司老闆,但他主力是 Facebook 及 Mobile 遊戲。他問了一個問題「Have you heard about DUNS number?」。我當時不知道,忍不住追查下去。原來這是 Apple 在六月時加入的東東,只在新注冊的公司版 iOS Developer License 出現。這個東東是免費的,但可會花上一個月的時間處理。然而,要快的話,付費即可。要免費的話,可在 Apple 這個頁面申請。

    2012年12月16日 星期日

    Google Drive SDK


    AMIGO Controller 加入了 Dropbox SDK,十分好用。但由於機體的動作文件都是用 Google Spreadsheet 編輯,如果加入 Google Drive 會更加方便。於是乎 Checkout 了 Google APIs Client Library for Objective-C。


    按照 Google 的指引設定好 Xcode,但組譯時發生錯誤。原來是漏了加入 SystemConfigure.framework。Google 的指引其實有註明,只是大意看漏了。組譯成功了,真機也能跑了。可是要生成 Ad-hoc 版本時,卻沒有所需要的選項。花了點時間,終於找到解決方法!需要在 GTL 項目的設定內,把 Skip Install 改為 Yes。這樣就能生成 iOS App 的 Ad-hoc 版本!

    2012年12月15日 星期六

    Apple Store Causeway Bay


    Apple 在香港的三號店在今天開張了。之前錯過了一號店及二號店,一定要感受三號店的開幕盛況。就在世界末日前傻一下,反正香港不知道會否有四號店。以下是今天的相片:











    今日發生了一段小插曲。一名 Apple Fan 碰巧生日,她的男朋友特意為他準備好蛋糕。由於不能使用明火爉燭,他更準備了 iPhone 的爉燭 App 代替。實在很花心思。

    2012年12月14日 星期五

    拉闊圖書館

    公司人數已有一打,是時候加入分享技術知識的環節。我決定開辦「拉闊圖書館」,一個月一次的分享空間。取名「拉闊圖書館」是出於對 Lakoo 的尊敬、出於分享的理念、出於對教學相長的認同;希望高總不要介意。

    拍檔提及他以前的公司有也類似的東西,可是最後淪為政治批判大會。建議小心處理。然而我很有信心不會走歪。畢竟這是純粹分享的環節,可以不認同,但沒有對錯之分。幸運地,我做過的公司(Gameone, Lakoo, U1)都不會出現政治問題;至少在我的部門內不容許。今次更加不能出現。

    第一課由我操刀,主題暫定為「Reverse Engineering」。希望能讓大家明白分享課的運作。

    2012年12月12日 星期三

    Dropbox SDK


    下一台二足機體打算以 iPad 作為控制器。要設定機體的動作,在 iPad 上還是不方便。最理想還是用 Numbers 或 Excel 來編輯。但編輯了的檔案又如何放進 iPad?我選擇了使用 Dropbox。它有不同平台的版本,在 Windows 內編輯好檔案又能自動上傳到雲端,十分方便。

    要在 iPad App 內取得 Dropbox 檔案也很簡單。首先在 Dropbox 的 App 頁建立一個 Dropbox 應用。下載 iOS SDK。再按照教學的方法去做。SDK 中有一個名為 DBRoulette 的示範程序,只要換上自己的 App Key 及 Secret 便能進行測試。

    2012年12月11日 星期二

    AMIGO Controller


    在 BlueTooth 4.0 LE 晶片還未到手之際,已開始控制器方面的設計。我希望能設計出一個簡單易用的介面,最好是能快速上手。機體的動作十分之多,如:前進、後退、左移、右移、左轉、右轉、蹲下、站立、攻擊、防禦、起身…等等。要能快速操作之餘,又要方便使用,更要設計簡約,實在很花功夫功力。目前的動作以搖桿方式來設計,似乎還能滿足,希望真正上場時沒有問題吧!

    2012年12月10日 星期一

    B.Y.O.D.

    B.Y.O.D. - Bring Your Own Device 最近成了我思考的題目。事緣要由三個月前講起。

    三個月前,新編程同事加入。每每有新同事加入,我們都需要購買新的 Mac 電腦。當時知道 Apple 將會推出新 iMac,心想如果能忍那一丁點時間才買,除了款式新性能快之外,新的電腦也可用得持久一點。碰巧新同事負責的是 Android 項目,用 PC 比較好;而同事又願意使用自己的手提電腦。所以決定在新 iMac 推出時才添置機器。

    三個月時間過去了。Android 項目依舊在開發中,iMac 也如期亮相,但近一星期才開始供貨。在思考是否購買新 iMac 的同時,同事已經習慣了 PC 的開發環境、使用的工具、以及私人的設定,也開始抗拒使用 Mac 機。如果是開發 Android 或 Blackberry 的話,PC 是比較方便。雖然同事仍很願意繼續使用自己的電腦,不過在公司的立場則另有考慮...。

    首先,PC 的盜版軟體特別多,管理起上來有點麻煩,畢竟電腦是同事私人的,有私人的文件,不能隨意審查。要靠同事的自律。可是當發生問題,負責人也有要負的責任。

    第二,檔案更新問題。雖然公司規定每天需要上傳最新代碼到 SVN 服務器,但人始終有遺漏事情的一刻。服務器內未必有最新的版本。遇上同事放假,便無法取得最新的內容。

    第三,保安問題。若同事的電腦遇上失竊或損壞時,內裡的資料也會有被盜用或消失的可能性。同事沒機可用,也會影響工作進度。還有病毒的問題,也有機會污染公司的網絡。

    我的考慮可能過多,但以上的情況是有可能發生。對於管理者角色而言,把事情簡單化是最好的方法。所以在未找到 B.Y.O.D. 的強優勢前,還是不要 B.Y.O.D…。

    2012年12月9日 星期日

    I.T. Fun Day


    今天上環市政大廈對出空地舉行了「I.T. Fun Day」。在場除了網友製作的機械人及電子板外,我也展出了公司的 3D Console Case。吸引了很多途人試玩,特別是小朋友。他們很愛玩當中的可樂汽水遊戲。有的更玩了十次以上。由最初只有數百分,玩到後來的最高五千分。能令小朋友玩得著迷,真是十分開心。

    2012年12月7日 星期五

    免 Jailbreak 取回 WhatsApp 的自動下載選項


    自從改用了 iPhone 5 後,下載了新版的 WhatsApp 2.8.6。這是一個很討我厭的版本。原因是「自動下載」選項消失了。跟友人說起,她比我遲一天使用 iPhone 5,而 WhatsApp 也是 2.8.6 版本;可是「自動下載」選項卻如常出現!除了是人的問題外,真的找不到差異之處。既然選項是會出現,那麼應該會在 plist 內設定清楚。

    利用 iExplorer 把 WhatsApp 的 net.whatsapp.WhatsApp.plist 抽出來,發現到「ShowAutoDownload」項目。把數值改為 true,儲存並取代手機上的 plist。重新啟動 WhatsApp,選項便重新顯示出來。

    2012年12月6日 星期四

    守時

    今日一早到客人的公司做 UAT。雖說一早,其實已是十點半。到達時客人說「嘩!那麼準時!?」。心想,約定了就必須履行,這是自小以來的家教。我十分重視承諾。承諾了便要盡力做到。可能有些人認為小事一樁,UAT 早一點或遲一點不會影響結果及進度;但我就是有這樣的執著。正所謂見微知著,看過很多成功人士的書籍,他們都是守時守諾的人,希望我有朝一日能跟他們成功。

    2012年12月5日 星期三

    CoreBlueTooth

    最近在計劃開發新機體,打算用 iPad 控制。自 iPhone 4S 起,Apple 的新 iOS 設備都使用了 BlueTooth 4.0 LE 晶片。除了低消耗外,最重要的是不用 MFi License 也能直接跟藍牙晶片通訊。真是一大福音!要達成以上工作,就要用上 CoreBlueTooth Framework。不過,我手上沒有 BlueTooth 4.0 晶片,目前還沒能實際測試。待在淘寶購買回來後再進行測試!

    2012年12月4日 星期二

    談 Startup 請人

    自從看過高總的《也談startup是甚麼》發現了《偉大航道》的 Keith Li,這位 Startup 前輩;在《香港 Startup 如何面向世界》聽了 Keith Li 經驗之談;到在 Facebook 上認識了 Keith Li 談 Startup 請人心得。

    過去一年來,公司不斷刊登招聘廣告。但應徵的人少,而且能力也較為普通,甚至乎是水準之下。然而,在八月份開始,應徵者多起來(但數目仍然很少)。經過反複面試,好不容易才找到較為合理的人。不過,三個月試用期後,還是有些人不能留低;也有人勉強過關。給他過關是因為請人實在太難,有點能力都希望保留,至少會帶來一點進度。可是,這個做法似乎是錯了。雖則是有人,但能力不及就是能力不及,工作做得長,又或者做不來;到時還要其他同事跟手尾,甚至影響士氣。因此,現在請人的策略是請多一點,汰弱留強。希進這樣能帶來好的結果...。

    2012年12月3日 星期一

    iPad mini with Retina Display


    最近網上開始流傳 Apple 在開發第二代 iPad mini。擁有高於視網膜的解像度。看來是理所當然,但我卻有點疑問,所以尋找一下支持的數據。按照一貫做法,第二代 iPad mini 是把 iPad with Retina Display 由十吋縮到八吋。既然十吋版本已經是已經是視網膜密度,再超越也感覺不出分別吧。不過,在數據上, iPad mini 是 163 PPI,變成視網膜密度的話,則會跟 iPhone 5 一樣是 326 PPI。從這個角度看,iPad mini 會擁有視網膜密度是有很高的可能性。

    2012年11月29日 星期四

    iPhone 5 64GB Black 入手


    自從 iPhone 5 在香港推出以來,一直在等待入手機會;但又不想上台、又不想以炒價購買。花了八個星期,終於都從蘋果手上取得 iPhone 5。

    Times Square 匯報《little diary》在 iPhone 5 上有大按鈕的情況發生。之前在模擬器上跑卻沒有問題。現在真機在手,便能進行除錯。原來是偵測型號的程序上出了問題。當中以 iPhone5,1 當成 iPhone 5;實際上 iPhone5,2 才是 iPhone 5。至少我那台是這樣。修改過後一切正常,並提交到 App Store 進行審批。

    2012年11月28日 星期三

    Google Cloud Messaging on PHP

    為客人開發的 Android 應用《BagBoard》需要用到 Google Cloud Message。官方的服務器端程序是 Java 版本。我亦在服務器安裝好 Tomcat,以便開發 Java Servlets 項目。同事找到了 GCM 的 PHP 版本,代碼十分簡單:
    $yourKey = 'PUT_YOUR_KEY_HERE';
    function sendMessageToPhone($deviceToken, $collapseKey, $messageText, $yourKey)  
    {  
        $headers = array('Authorization:key=' . $yourKey);  
        $data = array(  
            'registration_id' => $deviceToken,  
            'collapse_key' => $collapseKey,  
            'data.message' => $messageText);
      
        $ch = curl_init();  
      
        curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send");  
        if ($headers)  
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);  
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
        curl_setopt($ch, CURLOPT_POST, true);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
      
        $response = curl_exec($ch);  
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
        if (curl_errno($ch)) {  
            //request failed  
            return false;//probably you want to return false  
        }  
        if ($httpCode != 200) {  
            //request failed  
            return false;//probably you want to return false  
        }  
        curl_close($ch);  
        return $response;  
    }

    這是節錄自:http://www.sherif.mobi/2012/07/gcm-php-push-server.html

    2012年11月23日 星期五

    Facebook HTTP 405


    今日接了熟客一個 Facebook App 項目。對方是使用 Windows Server,而且沒有測試服務器提供。為了方便開發,只好自行設定。也為了能讓客戶直接在我方的服務器上測試,於是把它接上了 Facebook。可是,在瀏覽器直接打上地址是沒有問題;當 Facebook 包著來跑時則出現 HTTP 405 錯誤。

    之前在客戶的 IT 部門也發現過相同的錯誤,那是由於目錄預設檔案的次序問題而產生。今次用相同的解決方法也無法把問題處理。搜索一輪之後,發現要在 IIS 內加入 .html 的配對才可。又上了一課!

    2012年11月21日 星期三

    在 CentOS 安裝 Tomcat

    最近的一個 Android 項目需要用到 GCM (Google Cloud Messaging),是類似 iOS 的 Push Notification。官網有服務器端有 Java 版的代碼提供。公司用的服務器都是行 CentOS,需要安裝 Tomcat 才能跑 Java。安裝方法如下:
  • 到 Tomcat 網下載最新版 gz 檔
  • cd ~
  • tar zxvf /var/www/html/apache-tomcat-7.0.33.tar.gz
  • mv apache-tomcat-7.0.33 /usr/local/tomcat7
  • cd /usr/local/tomcat7/bin/
  • ./startup.sh
  • 2012年11月20日 星期二

    在 CentOS 安裝 JRE

    公司的服務器一直都是跑 PHP。即時由 PHP 組譯成為 Machine Code 始終慢一點,所以希望嘗試使用 Java。那必先要安裝 JRE。步驟如下:
  • 到 Java 網頁下載最新 JRE 的 .gz 檔
  • cd /usr/
  • mkdir java
  • cd java
  • tar zxvf /home/share/jre-7u9-linux-i586.tar.gz
  • cd jre1.7.0_09/bin
  • alternatives --install /usr/bin/java java /usr/java/jre1.7.0_09/bin/java 300
  • alternatives --config java 看看現時使用哪個 Java Runtime,按 Enter 不改變設定並離開
  • java -version 看看版本號碼
  • alternatives --config java 轉用新的 Java Runtime
  • java -version 看看版本號碼是否轉了
  • alternatives --config java 確認轉了新 JRE,按 Enter 不改變設定並離開
  • 2012年11月19日 星期一

    八達通無聊器

    何家大細小姐最近經常「嘟嘟聲」,喜歡周圍「嘟」。心想要是開發一個 iOS 應用,配合鏡頭技術,想必很吸引。構思衝動而出的剎那間,很想立即實行。但還是到 AppStore 查看一下。如果有人已經製作過,就無謂浪費時間。以「八達通」搜尋到的只有官方應用。本以為今次想到絕世好橋。不過,轉眼在 Google 已經找到,原來一年半前已經有人開發了相同概念 App,名叫「八達窿」。那個 App 做得不錯。可惜現在已從 AppStore 下架,無法下載。相信是由於有人把它作非法用途吧。這個絕世好橋比別人遲了年半,希望下次能快人一步吧!

    2012年11月17日 星期六

    香港 Startup 如何面向世界


    在過去的一星期,在王維基先生的專欄已經多次提到 6waves 的周邦亮先生(Arthur)。今日出席了數碼港的《香港 Startup 如何面向世界》認識了 Arthur,學到很多創業的心得。

    2012年11月16日 星期五

    關掉 Unity 下的貼圖光影效果


    客人找我開發一套推銀遊戲,那就必須要使用 3D 才夠真實。了解過市面的 3D 引擎,選用了 Unity。早在年初 Unity 曾免費下載 iOS 及 Android 輸出插件,當時不執輸地申請了一個,今次可用得上場了。

    遊戲已經接近完成階段,當初的模型測試能渲染 20 萬個多邊形,不料現在只有十分一也開始覺得慢起來。為了提升運行速度,首先是刪除光影方面的運算。方法是選取模型,在右方的選單找 Shader,設定為 Unlit - Texture。如選擇 Transparent 也可,感覺上 Texture 快一點。

    2012年11月15日 星期四

    免 Jailbreak 修改 Hello Kitty Cafe

    細女喜歡 Hello Kitty,也愛玩 Hello Kitty Cafe。雖然這個遊戲的設計很差,但為了細女能暢快地進行遊戲,於是修改了一下。


    利用 iExplore 把遊戲內的 DCProfileCoreData.sqlite 給拉出來。遊戲的數據都是儲存在這個檔案之內。


    用 Firefox 內的 SQLite Manager 插件讀取檔案內的 ZDCPROFILE 表格。遊戲數值就存放在 ZDATA 欄。內容其實是 plist binary。把 ZDATA 內容輸出成檔案,以 Blob.plist 命名。


    用 Xcode 把 Blob.plist 打開。擴展 stage 下的內容。把 addStaffs 下的各個 Item 都打開,並把 Level 設定大於零時,便能使用該角色。

    2012年11月14日 星期三

    Windows 8 RTM


    朋友太太的公司想找人開發流動應用及網上平台,找我來談談。了解過相關要求,很多功能都做過,亦能汲取以往的經驗去加以改善。原來考慮以 iOS 或 Android 作為平台,但由於 Windows 8 更能支援公司慣用的 Microsoft Office 檔案,所以列為考慮之列。自從第一代 iPhone 出世後,已被它簡單易用的操作界面吸引,繼而投入 Mac OS X 的懷抱。Windows 已被成為拋棄的對象。今次工作上的需要,再一次嘗試最新版 Windows 8 RTM。

    公司內沒有多餘的 Mac,更沒有多餘的 PC。於是拿 VirtualBox 來安裝 Windows 8 RTM。一個似曾相識的感覺又再出現,錯誤畫面。只是今次由藍色換為黑色。錯誤畫面真是 Microsoft 最愛出現的畫面。查過原因,說是 CPU 不相容。可是,CPU 是兩個星期前買的 Intel i5,不可能跑不到 Windows 8 吧!估計是 VirtualBox 或 Linux 的問題。情況有待解決!

    2012年11月13日 星期二

    CentOS 下跑 VirtualBox 4.2 的方法


    昨天經歷過失敗之後,今天終於得到解決。試過不同的方法,最後原來要以 yum install kernel-headers kernel-devel gcc 安裝好 Kernel 的源碼及 gcc 編譯器,再以 KERN_DIR=/usr/src/kernels/2.6.32-279.14.1.el6.i686 及 export KERN_DIR 設定好路徑。這樣就能以 /etc/init.d/vboxdrv setup 進行安裝。之後才能順利運行 Virtual Machine。

    2012年11月12日 星期一

    CentOS 下跑 VirtualBox 4.2


    越接觸多客戶,就發現越大的公司越喜歡使用 Windows Server。替他們開發手機應用也好、Facebook 應用也好、甚至是 WEB 應用也好,都需要連上服務器。我公司是使用 CentOS Linux 系統的。由於不是所有客戶都能提供測試服務器,為了方便開發,還是要安裝 Windows Server。但是,要拿一台電腦來安裝 Windows Server 又實在浪費,於是打算在 CentOS 內安裝 VirtualBox + Windows Server。不過,問題來了。原本這個組合在 Mac 機上沒有問題,可是來到 CentOS 則跑不起來...。就算按照畫面所示,在 Terminal 以 root 登入,再輸入 /etc/init.d/vboxdrv setup 還是不行...。

    2012年11月9日 星期五

    iPad mini 真的開而不賣

    iPad mini 自開賣以來,一直長開長有。而我亦在第一時間在網上訂購一台刻名的 16GB iPad mini。苦等了兩個星期的生日禮物,原本明天出貨;竟然在今天收到 Cut 單通知!早在一個星期前已有朋友被 Cut 單。問題是,我在開賣首五分鐘內完成交易,理應優先處理。就算沒有貨也不用等了兩星期才發出通知吧!今次實在是極差的購物體驗!加上 iPhone 5 的開而不賣、Mountain Lion 的 Bug 到病、隨波逐流的產品,蘋果已經不折不扣地由 Steve Jobs 領導的一家偉大公司,變成由 Tim Cook 領導的大公司。實在非常失望!

    2012年11月8日 星期四

    在 CentOS 6 建立分享硬碟

    原本在 CentOS 下已經設定好分享硬碟,可是無法寫入。花了幾天時間,終於搞定了。以下是設定的步驟:

    1. 以 root 登入
    2. yum -y install samba
    3. mkdir /home/share/projects
    4. chmod 777 /home/share/projects
    5. vi /etc/samba/smb.conf
    6. 在 [global] 下輸入 unix charset = UTF-8
    7. 及 dos charset = CP932
    8. 把 security = share 改為 security = user
    9. 在檔案最尾加入

    [Projects]
    path = /home/share/projects
    writable = yes
    guest ok = no
    guest only = no
    create mode = 0777
    directory mode = 0777
    share modes = yes

    10. 儲存及離開
    11. /etc/rc.d/init.d/smb start
    12. /etc/rc.d/init.d/nmb start
    13. chkconfig smb on
    14. chkconfig nmb on
    15. 以 su - pacess 登入(假設已有 pacess 帳號)
    16. smbpasswd 並設定密碼

    2012年11月5日 星期一

    Rhino 3D


    最近有客人找我們開發一個 iPad 應用,他們提供了一個 .3dm 格式的檔案給我。找了很久,試到用 Windows 版本的 Autodesk AutoCAD 2013 能把它打開。可是會出現走樣的情況。搜尋了很久,終於找到了 Mac 版 Rhino 3D 能完整地打開 .3dm,而且是免費使用。真的十分幸運!有興趣可以到 http://mac.rhino3d.com/ 下載。

    2012年11月2日 星期五

    No Drive Found (Solved)

    公司同事一下子增加了,原先使用的 QNAP TS-210 已經滿足不了為多人服務。於是今天到黃金商場購買一台新服務器。裝嵌完畢後安裝 CentOS 6,顯示「No Drive Found」訊息後便休眠了。找了一會,原來是 BIOS 的 SATA 設定要由 IDE 改為 AHCI 模式才能解決。

    2012年10月31日 星期三

    p3d.in


    我們正在為客人製作一款在 Android 上運行的 3D 遊戲。負責這款遊戲的美工已經離職,而原本製作的模型因為太薄而發生問題。現職的美工一來有工作在身,二來也不懂 3D 方面的知識,唯有自己頂硬上。我進入遊戲界的第一份工作就正是美工。

    模型改好之後,想起在網上尋找建模師時,發現了 p3d.in 這個網頁。它是一個利用 WebGL 顯示模型的網頁。今次改好的模型也嘗試放到 p3d.in,上傳過程簡單流暢。對於要給客人看模型的話,是一個很好的工具。

    2012年10月30日 星期二

    phpMyAdmin 訪問錯誤

    今日搬了一下服務器的位置,曾經把機器關掉。重啟後進不了 phpMyAdmin。畫面上彈出一句「Wrong permissions on configuration file, should not be world writable!」。搜尋一下,發現 phpMyAdmin 要在 755 權限下才能正常運作。利用 FileZilla 登入後,phpMyAdmin 是 777 權限。果然就是問題的根源。把整個目錄及子目錄內的檔案改回 755 權限後,問題得以解決。

    2012年10月29日 星期一

    Cylinder


    同事在周末到深圳掃貨,委託他順道購買銅柱及零件。那些 20mm M2 銅柱剛好可以用在 AMIGO mini 身上,取代舊有「銅柱 + 六絲母」的組合,減輕身上的重量。

    2012年10月27日 星期六

    《創業起義》增訂版


    讀到舊老闆高健的「也談startup是甚麼」後,引起我的興趣,繼續追閱宋漢生李勁華關於 Startup 的文章。對於「宋漢生」這個名字,我剛認識;但他的 Anobii 卻常常在用,而且也是由高總介紹的。拍檔 Jacky 知道我愛看書,也使用 Anobii,說我已經跟「宋漢生」在「智能手機 Apps 開放日」面對面交談過。當時我真的不知道。有機會真要跟他聊聊天,認識一下 Anobii 的作者。

    說回 Startup。之前逛書局時見過尹思哲的《創業起義》增訂版,已經有買的衝動。今次得到「我不創業, 我搞STARTUP」推介,加上對 Startup 的興趣,我立即購買了。花了兩天時間把它看完。這是一本我很喜歡的書。喜歡它充實的內容、難得的經驗、順暢的文筆、精闢的觀點。一路看一路熱血,再次啟動我的創業心。如果作者撰寫一部以 Apps 公司為題材的《創業起義》,必定十分吸引!期待有這一天的到來!

    2012年10月26日 星期五

    iPad mini 繼續開而不賣(已開賣,而且還長開長 Cut)


    最近 Apple 的策略實在叫人摸不著頭腦。iPhone 5, iPad mini 及 iPad 4 在香港同樣是「開而不賣」。iPhone 5 都可以說是有炒價空間,但 iPad mini 及 iPad 4 都這樣,倒不如不開吧!

    順帶一提,App 版的 iPad mini (WiFi + Cellular) 居然平 HK$1000,哈~

    更正:終於在 17:35 左右開賣。但起初沒有 16GB 版本,過了 5 分鐘才有。到了 18:15 左右,所有 WiFi 版已經售光。但到 20:15 左右又再次開賣。

    2012年10月25日 星期四

    Bi-directional Communication


    iOS 裝置跟 Arduino,用 Audio jack 雙向溝通的示範。

    2012年10月23日 星期二

    下載舊版 Xcode

    Download Older Version of Xcode

    受客人的委托,本來在昨天的假期嘗試 iPod touch 2G - Arduino 連線。由於在 iPod 上找不到 SoftModem 應用程式,於是拿來源代碼重新生成到 iPod 中。可是 Xcode 升級到 4.5.1 後,已經不支持 iOS 4.2.1。那是我的 iPod 最終極的 iOS 版本。只好暫時放棄。

    今日繼續把問題解決。找到了原來 developer.apple.com 內提供了下載舊版 Xcode 的機會。在 Downloads 部份有一條 Looking for an older version of Xcode? 的計結。點一下會跳轉到下載版面 https://developer.apple.com/downloads/index.action#,當中有很多舊版 Xcode 可以下載。

    2012年10月20日 星期六

    Inventor Fusion for Mac


    之前設計機體時都是用 Inventor Pro。這個軟件沒有 Mac 版本,所以唯有用 Fujitsu Notebook 的 Windows 來執行。現在 Autodesk 推出了 Mac 版的 Inventor Fusion,可以免費使用。但要打開 Inventor 的檔案,需要安裝 X11,在 Mountain Lion 下則叫 XQuartz。可在 http://xquartz.macosforge.org/landing/ 下載。

    2012年10月19日 星期五

    GoodCitizen


    既然 VirtualBox 無法啟動 Blackberry 10 模擬器,那只好暫時使用 VMWare Fusion。安裝好 VMWare Fusion 後,桌面的模擬器圖示改變了樣貌;雙擊後能順利執行模擬器。比起 Android 模擬器載入速度快很多、順暢很多。當然,跟 iOS 比仍有一段距離。簡單地嘗試了 GoodCitizen,原來是 3D 示範!跟名稱有很大的落差...。

    2012年10月18日 星期四

    Blackberry 10 on VirtualBox


    終於能把 Blackberry 10 模擬器加到 VirtualBox 內。方法如下:

    1. 把 VMWare 模擬器檔末端的 .vmwarevm 刪除
    2. 開啟 VirtualBox,點 File 後點 Virtual Media Manager
    3. 確認停留在 Hard drives 項目
    4. 回到 Finder 進入 BlackBerry10Simulator-BB10_0_09 目錄
    5. 把 BlackBerry10Simulator.vmdk 拖到 Virtual Media Manager 視窗放手
    6. 回到 VirtualBox 選 New
    7. 名稱輸入 Blackberry。系統類別選 Other。版本選 QNX
    8. 選 Continue
    9. 配置 1024MB 記憶體
    10. 選 Use an existing virtual hard drive file
    11. 選 BlackBerry10Simulator.vmdk
    12. 選 Create

    不過,啟動後會卡在 START SERVICE: screen...哈哈~

    2012年10月17日 星期三

    山獅下的 PNGShrink

    以前在雪豹上開發 iOS 應用時都會使用 PNG Crusher 把 PNG 圖片減肥,貪的是檔案小一點、讀取快一點。後來轉到獅子,PNG Crusher 用不了,改為使用 PNGShrink。不過,當時 Xcode 自帶的壓縮功能得出來的效果差不多,於是放棄使用。直到 Xcode 4.2 時,自帶的壓縮功能有時會發生問題,壓過的 PNG 無法打開。當時只能停用壓縮功能。直到今天,有需要再次出動 PNGShrink,可是網上已無法下載。

    最終找到了它的源代碼。利用 svn 下載後,在 Xcode 內改改設定,成功生產出應用程式檔。為了方便日後使用,還是把它打包放到服務器內。

    2012年10月16日 星期二

    Blackberry 10 SDK


    安裝好 Blackberry 10 SDK 之後都沒有時間嘗試。今日終於打開了示範程式,希望在模擬器上執行。正當想要執行時,卻遇到很多問題。

    由於還沒有實機在手,只能以模擬器來進行。這先要得到 Debug Token 才可。查找一輪,原來要在網上申請,還需等最多兩小時,經電郵收到 RDK 及 PBDT 兩張 .csj 證書。幸而我等了 15 分鐘便到手。可是沒有清楚的指引說明如何使用這兩張證書。花了點時間,找到了 Momentics 系統內的 Signing 設定。輸入好資料,總算登記成功。按照介面的設計,接著應該是生成開發者證書。這個倒沒有難度。

    好了,應該可以開動模擬器吧!卻彈出了視窗。原來模擬器要另外下載,也要自行設定。它是以 VMWare 的 Virtual Machine 形式出現。對於 Windows 用戶來說,可以下載免費的 VMWare Player;但對於 Mac 用戶,卻只能下載付費的 VMWare Fusion。雖然有 30 天的試用,但 30 天後如何?我嘗試過用 VirtualBox,可是卻無法打開 .vmwarevm 格式的模擬器。暫時徒勞無功...。

    原本對於 Blackberry 有期望,但 SDK 的複雜難用,指引又模糊不清,對開發者來說實在打一個折扣。相比起 iOS SDK 的簡單、方便、易用、效能好,Blackberry SDK 實在要學習學習。

    2012年10月15日 星期一

    美術設計師

    最近收到很多應徵者的來信,想約時間面見成為美術設計師。不知是指引模糊,還是應徵者的習慣。既然是應徵美工,為何沒有附上過往作品圖片或作品網頁作為參考之用?他們大多數只在 CV 上說明自己過往的職位及懂得哪個軟件,更甚的是空白的電郵附上 PDF 一份。難道單憑數百隻文字就能知道畫風怎麼樣、技巧怎麼樣、設計怎麼樣?面見大家都要付出時間,何不一開始有個初步印象,合適的才約個時間見面?這對大家都有好處吧!

    2012年10月12日 星期五

    重灌白痴

    家用的 Mac mini 是 Late 2009 版本,由 Snow Leopard 一直用到 Mountain Lion。檔案不斷增加、儲存空間不斷減少,已經只剩 2GB 的情況。系統操作越來越慢。於是把心一橫,決定來個重灌。

    昨晚,按照網上的指引,Mountain Lion 預先保留了空間,儲存了系統檔案,在啟時只要按著 Option-R 便能進入回復選單。可是我無論怎按,屏幕只有黑色。忽然發現啟動時沒有了蘋果畫面,感覺有點問題...。既然無法 Mountain Lion 復原模式,那我用跟機的 Snow Leopard 光碟也行吧!啟動了五分鐘,看到雪豹的預設星雲圖案,之後甚麼也沒有了。等呀等,連屏幕保護也跑出來了,仍然看不到介面。

    今早醒來,靈機一觸。才想起了 Mac mini 還搭載了一台 32" LCD 電視。由於掛在牆上不便坐著觀看,平時也很少開著。於是立刻開機一試,所有介面都在電視上出現!原來系統把電視變成預設屏幕,本來用開的電腦屏幕反變成輪助...。這個困擾了數小時的問題,終於解開了!往後的安裝也十分順利,重灌後的系統也變得十分順暢。

    2012年10月11日 星期四

    Armv7s 錯誤

    Armv7s Error

    安裝了最新版《Xcode》後,有部份舊項目無法組譯,出現以下問題。原因是 Architecture 中自動加入了 armv7s 或欠缺了 armv6。解決方法是將 armv7s 刪除或加入 armv6。