自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

July 01, 2002 [長年日記]

[Misc] Kondara解散

そうですか....。ここ数年はずっとKondaraのお世話になってきました。Kondaraの名前が無くなってしまうのは素直に残念です。上のリンクもそのうち見れなくなってしまうのでしょう。

とはいえ、活動自体はMomonga Linuxに引き継がれるようですし、1ユーザとして新たな活動を見守っていきたいと思います。

[Misc] Ruby-GetText-Package

今日、手元ではなかださんのパッチを吸収しました....と思ったら、わたなべさんのパッチ発見。明日にでも取り込まさせていただきますね。

本日のツッコミ(全2件) [ツッコミを入れる]

okoge [Kondaraの解散は本当に残念です。他のディストリビューションとまったく違って、遊び心いっぱいで魅力的だったのに。]

むとぽん [okogeさんご無沙汰です。 Kondaraも魅力的でしたが他のディストリも魅力的だと思いますよ。 せっかくですので..]


July 02, 2002 [長年日記]

[OpenBlockSS] ハードディスクからブート

とりあえず、今日、箱から出してハードディスクからブートするところまで行った。にしても、工場出荷時にviすら入っていないとは....。イカスぜ。

マニュアル通りだったので特筆するところは特にはないんだけど、1つだけ。

fdiskで/dev/hda1(ext2), /dev/hda4(swap)と作った後で/dev/hda2(ext2)を作ろうとしたら、fdiskでエラー(すでにその領域を使用しているうんたら....)が出てフォーマットもできない。何が悪いんだろう。ハードディスクが壊れた?(-o-;)。

#会社で時間を見つけながらやっているので全然進まない〜っ!


July 06, 2002 [長年日記]

[Ruby] Ruby-GetText-Package-0.3.1 is out!

リリースした。これでひとまず落ち着けるかな.....。ダメ?(^^;)

ちなみに、今回の変更でIconvなしでも動作するようになった。Iconvが無い場合はメッセージカタログ(moファイル)の文字コードで出力される。

オレはOSといえばLinuxとWindows位しか触ったことがないのであまりはっきりは言えないのだが、アプリ開発者側としてはmoファイルをShift_JISで書いておくと比較的多くの環境で動かせると思う。っていうのは、最近のLinuxのディストリビューションでIconvが入っていない環境はないし、Windowsの場合、Iconvモジュールが入っていない環境もあるみたいなんで。

商用UNIXはどうなのかな。UNIX98に準拠してればIconvは入ってるのか。でもバグが多いって話も聞いたしなぁ。

いずれにせよ、この辺の問題が早いとこ解決すれば、こういうことで悩まずにも済むんだよな。え?Unicode?うーむ。

本日のツッコミ(全10件) [ツッコミを入れる]

Before...

むとぽん [うーむ、これは大変ですね。 にしても、これだとプラットフォーム別の実装がわからないような気が....(^^;)。]

kjana [1. preferred MIME charset に実装依存の区別なんてありません. 2. しかも iconv()..]

むとぽん [なるほど....。確かにnl_langinfo()って汎用性に欠けますね...。 誰か変換表書いてくんないかなぁ....]


July 07, 2002 [長年日記]

[Ruby-GNOME2] 頭の中メモ

Ruby側から見ると情報をset/getすると言う意味で、GTK+側はAPIがいっぱいある巨大なハッシュって言えると思うんだよね。

でも、時と場合によってRuby側とは関係なくハッシュから情報がなくなったり増えたりするのがたまに傷。そこをどう同期を取るかってことなんだよなぁ。ムズイ。


July 08, 2002 [長年日記]

[Misc] 10,000アクセス突破!

まぁ、数字は曖昧なのでそれほど信憑性は高くないんですが素直にうれしいです(^^)。

ところで、10,000のキリ番踏んだ人っています?いたらツッコミに書き込んでいただけるととってもうれしいんですが....。オソイ?


July 09, 2002 [長年日記]

[OpenBlockSS] Debian化

おざわさんのOpenBlockSSをファンレスDebian GNU/Linuxサーバーとして運用するを参考に(というかディスクイメージをそのままいただいて(^^;))、OpenBlockSSをDebian化した。

ただ、そのままだとDHCPクライアントがうまく動かなかった。

dhclientの設定と/etc/network/interfacesの指定をしてdhclientを実行すると以下のようなエラーが出るんだよね。

# dhclient-2.2.x eth0
socket: Protocol not available - make sure CONFIG_PACKET and CONFIG_FILTER
are defined in your kernel configuration!

メッセージを見たとおり、CONFIG_FILTERが設定されていないのが原因みたい。

というわけで、ひとまず、会社の試験サーバ用の固定IPアドレスを(こっそり(^^;))使ってサーバを起動。

apt-getでカーネルコンパイルに必要なパッケージをひたすらインストール(NW経由)。

何が必要だったかイマイチ覚えてないんだけど、gccとかbinutilsとかncursesとかその他やたらインストールしたな。

それから、同じくおざわさんのカーネル・パッチのページから最新版のカーネル(2.4.19-rc1 : src-linuxppc_2_4_devel.tar.bz2)と、OpenBlockSS用のカーネル・パッチ(patch-obss-2.4.19-rc1.diff)をもらってきて、さらに大野さんのswapoffパッチをあてて、おざわさんのmy.configを参考にしてmake menuconfigをしてコンパイル。

ここまでは特に時間もかからなかったんだけど、コンパイル自体はスゲー時間かかった。

OpenBlockSSのユーザページでクロスコンパイルをお奨めしていた理由がよくわかったよ(^^;)。

コンパイル後は、フラッシュメモリにinitrdを書き込んでNetworkの設定をDHCPに戻してリブート。DHCPクライアント含め全てOK。すばらしい。

ついでにext3を使えるようにしたのでHDDを全てext3化。これもWWWで情報がいっぱいあったのでとても簡単なり。

apt-getって初めて使ったけど便利だなぁ(実はmphも使ったこと無かったり(^^;))。そもそもDebianは初めて使うけど特にとまどうことなく動かすことができたので良かった。/etc配下とかちょっと構成が違うけどね。

本日のツッコミ(全2件) [ツッコミを入れる]

たむら [いいなぁ。Debian on OBSS.どうして、Vine/PPCにしなかったの ? i386も Debianにした..]

むとぽん [いやぁ、一度使ってみたかったんですよね〜 Debian。今まで使ったこと無かったんで(^^;)。 熱の方はそうです..]


July 10, 2002 [長年日記]

[Ruby] Ruby-GetText-Package-0.3.1再パッケージしました

一部コンパイル済みの*.o, *.soファイルが紛れ込んでいたとわたなべさんにご指摘いただきました。

Linux以外の方に取ってはちょっとまずい(一回削除してからコンパイルし直す必要がある)ので、取り除いて再パッケージ化しました。

[Misc] ちょっとだけ日付を大きくしてみた

epiさんのページがカッコイイのでマネして日付の部分を大きくしてみた。

でも、和式表記(?)が大きい文字だとカッコワルイのと全体とのバランス関係がイマイチになってしまったので、結局epiさんのところよりだいぶ小さくしてしまった。

にしても、やっぱりオレにデザインセンスはないようだ(-_-;)。

[Misc] うげっ、ブートローダが壊れた....

HDD1(/dev/hda)はもう寿命かもな....。


July 11, 2002 [長年日記]

[OpenBlockSS] NATルータ化

今度はNATルータ化だ〜。テスト環境はこんな感じ。

会社サーバ(A) ---- (B)OBSS(C) ---- (D)テストPC(クロスケーブルで直つなぎ)
  • (A)はグローバルアドレス。うちの会社は贅沢なことに社内のNetworkにグローバルIPを使っているんだよね。
  • (B)はOBSSの(A)側のインタフェイス(eth0)。IPアドレス等はDHCPで(A)側にあるDHCPサーバから取得する。
  • (C),(D)はプライベートアドレスを使ったセグメント(192.168.1.0/24)。
  • (C)はOBSSのテスト環境側のインタフェイス(eth1)。IPアドレスは192.168.1.1。
  • (D)はテストPCのインタフェイス(eth0)。192.168.1.2でデフォルトゲートウェイは192.168.1.1。

目標としては、(D)から(A)へ向けた通信ができ、かつ、(D)からのパケットが(B)のところで全て(B)のIPアドレスに変換されて(A)に届き、(A)から戻ってきた際にまた(D)のIPアドレスに変換される(IPマスカレード)ようにすることだ。ちなみに逆方向は考えない。

では、まずはNetworkの設定から。/etc/network/interfacesを設定する。

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
 
auto eth1
iface eth1 inet static
  address 192.168.1.1
  netmask 255.255.255.0

これだけだとeth1が有効にならない(eth1のドライバが自動的にロードされないため)。
/etc/modules.confにeth1のドライバのaliasを追記すれば良いのだけど、Debianの場合は/etc/modules.confを直接編集せずに/etc/modutils/をいじるみたい。
そんなわけで、/etc/modutils/aliasに以下を追記。

alias eth1 8139too

続いて以下のコマンドを実行すると/etc/modules.confが自動的に書き換わる。

# update-modules

これでインタフェイスの初期化の準備は整ったはずなので/etc/init.d/networkingを再起動してifconfigで設定内容を確認。

# /etc/init.d/networking stop
# /etc/init.d/networking start
# ifconfig

※ここは、/etc/init.d/networking restartでも良いかもしれないけど、うちの環境だとうまくいかなかった。

一応、動作確認してみる。OBSSから(A),(D)にpingする。

# ping xxx.xxx.xxx.xxx  (A)のIPアドレス
# ping 192.168.1.2      (B)のIPアドレス

ここまででネットワークインタフェイスの設定は完了。

続いて、NAT HOWTOを参考にしながら作業を進める。

ちなみに、カーネルの再コンパイルが必要になる場合があるんだけど、前回コンパイルしたときに適当に指定しておいたヤツがそのまま動いたからヨシとしよう。つーか、何設定したのか忘れちゃった。ネットワーク周りのオプションをいろいろと指定する必要があるんだよね。こちらが参考になるかも。というわけで、ここではカーネルのコンパイルの後からの話ね。

まず、OBSSがルータとして動作するようにIPフォワードの指定をONにする。

# echo 1 > /proc/sys/net/ipv4/ip_forward

次にNAT(IPマスカレード)の指定。eth0がポイント。

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ちなみに、設定した内容を見るには以下のようにする。

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere    anywhere
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

これでOK。(D)から(A)にpingしてみる。この際、tcpdumpでOBSSのインタフェイス毎に確認するとIPアドレスがきちんと変換されているのがわかるのでおもしろい。

ただ、実はこれだけだとFTPは使えないので、FTPを使う場合は以下のモジュールをロードしておく必要がある。

# modprobe ip_conntrack_ftp
# modprobe ip_nat_ftp

オレは特に必要なかったが、IRCを使う場合も同様にモジュールをロードする必要があるみたい。

# modprobe ip_conntrack_irc
# modprobe ip_nat_irc

んでもって(D)から(A)のサーバに対してFTPの確認。これもOK。

ところで、これだけだとリブートしたら設定した情報が消えてしまうので設定ファイルに保存する必要がある。

Debianの場合は/etc/default/iptablesのコメントを参考にして以下のコマンドを実行する。

余談だけど、ここんところは微妙に他のディストリビューションと違うのね。見つけるのにすげー時間かかっちった(^^;)。

# /etc/init.d/iptables save active
# /etc/init.d/iptables save inactive   #こっちは不要かも

それから、ip_forwardは/etc/network/options ファイルを直接編集する。実は最初からこちらだけしておけば良いんだよね。

ip_forward=yes       #-> これ
spoofprotect=yes    #-> IP Spoof(IPアドレス偽装)対策(defaultのまま)
syncookies=yes      #-> ついでにSYN flood対策

あと、FTP通信のためのモジュールをブート時にロードする指定を/etc/modulesに書く。

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

これでリブートしても大丈夫。すばらしい。

[Misc] そういえばSNAT/DNATって

Source NATとDestination NATなのね。Static NATとDynamic NATの略かと思ってた。ダメすぎ(^^;)。


July 12, 2002 [長年日記]

[Misc] ファイルシステムが〜(T_T)

どうも最近調子がおかしいと思っていたら、とうとう、今日、ブートしなくなってた....。

HDDがそのまま逝っちゃったと思ってたんだけど、どうも、/(ルート)のReiserFSが駄目になっているようだ。

そんなわけでreiserfsckかましたらエラーメッセージが出るは出るは(T_T)。

こんなん。

pass_through_tree: unable to read 76368 block on device 0x3

昨日、念のため$HOME配下をafioでバックアップ取っておいたんだけど、半分壊れたファイルシステムから取ったデータからきちんと戻せるかどうかスゲー心配だ....。

そういや、以前、HDDが壊れたときに懲りたのでしばらく毎日バックアップ取ってたんだけど、最近やってなかったんだよね.....。やっぱりこういうのは人手を介してやっちゃダメだね....って前も似たようなことを書いた気がする....(T_T)。


July 13, 2002 [長年日記]

[Misc] ファイルシステムクラッシュ

どうにもあきらめきれなかったので、ReiserFSの最新版のreiserfsckで--rebuild-sbと--rebuild-treeをやってみた。1回セグメンテーションフォールトで落ちたときはダメかと思ったんだけど挫けず2回ほどやってみたら正常終了できた。ファイルシステムも無事マウントできた。

いくつかファイルが壊れてるみたい(例えば/usr/bin/sylpheedが無くなってたり(^^;))だけどおおよそ大丈夫みたい。

ちょっとコワイが、しばらくはこれで行ってみるとするか...。


July 14, 2002 [長年日記]

[Misc] (続)ファイルシステムクラッシュ

部分的にファイルが壊れてしまっているのだが思ったより量が多い。

プログラムを起動しようとすると、そんなプログラム無いよ、と言われ、コンパイルしようとするとそんなヘッダやライブラリは無いよ、と言われてしまう。

困った。


July 16, 2002 [長年日記]

[OpenBlockSS] JDK 1.3.1-02b FCSとTomcat-4.0.4にチャレンジ

JDK自体はpenguinppc.org経由でBlackdownのやつをもらってきてインストール、その他(tomcat4, libapache-mod-webapp等)はdebianのunstableからapt-get(mod-jkじゃなくて良いのかな?)。

サンプルページは無事起動。JSPの初回参照時はちょっとだけ遅くなったけど2回目以降とServletはまぁまぁの反応だ。

ともかくまた遊び道具が増えたぞ。Javaいじるのも久しぶりだしちょっとわくわくするなぁ。

#え?仕事?(^^;)

[tDiary] calendar3

久しぶりのtDiaryプラグインだ(^^;)。クール。

で、早速導入しようと思ったんだけど、アンカー自動生成プラグインと相性が悪いことに気づいた。

しくしく(T_T)。


July 17, 2002 [長年日記]

[tDiary] calendar3

ごめんなさい、表現が曖昧でした。

popupのtitle属性ではなく、<a>...</a>の間の部分のことでした(もしかしたらtitle属性の方も必要なのかも...)。

一応、自分で改造して使わせてもらうことにしました。

#パッチはMLの方に投げときますね。

[Misc] 画面にkがいっぱい

私の場合、よくワークステーションに向かいながら居眠りしていたのですが、あるとき、けたたましいビープ音に気づいて画面に目をやると3時間くらいかけて作ったソースコードが消えていました。

viのコマンドモードでdキーを押し続けてたんですね....。一瞬で目が覚めましたよ、ハハハハ......(T_T)。

#dキーってなんとなく押しやすいポジションなんだよなぁ。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

むとぽん [さすがにボーゼンとしました(^^;)。 まぁ、これは自分のせいなんでしょうがないですが、MS Wordが固まると悲し..]

なかだ [いちいち固まった程度で悲しんでたらMS Wordは使えません:)]

むとぽん [そうなんですけどねぇ。集中しているときとか、つい保存し忘れるんですよね...。]


July 18, 2002 [長年日記]

[tDiary] またしてもアクセスカウンタ表示プラグインでPStoreのエラー

また、エラーが出ていた。これはちょっとまずいなぁ。

[Misc] WIRELESS JAPAN 2002

に行ってきました。いろいろ見ましたが、ボーダフォン(J-PHONE)のコンパニオンが良かったということで周囲との意見の一致を得ました。


July 19, 2002 [長年日記]

[tDiary] アクセスカウンタ表示プラグイン

昨日のアクセスカウンタ表示プラグイン用のファイルが壊れてしまった件だが、ひとまず、日別でバックアップを取るようにしてみた。しばらくここでテストしてからリリースする予定。

根本的な解決策じゃないのがツライのだが、正直、あとはPStoreを使わないようにするくらいしか思いつかないんだよね...うーむ。

にしても、XREAって、Ruby標準添付ライブラリのfileutils.rbが無いのかな。なぜだろう。ファイルアクセス関連は危険だからわざと無くしてるのかな...。

でも、どうせ別のところからfileutils.rbをコピーするか、あるいは似たようなコード書けば動いちゃうんだから、あえて外してもしょうがないと思うのだが。

[tDiary] 本日のリンク元表示プラグイン-1.0.0リリース!

アクセスカウンタ表示プラグインのバージョンアップ前ですが、ちょっと浮気をしまして、久々に新しいtDiaryプラグインをリリースしました。「本日のリンク元」の文字化けをきちんと見えるようにしてくれるプラグインです。

具体的にはGoogle系検索エンジンのUTF-8な文字コードをEUC-JPに変換するだけですが、これでおそらく90%以上の文字化けを防ぐことができるんじゃないかと思います。

なお、UTF-8 → EUC-JP変換には吉田さんのUconvモジュールを使わせていただいてます。どうもありがとうございます。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

さかい [おぉ。お手軽でいいっすね。> 本日のリンク元強化プラグイン 早速入れてみました。 どうせなので、以下のようにして ..]

さかい [しまった。 referer_of_today_(short|long) で CGI::escapeHTML されるか..]

むとぽん [refere_of_today_(short|long)も自作してオーバーライドしてしまうというのでいけそうな気が。..]


July 23, 2002 [長年日記]

[tDiary] アクセスカウンタ表示プラグイン-1.5.0リリース!

今回は日毎にバックアップを取るようにしました。これでLinuxビボ〜ろくで2度起きてしまいましたが、counter.dat自体が壊れる現象が出てしまった場合になるべく最新に近い状態に復旧できるようになりました。

その代わり、毎日1ファイルずつバックアップファイルが増え続けます。今のところ、手動で古いファイルを削除していただく必要があります。

その他、GET系アンテナ対策として@options["counter.deny_same_src_interval"]のデフォルト値を0.1時間から2時間へ変更しています。1時間間隔というところが多いようですのでこのようにしました。

[tDiary] アクセスカウンタ表示プラグイン-1.5.1リリース!

きたさんに良いことを教わったので、早速それに対応させました。毎日1ファイルずつバックアップファイルを作るのですが、1週間毎にローテーションしますので、最大でも7つのファイルができるのみになります。これならほっといて問題ないですよね。

本日のツッコミ(全2件) [ツッコミを入れる]

きた [UNIXのsarコマンドのように,ファイル名に日付のsuffixをつけることにすれば,最大でも31個しかファイルが生..]

むとぽん [おぉ、それはナイスアイデア!いただきます!]


July 24, 2002 [長年日記]

[tDiary] 本日のリンク元表示プラグイン-1.1.0リリース!

なんか思いつきでちょこっと作ったツールは受けがよいという法則が今回も当てはまってしまったかなぁという感じのする本日のリンク元表示プラグインですが、処理ロジックを見直しました(出す前に見直せというのはおいといて(^^;))。

今までは置換リストに入っていないURLは変換対象外だったのですが、それも変換するようにしました。

また、Google系以外にも、新たにallthewebとAOLに対応しました。AOLに関しては本家の方はASCII文字以外は実体参照にしてしまう(という表現で良いのでしょうか...)ということをやってるようですのでそれにも対応しました。

一応、これで、Linuxビボ〜ろく内の全てのリンクで文字化けを無くすことができました。

しかし、私の野望はずばり今日のなんでやねんの膨大なリンクの文字化けを全て無くすことです(他の方のところは前のリリースで、ほとんど文字化けが無くなってるみたいなんで....(^^;))。はっきり言って今回のリリースはデディケート・ツー・きたさんです。

#すげー押し売り(^^;)

ま、そういうわけですので、お手数おかけしますが、新バージョンを使ってみていただけませんでしょうか > きたさん(^_^;)。

他の方も、もし、文字化けが発生するようなリンクがあったら教えてください。できるだけ対処しますよ。

ちなみに、自動変換はできてません。これができないとサーチエンジン毎に処理を分けることになる予感。誰か良いやり方教えてください。

あ、そうそう、v1.0.0を入れている方はuconvモジュールの方はそのままで大丈夫です。disp_referrer.rbだけ置き換えてください。

1.5系で本体に取り込まれるかもしれないとのことなので、もうちょっとがんばってみましょう。

本日のツッコミ(全2件) [ツッコミを入れる]

ただただし [あと「referer」か「referrer」かという問題も(笑)]

むとぽん [(プラグインではなく)本体に取り込まれればファイル名は関係なくなるので問題ないかと。]


July 25, 2002 [長年日記]

[tDiary] 本日のリンク元表示プラグイン

おぉ、きたさんとこは良い感じで文字化けが減ってますねぇ。つーか100%無くなったかな(まだ過去までさかのぼっていないのでなんとも言えないのですが)。機能的には良い感じですね、良かった。

が、しかし。半分は予想していたものの下ネタ(の検索語)が多いですね....。

こりゃ、もしかして文字化けしたままの方が良かったのかなぁ...とちょっと思ったり。

#次は検索結果の下ネタ除外フィルタが必要?(^^;)


July 26, 2002 [長年日記]

[tDiary] アクセスカウンタ表示プラグイン

またしてもcounter.datが壊れた。さっそく1つ前に復旧。といっても「壊れたときの1コ前」に戻るので今日の分も昨日の分も0にはならない。良い感じだ。それにしても、まさか、こんなに早く実運用環境で確認できるとは思わなかったよ(^^;)。

counter.datが壊れてから手作業で復旧するまで、ずーっと日記を読むことができないのはチトまずいな。ちょっと考えよう。


July 29, 2002 [長年日記]

[tDiary] 本日のリンク元表示プラグイン

要望があるということなのでtDiaryのCVSに入れときました。

コードは全くいじっていないのでバージョンアップする必要はないです。

たださんからこんなコメントもあったのですが、すでに結構使っていただいていることから互換性を考慮してファイル名はあえて変更しませんでした。

本日のツッコミ(全2件) [ツッコミを入れる]

わかば [通りすがりの者ですが、 ほんとに100目ですか〜? なんという偶然。]

むとぽん [はじめまして。今日はあなたのラッキーデーです(^_^)]


July 31, 2002 [長年日記]

[Ruby-GNOME2] だめだ〜やっぱりC言語は苦手だ....

なんか久しぶりにまともにC言語と格闘してる。そして今夜は久しぶりにメモリ領域怪獣と戦う夢を見そうだ....(T_T)。