新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2010-12-27

[Perl]キリル文字→ローマ字の翻字をするには

以前にも挑戦してうまくいかなかったキリル文字の翻字。
一時はモジュールの自作も検討しましたが、CPANにそれを実現してくれるモジュールがありました。

その名も、Lingua::Translit

Lingua::Translitの使い方。


使い方はPODにも書いてある通り。簡単です。

use warnings;
use strict;
use Lingua::Translit;

my $lt = Lingua::Translit->new( 'GOST 7.79 RUS' );
my $text_tr = $lt->translit( 'Этот модуль завершила моё предназначение.' );
print $text_tr. "\n"; 

結果。
$ perl translit.pl 
E`tot modul` zavershila moyo prednaznachenie.

友人に教わったキーワードのおかげで発見できた

このモジュールはおそらく、自力のみでは見つけられなかったと思います。

僕はロシア人の友人と時折オンラインでやり取りするのですが、ある日彼に、「キリル文字を翻字するモジュールを自作したいんだけど、参考文献ってある?」と訊いたところ、「ГОСТ(GOST)という翻字の仕様があるよ!」と教えてもらいました。

「GOSTかぁ、なるほど。もう一度CPANで引っ張ってみよう。」
新たなキーワードを元に「Cyrillic GOST」でサーチしてみると、もうこのディストリビューションしかマッチしない状態に。
こうして、目的のモジュールをようやく発見することができました。

学ぶのならば、とにかくわかる人に訊こう

Perlハッカーの皆さんに訊けば、もっと早く発見できたでしょう。
今回訊いた友人もプログラマではありますが、Perlには精通していないよう(彼の専門はJavaおよびProlog)でした。
しかし、より広い知識を得るという意味で、ロシア人にロシア語のことを訊いたのは正解だと思っています。

Спасибо, Firegurafiku!

2010-12-24

[Perl]VEコンテナにperlbrewインストールすると「whichが使えない」と叫ぶ

# perlbrew list
Can't exec "which": No such file or directory at ./perlbrew line 522.
Use of uninitialized value in substitution (s///) at ./perlbrew line 523.
  /usr/bin/perl (5.8.8)
こうなったときは、
# yum -y install which
するといいです。

[Linux]コマンド名からrpmを探す

メモ。

あるプログラムが含まれているRPMパッケージを探すには

たとえば which を探す場合。
# whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz
# rpm -qf /usr/bin/which
which-2.16-7

とすれば見つかる。

2010-12-15

[OpenVZ]メモリリソースの割り当て

割り当て

例えば、ID300のコンテナにメモリリソースを割り当てる際、最低確保するメモリを64M、最大メモリを256Mに設定する場合。
# vzctl set 300 --privvmpages 64M --vmguarpages 256M --save
で設定できます。

確認

まだコンテナを起動していない場合は、コンテナを起動する必要がありますので、起動しておきます。
# vzctl start 300
コンテナを起動したら、
# vzctl exec 300 free -m
で、メモリが確保されていることを確認しましょう。
# vzctl exec 300 free -m
             total       used       free     shared    buffers     cached
Mem:            64          8         55          0          0          0
-/+ buffers/cache:          8         55
Swap:            0          0          0

[OpenVZ]CPUリソースの管理と割り当て

CPUリソースの管理

vzcpucheckコマンドで、現在割り当てられているCPUリソースと、ハードウェア全体におけるCPUリソースが把握できます。
# vzcpucheck
Current CPU utilization: 7000
Power of the node: 600010

コンテナに割り当てるCPUリソースを変更する

例えば、ID300のコンテナに割り当てるCPUリソースを変更するとして、最低限確保されるCPUリソースを2000、最大CPUリソースを6000にする場合は、
# vzctl set 300 --cpuunits 2000 --cpulimit 6000 --save
とすればOKです。

2010-12-13

[Perl]Hachioji.pmに参加しました

uzulla氏主催のもと、12/11(土)に八王子にて開催された(東京西部、多摩地域).pm #0に参加してきました。

八王子のアクセスの良さはぁァァァァ、西東京一いぃィィィィッッッ!!!

まず、会場となった八王子は中央線、京王線、横浜線をカバーし、アクセスが非常に良いです。
しかも!八王子の駅がめっちゃキレイ!!で、バカでかいビッ○カメラがあったりして、機材調達にも事欠きません!

Hachioji.pmとTakao.mtが名前の候補に。

Takao.mtは高尾山青空ハッカソンのイベント名に譲ることにして、Hachioji.pmを正式名称とすることに決定。
こういうアウトドアなイベントはいいですね!ただ、回線が届くかどうかが心配ではありますが。。。

八王子は立川と仲が悪いらしい?

西八王子の某氏曰く「いけ好かねえ感じ」だそうで。。。
Hachioji.pmに名前が決まったことで、「立川にpmないの?マジ?プギャーm9 (^Д^) 9m」できるんだとか何とか。。。
まあそんな事気にせず、立川の皆さんもぜひHachioji.pmを盛り上げていただければ幸いです!

意外とインフラエンジニアの方が多かった

業務でSolarisつかってます!という方が多かったですね。
あと、メール周りでIPv6関連に手を出している方がいたのも、非常に興味深かったです。
今後の勉強会等では、渋谷・横浜とは違った方向性の発表があるかもしれませんね。
WebアプリやクローラーだけがPerlじゃない!というところをもっとアピールしていきたいです。

活動スケジュールについてはちょっと独特

基本的に渋谷や横浜は平日開催だったりするようなのですが、Hachioji.pmは今後、土日開催の方針だそうです。
業界的に、業務が夜間まで及ぶケースが多い人間にとって、これは本当にありがたい話ですね。

普段のコミュニケーションの舞台はTwitter

ハッシュタグは#hachiojipm。IRCメインじゃ無いところが今風ですね。
IRCのチャンネルも用意する方向だそうです。

サイトはどうする?活動報告はどこでやるの?

活動報告を、Acme::Hachiojiのような名前のモジュールにしてCPANにアップするとかいうネタ発言があったのですが(charsbar氏によると、Barcelona.pmで似たような試みがあるそうです)、これは本当にやるんでしょうか?
やるとしたら、PODに活動報告を書くことになるんでしょうか。。。

次回は新年会!

次回は新年1月に開催する見込みのようです。

2010-12-07

[Perl]perlbrew + cpanmで任意のディレクトリにperl環境を構築する

perlbrew+cpanmでPerl環境を丸ごとホームに置く - nabnabの日記の通りに進めたところ、問題なく構築できましたというお話。

ログ等を取りそびれたので、後日ちゃんとログ付きで記事を起こしなおします。。。

[Perl]明示的なハッシュリファレンスの指定について知った

ハッシュリファレンスを書くとき、
my $a = { hoge => 'fuga' };
のように書くわけですが、とあるPerlコードを覗いていたとき、
my $a = +{ hoge => 'fuga' };
のような記述を見かけたわけです。
ぱっと見て、'+'が何なのかよく解らなかったので、Twitterで聞いてみたところ、
  • 明示的にハッシュリファレンスを渡している
  • 単項の+はNOPなのでB::Deparseで同一になるはず
とご教示いただきました。ありがとうございます。

実際に確認してみました。
スクリプトは以下のように記述。
use warnings;
use strict;
use Data::Dumper;

my $a = { hoge => 'fuga' };
my $b = +{ hoge => 'fuga' };

B::Deparseに通してみたところ。
$ perl -MO=Deparse ./hoge.pl
use Data::Dumper;
use warnings;
use strict 'refs';
my $a = {'hoge', 'fuga'};
my $b = {'hoge', 'fuga'};

たしかに同一ですね。syntax-sugarと思ってOKそうです。