2021年10月18日 星期一

curl 常用語法

 

參考:

https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/

https://www.itread01.com/p/190409.html


應用範例:

curl -X POST -i -H "Content-Type: application/json;charset=utf-8" -d '{"client_id": "test","client_secret": "test"}' "https://localhost:8080/auth"


1.未指定任何參數,預設使用 GET 連線:

curl http://localhost:8080/test.jsp

2.指定使用 POST:

curl -X POST  http://localhost:8080/test.jsp

3.印出 Response Status 資訊:

curl -X POST -i http://localhost:8080/test.jsp

4.指定 Request Header:

curl -H "Content-Type: application/json;charset=utf-8"

5.指定 RequestBody為 JSON(注意JSON內容若使用雙引號,則完成JSON要使用單引號框住):

curl -X POST  -H "Content-Type: application/json;charset=utf-8" -d '{"client_id": "test","client_secret": "test"}' 

6.指定請求RequestBody來源為檔案(檔案路徑前加@):

curl -X POST  -H "Content-Type: application/json;charset=utf-8" -d '@reqt-data.json'

7..指定 HTTP POST  FROM Data:

curl -X POST --data "email=test@example.com&press=%20OK%20"  http://www.example.com/form.php

8.指定使用 cookie:

curl --cookie "name=Jack" http://www.example.com

9.指定 client 公鑰憑證路徑及私鑰 key檔案(應用於 two-way SSL)

curl -E ./client.crt --key client-private.key 'https://test-site/page'

10.連線 HTTPS 並預設信任

curl https://a-site.com/page --insecure





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驗證

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要怎麼解壓縮 :
  • .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
註1 : gzip 在壓縮完後,會建立一個 .gz 的檔,並清除原始未壓縮的檔。反之,解壓縮的時候,則是把 .gz 檔清除,只留解開後的檔。

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』載入下一個檔案。

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 即可!

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=2
http://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』。




curl 常用語法

  參考: https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/ https://www.itread01.com/p/190409.html 應用範例: curl -X POST -i -H ...