2012年4月26日 星期四
2012年4月23日 星期一
在 UNIX 環境執行 Java awt 圖形介面要設定 " java.awt.headless = true" 參數
於 web container 系統啟動加入下列這一行參數:
-Djava.awt.headless=true
注意:
Windows 平台不會有此問題,但於 UNIX 作業環境若未有 x window 的圖形函式,就會發生 awt 無法產生圖檔的問題。(例如:即時產生浮水印圖檔)
以下資訊來源為:http://mypaper.pchome.com.tw/softlive/post/1311805933
只要在JVM 的引數列加上:java.awt.headless = true 就可以解決了,設成true
代表避免 java 2d 去抓OS上的圖形環境相關的資訊。
因為java 的image api 會去call在unix 上面的X libs得到一些圖形上的
資訊(font 、scaling data ) ,當作業系統沒有相關的資訊就會發生這類的錯誤。
只要跟圖形化介面的東西都跟這個有關。
以tomcat為例,在catalina.sh(Windows為catalina.bat)上加下面這行,
JAVA_OPTS="$JAVA_OPTS "-Djava.awt.headless=true
不過因為Windows上通常不會發生這個問題,所以必須特別注意。
2011年12月14日 星期三
dom4j不驗證DTD的方式
SAXReader reader = new SAXReader();
// 設定此 feature 才不會載入 XML 檔中所設定的 DTD
// 檔案,否則會依據XML中設定自動載入DTD檔(若DTD檔案路徑錯誤則發生 Exception)
String feature = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
reader.setFeature(feature, false);// 以此設定將不會讀取DTD,也不驗證(在reader.setValidation(false);條件下 )
//reader.setFeature(feature, true);
// 是否依據載入的 DTD 進行驗證,預設為 false
reader.setValidation(false); // 需配合 reader.setFeature(feature, false); 才不會作DTD驗證
//reader.setValidation(true); // 強制進行DTD驗證
// 設定此 feature 才不會載入 XML 檔中所設定的 DTD
// 檔案,否則會依據XML中設定自動載入DTD檔(若DTD檔案路徑錯誤則發生 Exception)
String feature = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
reader.setFeature(feature, false);// 以此設定將不會讀取DTD,也不驗證(在reader.setValidation(false);條件下 )
//reader.setFeature(feature, true);
// 是否依據載入的 DTD 進行驗證,預設為 false
reader.setValidation(false); // 需配合 reader.setFeature(feature, false); 才不會作DTD驗證
//reader.setValidation(true); // 強制進行DTD驗證
2010年7月15日 星期四
AIX 解壓縮 .tar.gz
step1: gunzip -d filename.tar.gz
step2: tar -xvf filename.tar
參照: http://blog.roodo.com/lunabsb/archives/3940945.html
在AIX要怎麼解壓縮 :
step2: tar -xvf filename.tar
參照: http://blog.roodo.com/lunabsb/archives/3940945.html
在AIX要怎麼解壓縮 :
- .tar.Z file format
- 壓縮
- # compress filename.tar
- 解壓
- # zcat filename.tar.Z | tar -xvf -
- 壓縮
- .tar.gz file format
- 壓 縮
- # tar cvf - folder | gzip > filename.tar.gz
- 解 壓
- # gunzip -c filename.tar.gz | tar -xvf -
- 壓 縮
- .gz file format (註1)
- 解壓
- # gzip -d filename.gz
- 壓縮
- # gzip -v filename
- 解壓
- .tgz file format
- 解壓
- # gzip -d filename.tgz | tar -xvf -
- 解壓
- .zip file format (註2)
- 解壓
- # unzip filename.zip
- 解壓
vi 指令
參照:http://yowlab.shps.kh.edu.tw/myfiles/documents/vi_command.html
vi指令說明(完整版)
.vi 的操作模式
==============
vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)
。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為
指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入
模式。
.輸入模式
=========
如何進入輸入模式
a (append) 由游標之後加入資料。
A 由該行之末加入資料。
i (insert) 由游標之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行於該行之下供輸入資料之用。
O 新增一行於該行之上供輸入資料之用。
如何離開輸入模式
《ESC》 結束輸入模式。
.指令模式
=========
游標之移動
h 向左移一個字元。
j 向上移一個字元。
k 向下移一個字元。
l 向右移一個字元。
0 移至該行之首
$ 移至該行之末。
^ 移至該行的第一個字元處。
H 移至視窗的第一列。
M 移至視窗的中間那列。
L 移至視窗的最後一列。
G 移至該檔案的最後一列。
+ 移至下一列的第一個字元處。
- 移至上一列的第一個字元處。
( 移至該句之首。 (註一)
) 移至該句之末。
{ 移至該段落之首。 (註二)
} 移至該段落之末。
nG 移至該檔案的第 n 列。
n+ 移至游標所在位置之後的第 n 列。
n- 移至游標所在位置之前的第 n 列。
<Ctrl><g> 會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標
所在行號佔總行號之百分比。
註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
註二:段落(paragraph)在vi中是指以空白行隔開的文字。
.視窗的移動
===========
<Ctrl><f> 視窗往下捲一頁。
<Ctrl><b> 視窗往上捲一頁。
<Ctrl><d> 視窗往下捲半頁。
<Ctrl><u> 視窗往上捲半頁。
<Ctrl><e> 視窗往下捲一行。
<Ctrl><y> 視窗往上捲一行。
.刪除、複製及修改指令介紹 (此單元較少使用)
=========================
d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
Operator + Scope = command
(運算子) (範圍)
運算子:
d 刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
y 將資料(字組、行列、句子或段落)複製到緩衝區。
p 放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
料放置於游標所在位置之行列下。
c 修改(change)指令,類似delete與insert的組和。刪除一個字組、句
子等之資料,並插入新鍵資料。
範圍:
e 由游標所在位置至該字串的最後一個字元。
w 由游標所在位置至下一個字串的第一個字元。
b 由游標所在位置至前一個字串的第一個字元。
$ 由游標所在位置至該行的最後一個字元。
0 由游標所在位置至該行的第一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最後一個字元。
} 由游標所在位置至該段落的第一個字元。
整行動作
dd 刪除整行。
D 以行為單位,刪除游標後之所有字元。
cc 修改整行的內容。
yy yank整行,使游標所在該行複製到記憶體緩衝區。
.刪除與修改
===========
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
dd 刪除游標所在該行。
r 用接於此指令之後的字元取代(replace)游標所在字元。
如: ra 將游標所在字元以 a 取代之。
R 進入取代狀態,直到《ESC》為止。
s 刪除游標所在之字元,並進入輸入模式直到《ESC》。
S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
.搬移與複製
==========
利用 delete 及 put 指令可完成資料搬移之目的。
利用 yank 及 put 指令可完成資料複製之目的。
yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
可將緩衝區內的資料複製到螢幕上。
例:
搬移一行 ‧在該行執行 dd
‧游標移至目的地
‧執行 p
複製一行 ‧在該行執行 yy
‧游標移至目的地
‧執行 p
.指令重複
=========
在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
次。
例:
刪除10行 ‧10dd
複製10行 ‧10yy
‧游標移至目的地
‧p
指標往下移10行 ‧10j
.取消前一動作(Undo)
===================
即復原執行上一指令前的內容。
u 恢復最後一個指令之前的結果。
U 恢復游標該行之所有改變。
.搜尋
=====
在vi中可搜尋某一字串,使游標移至該處。
/字串 往游標之後尋找該字串。
?字串 往游標之前尋找該字串。
n 往下繼續尋找下一個相同的字串。
N 往上繼續尋找下一個相同的字串。
.資料的連接
===========
J 句子的連接。將游標所在之下一行連接至游標該行的後面。
若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
(可利用 a、i等指令)再按《Enter》即可。
.環境的設定
===========
:set nu 設定資料的行號。
:set nonu 取消行號設定。
:set ai 自動內縮。
:set noai 取消自動內縮。
自動內縮(automatic indentation)
在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
動內縮的功能,用下例解釋之:
‧vi test
‧(進入編輯視窗後)
this is the test for auto indent
《Tab》start indent ← :set ai (設自動內縮)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自動內縮)
the end of auto indent.
‧註:<Ctrl><d> 可刪除《Tab》字元。
.ex指令
=======
讀寫資料
:w 將緩衝區的資料寫入磁碟中。
:10,20w test 將第10行至第20行的資料寫入test檔案。
:10,20w>>test 將第10行至第20行的資料加在test檔案之後。
:r test 將test檔案的資料讀入編輯緩衝區的最後。
刪除、複製及搬移
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩衝區。
:10,20co30 將第10行至第20行的資料複製至第30行之後。
:10,20mo30 將第10行至第20行的資料搬移至第30行之後。
字串搜尋與取代
s(substitute)指令可搜尋某行列範圍。
g(global)指令則可搜尋整個編輯緩衝區的資料。
s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
:1,$s/old/new/g 將檔案中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
:%s/old/new/g 將編輯緩衝區中所有的『old』改成『new』。
.恢復編輯時被中斷的檔案
=======================
在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
的檔案內容。
%vi -r filename
.編輯多個檔案
=============
vi亦提供同時編輯多個檔案的功能,方法如下:
%vi file1 file2 ..
當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
再利用 『:n』載入下一個檔案。
vi指令說明(完整版)
.vi 的操作模式
==============
vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)
。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為
指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入
模式。
.輸入模式
=========
如何進入輸入模式
a (append) 由游標之後加入資料。
A 由該行之末加入資料。
i (insert) 由游標之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行於該行之下供輸入資料之用。
O 新增一行於該行之上供輸入資料之用。
如何離開輸入模式
《ESC》 結束輸入模式。
.指令模式
=========
游標之移動
h 向左移一個字元。
j 向上移一個字元。
k 向下移一個字元。
l 向右移一個字元。
0 移至該行之首
$ 移至該行之末。
^ 移至該行的第一個字元處。
H 移至視窗的第一列。
M 移至視窗的中間那列。
L 移至視窗的最後一列。
G 移至該檔案的最後一列。
+ 移至下一列的第一個字元處。
- 移至上一列的第一個字元處。
( 移至該句之首。 (註一)
) 移至該句之末。
{ 移至該段落之首。 (註二)
} 移至該段落之末。
nG 移至該檔案的第 n 列。
n+ 移至游標所在位置之後的第 n 列。
n- 移至游標所在位置之前的第 n 列。
<Ctrl><g> 會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標
所在行號佔總行號之百分比。
註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
註二:段落(paragraph)在vi中是指以空白行隔開的文字。
.視窗的移動
===========
<Ctrl><f> 視窗往下捲一頁。
<Ctrl><b> 視窗往上捲一頁。
<Ctrl><d> 視窗往下捲半頁。
<Ctrl><u> 視窗往上捲半頁。
<Ctrl><e> 視窗往下捲一行。
<Ctrl><y> 視窗往上捲一行。
.刪除、複製及修改指令介紹 (此單元較少使用)
=========================
d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
Operator + Scope = command
(運算子) (範圍)
運算子:
d 刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
y 將資料(字組、行列、句子或段落)複製到緩衝區。
p 放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
料放置於游標所在位置之行列下。
c 修改(change)指令,類似delete與insert的組和。刪除一個字組、句
子等之資料,並插入新鍵資料。
範圍:
e 由游標所在位置至該字串的最後一個字元。
w 由游標所在位置至下一個字串的第一個字元。
b 由游標所在位置至前一個字串的第一個字元。
$ 由游標所在位置至該行的最後一個字元。
0 由游標所在位置至該行的第一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最後一個字元。
} 由游標所在位置至該段落的第一個字元。
整行動作
dd 刪除整行。
D 以行為單位,刪除游標後之所有字元。
cc 修改整行的內容。
yy yank整行,使游標所在該行複製到記憶體緩衝區。
.刪除與修改
===========
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
dd 刪除游標所在該行。
r 用接於此指令之後的字元取代(replace)游標所在字元。
如: ra 將游標所在字元以 a 取代之。
R 進入取代狀態,直到《ESC》為止。
s 刪除游標所在之字元,並進入輸入模式直到《ESC》。
S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
.搬移與複製
==========
利用 delete 及 put 指令可完成資料搬移之目的。
利用 yank 及 put 指令可完成資料複製之目的。
yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
可將緩衝區內的資料複製到螢幕上。
例:
搬移一行 ‧在該行執行 dd
‧游標移至目的地
‧執行 p
複製一行 ‧在該行執行 yy
‧游標移至目的地
‧執行 p
.指令重複
=========
在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
次。
例:
刪除10行 ‧10dd
複製10行 ‧10yy
‧游標移至目的地
‧p
指標往下移10行 ‧10j
.取消前一動作(Undo)
===================
即復原執行上一指令前的內容。
u 恢復最後一個指令之前的結果。
U 恢復游標該行之所有改變。
.搜尋
=====
在vi中可搜尋某一字串,使游標移至該處。
/字串 往游標之後尋找該字串。
?字串 往游標之前尋找該字串。
n 往下繼續尋找下一個相同的字串。
N 往上繼續尋找下一個相同的字串。
.資料的連接
===========
J 句子的連接。將游標所在之下一行連接至游標該行的後面。
若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
(可利用 a、i等指令)再按《Enter》即可。
.環境的設定
===========
:set nu 設定資料的行號。
:set nonu 取消行號設定。
:set ai 自動內縮。
:set noai 取消自動內縮。
自動內縮(automatic indentation)
在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
動內縮的功能,用下例解釋之:
‧vi test
‧(進入編輯視窗後)
this is the test for auto indent
《Tab》start indent ← :set ai (設自動內縮)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自動內縮)
the end of auto indent.
‧註:<Ctrl><d> 可刪除《Tab》字元。
.ex指令
=======
讀寫資料
:w 將緩衝區的資料寫入磁碟中。
:10,20w test 將第10行至第20行的資料寫入test檔案。
:10,20w>>test 將第10行至第20行的資料加在test檔案之後。
:r test 將test檔案的資料讀入編輯緩衝區的最後。
刪除、複製及搬移
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩衝區。
:10,20co30 將第10行至第20行的資料複製至第30行之後。
:10,20mo30 將第10行至第20行的資料搬移至第30行之後。
字串搜尋與取代
s(substitute)指令可搜尋某行列範圍。
g(global)指令則可搜尋整個編輯緩衝區的資料。
s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
:1,$s/old/new/g 將檔案中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
:%s/old/new/g 將編輯緩衝區中所有的『old』改成『new』。
.恢復編輯時被中斷的檔案
=======================
在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
的檔案內容。
%vi -r filename
.編輯多個檔案
=============
vi亦提供同時編輯多個檔案的功能,方法如下:
%vi file1 file2 ..
當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
再利用 『:n』載入下一個檔案。
2010年5月19日 星期三
MSN 9 多重登入在 Windows 7 的設定
32位元
執行"regedit" 到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Live\Messenger,然後在右邊空白處點右鍵,新增 DWORD值 名稱: MultipleInstances,將其數值設為1 即可!
64位元
執行"regedit" 到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Live\Messenger,然後在右邊空白處點右鍵,新增 DWORD值 名稱: MultipleInstances,將其數值設為1 即可!
執行"regedit" 到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Live\Messenger,然後在右邊空白處點右鍵,新增 DWORD值 名稱: MultipleInstances,將其數值設為1 即可!
64位元
執行"regedit" 到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Live\Messenger,然後在右邊空白處點右鍵,新增 DWORD值 名稱: MultipleInstances,將其數值設為1 即可!
2010年3月3日 星期三
利用 Servlet 下載檔案儲存(不以應用程式開啟)
//於 Servlet 設定 ContentType 與 Header,讓瀏覽器知道不要以應用程式開啟 // Set the headers.
res.setContentType("application/x-download");
res.setHeader("Content-Disposition", "attachment; filename=" + filename);
// Send the file.
OutputStream out = res.getOutputStream( );
returnFile(filename, out); //returnFile 實作內容
public static void returnFile(String filename, OutputStream out) throws FileNotFoundException, IOException { InputStream in = null; try { in = new BufferedInputStream(new FileInputStream(filename)); byte[ ] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { out.write(buf, 0, bytesRead); } } finally { if (in != null) in.close( ); } }
參考網址:http://onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=2http://onjava.com/pub/a/onjava/excerpt/jebp_3/index3.html
2009年12月9日 星期三
JBoss bind address
JBoss 預設 bind address 是 localhost 僅能由本機存取,若要修改可以讓外界透過 server ip連線,需修改 bind address 設定,設定方式有:
1.透過 windows 捷徑或直接啟動 JBoss 的 run.bat,加入 "-b 0.0.0.0" 執行參數。
例. run.bat -b 0.0.0.0
2.修改 JBoss 的 server.xml,將 "${jboss.bind.address}" 變數均修改為 "0.0.0.0"。
例. 修改 $JBossAS\server\default\deploy\jboss-web.deployer\ 目錄內的 server.xml。
3.由 eclipse啟動 JBoss 修改,於 Program arguments "-b localhost" 之後加入 "-b 0.0.0.0"。
注意:因原本預設的 "-b localhost" 無法更動修改,所以直接加在其後(暫時不知原因,而於下方的 VM arguments 設定 "-Djboss.bind.address=0.0.0.0"則是無作用,猜測應該是 Program arguments 權限 大於 VM arguments 所致)。

2016.12.19 新增說明:
若為 JBoss 4.2.3 版本,可修改 %JBOSS_HOME%\server\default\deploy\jboss-web.deployer\server.xml 中關於 address="${jboss.bind.address}" 的設定值,改為『0.0.0.0』。
1.透過 windows 捷徑或直接啟動 JBoss 的 run.bat,加入 "-b 0.0.0.0" 執行參數。
例. run.bat -b 0.0.0.0
2.修改 JBoss 的 server.xml,將 "${jboss.bind.address}" 變數均修改為 "0.0.0.0"。
例. 修改 $JBossAS\server\default\deploy\jboss-web.deployer\ 目錄內的 server.xml。
3.由 eclipse啟動 JBoss 修改,於 Program arguments "-b localhost" 之後加入 "-b 0.0.0.0"。
注意:因原本預設的 "-b localhost" 無法更動修改,所以直接加在其後(暫時不知原因,而於下方的 VM arguments 設定 "-Djboss.bind.address=0.0.0.0"則是無作用,猜測應該是 Program arguments 權限 大於 VM arguments 所致)。

2016.12.19 新增說明:
若為 JBoss 4.2.3 版本,可修改 %JBOSS_HOME%\server\default\deploy\jboss-web.deployer\server.xml 中關於 address="${jboss.bind.address}" 的設定值,改為『0.0.0.0』。
訂閱:
文章 (Atom)
curl 常用語法
參考: https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/ https://www.itread01.com/p/190409.html 應用範例: curl -X POST -i -H ...
-
step1: gunzip -d filename.tar.gz step2: tar -xvf filename.tar 參照: http://blog.roodo.com/lunabsb/archives/3940945.html 在AIX要怎麼解壓縮 : ....
-
於 web container 系統啟動加入下列這一行參數: -Djava.awt.headless=true 注意: Windows 平台不會有此問題,但於 UNIX 作業環境若未有 x window 的圖形函式,就會發生 awt 無法產生圖檔的問題。(例如:即時...
