Python, Ruby でコーディングする際に躓いた Perl ならわかるんだけど…
な事柄のハウツー。2008-06-18 更新。Special thanks to ミラクル組。
リンク
- 文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++
- http://0xcc.net/blog/archives/000137.html
- 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++
- http://0xcc.net/blog/archives/000043.html
バージョン番号
コマンドライン
- Perl
-
$ perl -v
This is perl, v5.10.0 built for x8664-linux-gnu-thread-multi
いっぱい
$ perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
もっといっぱい
$ perl -e 'print $],"\n"'
5.010000
- Python
-
$ python -v
Python 2.5.2
$ python -c 'import sys; print "%d.%d.%d" % sys.versioninfo[:3]'
2.5.2
$ python -c 'import sys; print "%d.%d" % sys.versioninfo[:2]'
2.5
Ruby
$ ruby -v
ruby 1.8.7 (2008-05-31 patchlevel 0) [x8664-linux]
標準モジュールパスの表示
コマンドライン
- Perl
-
$ perl -e 'print map {"$\n"} @INC'
/etc/perl
/usr/local/lib/perl/5.10.0
/usr/local/share/perl/5.10.0
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.10
/usr/share/perl/5.10
/usr/local/lib/siteperl
.
$ perl \
-V:installsitearch \
-V:installsitelib \
-V:installvendorarch \
-V:installvendorlib \
-V:installarchlib \
-V:installprivlib
installsitearch='/usr/local/lib/perl/5.10.0';
installsitelib='/usr/local/share/perl/5.10.0';
installvendorarch='/usr/lib/perl5';
installvendorlib='/usr/share/perl5';
installarchlib='/usr/lib/perl/5.10';
installprivlib='/usr/share/perl/5.10';
- Python
- FIXME: Python 2.5(?) には vendor-packages もあるみたい。
$ python -c 'import sys; print sys.path'
['', '/usr/lib/python25.zip', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/Numeric', '/usr/lib/python2.5/site-packages/PIL', '/var/lib/python-support/python2.5', '/var/lib/python-support/python2.5/gtk-2.0']
$ python -c 'from distutils.sysconfig import getpythonlib; print getpythonlib()'
/usr/lib/python2.5/site-packages
Ruby
$ ruby -e 'puts $LOAD_PATH'
モジュール検索パスの追加
環境変数
- Perl
-
$ export PERL5LIB='/site/lib/perl'
- Python
-
$ export PYTHONPATH='/site/lib/python'
$ echo '/site/lib/python' >/usr/lib/python2.5/site-packages/site.pth
Ruby
$ export RUBYLIB='/site/lib/ruby'
スクリプト
- Perl
-
use lib '/site/lib/perl';
- Python
-
import sys
sys.path.append("/site/lib/python")
-
import site;
site.addsitedir('/site/lib/python')
Ruby
puts $LOAD_PATH.push("/site/lib/ruby")
Solaris 10 の
パッチ 120011-14 (SPARC), 120012-14 (i386) で、
付属の MIT Kerberos 5 にヘッダーファイル (krb5.h など) が追加された。
これで自前でコンパイルしていた MIT Kerberos 5 パッケージが不要になったけど、
移行はどうやろうかなぁ…。
$ uname -a
SunOS sword 5.10 Generic120012-14 i86pc i386 i86pc
$ ls -l /usr/include/kerberos5
計 242
-rw-r--r-- 1 root bin 2782 8月 9日 2007年 comerr.h
-rw-r--r-- 1 root bin 105188 8月 9日 2007年 krb5.h
-rw-r--r-- 1 root bin 1113 1月 22日 2005年 mit-sipb-copyright.h
-rw-r--r-- 1 root bin 3199 1月 22日 2005年 mit_copyright.h
ところでこのパッチ、
lofs(7FS) を利用していると、
以下のようになってパッチ適用に失敗する:
# /usr/local/sbin/pca -i 120012
省略
Checking patches that you specified for installation.
Done!
mount: Mount point /var/run/.patchSafeMode/root/home/fumiyas does not exist.
Mount operation failed - /sbin/mount -F lofs -o nosub /home/fumiyas /var/run/.patchSafeMode/root/home/fumiyas
Could not successfully create environment for 'deferred activation patching'.
Failed (exit code 1)
lofs(7FS) なファイルシステムをアウンマウントすれば回避できるけど、
ゾーンを ZFS に構築しているとかなり面倒。
参考:
http://www.mydatabasesupport.com/forums/solaris/346058-zonepath-svm-soft-partition.html
仕事で沼津へ。
CentOS 5 で OpenLDAP マスターサーバー + Samba PDC + LAM + Usermin をセットアップしたのだが、
CentOS の更新パッケージのダウンロードが超遅く、
作業が予定通り終わらず…。
以前も似たような状況にあったので、今度は更新パッケージを
DVD に焼いていこう。
というわけで、ミラーを実行するスクリプトを作成。
個人的に不要と思われるファイルを除外しているので、
流用する際はご注意を。
#!/bin/sh
umask 0022
rsync_opts=""
while [ $# -gt 1 ]; do
rsync_opts="${rsync_opts:+$rsync_opts } $1"
shift
done
rsync \
--no-motd \
--copy-links \
--hard-links \
--recursive \
--times \
--omit-dir-times \
--delete \
--delete-excluded \
--filter=". /dev/stdin" \
$rsync_opts \
rsync://ftp.riken.jp/centos/ \
${1+"$1"} <<EOT_FILTER
## Exclude large unimportant RPMs
- kernel*.src.rpm
- kernel-hugemem*.rpm
- kernel-PAE*.rpm
- xorg-x11*.src.rpm
- tetex*.src.rpm
- openoffice.org*.src.rpm
- firefox*.src.rpm
- thunderbird*.src.rpm
- mozilla*.src.rpm
- seamonkey*.src.rpm
## Exclude unwanted files
- HEADER.*
- .*
## Exclude old releases
- /[1-3]
## Exclude X.Y releases
- /[1-9]*.*
## Include X releases (latest X.Y releases)
+ /[1-9]*
- /[1-9]*/apt
- /[1-9]*/isos*
+ /[1-9]*/*
+ /[1-9]*/*/SRPMS
+ /[1-9]*/*/SRPMS/**
+ /[1-9]*/*/i386
+ /[1-9]*/*/i386/**
+ /[1-9]*/*/x86_64
+ /[1-9]*/*/x86_64/**
## Exclude others
- *
EOT_FILTER
帰宅途中、
インターネットで適当に検索して見つけた鰻屋、
元祖うなよし
で鰻丼を食べた。
うまかったので鰻蒲焼の真空パックを群馬の両親へ(母の日と父の日を兼ねて)、
自宅には鰻の佃煮を購入。
鰻の骨せんべいも考えたが、
見た目がちょっとグロいというか何というか…だったので止めてしまった。
やっぱり買ってみればよかったなぁ〜。
子供が喜ぶ(?)顔を想像して、買わなかったことをちょっと後悔。
鰻屋から最寄り駅まで勘を頼りに歩いていると、綺麗な小川を発見。
この手の景色と水の音に弱いんだよなぁ〜、いいなぁ〜、と眺めていると、
川の中を歩ける道を発見。
三島駅まで 1.5km くらいの道程を歩いて帰った。
自宅近くにもこんな小川があったらなぁ。
有名な世界的(?)某企業の技術者採用担当の方から、
ソフトウェアエンジニア募集のオファーがメールで来た。
すごく心惹かれるのだが、タイミングが悪いなぁ。
今の会社でまだまだ頑張りたい、
けど滅多にないか今後はないチャンスかもしれないし、
悩みどころ。
2年くらい前か 5年くらい後だったらよかったのに。
ここしばらくは仕事が減ったので、
話だけでも聞きにいってみようかしら。
最近はイベントに参加する機会も少ないし、いい刺激になるかも。
本当は、お客さん相手で忙しい時期にはできない仕事、
例えば開発環境やネットワーク環境の整備、
新バージョンのパッケージングやらの仕事が山程あって、
やっぱり忙しいのだが…。
過去の実績としては、5年、1年、5年、1年…今の会社と勤務・転職してきたので、
今回は最低でも 5年は勤めることになるのかなぁー、
なんて思っているのだけど、さてどうなることやら。
振り返ってみると、過去のどの会社でもそれぞれいい経験や出会いがあったし、
スキルも向上できたので(ほとんど技術的な面だけだけど)、とてもありがたかった。
感謝しています。
勤め先で人材募集中。
昨年末、会社設立一年経過して
さて、今期はどうすべぇよ?
ということを話し合う機会が社内であった。
人を増やしたいよね
という話から、
どんな人がいい?
という話に対し、
私は
勝手に育ってくれる人じゃないと駄目
とか、
わからないことがあったらガンガン調べたり聞いてくれないと
とか言っていたのだが、
後で
某まつもとさんが同じような事を言っていたのを知って、ちょっと嬉しかった。
私の場合は教育に興味がないというより、向いていないのだけど。
セミナーとかアレな出来だし…。
ということで、いい人、待ってます。
昨日と今日は、お客さんのところで丸二日缶詰状態。
物理マシン上で稼動している Turbolinux 10 Server を
VMware Server 1.0.4 の仮想マシン上にコピーし、
ホスト名や IP アドレスなどを変更して実験環境を構築した。
この手の作業手順を正確に記した文書ってどこかにあるのかなぁ?
特に難しくはないけど、そこそこ色んな知識が必要だったりするので、
いいもの書いたら喜ばれるかしら? (誰に?)
一点ハマったのが、Turbolinux 上で VMware Tools の
vmware-config-tools.pl がうまく動かない問題。
/usr/src/linux/include を見つけたが、configure されてねーぞ?
と (実際は英語で) 文句をたれる。
VMware Workstation 5.5 での解決方法
を試してみたがうまくいかなかった。
結局、次の操作だけで解決:
# ln -s ../linux/.config /usr/src/linux-2.6.8/
SetupKernelSource.sh を実行する必要はないと思うけど、
ごちゃごちゃと触っていたので、
ほかにも必要な操作があるかもしれん。
もう忘れた。
デスクトップマシン
として利用している
FM-V BIBLO MG70W
のハードディスクが手狭になってきたので、
HITACHI Travelstar 7K200
(SATA, 200GB, 7200rpm)
に換装してみた。
換装手順はものすごく簡単で:
- バッテリーを外す。
- Windows のプロダクトキーのシールが貼ってあるほうのカバーのネジ 7本を外す。
- カバーを外す。バッテリー側を下にして、上か左にずらしたっけ? (忘れた)
- HDD を外し、HDD に付いている固定用部品のネジ 2本を外す。
- あとは逆順で戻す。
こんだけ。
必要な工具はドライバー一本だけだし、
ネジの長さや大きさはどれも同じ (HDD のネジ 2本は別物) なので、超簡単。
以前使っていた Panasonic Letsnote シリーズは酷かったなぁ…
(最新モデルはマシになったらしいが)。
交換後は容量も増え (120GB → 200GB)、速度も上って (5400rpm → 7200rpm) 非常に快適。
理想としては 250GB 超の容量は欲しかったけど、速度を優先して選択してよかった。
34歳になった。
いつまでも若いつもりでいたが、そうは問屋が卸さない…。
色々ガタがきています。
その一、肌が衰えた。
子供のツルツル肌を目の当たりにしているから、なおさら実感。
その二、目が衰えた。
20歳代のころは、片目で 0.3〜0.4、両目で 0.7 くらいはあって、
眼鏡がなくてもなんとかなった。
ところが、最近、目が悪くなったな
と思っていたら、
案の定、先日の健康診断で視力を測ったら両目とも 0.2 になっていた。
測定器の視力 0.2 の箇所の記号 (正式名称を知らない) がボンヤリと見える程度なので、
実際は 0.1 程度かなぁ。
その三、徹夜が後をひくようになった。
先日なんか、徹夜を明けてから一眠りして起きたら、酷い眩暈で立てなくなった。
結局一日使いものにならず。
軽い貧血なら経験あったけど、眩暈なんて初めてで
おおー、これが眩暈というものか!
とちょっと感動(アホ)。
ほかにもあったかなぁ?
で、肝心(?)の誕生日なのだが、
仕事を休むも、
軽いロタウイルスっぽい症状で、一日ダウン。
ああ、うまいケーキ食べたかった…。
散々な誕生日でした。
悪名高き(?) pstring が Samba から撲滅されたらしい。
http://gitweb.samba.org/?p=samba.git;a=commit;h=bca371bff8e1dd5099eda1774e5bb0fdbd6a1a77
これで Samba のハックがしやすくなるかな?
Samba 3.0 との差分が多くなってしまったので、
Samba 3.0.24 向けに作成した OSSTech ローカルパッチを Samba 3.2 向けに直すのが大変そうな予感もする…。
息子の幼稚園の入園願書に写真が必要ということで、
それなりにそれっぽい写真を撮ることに。
しかし息子は齢 2歳…あっちゃこっちゃ動き回るわ、
表情もコロコロ変わるわ、終いにゃころんで泣くわで、大騒ぎ。
デジカメなので遠慮なく何枚も撮ったおかげで、
なんとか
Nikon D70
の小さい液晶画面で見る限りではそれなりのが撮れた。
…と思ったが、PC にダウンロードしてみてガッカリ。
表情はイイが背景がゴチャゴチャしていたり、
明るさ・背景・向きはイイが変な顔していたり、
イマイチだった。
では、と GIMP で合成開始。
表情のいい写真から息子の部分だけ切り出し、
変な顔の写真の息子は邪魔(笑)なので隠れるよう幅を 2/3 くらいにし、
2枚を重ね、
最後に息子の輪郭をボカす…完成。
素人なので本当に「それなり」だが、いいのができた。
願書受付と面接も無事終了したらしい。
息子は先生の質問に全然答えられなかったみたいだけど…。
入園までに何回かイベントがあって参加できるらしいので、ちょっと楽しみ。