新しい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