星期一, 9月 30, 2013

Mac Contacts 匯入中文亂碼

由於姓名地址都是中文的關係,過去一直無法將其他軟體的通訊錄匯入到 Mac Contacts(中文變亂碼),今天終於找到解法:要事先將準備匯入的文字檔轉碼為 UTF-16。

星期五, 9月 27, 2013

What's SOAP?

在今年台灣微軟大拜拜的某一場中,講者指著一張肥皂的圖問台下「這是什麼技術?」,有人回答 WebServices,竟然被打槍?我正猜著他有什麼更高明的答案,果然台下再也沒人答對,講者最後公佈了是「WCF」,差點當場吐血。這是 MVP 的水準嗎?

Spring.NET Extensible XML authoring

基本上照著官方文件附錄 C 做,沒什麼太大問題,看人家的文件多好!有些地方我想補充一下:
  1. XSD 很希望只有一份,但目前要有兩份一模一樣的,這個比較遺憾。一份放在組件內且必須設為「Embedded Resource」,另一份放在網站上公佈。
  2. 依據 XSD 在組件專案的位置決定 MyNamespaceParser 的 SchemaLocation 值,以我的例子,專案預設命名空間是 com.abc,目錄為 spring/webflow/config,檔名為 spring-webflow-config-1.0.xsd,所以我的 SchemaLocation = "/com.abc.spring.webflow.config/spring-webflow-config-1.0.xsd"。
  3. 我自訂的 xml namespace 叫 webflow,所以在 Spring 的設定像是
    • <objects xmlns="http://www.springframework.net"
    •          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    •          xmlns:webflow="http://www.springframework.net/schema/webflow-config"
    •          xsi:schemaLocation="
    •          http://www.springframework.net
    •          http://www.springframework.net/schema/objects/spring-objects-1.1.xsd
    •          http://www.springframework.net/schema/webflow-config
    •          http://10.0.2.2/spring-webflow-config-1.0.xsd
    •          ">
  4. 前述設定倒數第二行就是所謂「放在網站上公佈」的複本位置,如果不放,在 Visual Studio 開發環境看來會有些不足,但不至於影響正常執行。另外,由於實際上發現在 IIS 的網站上可能會有 Mime-type 設定等等問題,最後我用的是 Apache httpd。
  5. 前述設定第三行要與 MyNamespaceParser 的 Namespace 值匹配。

星期五, 9月 13, 2013

Migrate Spring *.properties to Spring.NET (version 2.0.0-M2)

假設原來的 *.properties 內容這麼簡單:
  • key1=value1
  • key2=${key1}value2
要搬到 Spring.NET,除了不認 java.util.Properties 這個因素,必須改成 xml 之外,還有很多文件上都找不到的怪招。總之先看答案(propertiesHolder.xml):
  • <?xml version="1.0" encoding="utf-8"?>
  • <configuration>
  • <spring-config>
  • <add key="key1" value="value1" />
  • <add key="key2" value="${key1}value2" />
  • </spring-config>
  • </configuration>
另外,要指到這個檔案必須藉由以下組態設定:
  • <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer">
  • <property name="location" value="file://~/propertiesHolder.xml" />
  • </object>
至於節點為什麼一定要叫 spring-config?為什麼結構一定要這麼大?暫時保留,湊出這個答案已經浪費太多時間,無力再找原因了。

星期二, 9月 10, 2013

signtool.exe error: 0x800703f0

在使用憑證卡簽署元件時,我曾多次遇到這個問題,看來是隨機且無奈的,不過最近總算比較清楚。由於微軟有個「Windows Root Certificate Program」,在計畫名單上的根憑證都是 On-Demand 自動安裝,但安裝的速度我們無法控制,因此很有可能在首次使用某種憑證時一直簽不過,但下次莫名其妙地又好了。如果要完全避免這個問題,可以事先手動安裝
  • 信任根憑證
  • 中繼憑證
  • 個人憑證(簽署用憑證裝在此)

星期二, 9月 03, 2013

Common Logging for .NET @ Visual Studio

首先要更正我在前一篇文章的錯誤:Spring.NET 只需要 Common Logging for .NET(而且是較舊的版本),並沒有相依於 log4net,所以在使用 Spring.NET Framework 的開發中,如果不希望額外增加參考,可以藉由以下幾項達成:
  • <configuration>
      <configSections>
        <sectionGroup name="common">
          <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
        </sectionGroup>
      </configSections>
      <common>
        <logging>
          <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
            <arg key="level" value="INFO" />
          </factoryAdapter>
        </logging>
      </common>
  • private static Common.Logging.ILog log = Common.Logging.LogManager.GetLogger(typeof(MyClass));
  • log.Info("myInfo");
如此一來,記錄會出現在 Visual Studio 的 Output 視窗。