2000-02-08(火) [長年日記]
■ TOWER RECORD
町田のビーミー大丸がつぶれることになって、テナントとして入ってるTOWER RECORDもいっしょになくなっちゃうことになった。あたしゃこれから、どこでCDを買ったらいいのだ? ポイントもまだたっぷりあるって言うのに。……それはさておき、最近CDを買っていなかったので、そのTOWERに寄ってJazzのCDを2枚ほど買って来た。ま、TOWERは隣駅の相模大野にもあるしな。
■ MP3
というわけで、予定を変更して今日のコンダラ引きは「CDから楽してMP3ファイルを作ろ〜っ」です(笑)。Windowsでは、有名なCD2WAV32を使っていて、なかなか使いやすくて悪くなかった。MP3エンコードはもちろん午後のこ〜だ(gogo)。gogoは各種プラットフォームに対応しているからLinuxでも使えるとして、あとはCDからWAVをなんとかするだけでいいのだけれど、せっかくLinuxを使うのだから、コマンド一発で黙ってエンコードまでやってくれるようでないとね。GUIなソフトを起動して、いくつもボタンを押さないとエンコードが始まらないようじゃ、Linux使ってる意味がないわけよ。
で、こんな日もこようかと、Kondaraのインストール時にはちゃんとcdda2wavのパッケージをインストールしておいたので、これを使えばいいはず。manをざーっと読んで、適当にこんな感じでコマンドを実行:
$ cdda2wav -D/dev/cdrom1 title
■ /dev/cdrom1はSCSIな32倍速CD-ROMなんだけど、なにやら「SCSIじゃないからcooked_ioctlを使うぜ」みたいなことを言われている。でもとりあえず吸い出している模様。あう、全曲まとめて1ファイルになってるやんけ(泣)。これは-Bオプションをつければ解決やね。ためしにWindowsマシンから聞いてみると、ちゃんと聴こえるのでOK。ちなみにサウンドカードがちゃんとセットアップされているのがWindowsマシンだけなので、仕方がないのである。いいの、MP3は通勤の時にRioで聴くためのものだから。
WAVはできても、これだけでは面白くない。一気にMP3までやっちまわないと。で、cdda2mp3というコマンドも一緒に入っていたので、これを使うといけるみたいだ。でもmanもないので、使い方がわからん。とりあえず先にgogoをいれるか。gogoのRPMはKondaraにはないので、こちらから持ってくる。gogoのページからもリンクされてます。うちはPentiumII-350MHzだから普通のでいいのかな。RedHat用だけど大丈夫でしょう。現時点での最新は2.25。すんなりインストール完了。試しにさっき作ったWAVファイルをgogoにかけてみると、無事にエンコードできた。気のせいか、WindowsNTで作ってたときより速い気がする(たぶん気のせい)。
このgogoのRPMを作っている酒居さんのページにはさらにLinuxマシンでCDからmp3を作るというありがたいページまで用意してあるので、これを参考にして、楽ちん環境を作ってみることにする。まず、cdda2mp3はシェルスクリプトだということがわかる(サイズ見れば一発だろう……)。でもKondaraのcdda2wavに付属(?)のcdda2mp3はエンコーダーにl3encが指定してあるように、ちょっと違うっぽい。このページにgogo用のcdda2mp3が置いてあるので、ありがたくちょうだいする。
問題はcdda2wavのオプションで、どうしてもCD-ROMをSCSIとして認識させられない。じっくりマニュアルを読んでみたけど、IDが4なら-D0,4,0じゃないんかい? いろんな数字の組合せを試してみたけどダメなので、ここはあきらめてcooked_ioctlを使うことにする。動けばいいのよ、動けば。別にベンチマークしてるわけじゃないんだからさ。というわけで、cdda2mp3を書き換えて、オプション指定部分はこんな感じにした:
# specify the audio track listing program and its options LAT=list_audio_tracks LAT_OPTIONS='-D/dev/cdrom1 -Icooked_ioctl' CDDA2WAV=cdda2wav CDDA2WAV_OPTS='-D/dev/cdrom1 -Icooked_ioctl -H -q -Owav -P0' MP_CODER='gogo' MP_OPTIONS='-b 96'
■ Rioに1.5〜2時間分の曲を入れるために96Kbpsでエンコードしている以外はまぁ、普通でしょう。でもってドキドキしつつ、実行:
$ cdda2wav title
■ 無事に動いてます。title01.mp3、title02.mp3……って感じで、ぞくぞくとMP3ファイルが生成されている。cdda2wavとgogoをパイプでつないでいるので、テンポラリファイルを作らない。だからめちゃめちゃ速く見える。いや、実際速いかな。CD 1枚を5〜7分でエンコードしちゃってるし。試しに聴いてみても、なんら問題なし。すばらしい(感涙)。これだよ、こういう環境が欲しかったんだよ。
■ jvim
さて、次。Windows時代に作ったテキストやスクリプトは当然SJISで書かれているんだけど、これが今のKondaraでは編集できない。いや、EmacsやJedなら編集できるかも知れないけど、おれ的にはviを使いたいわけよ。Kondaraに入っているvimは、最新の5.x系で、これはたしか国際化されているのでそのままマルチバイトなテキストの編集ができるのだと聞いたことがある(嘘かも知れない)。でも、日本語化されてるわけではないので、コード系の自動判別とか、いろんなコード系の読み書きはどうやらできないっぽい。実際、SJISのテキストを読むと化け化けだ。これをなんとかしないと、困ることはなはだしい。
で、世の中にはちゃんと日本語化vimことJVimってのがある。会社に置いてあるFreeBSD機にはこれを自分でmakeして入れてあるんだけど、ちゃんとSJISテキストが編集できるので、これを自宅にも入れたい。で、いろいろ探してみると、jvimのRPMパッケージがTurboLinuxにあることがわかったので、jvim+onew-2.0r_2.2.10-5.i386.rpmってのを拾って来た。onewってのは、コンソールで日本語を入力するためのライブラリらしい。しかし、この「2.0」ってのは何の番号だ? まさかバージョンじゃあるまい。
インストールしてmanを読んだら、文末の日付が1992年3月28日!! うげ、ホントに2.0か、これ。せめて3.0にしてくれよ……。いちおう使ってみるも、SJISテキストはなぜかreadonlyで読み込まれちゃうし、機能もいつも使ってるvimに比べるとだいぶ低い。いちおう編集はできるものの、ちょっとストレスたまっちゃうなぁ。ソース持って来てmakeすっか?
というわけで、ソースから作ることにする。まずは、JVimのページへ。vim 5.1の日本語化はかなり難航してるみたいで、ぜんぜん進んでないみたいなので、3.0用のを作ろう。本家のソース(vim-3.0.tar.gz)と、それよりも大きい(笑)日本語化パッチ(jvim.2.0.tar.gz)を入手。まずはソースを展開して、できたvimディレクトリに移動し、パッチを展開。
$ tar zxf vim-3.0.tar.gz $ cd vim $ tar zxf ../jvim.2.0.tar.gz
■ ここでreadme.1stを読むと、patch -p < jvim.diffでパッチを当てよ、とあるので、そうすると、patchに「-pにはNUMの指定が必要だ」と叱られる。え、なぜ(泣)。patchのバージョンが違うのか? -pを指定しないで実行してもうまくいかないので、patchのmanを読みつつ、-p0を指定してみたら、なんとなく当たったもよう(笑)。いいのか、そんなことで(いいのだ)。続いてreadme.docを読むと、src/makjunix.makを編集せよとある。よく読んで、Linux 2.x向きの設定をして(Linux 2.0.x/2.2.xとあるところのコメントを外しただけ)、おもむろにmake。
$ cd src $ make -f makjunix.mak
■ Warningがいろいろ出るけど、ここは無視。srcの下にvimができてればOK。make installで入るのはこのバイナリとmanページ、ヘルプファイルだけなので、ここは手動で移動してしまおう。rootになって、
# strip vim # mv vim /usr/local/bin/jvim # mv ../doc.j/vim.hlp /usr/local/lib/
■ manページはいらないや。既存のvimのと重なっちゃうし。ちなみに今回は、RPMから入れていないので/usr/local配下を使うことにした。さて、実行してみよう。
$ jvim bash2: jvim: command not found
■ をい。変だな、と思ってwhich jvimしてみたら/usr/bin/jvimだって。RPM版を消し忘れてた(笑)。rootでrpm -e jvim+onewして、最挑戦。あれ、同じだ……。おお、これがbashのhashってヤツか?
$ hash hits command 6 /bin/tar 6 /bin/ls 5 /usr/bin/wwwoffle 1 /usr/bin/vim 3 /usr/bin/w3m 3 /usr/bin/man 1 /usr/bin/jvim
■ 当たり(笑)。hash -rでハッシュを消したら実行できた。うん、これなら5.0に比べてもあまり遜色がないから使えるな。SJISファイルはこれでいじることにしよう。本当は、これをRPM化して、Kondara-Zooにでも突っ込めばいっぱしのコンダラーズなんだろうなぁ。でもRPM作成にはもちっと修行せねばな。
2000-02-07(月) [長年日記]
■ RuBBS
週末にやっとこま犬ライブラリを更新できたので、今日は久々にRuBBSのアップデートでもしようかね。まずはこのマシンにRuBBSをインストールしなければならない。/home/httpd/cgi-bin/bbsを作ってそこに0.2.2を展開。アクセス権をnobody/webmasterにして、テスト用の掲示板をmakebbsで作成してできあがったファイルにuser/groupに対する書き込み権を与える。やっぱこの過程はかなり面倒だなぁ。makebbsの構造か、マニュアル(汗)を整備しないと使えねぇよ、これ(笑)。
とまぁ、環境が整ったところで実装開始。まずは、文中にURLを見つけたら自動的にリンクに変える機能がバグっていて、URLの末尾に空白があると正しく動作しない拳の修正。これはすでにパッチが出ていたのでそれをあてて終り(ちとバグってたけど)。
続いて新真コンダラ掲示板でリクエストがあったReply機能の実装。これもわりと簡単で、新しいフォームを作って対象になるアーティクルを引用符付きで突っ込むだけ。が、ここで問題が。存在しないアーティクル番号を指定しても落ちないようにしようと思って例外処理をいれたら、思ったように動かない。なに、Rubyはいつからraiseに文字列指定しちゃいけなくなったの!?
思わぬ非互換に泡を食ったが、class NoArticleError < StandardError endという感じで新しい例外クラスを作ってそれを上げるように修正。あー、びっくりした。でもうちはまだRubyが1.2系なので、1.2でも1.4でも動くようにしないといけない。たぶん大丈夫だと思うので、自サイトだけアップデート。すでに5つの掲示板が運用されているので、入れ換えはちょっとドキドキするが、いちおう問題なし。
Reply用のイメージが、サイトごとに変えられるようにした方がいいかなぁ。掲示板によって背景色が違うから、同じイメージ使うのは無理があるか。もしくは透過色じゃなくすという手もあるな。そっちにするか、楽だし(笑)。よし、明日公開しよう。
2000-02-02(水) [長年日記]
■ glossary
毎日ひそかに読んでいるぱぱんだ日記からたどったナショナルあかりごっこがおかしくて、「おおそうだ、うち(S.P.C.)も用語集がいるよな。毎日朝から晩までチャットに集まってよた話してるんだから(笑)」と思った。ちまちまとHTMLを書くのもだるいし、そもそもひとりで作ってもしょうがないので、みんなが書き込めるように休み時間の30分くらいを使ってCGIを一本でっちあげた。glossary作成CGIである。そんなことしてる暇があったらRuBBSのアップデートしろっつーの(「まったくだ」なんて声が聞こえてきそうだ)。このS.P.C. glossaryも、いつか公開できる日も来よう。
■ CGI
そのCGI、テストのために自宅に持って帰って来たんだけど、ちゃんとApache経由で実行できないといけないので、やっぱいろいろいじってやらないといけない。まず、先日設定したwwwoffleだけど、ローカルなサイトまでキャッシュしようとするので、これを避けなければいけない。/etc/wwwoffle.confのLocalNetセクションに、spc15を加える。ついでにlocalhostも加えておくか。
続いて、CGIの実行環境。RPMで突っ込んだApacheでは、cgi-binディレクトリは/home/httpd/cgi-bin/になっているので、ここにCGIスクリプトを入れるんだけど、ownerがroot/rootになってて扱いにくい。こういう時のセオリーはどうなんかね。Apacheはnobodyのアカウントで動いてるけど、スクリプトの編集は自分のアカウントでやりたい。そこで、groupにwebmasterってのを追加して、自分を入れ、/home/httpd配下のファイルをnobody/webmasterの権限にしてみた。ownerとgroupに読み書き実行を許可すれば扱いやすいんじゃないのかな。それでもときどきrootにならないといけないのが面倒な感じ。自分のアカウントのままでいろいろできるように、いずれ工夫してみよう。これでCGIのメンテナンス環境はできてしまったので、今度こそRuBBSだな(笑)。
■ リンク
そういえば、この日記をリンクしたいと、あるコンダラーズの方からメールがあった。奇特なことである。日記形式は資料としてはぜんぜんなってないので、リンクしてもらっても有効に活用してもらえるかどうかわからんが、まぁ、いずれきちんとまとめるつもりはあるので、いいんじゃないかね。なお、私はリンク許諾を求めるメールには「リンクは何人にも妨げられないあなたの権利です」と答えるようにしている。はやい話が勝手にリンクすれってことなのでよろしく。
■ Palm
さて、今日の作業のきっかけになったナショナルあかりごっこは、けっこう大部で仕事中に読んだらやばいので、とっととw3mでdumpして(w3m -dump URLでテキスト化されて出力してくれるのだ)、PalmのDOC形式にコンバート、PalmPilotに突っ込んだ。これで通勤中に読めるわけよ。で、帰りの横浜線で読んでたら、横で週アス読んでた兄ちゃんが熱い視線を送ってくる。そう、おれのPalmはGeminiケースのT5を装着してるので、すんごく目立つのだ。もしかして、予約してくれてる人だったりして。ひーん、お待たせしちゃってごめんなさい(泣)。最近、Geminiの進捗が最大のストレスになりつつあるよ。とほほ。