2009年2月28日土曜日

perlのワンライナー

よく忘れるのでメモ

↓は普通の使い方

perl -e 'print "hello"'


↓test.txtの中身を表示 -nオプションは
こんな感じの意味
while (<>) {
... # your program goes here
}

perl -ne 'print' test.txt


↓test.txtの中身を表示 -pオプションは
-nの最後にプリント文をかます様なイメージ

perl -pe '' test.txt


ライン処理を追加する(print文の後に改行+<>後にchmop)

perl -lpe '' test.txt


-iオプションは対象のファイルを上書きする
注意するのは-iはその後に変更前のファイル名を取るので
まとめないこと(-ipleは駄目)
上がtest.txtの頭に行番号を付加する
下が変更前のtest.txtをtest.txt.backとして残す

perl -i -ple 's/^(.*$)/$.$1/' test.txt
perl -i.back -ple 's/^(.*)/$. \: $1/' test.txt


参考リンク
http://blog.livedoor.jp/dankogai/archives/51026593.html
http://perldoc.jp/docs/perl/5.6.1/perlrun.pod
http://www.google.co.jp/

2009年2月22日日曜日

ちょっとsshの鍵認証についてまとめておこうか

設定は/etc/ssh/sshd_config

下は推奨設定
AllowUsers hogehoge
Port 443
PasswordAuthentication no
PermitRootLogin no
PermitEmptyPasswords no


ssh-keygen -t rsa
で作る
/home/hogehoge/.ssh/id_rsaに保存
パスフレーズも決める
id_rsa 秘密鍵
id_rsa.pub 公開鍵

公開鍵(id_rsa.pub)は
~/.ssh/authorized_keys
にリネームする
秘密鍵はクライアントに転送

クライアントがLinuxの場合は
~/.ssh/id_rsa
と置く

クライアントがWindowsの場合は
puttygen.exeを起動Loadを押して
id_rsaを読み込ませパスフレーズを入力→
変換後はprivatkeyとして保存(ppkファイル)

ログインの際は
ssh -p 2200 hogehoge@hoge.com
みたいな感じ
id_rsa(秘密鍵)を指定する場合は
ssh -p 2200 -i hoge.rsa hogehoge@hoge.com
みたいにする

参考URL
http://www.jitaku-server.net/ssh_crypto.html
http://kazmax.zpp.jp/linux/lin_sshrsa.html

debian lennyを入れたらpstreeどっかいった

つpsmisc

コンソール環境でモニタの電源を切るには

Debian Lennyで試した
ディスプレイを自動的にきる設定
$ setterm -powersave on -powerdown 1
とかしておくといいらしい

あと↓も必要だと思う
$ setterm -blank 1

起動時に自動的にこの設定をするにはこちら

参考リンク
http://osdir.com/ml/linux.debian.jp.user/2004-02/msg00035.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/251stopconsuspnd.html

2009年2月21日土曜日

perlの数値回りのはなしー

printf "%u\n",~0;

チルダ+0で上限値が出る?みたいね
まあCOBOLで言うところのHIGH-VALUEみたいなもんか

追記
上限値が出るっていうかあれです
ビット演算のビット反転効果があったみたいですね
http://www.rfs.jp/sb/perl/02/bit.html


参考リンク
http://questionbox.jp.msn.com/qa2174949.html
http://perldoc.jp/docs/perl/5.8.8/perlop.pod

HttpWatch Basic Edition

公式サイト

機能多くて全部使い切れないけどなんかすごい



参考サイト
http://gigazine.net/index.php?/news/comments/20090218_httpwatch/

2009年2月15日日曜日

perlでプログレスバー的なものを作る

ポイントは$lと\rです。
$|・・・出力をバッファリングするかどうか(0以外はバッファリングしない。つまりprint文は直ぐ出すということ)
\r・・・キャリッジリターンまあ頭にカーソル戻すよーみたいな意味


#!/usr/bin/perl
$max=125;
$split=50;

$| = 1;
$ps=int($max/$split+1);
for (1..$split){
print "[","=" x $_," " x ($split-$_),"]";
print "\r";
sleep 1;
if ($_==$split){
print "[","=" x $split,"]\n";
exit;
}

}


参考リンク
http://perl.g.hatena.ne.jp/bosh/20080107/p1
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/evalue.html

2009年2月7日土曜日

perlでSJISマッチング

/\Qあああああ\E/

みたいに\Qと\Eで挟むと良いらしい・・・
まあ何でかと言うと\Qと\Eの間はメタ文字を打ち消す効果があるからだけど
http://saboten009.blogspot.com/2008/02/perl.html

perlで今実行しているファイル名を調べる

実行中のプログラム名(ファイル名)
を参照する特殊変数は?
$0っていう変数で出来るお

#!/usr/bin/perl
print $0,"\n";

2009年2月2日月曜日

lessとかページャーの設定メモ

lessのエンコードを指定する変数LESSCHARSET


export LESSCHARSET=dos


そんでデフォルトのページャーを変更する
export PAGER=less



参考サイト
http://d.hatena.ne.jp/n-kaneshige/20081202/1228194177

2009年1月24日土曜日

NetTransportでwebラジオ(ストリーミング)ダウンロード

mms://hoge.com/003h.wsx
↑みたいなURLを探す

1.新規ダウンロード
2.スレッド分割数を1に設定
3.その他の設定→ストリーミングタブ→HTTPストリームにチェック


ちなみにリジュームできるよ

2009年1月12日月曜日

vim 特定のファイルだけファイルタイプの検出を無効化する

特定のファイルが検査されないようにするには、g:ft_ignore_pat 変数を使います。こ
の変数はデフォルトで次のように設定されています。 >
:let g:ft_ignroe_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
この設定は圧縮ファイルを検査しないようにしています。


だそうです。

2009年1月11日日曜日

vim tipsとか見るといいな

そんなわけでなんか今日調べたtipsを書いておく

そのライン全てを小文字/大文字に変換
guu
gUU


カーソル下にあるファイルを開く
gf


vimrcの環境変数
$MYVIMRC
$MYGVIMRC


なんか計算結果を挿入したいとき以下は5x5の結果を挿入
挿入モードで以下のように入れる
Ctrl-R=5*5


合字をいれるときに使う(挿入モードで)
<C-K><S-Space>(キー2つ)と入力することで、文字列"<S-Space>"が入る
Ctrl-k


参考リンク
http://labs.gmo.jp/blog/ku/2007/05/vimorg_tips.html
http://vim.wikia.com/wiki/Best_Vim_Tips

perlでファイルハンドルを切り替えたいとか

そういことがたまにあるはず
そんな時はuse FileHandle;が良いですよ
こんな感じで使うんだ
#!/usr/local/bin/perl
use FileHandle;
print "Which write file? (a or b)\n";
$in=<STDIN>;
chomp $in;
my $fh = new FileHandle;
if ($in eq "a"){
$fh -> open(">a.txt");
}
elsif ($in eq "b"){
$fh -> open(">b.txt");
}
else{
print "No File!!\n";
exit 0;
}
print $fh "foo bar!\n";
$fh -> close();


STDOUTとファイルぐらいの切り替えならこんな感じでselect使うのもありかもね
print "Write Result? (y or n)\n";
$input_keyboard2=<STDIN>;
chomp $input_keyboard2;
if ($input_keyboard2 eq "y"){
open (FH2 ,">res.txt");
select FH2;
}

デフォルトの出力に戻すには
select STDOUT