2008年3月7日金曜日

vimでタブをスペースに変換する

:set expandtab
で今後入力されるタブがスペースに変換される。

:retab
既存のタブはこのコマンドで変換される。

:set tabstop=4
としていれば4つのスペースに変換される。

2008年3月5日水曜日

Apacheのautoindexモジュールが文字化けする

ApacheのautoindexはデフォルトエンコーディングでUTF-8を指定しているにも関わらず、
インデックスをリクエストしたときにレスポンスヘッダに
charset=ISO-8859-1
が付いてしまいます。

回避するためにはautoindexのconfのIndexOptionsに
Charset=UTF-8
を追加します。

2008年2月27日水曜日

2chのスレを自動保存

2chのスレを自動で保存する方法を考えます。
スレの進行が早いところはすぐにDAT落ちしてしまいます。プログラムによって定期的にDATを取得できたら便利です。
いきいきwikiによるとUser-AgentをMonazilla/1.00 (ブラウザ名/バージョン)にするといいようです。
また鯖の転送量を減らす目的でgzipを推奨しています。
例としてJaneviewのリクエストヘッダを見て見ます。


こんな感じです。
これよりどこにアクセスし、DATを取得しているか分かります。
取得したdatはgzipに圧縮されているのでgunzipで展開します。(gunzipコマンドのあるLinux環境を想定しています)
ここで注意して欲しいのは必ずgzipで返ってくるとは限らない点です。gzipではなく生のDATが送られてきても対応できるようにします。

例としてDATを取得するスクリプトをいかに示します。定期的に取得する場合はcronなどで回して下さい。

#!/usr/bin/perl
use Net::HTTP;

### Initial Setting ###########################

$server ="namidame.2ch.net";
$category ="campus";
$unixtime ="1234567890";
$backup_directory ='/var/www/';

###############################################

unless($backup_directory=~/\/$/){
$backup_directory.='/';
}


$s = Net::HTTP->new(Host => "$server") || die $@;
$s->max_line_length(0);
$s->keep_alive(300);

$s->write_request(GET => "/$category/dat/$unixtime.dat", 'User-Agent' => "Monazilla/1.00 (perl/1.3)" , 'Accept-Encoding' => "gzip" );


($code, $mess, %h) = $s->read_response_headers;
unless($code eq "200"){
print "Thread not found!\n";
exit;
}

open (FH,">$backup_directory$unixtime.dat.gz") or die $!;

while (1) {
my $buf;
my $n = $s->read_entity_body($buf, 1024);
die "read failed: $!" unless defined $n;
last unless $n;
print FH $buf;
}

close FH;


print "\n$code $mess\n";
foreach $key(keys %h){

print $key," ";
print $h{$key},"\n";

}


chdir "$backup_directory" or die $!;
$gunzip_message = qx/gunzip -f $unixtime.dat.gz 2>&1/;

if($gunzip_message=~/not.*in.*gzip.*format/){
exec "mv $unixtime.dat.gz $unixtime.dat";
}

2008年2月18日月曜日

Debian(etch)の日本語環境設定

$ sudo dpkg-reconfigure locales


こんな感じでおk簡単ですね

参考リンク
http://wiki.debian.org/JapaneseEnvironment

2008年2月13日水曜日

x11vncよく使いそうなオプション(追加)

前回の他に見つけた良く使いそうなオプション

-allow
リモートアクセスを許可するホストを設定する。
例)192.168.0.5からだけアクセスを許可する
-allow 192.168.0.5
例)192.168.0.0/24からのアクセスを許可する
-allow 192.168.0.

-nopw
パスワードファイルが無くても警告を出さない

*その他のx11vnc関連の投稿
x11vnc端末から実行した際に出るエラー出力が邪魔
x11vncの設定を保存するには
Ubuntu7.04 にx11vncをインストールする

x11vnc端末から実行した際に出るエラー出力が邪魔

~$ x11vnc &> /dev/null &

こんな感じでnullへ捨てる。最後の&はバックグラウンドで実行するという意味。

2008年2月8日金曜日

ダウソ板で良く使われる隠語

葱→Negies
PG→peerguardian

2008年1月20日日曜日

School Days LxHの動画を抽出する

まずDVDの読めるPCでディスクを検索します。
次にMV.AFSという1.15GBくらいのファイルがあるのでHDDにコピーします。
この中にpssファイルがアーカイブされているので抽出します。
こちらで配布されているAFS Cutter Ver.1.00を使ってPSSファイルを抽出します。抽出したファイルはbinという拡張子になっていますがPSSファイルです。再生はVLCプレイヤーなどで出来ます。

ゲームで使われていないムービーは
AFS_0836・・・niceboatと書かれた延々と続くスタッフロール
AFS_0855・・・工事中でちゅ!と書かれた世界の落書き

参考
http://freeuse.ddo.jp/contents/game/ps2/ps2mov.html

2008年1月7日月曜日

ProxomitronをLinuxで・・・

1.wineで動かす
2.Privoxyで頑張る

2008年1月2日水曜日

perlでURLデコード

#!/usr/local/bin/perl

open (FH,"access.log");
open (FH2,">kekka.txt");
while(){
s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2',$1)/eg;
print FH2;
}
close FH;
close FH2;

s置換演算子のオプションeは置換後の文字列(ここではpack('H2',$1))の評価を行う。
gオプションは繰り返しマッチさせる。

2007年12月31日月曜日

昔、流行った地下ゲーム

ブラックユーモア溢れるゲームたちです。
倉庫番はHDDがフォーマットされる可能性があります。
WindowsXP環境では平気でした。
http://www.hehehe.net/game/

2007年12月25日火曜日

Linuxでメモリの使用状況を把握する

free
vmstat
cat /proc/meminfo
cat /proc/swaps

などなど・・・

2007年12月11日火曜日

Linuxでパーティションのアクティブフラグをセットするには

# sfdisk -A1 /dev/hda

hdaのパーティション1番をアクティブにし、他のアクティブフラグを削除する。

2007年12月10日月曜日

mkfs,fdisk,parted,mkswap使い方

*fdisk
パーティションの切り直しにはfdiskを使います。
例えば、/dev/sdaのパーティションを編集するとします
fdisk /dev/sda
で起動
Command (m for help):
と表示されます。
pでパーティションテーブルの表示
dを押して次にパーティション番号を入力してパーティションの削除
nで新しいパーティションの作成
tでパーティションタイプの編集(FAT32のパーティションタイプは0b)
lでパーティションタイプ一覧表示
wで編集したパーティションを書き込み終了
aでブートフラグの設定



参考リンク
swapパーティションの作成
パーティションタイプ一覧

*parted
fdiskの機能に加えてパーティションのリサイズが行えます。
#parted /dev/sda
のように起動します
(parted)
と表示されます。
printでパーティションテーブルの表示
resize 番号 でパーティションのリサイズ
例)/dev/sda上のswapパーティションを縮小する

# parted /dev/sda
GNU Parted 1.7.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print

Disk /dev/sda: 4326MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 32.3kB 3800MB 3800MB primary fat32
2 3800MB 4318MB 518MB primary linux-swap

(parted) resize 2
Start? [3800MB]?
End? [4318MB]? 4000MB
(parted) print

Disk /dev/sda: 4326MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 32.3kB 3800MB 3800MB primary fat32
2 3800MB 4000MB 200MB primary linux-swap

(parted) quit

参考リンク
ITmedia partedの使い方

*mkfs
ファイルシステムを作成する。


*mkswap
スワップファイルシステムを作成する。
swapon,swapoff

GRUBについて
http://opentechpress.jp/developer/article.pl?sid=07/06/18/0135208&pagenum=3
http://d.hatena.ne.jp/kamopapa/20071118

GRUBをUSBメモリにインストールする
まず、パーティションを切るFATでフォーマットしアクティブフラグをセットする。
mkdir /mnt/usb/grub
cp /boot/grub/stage* /boot/grub/fat_stage1_5 /mnt/usb/grub/
umount /mnt/usb
とし
grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
と入力する。(USBメモリを/dev/sdaとする)

2007年12月9日日曜日

vsftpdへIEを使ってログインする

IEは標準でftpクライアントを持っています。
ログインした際は通常のファイルのようにドラッグ&ドロップによるアップロードやダウンロード。右クリックで削除、パーミッションの設定も出来ます。
ftp://hoge.jp/という風にアドレスバーに入れてもvsftpdの場合は下図の様なエラーになります。

iswebやgeocitiesのFTPサーバーへは上のようなエラーは出ず、この後にユーザー名とパスワードの入力を求められます。
vsftpdのサーバーへログインする際にはアドレスの前にユーザー名を書いてください。例えばfoobarというユーザーでログインしたいのなら
ftp://foobar@hoge.jp/

のようにアドレスバーに入力してください。この次にパスワードの入力を求められます。
パスワードも同時に入力したいのなら(例としてパスワードをpasswdとします)
ftp://foobar:passwd@hoge.jp/

と入力します。ログインした後にお気に入りに追加した場合、ftp://hoge.jp/としてお気に入りに追加されてしまうため、お気に入りの項目を右クリック→プロパティから上記アドレスに書き換えてください。