跳到主要內容

發表文章

XEN on CentOS

最近因為我申請的開發機器下來了,就玩玩之前沒測完的XEN,先說一下我機器的配備應該算是很高檔. CPU---QC * 2 ---共8核 RAM---12GB 硬碟----3顆1T 有三台(呵呵很酷喔而且還只拿來開發) 回到正題,上次XEN少了Window,這次給他補足了順便紀錄一下遇到的一些問題 1.要在XEN安裝Window系列,Intel CPU要具備VT,AMD要具備AMD-V如何確認呢 cat /proc/cpuinfo | grep flags 看看有沒有VMX的項目,有就可以安裝. p.s這裡還要注意一點若是CPU有註明有VT或是AMD-V可是下該指令沒有的話就請確認核心有沒有開啟(SuSe 11.1就沒有) 2.強烈建議使用CentOS5.2進行,OpenSuSe我分別裝了10.1 - 10.3及11統統不行在XEN裡裝Window,CentOS5.2很順。 3.網路設定問題 a.希望外部可以直接連到虛擬機器(domainU),安裝CentOS時先不要在實體網路卡上設定任何IP,但實體線路可以插上去,然後再安裝CentOS,起動虛擬機器管理員(是圖形介面),連接並建立一新的DomainU,依據所需進行設定,到了Host network設定時請選擇第二項shard physical network,就一路安裝下去囉..安裝好DomainU的作業環境,然後再設定網路卡的IP(DomainU的)應該就可以囉. ※這裡可以把DomainO(CentOS)的網路卡當做一個HUB來看就不難理解他不用設IP了,可是不要問我原因我也不知道 b.希望走DHCP方式同a步驟,到Host network請選擇第一項virtual network後面步驟就一樣了,可是要外部連到這台機器時,則要在DominO(CentOS)上利用iptables進行囉 4.可以使用virt-clone進行複製好用喔

IReport中的條碼類別BcImage

最近有一個繳費單的專案,需要列印條碼,因為IReport本身就有提供列印條碼的功能,所以就用IReport設計繳費單然後再用Jasperreport API寫批次程式去產生PDF,資料量大概3000多筆(頁)拆成幾個檔案,可是就發生了一個問題居然發生部分繳費單的條碼有問題,看了一下程式研判是Race Condition因為程式採用的是多執行緒,若是依序個別產生是不會有問題,但是同時執行的時候就會亂掉,而且都錯在條碼,令我覺得很奇怪,後來我查了一下發現it.businesslogic.ireport.barcode.BcImage 類別我猜是這裡的問題,就先加上synchronized重新編譯在去執行,嘿嘿條碼就對了,做了一下壓測也正常,程式碼如下,不過這樣事不是對了可能還要仔細查查看。 public class BcImage { private static net.sourceforge.barbecue.Barcode bc = null; public synchronized static net.sourceforge.barbecue.Barcode getBarcode() { return bc; } public synchronized static BufferedImage getBarcodeImage(int type, Object aText, boolean showText, boolean checkSum) { return getBarcodeImage(type, aText, showText, checkSum,"",0,0); } public synchronized static BufferedImage getBarcodeImage(int type, Object aText, boolean showText, boolean checkSum, String applicationIdentifier, int width, int height) { // 2of7, 3of9, Bookland, Codabar, Code128,...

IReport透過寫程式自訂功能

IReport是透過SQL進行資料的取得,所以很多邏輯都需要靠SQL來進行,有時候只是要進行一個資料的對應大部分都是透過join table進行,或是需要另一資料來源時就需要特別客製化應用程式等等,假如IReport可以呼叫Java程式那就非常之完美了,舉個例子說 原本在IReport中的SQL為 select a.name,b.className,c.countryName,a.telephone from student a ,class b,country c where a.id = b.id and a.id=c.id 若是b 跟 c不再同一個資料來源怎麼辦? 步驟 1.寫一隻Java程式可以連到其他資料來源,並把它包成jar檔案 2.將該jar檔案放在IReport的lib下 3.透過SQL去呼叫如 select name,test.ClassUtils.getClassName(id),test.CountryUtils.getCountry(countryId),test.TranUtils.translate(telephone) from student 這樣就可以了若是在搭配scriptlet方式進行那就真的很Power. P.S 應用程式使用時也只要把jar放在classpath也可以喔~~

玩玩DES及RSA

最近有個需求,就是希望能把儲存在文字檔中的密碼,增加一些安全機制,想說之前(參考JavaWorld@TW的一些資料)有玩過一下下DES及RSA說不定可以試試看,流程大概先產生一把KEY(DES)或是一對KEY(RSA),使用KEY針對資料進行加密,加過密的文字有可能會是非法字元,所以用BASE64進行encode或是decode,應用程式要使用加個密的資料,需要兩個要素第一個就是key,另外就是API,缺一不可(盡量防止Developer). DES部分 DESGenerator import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import entiebank.utils.Utils; public class DESKeyGenerator { public static void genDESKey(String keyFileName,String alg){ try { KeyGenerator kpg = KeyGenerator.getInstance(alg); //TODO Default alg maybe can change //SecureRandom random = SecureRandom.getInstance("SHA1PRNG","SU...

IReport use stored procedure

很簡單 {call stored_procedure("param1" , "param2"...) } 這樣就可以了,會以回傳ResultSet的方式進行,下一步則可以看到回傳的欄位

JMeter設定JDBC連線測試

1.先將欲測試的JDBC驅動程式放在Jmeter/lib下 2.啟動Jmeter,滑鼠右鍵於【測試計畫】新增【執行緒群組】新增【設定元素】選擇【JDBC連線設定】相關設定說明如下 名稱:連線設定名稱 變數名稱:為該JDBC連線的變數,請以英數字為主 資料庫URL設定:欲連接的資料庫及JDBC的URL設定 JDBC驅動程式:欲測試的JDBC驅動程式的Driver名稱 使用者:資料庫連線使用者 密碼:上述使用者之密碼 其他設定可採用預設質或是依據所需進行設定 3.於【執行緒群組】新增【JDBC要求】相關設定如下 名稱:JDBC要求名稱 變數名稱:請使用JDBC連線設定的變數名稱 Query Type:請依所需使用囉 查詢:請輸入需要測試的SQL 4.於【執行緒群組】中【接聽】新增所需要看到的測試結果,例如檢視結果、檢視表格式結果等等 5.先測試相關設定有無問題,於【執行】中執行【開始】,在檢視結果中看看是否都是綠燈號誌 6.再依據所需於【執行緒群組】中設定測試數值再執行

SEQUOIA初體驗(一)

1.下載 SEQUOIA ( http://sequoia.continuent.org/HomePage ),有幾個版本可以下載 bin-install 的版本。 2. 安裝步驟如圖。 3. 安裝後先將安裝後的 SEQUOIA 路徑中 config 資料夾的 sequencer.xml 複製到 driver 資料夾(因為有個 case 需要使用到 JGroup 的 API 不過似乎該 API 有 IP 為寫死的)。 4. 複製所需的資料來源的 JDBC Driver 至 driver 資料夾,例如 MSSQL 的 jtds.jar 等等 5. 先透過該 API 提供的 demo 進行測試 5.1 執行 demo 資料夾中的 demo-raidb1.bat 啟動 HSQLDB ,分別啟動 9001 、 9002 及 9003 port 的 HSQLDB ( netstat -na ) 5.2 將 config\controller 資料夾中 controller.xml 換成 controller-raidb1.xml ,再執行 bin\controller.bat 5.3 執行 bin\console.bat ,若是有出現 localhost:1090> 表示相關設定無誤。可以試試幾個指令操作看看 admin myDB ,選擇要操作的 VirtualDatabase 輸入使用者( admin )及密碼(無) show backend * ,顯示目前所有的 backend initialize localhost1 ( backend 名稱) force enable * ,啟動全部的 backend ※要先要 initialize backend 後方可 enable 6. 進行研究 RAIDb-0 模式(同一資料來源)( Full partitioning of database ) l 同一個資料來源( MSSQL ),兩個資料庫(database1及database2)設定檔如下 l 直接執行 bin\controller.bat (請修改 controller.xml 的對應) l 啟動 console.bat 進行確認 admin myDB ,選擇 VirtualDatabase admin ,使用者 無,密碼 s...