2012年1月22日 星期日

Cydia Sources List

  • cydia.hackulo.us
  • irepo.us
  • mi.baidu.com(百度輸入法)
  • cudia.xsellize.com
  • apt.178.com

2011年9月23日 星期五

db4o 物件的唯一性:disconnected objects 的概念與 web apps

db4o 在單一 object container 的環境下,在物件管理上會確保儲存在資料庫內的物件的唯一性。但是,若是啟用了 client-server 或是 session-container 的架構,則會變成多 object-container 的情況,因此同一個物件可能會在不同的 container 中有不同的 memory identity。這種情況在 web 環境下一定會發生。這時候就要借助額外的 ID,如 db4o 內建的內部 ID:UUID,或是自行產生 ID。

簡而言之,最重要的概念就是加入 EventRegistry,在建立時去檢查是否有 ID 已經存在:

// register 
IEventRegistry eventRegistry = EventRegistryFactory.ForObjectContainer(icontainer);
eventRegistry.Creating += delegate(object sender, CancellableObjectEventArgs args)
{
    if (args.Object is Article)
    {
        Article a = (Article)args.Object;
        if (a.HasDb4oID()) {                       
           // don't insert because Article is already
           // in the container
           args.Cancel();
           Article existing = LookupArticle(icontainer, a.Db4oID) as Article;
           // merge change
           existing.MergeChanges(a);
       } else {
           a.SetDb4oID(a.ArticleID);
       }
    }    
};

相關參考資料如下:

2011年9月15日 星期四

Publish REST services on IIS 6.0

利用 WCF REST Service Template 完成 REST service 後,最後的問題是怎麼把它放到既有的 IIS 6 server 上。

Prerequisite

Steps

  1. 首先在 server 端,先替 IIS6 安裝好 Web Deploy 2.0。
  2. 在 client 端利用 VS2010 的 publish 介面將網站發布到 server 端。請參考如下設定:
    image
    其中,Service URL 就是 msdepsvc 的網址。而 Site/application 則填入欲發布的 server 端網站名稱(Site)與  WebApp 名稱(application)。
    • 舉例來說,若是遠端網站名為 Default,欲發布的 app 名為 test,則在 Site/application 填入:Default/test
  3. 另外當然,在 server 端也必須安裝好 .NET 4.0 framework。
    • 若是再安裝完 IIS 後才安裝 framework,須在 .NET 4.0 目錄下(如 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)執行 aspnet_regiis –i
  4. 執行 aspnet_regiis.exe –lk 確認目前各 WebApp 的 .NET 版本狀態。並且確認剛 publish 過來的 app 是否使用正確的 .NET framework 版本:
    image
    • 以剛剛的例子來說,假設你的網站 ID 為 45,則執行後應該要顯示:
      W3SVC/45/Root/test    4.0.30319.0
    • 若發現不是使用 4.0 或更高的版本,則需要在對應的 .NET framwork 中執行
      aspnet_regiis –s W3SVC/45/Root/test
      將其更新為正確的版本。
    • 若是不知道網站 ID,可以透過 IIS 管理員的介面查看:image
    • 同理,若是同一個網站底下的其他 App 想使用不同的 .NET Framwork 版本,也可以使用對應的 aspnet_regiis 來設定之。
  5. 最後依造 Deploying ASP.NET MVC to IIS 6 的步驟,使用 wildcard mapping,讓 IIS 6 可以處理 routing。需注意,一定要把 uncheck Verify that file exists. 的選項取消!

2011年9月14日 星期三

iKVM

iKVM: Using Java API’s in .NET Applications

編譯時需加入 bin 目錄底下的 dll 檔。舉例來說,需要用到 java.util.Set,則需加入 IKVM.OpenJDK.Core.dll

Runtime 時需把 bin 內的 DLL 檔複製到與執行檔相同的目錄內。