2008年6月30日月曜日

sysctlでカーネルパラメータのチューニング

前回前々回でバッファが重要みたいなことを言いました。
個々のソフトでバッファサイズを調整するのは煩わしいので今度はカーネル側でやろうと思います。つーか本当の動機はvsftpdではバッファサイズの調整が出来ないっぽいからですけど・・・

/etc/sysctl.confを編集します

net.ipv4.tcp_rmem=500 1500 5000

net.ipv4.tcp_wmem=500 1500 5000

↑の2行を追加します。上が受信バッファ、下が送信バッファです多分
なんで3つの値を渡しているかはこちらを参照してください
そんで書いたらこんな感じでパラーメータを設定して下さい
sysctl -p
でおkね


まあ/proc以下をechoで飛ばして設定しても良いんですが再起動すると戻ってしまうので・・・・

自宅鯖のapache2をチューニング

Sambaの件でバッファリングが大きすぎてサーバー側で処理できなくなる→切断となっていることに気づいたのでもしかするとapache2で大きいファイルを落とすときに切れる現象も同じなんじゃないかなと思ってチューニングしてみる。
受信バッファサイズ送信バッファサイズを調整して鯖が落ちるのを止める。

俺はhttpd.confに↓を書いた。でおkだった。
SendBufferSize 4000
ReceiveBufferSize 1500

具体的にどうコネクションが切れるか検証してないけど多分こんな感じだと思う
クライアント「オラオラ・・・もっとパケット送るぜー!ウィンドサイズはでかいからなーw」
サーバー「ちょwwwおまwww待ってくれそんな処理しきれwww」
(ただいまサーバーがシーケンシャルナンバーの整理などしておりますしばしお待ちください)
クライアント「おかしいな?返事がない・・・しかたないコネクション切るか」
サーバー「ふう・・・終わったぜ!さあパケット返そうかな・・・ってコネクション切れてるしwwww」

みたいなノリだと思う
まあバッファの調整はマシンのスペックを見て調整しましょってことで

sambaで接続が切れる問題

socket options = IPTOS_LOWDELAY SO_RCVBUF=1000 SO_SNDBUF=1000

バッファリングが多すぎたみたい
低スペックなPCだとNODELAYは辛いようだ

socketオプションは↓を参照
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/socket.7.html

2008年6月29日日曜日

Firefox3のウィルススキャンいらね

about:configからbrowser.download.manager.scanWhenDoneをfalseに設定。

Linuxでログイン時に表示されるメッセージを変える

ここに書いてありました
/etc/motdを編集すればいいだけです簡単ですね

CJKにしないとモナーとかズレるからどうしようかなーと思って
boxesからAAを拝借こんなのいれてみた
boxes -d mouseね




.--, .--,
( ( \.---./ ) )
'.__/o o\__.'
{= ^ =}
> - <
__.""`-------`"".__
/ \
\ Debian /
/ \
\___________________/
___)( )(___
(((__) (__)))

sambaを入れてみよう

aptかなんかでインストール
/etc/samba/smb.confを直そうか

[global]
unix charset = UTF-8
dos charset = CP932
display charset = UTF-8

まず↑の設定を確認unix charsetは環境に合わせてどうぞ


workgroup = MSHOME

次にワークグループを合わせて

security = share

セキュリティをshareにした。パスワード求められるとウザイので・・・
でもこれだとvistaとかだと問題になるそうです XPの場合は大丈夫らしいけど

guest account = ageftp

あとはゲストアカウントを誰にするかを決める。



[upload]
path = /var/www/upload/
available = yes
browsable = yes
public = yes
writable = yes
read only = no
create mask = 0777
printable = no
guest ok = yes

あとは適当にどうぞ

ここで別にゲストアカウントを誰々って決めなくても良いんですが、
じつはこの/var/www/uploadディレクトリはftpのanonymousログインを
許可しているのでotherのパーミッションに書き込みを与える事が出来ないのです

aptitudeでインストールすると推奨パッケージも入れてしまう

apt-get installだとインストールしなんだよね・・・なんかお節介でヤダ
上のほうのメニューから外せるそうですよ

aptitudeのフラグの意味

ここに書いてあった
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s02s02.html

ちなみにAは自動的にインストールされたか動画を表すんだって

LinuxでS.M.A.R.T情報を表示する

aptかなんかでsmartmontoolsをインストール

# smartctl -a /dev/hda
これで見れるらしい↓の方が見やすいかも
# smartctl -A /dev/hda
参考サイト
項目の詳しい説明は下記のwkipedia参照
http://ja.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology


Windowsだとこんなものもあるらしい
CrystalDiskInfo

2008年6月27日金曜日

Linuxコマンド ログイン関連 faillog,lastlog

faillog・・・何回ログインをミスったか
lastlog・・・最後にログインした時間はいつか?

Linuxでよく使われるscreenを今更使ってみた

つーわけでメモ

aptかなんかでサクッとインストールしてscreenで起動します。
まずコマンドはプレフィックスキー(コマンド前に毎回入力するキー)がいります。そんでデフォルトのプレフィックスキーはCtrl+aです。
Ctrl+a ?でヘルプ見れます。

コマンド一覧 プレフィックスキーは省略

c 新しい端末を開く
" 画面リストの表示
n 次の画面へ
p 前の画面へ
n nの端末へ移動(nは端末番号)
S 画面分割 大文字のSなのでshiftと共に押す!
\ バックスラッシュ 全てを破棄してscreenを終了
Ctrl+i ウィンド間の移動
X ウィンドウのクローズ 大文字のX!
[ コピーモードの開始 開始地点、終了地点でエンターかスペース
] ペースト
:resize -10 ウィンドのリサイズ。-10だと縮める10広げるみたいな感じ
d デタッチ



screen -r でデタッチした端末をアタッチ
screen -ls で端末一覧表示

2008年6月23日月曜日

リダイレクトについて

command > hoge 2>&1
エラー出力を標準出力先と同じにするこれを使えば
$gunzip_message = qx/gunzip -f $unixtime.dat.gz 2>&1/;
↑のようにエラー出力を捕らえることも可能になる
command &> hoge


参考
http://www.fireproject.jp/feature/bash/basic/redirect-pipe.html



2008年6月22日日曜日

クレジットカードの使えるコンビニ

サークルKサンクス
ローソン
ミニストップ

Firefoxの拡張ViewSourceWith使う時の注意点

例えばこのBloggerの入力フォームはUTF-8です。
Kaoriya版のvimだとsjisがデフォルトなので文字化けします。下のように起動時にエンコーディングを変えておくと良いかもしれません。


シンタックスを当てたいときはこんな感じでオプションを追加していけば良いんじゃないでしょうか

kaoriya版vimでは便利なコマンドが用意されているよ

http://nanasi.jp/articles/vim/cmdex_vim.html

↑に書いてありました

/vim71-kaoriya-w32j/runtime/plugin/cmdex.vim
↑に置かれているので見てみると良いんじゃないでしょうか

HTMLConvertは中で2html.vimを呼んでるみたいですね
TOhtmlコマンドがあるのになんでこんなコマンドあるんだろ・・・

2008年6月16日月曜日

vimでマークを視覚的に表示する

http://nanasi.jp/articles/vim/showmarks_vim.html
http://www.vim.org/scripts/script.php?script_id=152

他にもマークにマッチする正規表現があるのでそれでもおkです。
たとえばaマークをTodoハイライトするには
syntax match Todo /.*\%'a.*/ containedin=ALL
を$VIM/runtime/syntax/txt.vimというファイルを作り入れておきます。
自分はtxtにそのハイライトを当てているので_gvimrcの中で
autocmd BufRead,BufNewFile *.txt setfiletype txt
を追加してファイルタイプを設定しています。

2008年6月14日土曜日

シェルの環境変数で前回コマンドの終了ステータスを確認する

$?に入っているそうですよ
http://www.geocities.jp/geo_sunisland/exit_status.html

ActivePerlでyahooにメールを送ろうか

Net::SMTPモジュールを使います。ただデフォルトでauthメソッドを使おうとしてもパケットを投げてくれないので、下のモジュールを新たにppmか何かでインストールして下さい。

次にコーディングに入ります。Net::SMTPについての説明はこちらを参照してください。
メールヘッダについてはTo:だけでいいかと思ったらうまく送信できなかったので、Thunderbirdのパケットをキャプチャしたものを丸パクリします。
Dataヘッダについては何でもいいかと思いますが、一応現在時を取得する方が親切設計でしょう。どれが必要なヘッダか不要なヘッダかは面倒なので調べていません。
Message-IDですがこちらを見る限り何でもいいそうです。好きな命名規則で良いでしょう。
*参考
yahooの鯖はSMTPを拡張したESMTPで運用されています。ESMTPではグリーティングの際にEHLOコマンドを用います。(SMTPではHELOコマンド)
EHLOコマンドでは自分のホストを通知します。Thunderbirdでは

EHLO [192.168.0.6]

とグリーティングしますが、Net::SMTPでは

EHLO localhost.localdomain

とグリーティングします。まあどっちでも構いませんが、、、
http://www.atmarkit.co.jp/fnetwork/rensai/netpro06/netpro01.html


#!/usr/local/bin/perl

use Net::SMTP;

$user="??????";
$passwd="?????????????";
$maildata=<<"END";
Message-ID: <1234567890123456@yahoo.co.jp>
Date: Sat, 14 Jun 2008 09:59:39 +0900
From: uesugi
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: yahoo
Subject: This Mail Make Perl
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
END


$smtp = Net::SMTP->new('smtp.mail.yahoo.co.jp',Timeout=>30,Debug=>1);


$smtp->auth($user, $passwd) or die "Auth Fail\n";
$smtp->mail('????????????????????@yahoo.co.jp');
$smtp->to('????????????????????@yahoo.co.jp');

$smtp->data();
$smtp->datasend("$maildata");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();

$smtp->quit;


print $smtp->domain,"\n";
$smtp->quit;

Debian(etch)でcpan設定

まずCPANを使う上で必要なソフトは下記のとおりです。先にインストールしておきます。
gzip,tar,unzip,make,lynx,wget,ncftpget(ncftpでインストール)


#cpan
で初回起動時の設定が入る。基本的にEnterでデフォルトの設定で問題ないと思います。
The next option deals with the charset your terminal supports. In
general CPAN is English speaking territory, thus the charset does not
matter much, but some of the aliens out there who upload their
software to CPAN bear names that are outside the ASCII range. If your
terminal supports UTF-8, you say no to the next question, if it
supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it
supports neither nor, your answer does not matter, you will not be
able to read the names of some authors anyway. If you answer no, names
will be output in UTF-8.

Your terminal expects ISO-8859-1 (yes/no)?
↑のように聞かれたらnoがいいかもしれません。

そんで使えるCPAN鯖が無かった場合はftp://ftp.kddlabs.co.jp/CPAN/とかを使うといいかもです。

find `perl -le 'print for @INC'` -name '*.pm' | less
↑のコマンドでインストールされているモジュールを確認できます。

あと
cpan> m /Net::SMTP_.*/
Module id = Net::SMTP_auth
CPAN_USERID APLEINER (Alex Pleiner )
CPAN_VERSION 0.08
CPAN_FILE A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
MANPAGE Net::SMTP_auth - Simple Mail Transfer Protocol Client with AUTHentication
INST_FILE /usr/local/share/perl/5.8.8/Net/SMTP_auth.pm
INST_VERSION 0.08
↑みたいな感じでモジュール検索もできます

2008年6月12日木曜日

pearのコマンドとか・・・

phpのライブラリ管理のpear
よく使うコマンド備忘録

pear
PEARコマンド一覧表示

pear help command_type
command_typeの説明を表示

pear list
現在インストールされているパッケージ一覧

pear list-upgrades
更新ライブラリの確認

pear upgrade package
パッケージのアップグレード前述のpear list-upgradeで出てきたPACKAGE欄を
packageに入れる

aptitudeのよく使うコマンドとか

検索時には正規表現が使えます
lで検索すると制限できていいかも・・・

~d説明
正規表現説明にパッケージ説明がマッチするパッケージにマッチします。

~d"test"
みたいな感じで

検索パターン

2008年6月8日日曜日

scimとgvimは相性悪いみたい

http://d.hatena.ne.jp/silverintegral/20071115
こんな感じでどーぞ

2008年6月7日土曜日

定期的に文章をバックアップする

なんか大事な文章を日付順にバックアップしておきたいときに書くシェルスクリプトとか・・・

#! /bin/bash

var=`LANG=C date +'%Y%m%d%a'`
cp /media/taihi1/komando.txt /media/taihi1/komando-bak/$var.txt

Linux版のvim7に日本語ヘルプを入れてみる

なんかkaoriyaさんのとこに
http://www.kaoriya.net/vimdoc_j/
という日本語ヘルプがあったので落としてくるそんで解凍とかする。
解凍したものを/usr/share/vim/vim71に放り込んでも拡張子が.jaxとかなっててうまくいかない
しょうがないから拡張子を.jax→.txtにする
一括変換とかシェルスクリプトでできそうだけど分からないからPerlで書く
#!/usr/local/bin/perl

$newdir=".";
chdir $newdir or die "$newdir is not found!\n";
opendir(DIR, ".");
@file = readdir(DIR);
closedir(DIR);

@file = sort {(stat ($a))[8] <=> (stat ($b))[8]} @file;

foreach(@file){
if($_=~/^\.$|^\.\.$|^rename\.pl$/){
next;
}
if ($_=~/\.jax$/){
$moto=$_;
$_=~s/\.jax$//;
system "mv $moto $_.txt";
#print "$moto $_.txt\n";
}
# print $_,"\n";
# `mv $moto `;
}