ビルドの仕方が思い出せなくて、結局一から調べ直してたり……。
膨大に溜まったRSSの未読を消化中。ニュース系はさくさく消化できるけど(本当に興味の湧いた記事だけピンポイントで読むから)、日記系は登録時にある種の取捨選択が済んでいる分、読むのにめっちゃ時間がかかる……。
とりあえずいろいろ見た中から一言をメモ。
自分でもよくわかってないことを厳密にしても意味がない (フォン・ノイマン)
「アジャイルプラクティス」「アジャイルレトロスペクティブズ」「RESTful Webサービス」は買わんといかんな……。(と言いつつ、物理媒体の方も山ほど未読が積み上がってるわけだが)
「コレくらいは出来るようになっていてくれ(このエントリの一番下)」って、ちょwwwおまwww それハードル高すぎどころの話じゃ(^^;
俺的な最低限は以下の3つ。
自分が書いたコード全体の把握。何を意図してるのか全く理解できない処理があるので作成者に聞いてみたら、作成者自身が何やってんのか理解してない(※)。……何をどう考えたら自分でも理解できないコードが書けるのか全く理解できないのだが、誰かその背景を解説してくれないかなぁ?
※何処かからコピペしてきたわけでなく、一から書いている。また、実現すべきロジックも、理解困難な理論的背景があるわけではない。
とーとつに家サーバ(Debian etch)で仮想環境(OSは同じ)を動かしたくなった→xenについて調べてみる→えらいめんどくさそう→じゃあVMwareで→いろいろいろいろハマる→ようやくVMが使えるようになる(←いまココ)
ということで、ハマり事項をメモっておく。
vmw o +t # 時刻同期オプションを有効にする vmw t -u # 時刻同期を行う (-u = local time, -U = GMT)
先日の日記に、
環境構築後のVMイメージを複製して環境設定をいじると、何故かネットワーク関連がうまく動かない。(原因究明せず)と書いたら、友人S氏からメール。結論から言うと、VMイメージをコピーすると仮想 NIC の MAC アドレスが変わり、Linux 側で別のデバイス名が割り当てられるためとのこと。詳細と対策は以下の通り。
VMware で Linux を動かす場合、起動時のカーネルオプションをいじるのは必須らしい。
ちゃんと指定したオプションで起動しているかを確認するには、/proc/cmdline を確認すればよい。
$ cat /proc/cmdline root=/dev/sda1 ro notsc nosmp noapic nolapic
Debian etch での注意事項としては、カーネルのバージョンアップがあったときは、apt-get upgrade で /boot/grub/menu.lst が書き換えらえるので、カーネルオプションを設定し直す必要があること。kopt を有効にすれば常に反映されるかなと思ったが、どうもダメだった……。
なお、これを調べる過程で知ったのだが、VMware Tools による時刻同期は、vmw を用いなくても、*.vmx のオプションをいじればよいらしい。
ところで、この設定をした結果、驚きの副作用が。tiobench でディスク I/O の評価を行ってみたのだが、設定前と比べて、Sequential Reads が 30%くらい、Random Reads が 10倍くらい、Sequential Writes はほとんど変わらんかったが、Random Writes は3倍くらい性能が向上していた。すげぇな、これ(^^;
家に帰ったら、自宅サーバがラップを刻んでますた(汗) 確認してみると、HDDが一発逝かれてるし。orz 先週末にメモリを増設した直後なのに……。 RAID1なので実害は無かったけど。
あわててHDDを交換したあと、同期を取る前にUSB接続のHDDへのバックアップ。(片肺運転だったのでちょっとどきどき) 現在は交換したHDDとの同期中。
ちなみに交換したディスクは、前回トラブったときに故障したと思ってたもの。後にケーブル異常が発覚したので、多分大丈夫、とは思いつつもノーチェックだったのだが、今回のトラブルで引っぱり出してきたのであった。今のところは問題は出ていない模様。
前回トラブったと微妙に設定が違うので、記録のために情報を残しておく。
# パーティション情報 $ sudo fdisk -l Disk /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 30339 30401 506047+ 82 Linux swap / Solaris /dev/sda2 * 1 30338 243689953+ fd Linux raid autodetect Partition table entries are not in disk order Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 30339 30401 506047+ 82 Linux swap / Solaris /dev/sdb2 * 1 30338 243689953+ fd Linux raid autodetect Partition table entries are not in disk order Disk /dev/md0: 249.5 GB, 249538412544 bytes 2 heads, 4 sectors/track, 60922464 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md0 doesn't contain a valid partition table # RAIDの詳細情報 $ sudo mdadm -D /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Mon Aug 7 16:26:07 2006 Raid Level : raid1 Array Size : 243689856 (232.40 GiB 249.54 GB) Device Size : 243689856 (232.40 GiB 249.54 GB) Raid Devices : 2 Total Devices : 1 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Feb 5 23:33:56 2008 State : active, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 UUID : f96352d3:4c66ce1a:bdf83978:ed85a3a1 Events : 0.979087 Number Major Minor RaidDevice State 0 8 2 0 active sync /dev/sda2 1 0 0 1 removed # RAIDの追加 $ sudo mdadm /dev/md0 -a /dev/sdb2 # RAIDの概要情報 $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb2[2] sda2[0] 243689856 blocks [2/1] [U_] [==============>......] recovery = 71.1% (173391808/243689856) finish=29.9min speed=39172K/sec unused devices: <none>
ググってみても、あんまり引っかからない……。皆困ってないのだろうか?
ずーーーっと「うまくいかねー」と思ってたら、libsasl2-modules のインストールが必要だったorz
bashとEmacs、その他もろもろの設定を、ごりごりごりごり共通設定と個別設定に分離し、一式まとめて Mercurial リポジトリへ。これで、hg clone 一発で環境回復w
閉店10分前の本屋に飛び込み、探し回るも見当たらず。店員に訊いたらさっき見た棚にあるやんけorz
yomyom の外観知らんかったんよ……。
ストーリーはなーんも進展してませんが(まー短編だし)、久々にわくわくしながらページをめくってたような気がする。最後のシーンは実に感慨深かった。
しかし、とりあえずは満足したけど虫押さえにしかなんないんだよな。本編が出るのは何時の日のことやら……。
あとで書く(^^; 書いた。
関連付けを「XML Editor」に変更すれば OK。
Microsoft Script Debugger は、単独配布のものはふっる〜いものしかなく、Windows XP 上でまともに動かせなかった※が、MS Office に入っている Microsoft Script Editor (デバッガ機能も含む) はちゃんと動くようだ。
MS Office 2003 の場合、実行ファイルは C:\Program Files\Microsoft Office\OFFICE11\MSE7.EXE
にある。インストールされていても、ショートカットは作成されないので注意。存在しない場合はインストーラから以下の手順でインストールできる。
スクリプトをデバッグする場合は、wscript //x スクリプトファイル名
でデバッガが起動される。
※がんばれば何とかなるようだ。
Word 文書 (*.doc) を XML ドキュメント (*.xml / WordML) に変換する WSF スクリプト。
Cygwin 関連のソフトウェア一式を更新しました。
iwa.ath.cx 死亡後放置していたのを修正した。が、期待する形式で出力されているわけではないので、そのうち自前でRSS吐くようにせなあかんなぁ……。
アップグレード特別優待パッケージ (数量限定、特別価格9,980円税込)。
wordmlとスプレッドシートXMLと戯れるのを目的に、MS Office 2003 を物色してたんだが……値段に負けて、気が付いたら予約してた(^^; 本日入手したので、とりあえずインストールしたけど、使い道が(^^;; 噂のリボンバーを見て終わったよーな気がする(^^;;;
とりあえず動いたのでメモ。Clearsilver のインストールが壁か。
easy_install pysqlite
tar xvfz clearsilver-0.10.5.tar.gz cd clearsilver-0.10.5 patch -p1 < ../clearsilver-0.10.5-cygwin.diff touch configure ./configure make make install cd /usr/lib/python2.5/site-packages/site-packages mv neo_cgi.dll ../../lib-dynload cd .. rmdir site-packages/site-packages
unzip trac-0.10.4-ja-1.zip cd trac-0.10.4-ja-1 ./setup.py install
最低限動くところまでもっていく。それ以上の設定についてはマニュアルをよく読むこと。ここでは、tracサーバをスタンドアローンで動かすものとする。
cd $HOME mkdir trac repos etc
# リポジトリの作成 cd repos svnadmin create trac-test # trac プロジェクトの作成 cd $HOME/trac trac-admin trac-test initenv ... Project Name [My Project]> Trac Test ... Database connection string [sqlite:db/trac.db]> ... Repository type [svn]> ... Path to repository [/path/to/repos]> ($HOMEの値)/repos/trac-test ... Templates directory [/usr/share/trac/templates]> ...
cd $HOME/etc cat > trac-digest.py # ここでコピーしたスクリプトをペーストし、Ctrl-D を入力。 python trac-digest.py -u USERNAME -p PASSWORD >> passwd
cd $HOME/trac nohup tracd --port 8080 --auth=trac-test,$HOME/etc/passwd,trac `pwd`/trac-test &
svn export http://svn.edgewall.com/repos/trac/sandbox/webadmin/ cd webadmin python setup.py install
[components] webadmin.* = enabled
trac-admin PROJECTDIR permission add USERNAME TRAC_ADMIN
筆者が関わったプロジェクトでは、チケットを解決にするのはかならずプロジェクトマネージャーだけに限定して運用している。つまり、作業が終わるとチケットの担当者をプロジェクトマネージャーに変更するのだ。これにより、すべてのチケットは必ずプロジェクトマネージャーを通るため、品質の保持をはかることが可能となる。「【バグ管理の作法】Trac徹底活用! - 第2回:なぜTracの導入に失敗するのか?」より。この連載は、以下の記事も参考になる。
(2008-05-08に追記)
「VMware で Linux を動かした際の時刻のずれを解消する(続き)」等を参考に設定をいじってみたが、結局 ntpd で0.1秒単位の補正がかかるのがウザいので、なんとかしてみた……けど、これで目的達成できてるんだろーか?(^^;
2008-04-28追記: 2日経ってログを見ても、特に補正がかかった様子はなし、ntpd を止めて ntpdate かけても補正時間は0.014秒程度、ということで、効果はあった感じ。
deb http://ftp.jp.debian.org/debian/ etch-proposed-updates mainその後、2.6.24 のカーネルパッケージをインストール。
sudo vmware-config-tools.plしたら、モジュールのビルドのところでコンパイルエラー。orz
cd open-vm-tools-YYYY.MM.DD-NNNNN/modules/linux mkdir tmp for d in vm*; do cp -av $d tmp/$d-only; ( cd tmp; tar cvf $d.tar $d-only ); done ls -l tmp sudo cp -v tmp/*.tar /usr/lib/vmware-tools/modules/source/ sudo vmware-config-tools.pl
更新しますた。しかし、new マシン上で make -j all-target-winsup
すると、リソースをバカ食いしつつ(CPU→100%、消費メモリ→通常時+1.5GB)、ビルドプロセスがすごい速さで流れていくのにはちょっと感動……。(ビルド完了まで約4分!!) 新しいマシンを買う醍醐味ですなー。
GW を潰して(^^;)雑記を再編成。一部自動化したけど、本文はあいかわらずHTMLの手書き。
とりあえず、permilnk を張れるようにしたのと、RSS 1.0 (ATOM じゃないのは、Ruby 1.8.6 添付の RSS ライブラリが、まだ ATOM 対応のバージョンじゃないから) を吐くようにしたのが大きな変更点。でも RSS の方は、手抜きで時刻は入らなかったり(^^;
とりあえず、時計については問題なし〜、と思ってたら、ホストマシンのログに、
May 8 03:37:17 HOSTNAME kernel: /dev/vmmon[2904]: host clock rate change request 842 -> 1109
というメッセージが山のよーに……。そーか、やたらディスクがカリカリするなと思ったら、こいつだったのか。
コピペしたメッセージを検索バーに入れてぐぐったら一発回答。
「host clock rate change request」(ソース:「Virtual Machine Seems Slow when Running a Particular Program (Clock Issue)」)
しかし、HZが大きくても小さくても問題が起きるっつーのは……。orz
チケットげと。5,000円なり。LL Future もあるし、意外とお金が……。
しかし、チケット発売開始時間にローソン行ったら、3人も待ち行列が(予想外) しかも争奪戦の激しいチケットなのか、何回も蹴り返されてるし。こんどからネットで買うかなぁ。でもローチケ、こういう費用を取るところが納得いかないんだよねぇ。
Firefox には、各種のマウスジェスチャ用のプラグインがある (「All-in-One Gestures」など) が、IE Tab には効かない。しかし、きっと誰かが何とかしてるに違いないと思って探してみたら、「かざぐるマウス」というツールを確認。
各種ブラウザおよびエクスプローラにも効くことがわかったので、関連するプラグインやツールを削除して、これ一本に絞ることにした。
2008-05-14追記: Firefoxでは「上の階層へ」が効かなかったorzので、「All-in-One Gestures」を復活。
泊まりがけでつくばに行ってきますた。駅の階段を登ってるとき、かっこでくくりたくなるような同類が見える……(^^;
しかし、この手のカンファレンス、発表者も参加者もMacが増えたなぁ。
どのVMにも次期featureにMVM入ってるな。何故だろう? Webアプリ向け?
英語がもっと聞き取れません(>_<;;; ぶっちゃけよくわかりませんでした……。
とりあえず、nkfとKconvとIconvをどう使い分ければいいのか悩まんで済むのは良いことだ。しかし、Rubyも結局自前テーブル主義かぁ……。
以下の2つが聞けただけでも収穫。応用範囲が広そうだ。
か、かっこいい……:-)
あと、Selenium はちゃんと活用しようと思いました。(テストだけじゃなくて、障害のエビデンスを取るのにも有効というのは考えたことなかった)
この発表の後、多目的ホールに民族大移動:-) そーか、皆Ruby技術者認定試験には興味無いか。
皆発表うまいなぁ。外れがなかったくらい。まとめるのが面倒なので(ぉ)、以下、キーワードだけ。
「大規模自慢は馬鹿がやること」、ODE、Enumeratorのeach_xxx重要、ActiveRecordのnamed_scope、gcov、mod_waffle(わっふるわっふる)、スライド無しで発表(めずらしい)
Redmine良さげ? でもWikiは使いにくいらしい。
ネタかと思ったら、参考になる++だった。
MacRubyすげぇ。しかし、Cocoaのクラスにないメソッドは1つ1つ再実装しているに等しいな、あれ……。
自分用の備忘録。
trap 'stty echo' INT stty -echo echo -n "Password: " # 素の /bin/sh なら echo "Password: \c" read password echo "" stty echo trap INT
CentOSを触る機会があったのだが、daemonの上げ下げすらわからんかったのでメモ。「Red Hat ドキュメント・マニュアル」
日記再編成したとき、相対リンクを修正し損ねてた(^^; エラーログを見て初めて気付いてたり……。
ネットワークドライブ接続時やベーシック認証で出てくるダイアログを見ると、ユーザ名やパスワードがどこかに保存されているようなのですが、どこで管理されているのか知らなかったので調べてみました。(Google: "ネットワークパスワード" 削除)
結論としては、以下の操作で表示されるダイアログにて編集できました。
また、コマンドラインで起動することもできるようです。
rundll32.exe keymgr.dll, KRShowKeyMgr
ドトールのジャーマンドッグがリニューアルして、
いくらなんでも、そのトリプルアタックは無いだろう……。
気が付いたら、設定ファイル群を管理している自前のMercurialリポジトリにpushできなくなっていた。
> hg push pushing to http://******** searching for changes 2 changesets found ssl required
orz
ぐぐって見ると、push先の.hg/hgrcに以下を追加すればよいらしい。(ちゃんとSSL設定しろという話もあるかもしれんが)
[web] push_ssl = false
再度挑戦。
> hg push pushing to http://******** searching for changes 2 changesets found abort: authorization failed
o...rz
今度はぐぐっても発見できない。って、素直に付属のドキュメント見ればいいやんけ、と自己突っ込みしながらdoc/hgrc.5.htmlを眺める。pushを許可するには以下の設定が必要らしい。
[web] allow_push = *
再々度挑戦。
> hg push pushing to http://******** searching for changes 2 changesets found adding changesets adding manifests adding file changes added 2 changesets with 4 changes to 4 files
無事push完了。
管理者に届くだけですが……(^^:;;
というわけで、特集1第5章「LL,関数型言語でUDPマルチキャストプログラミング」と言うのを書きました。プログラミング、と言いつつ、本命のソースコードは「Webからダウンロードしてね!」っとなってますので、ご注意(^^;
誌面の制約が無くなったので、コメントを色々放り込んであります。……間違い等がありましたら、こっそり教えてください:-)
お勧めされたので動かしてみた。が、何かいろいろとびみょーな点が……。
--- a/config/environment.rb Tue Nov 11 21:00:28 2008 +0900 +++ b/config/environment.rb Tue Nov 11 22:16:04 2008 +0900 @@ -98,5 +95,6 @@ GLoc.load_localized_strings GLoc.set_config(:raise_string_not_found_errors => false) +gem 'gettext', '=1.10.0' +require 'gettext/rails' require 'redmine'
part.body = NKF.nkf('-j', part.body)
の直前に part.transfer_encoding = '8bit'
を入れてみた。(ってか、7bitにすべきか?)--- gettext-1.10.0/lib/gettext/rails.rb.ORIG 2008-11-11 23:06:21.000000000 +0900 +++ gettext-1.10.0/lib/gettext/rails.rb 2008-11-12 02:12:40.000000000 +0900 @@ -447,6 +447,7 @@ if part.content_type == 'text/plain' part.charset = 'iso-2022-jp' part.body = NKF.nkf('-j', part.body) + part.transfer_encoding = '8bit' end end @mail
http://www.itmedia.co.jp/news/articles/0812/08/news100.html
30歳前後の女性が「初音ミクの曲が好き。『護法少女ソワカちゃん』っていうのがね」と連れの男性に熱心に説明する様子を目にした。
ちょwww