日本語(EUC-JP)の substr の続き

正直なところ、僕はあんまり日本語処理に詳しいわけではないので話を続けるのもどうかと思ったけど、もうちょっと書いてみます。この前のエントリ 日本語(EUC-JP)の substr でなんで Encode.pm を使わないで実装したかったかというと、 my $new_str = encode…

日本語(EUC-JP)の substr

今の Perl(5.8 以降)は文字列が utf8 だったら標準添付の substr() を使って終了なネタなわけだが、わけあって EUC-JP な文字列で日本語も 1 文字と数えて substr をするサブルーチンを考えてみた。今さら。かの有名な Perlメモに日本語(EUC-JP)を含む文字列…

undef をデリファレンス再び

http://unknownplace.org/memo/2006/06/20#e001 普通といわれると普通なのかなあ。僕には予想外の動作 *だった* んだけど。いろんな呼び出しで試してみた。やたらとスクリプトが長くなってしまったが、たいしたことはやっていない。 #!/usr/local/bin/perl u…

perlcritic と Module::Starter::PBP

Module::Starter::PBP で module を作ると、perlcritic でのテストをするためのテストファイル perlcritic.t を t/ ディレクトリに置いてくれるみたいなんだけど、MakeFile.PL の PREREQ_PM と Build.PL の requires に Test::Perl::Critic を書いてくれない…

Net::IPMessenger and Plagger Plugin

Perl で IP Messenger プロトコル通信をするための module Net::IPMessenger を書いて CPAN に登録しました。実は Perl で IP Messenger プロトコルを話すものは既に色々あって、僕が敢えて書く必要もなかったんだけど、他の source は CPAN には登録されて…

undef な SCALAR を ARRAY でデリファレンスすると、値が変わる

こんなテストスクリプトを作ってみる。 #!/usr/local/bin/perl use strict; use warnings; use Data::Dumper; my $hoge = undef; printf "%s\n", Dumper $hoge; for my $hogehoge ( @{ $hoge } ) { } printf "%s\n", Dumper $hoge;% ./test.pl $VAR1 = undef…

Half-Life 2: Episode One

夢中でやってたらあっという間に終わったのでちょっと物足りなかった感じもしたけど、面白かったです。なんだか、最初やったときに画面がワイヤーフレームバリバリになってて、これは何かの間違いだろうと思ってインターネットで調べてみたんだけど、どうも …

IO::File::new_tmpfile()

Perl-5.8.8 の source をしばらく見てたんだけど、File::Temp 以外にも一時ファイルを作る module があるようだなあ。その一つがこれまた Perl-5.8.8 標準添付の IO::File で、 my $fh = IO::File->new_tmpfile();でファイルハンドルを取得できる。 こいつは…

Perl での secure な一時ファイルの取り扱い

Perl で (というか Unix で) ファイルを open した後に unlink しても write, read は出来る。というテスト。 #!/usr/local/bin/perl use strict; use warnings; use IO::File; my $file = "/var/tmp/test.$$"; print "file = $file\n"; die "$file is symli…

Vim 7 is ready !

Vim 7 is ready ! ということで、compile してみた。 % fetch ftp://ftp.vim.org/pub/vim/unix/vim-7.0.tar.bz2 % tar zvxf vim-7.0.tar.bz2 (bsdtar は .bz2 も z オプションでいける( gnutar は j )ということを知った。) % cd vim70 (GUI なしの configur…

MixiLoginFocus.user.js

前々から Mixi のログイン画面は Google みたいに入力項目にカーソルがフォーカスしなくって不便だと思っていて、不意に思い立ったので Mixi のログイン画面が表示されるときにフォーム e-mail 入力にカーソルがフォーカスする GreaseMonkeyScript MixiLogin…

Core Duo T2500 on FreeBSD 6.0

大枚を叩いて購入した Core Duo T2500 マシンに FreeBSD を install したら dual core なのに hyperthreading で論理 CPU x 2 などと認識されてる。 May 8 09:30:30 xxx kernel: CPU: Genuine Intel(R) CPU T2500 @ 2.00GHz (2000.01-MHz 686-class CPU) May…

nVidia の FreeBSD 用ドライバ

先月くらい にも書いたんだけど、いまだに nVidia は新しい VGA(GeForce 7600 GT) に対応したドライバをリリースしてくれません。nVidia は Linux, FreeBSD ともにバイナリドライバしか提供してなくて、それに対する批判もあったりするんだけど、まあそれは…

「perlに関する玄人向けTIPS集」へのツッコミ

perlに関する玄人向けTIPS集【1】 をみたら、あまりにツッコミどころが満載だったのでちょっと書いておきます。気を悪くされたらごめんなさい(何か変な日本語だ)。 ハッシュのキーをABC順にソートする foreach my $key(sort $hash{$a} cmp $hash{$b} keys %h…

Better Port Scanner

この前イケてない connect scanner を書いてみたんだけど、local のシステムリソースを非常に食って実質使いものにはならないので、TCP の SYN scan のようなことを Perl でどう書くのかを調べてた。いろいろ CPAN モジュールを調べてたんだけど、標準添付の…

Perl の unpack 時の ”x”

Perl の unpack を極めるべく perlpacktut を見てたらこんな一文を発見。 "x" means "skip a byte" when "unpack"ing; when "pack"ing, it means "introduce a null byte" - that's probably not what you mean if you're dealing with plain text. むむむ。…

Perl Winny Scanner

検出ツールの開発者が語る,「Winnyを検出する方法」 に Winny 検出方法が詳しく書いてあったので、Perl で Winny Scanner を実装してみました。port scan するところは fork + socket で書いていて、あまりいけてないのでもっといい方法を知っている人は教…

Mac::iPod::GNUpod の m4a ファイルサポート

Mac::iPod::GNUpod という Perl で iPod に曲を転送したり、取得したりする便利な module があるんだけど、こいつはどうも wav と mp3 にしか対応していないらしい。最近 AAC でばっかりエンコーディングしてるので m4a にも対応して欲しいところだ。コード…

家のデスクトップ FreeBSD 6.0 化

いい加減家の PC もヴァージョンアップが必要だということで、FreeBSD 6.0 に変えた。kernel を再構築したら、再起動する前に /boot/loader.conf から nvidia.ko を外さないといけない (あるいは再起動前に再コンパイルする) のにまた忘れた。このままだと起…

Plagger::Plugin::Publish::iPodNotes

実は結構前から Plagger で取得した RSS を iPod の Notes で読むプラグインを自分で作って使ってるのですが、昨日の YAPC::Asia 初日の Plagger の session で、まだ iPod の Notes に書き出す Plugin がないということを知ったので、ちょっと恥ずかしいの…

YAPC::Asia 1日目

09:00 には家を出たのに東急線蒲田駅周辺で軽く迷ったせいで 10:00 頃に到着。既に Audrey Tang の Pugs の説明が始まってた。遅く来場したくせに、iPod 落としたりして会場をうるさくしてしまいました。すみません。Pugs も Perl6 も Haskell もさわったこ…

Perl が使いづらいとか、他人のコードがわからないとか言う人は

とりあえず、これを読めばいいんだと思う。これ読んで良いコーディング規約でも作ればみんなそんなに汚いコードとか書かなくなるんじゃないかな。Perl Best Practices: Standards and Styles for Developing Maintainable Code作者: Damian Conway出版社/メ…

はてな RSS の JavaScript エラー

いつからか知らないけど、はてな RSS でグループ名に ' (半角コンマ) を使うと JavaScript エラーになる。結構前からこのグループ名使ってたから、最近発生したのかなあ?例) http://r.hatena.ne.jp/shag/other's%20Bookmark/Firefox の JavaScript Console …

root で zsh

root で zsh 使うと command completion がなぜか失敗して portupgrade で package 名を補完できないので、自分で /var/db/pkg を参照して補完リストに突っ込むようにしてみた。(どうも出来るマシンと出来ないマシンがある?)/root/.zshrc にこんな行を書き…

label タグの LABEL:hover が IE では動作しない

label タグって form の利便性を上げるナイスなタグがあって、 LABEL:hover { color: red; }とかって CSS を書くと、マウスオーバーすると赤くハイライトして激しく便利なんだけど、悲しいことにこれは IE では機能しません。なのでこんな JavaScript を書い…

GeForce 7600 GT on FreeBSD

graphic card を GeForce 7600 GT なやつに換えたら、X が起動しなくなりました。nvidir_driver を再インストールしても無駄。/var/log/messages を見ると 古いカード XX xx 22:16:40 hogehoge kernel: nvidia0: <GeForce PCX 5750> mem 0xf1000000-0xf1ffffff,0xe0000000-0xef</geforce>…

Trying to compile GNU Screen on cygwin

定期的に cygwin で GNU Screen を使ってやろうという思いが湧き起こってくるので、またチャレンジ..........。 ...どうがんばっても無理。patchを書いたひとがいるらしいのだが、source が見つからないのと、configure の patch(cygwin の FIFO はダメなの…

vim の matchpairs がハイライトする件

vim の開発最新版 vim-7.0215 を入れたらちょっと新しい機能が追加されたようだ。少なくても今把握しているのは、 matchpairs {} とか () の片方にカーソルが乗ると、もう片方も(かってに)ハイライトするようになった。 補間リスト( Ctrl + n, Ctrl + p で出…

Counter-Strike:Source Server の続き

無理やり -binary ./srcds_i686 オプションをつけて起動してみたら Segmentation fault で落ちた。emulation 環境だし大人しく i486 で我慢しよう。クライアントは勝手にアップデートしていくので、たまにサーバ側もアップデートしないと、接続できなくなる…

bytes::length

最近の Perl って unicode は 1文字とみなすけど、変数のバイト数を調べたかったり、バイト単位でいろいろするときは use bytes; を使えばできる。 こんなスクリプトを EUC-JP で書いて、 #!/usr/local/bin/perl use strict; use warnings; use Encode qw /d…