2012年6月28日 星期四

畢氏定理

今天又有另一條數學題目出現。事緣在一個開發項目中,職員需要到不同店舖工作,並利用 Apps 輸入工作上的數據。為了增加用戶的良好體驗,我們打算在 Apps 內自動替職員選擇位置上最近的店舖,減少輸入的步驟。不過,有些店舖的位置非常近,在編程上究竟要如何處理呢?

同事們想了一想卻沒有頭緒,於是我拋出一句「可用畢氏定理」。順道也考考同事們是否記得「畢氏定理」的公式為何;也說明了如何理用「畢氏定理」來找出最近的店舖位置。我不確定這是最有效或最簡單的方法,但至少是行得通。如有任何更好的方法,敬請賜教。

2012年6月27日 星期三

很難計的一條數?

今日在開發《Rate My Pics!》4.00 時遇到一個情況,考起了新來的同事。事緣系統需要把輸入的相片轉換成 600 像素闊的大小,那麼我們需要求出轉換後的高度。有興趣的不妨嘗試一下。他花了 20 分鐘才能完成。要是你在 1 分鐘內完成,請加入 BeyondZ 吧!

2012年6月25日 星期一

Graphics Designer

公司最近新聘了兩位美術設計師,其中一位今天述職。他有不錯的美術功力,我對他的期望也較高。公司所有的座位已經坐滿,再發展的話便是搬遷了。加油!加油!

2012年6月15日 星期五

Retail Expo 大功告成


一連三日的 Retail Expo 已經結束。總結今年的成績,得到不少大公司高層的名片。比以往其他的展覽(包括廣交會)更能接觸到我們的目標客戶群。其中一點歸功於特別為 Retail Expo 製作的示範軟件,讓在場的客人能具體地理解流動應用方案如何能配合他們的情況。之後便是跟進工作,希望能帶給我們數個新客戶!

2012年6月14日 星期四

Pair Programming

昨天來了兩位新同事。同樣是編程人員;在同一間學院畢業;在同一班上課。今次在天時、地利、人和的配合下,嘗試了 Pair Programming 運作。預計在一個月之後檢討成效。希望能帶給我一個好的結果。

2012年6月13日 星期三

Permission Denied

最近在整理一下服務器的結構,希望在正式服務器(Production Server)發放推放通知(Push Notifications),但一直未能成功。往往傳回 Permission Denied 的錯誤訊息。試過把防火牆打開、試過在路由器設定,通通都無效。今日再次嘗試,終於把問題解決。問題原來是 SELinux 封鎖了 http 連線功能,只要在 Terminal 登入服務器,輸入 /usr/bin/setsebool httpd_can_network_connect=1 便能解決問題。

2012年6月12日 星期二

可樂版《Hit 3D》

Hit 3D (Coca-cola version) at Retail Expo 2012

Retail Expo 一連三日在香港會議展覽中心舉行。這是上年自行研製的 3D 硬件。今次特別為 Retail Expo 製作了一個可樂版本的《Hit 3D》遊戲,讓在場參觀的人仕更能體會如何利用 3D 顯像盒為他們的產品作宣傳。

2012年6月8日 星期五

解決推送通知的 Socket 問題

Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP

為大陸客戶解決 Windows Server 上 Push Notifications 問題的設定。

2012年6月7日 星期四

Calculator 完全版

《Calculator》的 plist 內有一段內容如下:
<key>upgradedToFullVersion</key>
<false/>
不用多說都知道如何做吧!

2012年6月6日 星期三

Space Ninja Game Play Video

這是 Dartslive 2011 時展出的遊戲作品。主畫面使用 iPad,而控制器支援 iPad, iPhone, iPod touch。

2012年6月5日 星期二

Darts Revenge Game Play Video

這就是小弟最新創作的 Kinect-liked iPad 遊戲,由 Hanon HUI 負責開發:

2012年6月4日 星期一

Javascript 的 16 進制 UTF8 輸出

當使用中文時,我喜歡用 UTF-8 編碼。在傳送數據時為了減少不必要的麻煩,更會把中文字轉換成十六進制碼。不過,Javascript 會把中文字變成 16-Bits 的編碼,這會造成服務器無法解讀。所以編寫了以下 Javascript 的 UTF-8 輸出程序:
function encodeStringUTF8(inputString)  {
 var outputString = "";
 var utf8String = encodeURIComponent(inputString);
 for (var i=0; i<utf8String.length; i++)  {

  var value = utf8String.charCodeAt(i);
  if (value != 37)  {

   //  Standard ASCII
   outputString += byteToHex(value);
   continue;
  }

  //  UTF-8 character
  var hexByte = utf8String.substring(i+1, i+3);
  value = parseInt(hexByte, 16);
  outputString += byteToHex(value);

  i += 2;
 }

 return outputString;
}

2012年6月3日 星期日

Dartslive 2012


今天是 Dartslive 2012。我最新的創意之作亦第一次在場展出。那是一套利用 iPad 2 前置鏡頭做出 XBOX Kinect 般的體感遊戲。在場的工作人員及嘉賓都玩得十分開心,我亦十分興奮。

2012年6月1日 星期五

あかずきん

最近在研究 In-App-Purchase 方面的處理。最高風險的莫過於內容已經存在,只靠 Plist 內的 True / False 來決定是否購買。部份 App 則時把購買數據儲存在 SQLite 內,同樣風險高。不用 JailBreak 的裝置也能進行破解。有些情況會好一點,就像《あかずきん》在購買後才添加 Plist,如果沒有 JailBreak 或預先知道內容,是無法破解。目前最穩陣的做法是購買後跟 Apple 服務器核對收據,在自家服務器內儲存數據,並以此為數據之基準。

jp.co.bexide.ica03.plist
<plist version="1.0">
<dict>
<key>paymentstate</key>
<integer>1</integer>
</dict>
</plist>