2009年12月17日 星期四

Spring單元測試一點筆記

前一陣子去參加OSSF的Annotation講座
裡面有提到JUnit4作單元測試

下面一個參考網站
http://liyiye.javaeye.com/blog/443239

以往作單元測試的時候都必須去繼承TestCase類別
這無疑阻礙了測試程式的設計,但是使用Annotation為基礎作Unit test的話
不只函式名稱不用被綁死,在設計上也更簡單


2009年12月14日 星期一

[Java]Java呼叫C/C++ DLL

接續上一篇,這一陣子要寫可以動態連結的程式,其實我最先開始想到的就是用windows的DLL(Dynamic-link library )或是Linux的SO(Shared Object)

一來這樣速度快二來這樣子也有個更新的彈性,只是這樣一來可能就無法實現跨平台的優點。
在Java有提供JNI來實驗呼叫c\c++的dll功能

放幾個我參考的網站

一般來說會先寫個.java檔去產生Header。假設今天我一隻程式叫Hello.java
那我可以寫一個批次檔(.bat)去幫我產生要用的header

makeHeader.bat

javac Hello.java
javah -jni Hello
@pause

其中javah這個指令就是用來產生JNI Header,之後產生一個標頭檔叫Hello.h
寫一個.c或是.cpp去實作他產生DLL之後就可以給Java呼叫
不過老實說這樣很不方便,萬一Hello.java要增加新函式就會變得很不方便
因此我會比較建議用JNA+CDT的方式去做,如果要用Windows+Eclipse去開發C++的話,有兩個套件要先裝起來,一個是MinGW,另一個則是CDT


[Java]URLClassLoader運用上的一點筆記

這一陣子接了一個case必須要撈一些網站的資料
由於這是必須多人maintain 的一個系統,要防止對方網頁改版而撈不到資料
因此我想到了Java的dynamic binding功能

在Java原生支援dynamic binding,而他主要又分成Implicit(隱式)explicit(顯式)兩大類

參考資料:http://www.yuloo.com/news/2008-08-27/112873.html 


2009年11月3日 星期二

PHP:mail函式 標題出現亂碼問題

今天受託替人寫自動回信的功能
因為功能很小,所以我很自然使用mail()函式去做
但是卻出現了標題有全形符號變成亂碼的問題,像是『』,≠ 等等

後來找的一些資料
http://blog.roodo.com/rocksaying/archives/2998451.html
http://blog.roodo.com/rocksaying/archives/2950655.html

原來這問題存在已久了,mail()函式之下還有個mb_send_mail()函式,mail()函式裡面會用到mb_send_mail()進行傳信的動作,所以我只要將原先的寄信程式
mail("del680202@gmail.com",$title,$count,$option);


修改成用mb_send_mail()的方式去自定編碼寄送就可以解決問題

mb_internal_encoding("UTF-8"); \\定義編碼方式
mb_send_mail("del680202@gmail.com",$title,$count,$option);


不過這種函式處裡太底層了點,所以還是用別人寫好的套件像是PHPMailer來進行工作或許會是比較好的選擇