2012年3月12日 星期一

[xml]遇到escape也無用,才知道 CDATA 的好

我以前非常的直觀,覺得只要有 escape 特殊符號,就可以解決任何事,
(http://codebeta.blogspot.com/2010/09/xmlescape.html)
直到我遇到一個情況:
在 WebService (http + soap) 裡,內容是xml,裡面又一層 xml。
當微軟的元件(我只用過微軟的開發工具,但我想其他的工具也許也一樣),
把 soap 內容(第一層的 xml)轉回來的時候,也裡面那層的也一起轉換了。
所以內容的 DOM 結構跟預期的不同。

<a><b></b><c>&lt;c1&gt;abcd&lt;/c1&gt;</c><d></d></a>  <!--本來的樣子 c 的內容是個 c1 element 已跳脫—>

<a><b></b><c><c1>abcd</c1></c><d></d></a>  <!--實際的樣子 導致取 c 內容(innerText)不如預期的 &lt;c1&gt;abcd&lt;/c1&gt; 影響後續程式動作-->

這時,應該就是使用 CDATA 來標示內容為文字,避免錯誤。
像這樣:

<a><b></b><c><![CDATA[<c1>abcd</c1>]]></c><d></d></a>

2012年3月7日 星期三

[mongodb]mongod.exe run as service (像服務一樣執行 mongod.exe)

mongodb 最簡單的執行方法,就是直接執行 mongod.exe (在 windows)
如此一來就會在 27017 這個 tcp port 接聽 client 的要求。

若有需求是如同服務一樣,一開機就等著接聽,當然有種方式是放個捷徑在啟動。
但一般,我們還是希望能跟 windows 的服務一樣。
mongod.exe 自己就有辦法做到安裝成服務。

最少最少的指令是

mongod --logpath d:\mongo\logs\logfilename.log 
 --dbpath d:\mongo\data --install

--logpath, --dbpath 都很直白,就不解釋。
--install 就是安裝成服務的意思。與服務有關參數還有:
--remove 移除服務。
--reinstall 重新安裝成服務。


其他較進階的指令,就請看參考
http://www.mongodb.org/display/DOCS/Windows+Service


真的是很貼心啊。

2012年3月3日 星期六

[程式]Object-C

http://www.ithome.com.tw/itadm/article.php?c=71529

因為 Apple 最近的成功,讓這個語言的使用者多了起來。