2012-12-17

刪除 Open With 選單裡重覆的項目


OSX 用久了會發現當要用右鍵開啟某些檔案時,在 Open With 選單裡有重覆的項目,此時可在 Terminal 裡輸入 :

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local\ -domain system -domain user

待執行完成之後 Relaunch Finder (control+option+滑鼠右鍵 點選 Finder ),即可刪除重覆的項目。

ref : http://itpixie.com/2011/05/fix-duplicate-o...

2012-11-29

Unity 3D + JmDNS + Android

此篇文章實作將 JmDNS 包裝成可以在 Android 平台上執行之 Unity3D Plugin。使用 JmDNS 可以方便行動裝置在區域網路內發現對方,以進行後續的連線。(此機制也稱為 Bonjour ,最初由 Apple 提出。)因為 iOS 平台的 NSNetService 也提供相同的功能,所以 Android 裝置和 iOS 裝置皆可以透過此機制取得對方的網路位置。底下為實作步驟:

A) 至 jmdns.sourceforge.net 取得 JmDNS 並利用 ant 進行編譯:
1) 以 osx 平台為例,在 terminal 輸入:
svn checkout https://jmdns.svn.sourceforge.net/svnroot/jmdns/tags/jmdns-3.4.1 ...
...

2012-11-14

Unity 3D 使用 Animation 工具調整 NGUI 之 UISprite 的 Color 及 Alpha 值

Unity 的 Animation 工具可以在 NGUI 的 UISprite 上增加位移,縮放,旋轉等動作控制,如下圖所示,圖中使用 Animation 工具編輯 Sprite 物件的位置資訊,值得注意的是,移動時間軸 (紅色垂直線) 即可同步觀察 Sprite 物件移動。

...

2012-11-01

Lua Callback Function

底下在 Unity3D ( MAC OSX ) 環境下實作 Lua 呼叫 C# 函數 (tellMeNum) 並且同時把 Lua 的函數 (dispResult) 告訴 C#,待 C# 回呼此函數並告知數字 12345.678。
C# 端程式碼如下 :
using UnityEngine;
using System;
using System.Collections;
using System.Runtime.InteropServices;
 
public class luaTest : MonoBehaviour
{
    [DllImport("lua521")]
    public static extern IntPtr luaL_newstate();
    [DllImport("lua521")]
    public static extern ...
...

2012-10-25

C# byte array 和變數之間的轉換

C# 將字串或數字轉成 Byte Array 或是將 Byte Array 轉回字串或數字,這是在檔案讀寫或是網路封包傳送/接收時可能會用到的功能,底下是轉換的範例:
//資料轉成 byte
static byte[] c2b()
{
    List<byte> myPacket = new List<byte>();
 
    string str ="hello world";
 
    //取得字串 byte 長度
    int nByteCt =System.Text.UTF8Encoding.UTF8.GetByteCount(str);
 
    //寫入字串長度及字串
    myPacket.AddRange(BitConverter.GetBytes((Int32)nByteCt));
    myPacket.AddRange(System.Text.UTF8Encoding.UTF8.GetBytes(str));
 ...
...

2012-09-17

Convert char** (string array) to C# string[]

底下範例是將 C/C++ 的字串陣列指標 (char**) 轉成 C# 內部使用的 string[] :

C/C++ 端的函數指標為 :
typedef void (* pCBFunc)(int, char**);

對應的 C# 端的函數為 :
public static void callback(int nArrsz, IntPtr pStringArray)
{
    string[] data = new string[nArrsz];
    IntPtr tmpPtr = pStringArray;
 
    for (int i = 0; i < nArrsz; ++i)
    {
        IntPtr strPtr = 
            (IntPtr)Marshal.PtrToStructure(tmpPtr, ...
...

2012-09-08

gitolite + cygwin + windows xp

使用 gitolite 具有更進階的資料夾管理功能,意思是我可以針對各別資料夾去指定誰擁有寫入或者讀取的權限。使用者仍然可以做 pull / push 等動作,但若是違背權限的規則,pull / push 的動作就會被 server reject。此外,gitolite的使用者權限是以 ssh key 來分辨,因此 Server 的系統只需要建立一個使用者帳號即可 (此例使用的帳號名稱是 git )

這篇記錄在 windows 上架設 gitolite 的步驟:

安裝 cygwin (Server Side)
1) 在 xp 上安裝 cygwin (http://cygwin.com/setup.exe)
2) 選擇 Install from Internet
...

2012-08-27

關閉 "F7" 按鈕開啟 iTunes

mac 的 F6, F7, F8 等 Media Key 可以控制 VLC, Cog,... 等程式播放音樂歌曲。但其中的 F7 按鈕除了 Play / Pause 之外就是會啟動  iTunes。

若要取消這個功能有以下作法 :
1) 關閉 Function Key, 改用 keymapper ( Function key 改由 Fn+F1, F2,... 啟動 )
   a. 到 System Preferences -> Keyboard, 勾選 
        Use all F1, F2, etc. keys as standard function keys
 
...

2012-08-18

2012-07-12

Unity 3D + Lua + iOS 實作筆記

這篇文章概略介紹如何把 Lua 當作 Unity3D 在 iOS 平台上的腳本引擎(若要實作於 Windows 平台可以參考另一篇文章)。範例大略分成三個部分:Unity3D C# 部分、Lua C 部分及 Lua Script 部分,整個程式執行的流程是:
  1. C# 啟動 Lua,並註冊 C#  函數給 Lua (讓 Lua Script 可以呼叫)
  2. 從 iOS 載入 Lua Script 檔案並由 Lua 執行
  3. Lua Script 呼叫 C# 函數
  4. C# 函數印出訊息
最後在 Xcode 的 Output
...