aria2c – Linux下的多線程下載軟體

很多朋友轉換到Linux下的時候,再下載大型檔案時,往往會遭遇到網路速度緩慢,想要使用在Windows上面像是flashget這類的多線程軟體,來加速下載。這裡推薦一個好用的小軟體 – aria2c,不但能夠多線程下載檔案,也能夠拿來下載bittorrent的檔案(有支援DHT),不過下載bittorrent還是建議使用rtorrent比較威猛剛強一點,這邊介紹在Debian下面如何安裝使用aria2c

在Debian下面安裝aria2c非常簡單:

apt-get install aria2c

多線程下載使用方法如下:

aira2c -s16 http://file.to.download/file.zip

-s 後面接的數字是線程數目,限制是1~16,應該可以滿足大多數人的需求,如果需要更高的數目,可以透過 -j 來增加。

如果你需要使用aria2c來下載bittorrent檔案,使用方法如下:

aria2c  –enable-dht  –listen-port=某個port –max-upload-limit=單一檔案上傳速度 –max-overall-upload-limit=全局上傳速度 –torrent-file=torrent檔案

上面簡單介紹了最常使用到的兩種功能,其他的細部設定請自行參酌aria2c的man page。

發表於 Linux, 技術 | 已標籤 , | 發表迴響

使用flashget 1.8以上的朋友請小心

昨天在使用flashget下載自己在VPS上面的資料後,檢察apache log竟然發現一堆不速之客的連線,都在嘗試我之前抓過的那個檔案(還好我習慣不錯,抓完即砍),後來網路上翻了一下才發現,flashget 1.8之後的版本,會非常"好心"的將你曾經下載過的連結都傳送到

stats.flashget.com

所以當其他user嘗試下載相同檔案時,便會使用連結到你的連結去下載。我目前的鴕鳥是解決法是,編輯c:\windows\system32\drivers\etc\hosts,在最後加上一行:

127.0.0.1 stats.flashget.com

來解決。如果你常使用這類的下載軟體,建議其他套來使用吧,才是永保安康之策。

發表於 Windows, 技術 | 已標籤 | 發表迴響

ip_conntrack: table full, dropping packet

之前架設一台vpn時, 由dmesg看到一個警告訊息

"ip_conntrack: table full, dropping packet"

google了一下發現似乎是個還蠻常見的問題,通常是NAT user過多或是同時建立太多tcp connection,導致table爆炸,因為Linux Kernel在NAT預設的tcp timeout是五天,難怪user多就爆炸。所以改法很簡單,就是把table加大,timeout縮短即可,要注意的是table所使用的memory為

ip_conntrack_max * 232 Bytes

所以要小心大小,不要改的太爽,加到超過你記憶體能夠負擔的能力,步驟如下:

首先查看一下table size以及timeout預設是多少:

cat /proc/sys/net/ipv4/ip_conntrack_max

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

上面兩行指令能告訴你,目前機器上的table大小及tcp timeout時間

改法有二, 選一個你喜歡的作法即可 :Q

方法一:

sysctl -w net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值)

sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

(把這兩行寫到你的開機啟動檔裡面)

方法二:

編輯/etc/sysctl.conf, 加上下列兩行

net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

這樣每次開機就會設定上去啦.

問題便可以因此解決。

發表於 Linux, 技術 | 已標籤 , , | 發表迴響

BCB Form Create/Close Procedure Flow

如果沒有搞清楚這些動作, 常常在不該cleanup的部份就先cleanup了,害得後面一些還會被callup的method想access的東西都access不到。然後程式就爆走啦 XDD,為了避免自己重蹈覆轍,還是寫一篇來記錄一下。[這是我自己測出來的結果,使用的是BCB 6.0,若有錯誤還請幫忙指正,謝謝 :) ]

繼續閱讀

發表於 Windows, 技術 | 已標籤 , | 發表迴響

MFC下怎麼藏住console window

之前開發的某個自用的小程式程式,需要在程式裡面執行另外一支外部程式我很直覺的想到了system(),這function的確也很盡職的達到呼叫的目的,但是缺點是他會帶出一個黑黑醜醜的console window,畫面上實在非常不美觀,為了隱藏這個醜陋的視窗,我決定想盡辦法把那該死的console window給隱藏起來,結果因為我跟windows api的不熟,花了我不少功夫,所以特地紀錄一下。
繼續閱讀

發表於 Windows, 技術 | 已標籤 , , | 1 則迴響

使用cURL送trackback

之前再開發一個blog系統所需的module時,需要測試大量的trackback,本來是採用最笨的方法,申請一個blog,由那個blog來發trackback,後來因為這樣做實在太苦了,所以改採自己產生的方式。

根據trackback的規格,只要用GET的方式傳送要求即可,內容必須包含下列欄位:

  1. url (引用該文章的url)
  2. title (引用該文章的標題)
  3. blog_name (引用該文章的部落格名稱)
  4. excerpt (發送引用時附帶的額外資訊)

所以只要搭配方便的cURL即可達成目的,方法如下:

curl -d url=TRACKBACK_URL -d title=TRACKBACK_TITLE -d blog_name=TRACKBACK_BLOG_NAME -d excerpt=TRACKBACK_EXCERPT URL

如此一來便可大量產生所需的trackback來做測試啦。

發表於 Uncategorized | 已標籤 , | 發表迴響

如何merge CIDR

上一篇"高效率的iptables GEOIP模組"的留言有人問到,如何去合併CIDR?用人工計算是一件非常痛苦的事情,資料一多當然就變的天方夜譚,這麼苦命的事情當然是交給電腦去做囉。

要合併CIDR,Perl提供了非常簡單的方法,程式碼如下:

#!/usr/bin/perl
use Net::CIDR::Lite;
my $cidr = Net::CIDR::Lite->new;

$cidr->add("202.38.175.0/24");
$cidr->add("202.38.174.0/24");
$cidr->add("202.38.173.0/24");
$cidr->add("202.38.172.0/24");
$cidr->add("202.38.171.0/24");
$cidr->add("202.38.170.0/24");
$cidr->add("202.38.169.0/24");
$cidr->add("202.38.168.0/24");

print "$_\n" for $cidr->list;

執行後,會輸出合併後的結果:

202.38.168.0/21

輕鬆寫意阿~

發表於 技術 | 已標籤 , | 2 則迴響

高效率的iptables GEOIP模組

手邊有台vpn server上面用iptables跑policy routing,連往大陸地區就從特定interface出去,之前的做法是到apnic取得大陸地區最新的ip list後,再利用script一行一行餵進去iptables裡面,即使做過CIDR merge後,還是快要達到800筆record,每每上線使用者一多、或是流量變大時機器的loading就會增加,這種作法不用分析也大概猜得出來,iptables內部作rule match是採用list match,當rule量很大的時候,效能當然會變差。 繼續閱讀

發表於 Linux, 技術 | 已標籤 , , , , , , | 3 則迴響

當apache的errorlog出現configured request variable name length limit exceeded

之前在寫Picasa2Wordpress的時候,測試的時候,遇到一個詭異的問題,在我有權限能access的機器們上面跑,就是有一台跑不起來,後來查了一下apache2的log才發現,原來是php suhosin module的問題,預設最大的POST及GET變數名稱最大只能夠是64字元,但是Picasa POST出去的卻遠超過,所以就被檔下來了。

解決方法很簡單,編輯/etc/php5/apache2/conf.d/suhosin.ini,加上下面這三行即可:

suhosin.request.max_varname_length=128
suhosin.get.max_name_length=128
suhosin.post.max_name_length=128

搞定收工。

發表於 PHP, Picasa2Wordpress, 技術 | 已標籤 , , | 發表迴響

漫談澳洲ISP的網路方案

在澳洲生活了一小段時間,前陣子剛好有朋友要搬家,從他跟二房東分租的公寓搬到一個獨自擁有的房子,於是就面臨到得自己申請網路的問題,跑來請我幫忙survey便宜實惠的ISP, 所以就花了點時間研究一下,順便整理出來跟網友們分享。 繼續閱讀

發表於 澳洲生活 | 已標籤 , , , | 25 則迴響