Curl 上傳檔案

Curl 一種文字介面的 Web Client,有 shell 的版本跟 lib 的版本,被廣泛應用在很多語言的 lib 上。

官方網站:http://curl.haxx.se

有原始碼、文件等等資料可以瀏覽跟下載。

最簡單的使用方式 例如:

$ curl http://mlwmlw.org

他就會回傳這個網站的 html 直接輸出到 stdout,甚至還能 POST DATA(FILE)
在 7.18 以後支援 –data-urlencode 這個參數,可以傳檔案並且指定 post name。

$ curl http://mlwmlw.org --data-urlencode file@httpd.conf

他原本的用法就是 @檔案名稱,就能指定要上傳的檔案了,現在加上 at 前面可以指定 POST 的 field name。

不然一般情況就用 -d @file.txt 就可以了

如果要搭配一些傳輸的時間資訊,可以加上 write-out 的參數,

$ curl -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n'
   -o /dev/null --data-urlencode file@test.txt -s http://mlwmlw.org

如果要測試一些 rest 的 api 可以指定 method

curl -X POST http://mlwmlw.org -d "name=1&test=2"
curl -X GET http://mlwmlw.org
curl -X DELETE http://mlwmlw.org
curl -X PUT http://mlwmlw.org

在 windows 輸出空白可以用

$ curl.exe -w '...' -o NUL ...

參考資源:

printf and write

  一般在使用 printf 都會直接將結果印出在螢幕上,都不會發生問題,也不會發現其實 printf 的行為背後其實有一個緩衝區在紀錄。除非遇到 \n 或 程式結束,或者有其他東西要輸出,否則不會自動 flush 緩衝區,要強制清空緩衝區可以使用 fflush(stdout) 。

而 write(1 /*stdout*/, buffer ,size) 則可以直接將字串印到 stdout 中,不經由緩衝區處理。

  在一般的情況下還是 printf 效能會比較好,在多執行緒或多行程的情況下也比較不會有不合乎預期的情況發生。例如 兩個行程同時輸出 output 變成  ooututppuutt 之類的。

  會發生這種現象通常是在無窮迴圈的程式,由於程式沒有結束,又沒有輸出一些換行符號,造成輸出一直卡在緩衝區中。

#include <stdio.h>
int main()
{
  while(1)
  {
    printf("hello");// printf("hello\n")
    sleep(1);
  }
}

參考資料:

engineer

賺錢的軟體,是解決人們真正的需求。

真正的需求埋藏在內心深處。

當一個有品味的人,就能發掘出具有品味的需求。

人們喜歡自己有品味,就算是表面的假象也好。

培養自己的品味,就會成為一個 enginney…

今天看到一篇文章

王者之聲與左腦右腦,這部電影我也有看過,這篇文章討論了一下關於裡面的治療方式,是跟大腦運作的方式有些關係的,頗有趣的。

裡面有談到一個例子,就是我上面文章想要表達的感受~

頂尖攝影師說:『我每年都花許多錢在世界各地旅遊,看過各個時代偉大的藝術作品,嚐過世界各地的食物,和各地不同人相處,所以你花錢買的不是這幾張相片,而是我這些年來對這些事物的所有體會和感動。

成為以這種方式過活的人,才算是享受人生吧!培養自己的品味與眼光並同時能夠提昇自己的價值。