Ruby言語やLinuxのネタが多いです。
July 01, 2002 [おもひで]
■ [Misc] Kondara解散
そうですか....。ここ数年はずっとKondaraのお世話になってきました。Kondaraの名前が無くなってしまうのは素直に残念です。上のリンクもそのうち見れなくなってしまうのでしょう。
とはいえ、活動自体はMomonga Linuxに引き継がれるようですし、1ユーザとして新たな活動を見守っていきたいと思います。
■ [Misc] Ruby-GetText-Package
今日、手元ではなかださんのパッチを吸収しました....と思ったら、わたなべさんのパッチ発見。明日にでも取り込まさせていただきますね。
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?うーむ。
July 07, 2002 [おもひで]
■ [Ruby-GNOME2] 頭の中メモ
Ruby側から見ると情報をset/getすると言う意味で、GTK+側はAPIがいっぱいある巨大なハッシュって言えると思うんだよね。
でも、時と場合によってRuby側とは関係なくハッシュから情報がなくなったり増えたりするのがたまに傷。そこをどう同期を取るかってことなんだよなぁ。ムズイ。
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配下とかちょっと構成が違うけどね。
July 10, 2002 [おもひで]
■ [Ruby] Ruby-GetText-Package-0.3.1再パッケージしました
一部コンパイル済みの*.o, *.soファイルが紛れ込んでいたとわたなべさんにご指摘いただきました。
Linux以外の方に取ってはちょっとまずい(一回削除してからコンパイルし直す必要がある)ので、取り除いて再パッケージ化しました。
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アドレスがきちんと変換されているのがわかるのでおもしろい。
# 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 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 [おもひで]
July 18, 2002 [おもひで]
■ [tDiary] またしてもアクセスカウンタ表示プラグインでPStoreのエラー
また、エラーが出ていた。これはちょっとまずいなぁ。
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モジュールを使わせていただいてます。どうもありがとうございます。
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つのファイルができるのみになります。これならほっといて問題ないですよね。
July 24, 2002 [おもひで]
■ [tDiary] 本日のリンク元表示プラグイン-1.1.0リリース!
なんか思いつきでちょこっと作ったツールは受けがよいという法則が今回も当てはまってしまったかなぁという感じのする本日のリンク元表示プラグインですが、処理ロジックを見直しました(出す前に見直せというのはおいといて(^^;))。
今までは置換リストに入っていないURLは変換対象外だったのですが、それも変換するようにしました。
また、Google系以外にも、新たにallthewebとAOLに対応しました。AOLに関しては本家の方はASCII文字以外は実体参照にしてしまう(という表現で良いのでしょうか...)ということをやってるようですのでそれにも対応しました。
一応、これで、Linuxビボ〜ろく内の全てのリンクで文字化けを無くすことができました。
■ しかし、私の野望はずばり今日のなんでやねんの膨大なリンクの文字化けを全て無くすことです(他の方のところは前のリリースで、ほとんど文字化けが無くなってるみたいなんで....(^^;))。はっきり言って今回のリリースはデディケート・ツー・きたさんです。
#すげー押し売り(^^;)
■ ま、そういうわけですので、お手数おかけしますが、新バージョンを使ってみていただけませんでしょうか > きたさん(^_^;)。
■ 他の方も、もし、文字化けが発生するようなリンクがあったら教えてください。できるだけ対処しますよ。
■ ちなみに、自動変換はできてません。これができないとサーチエンジン毎に処理を分けることになる予感。誰か良いやり方教えてください。
■ あ、そうそう、v1.0.0を入れている方はuconvモジュールの方はそのままで大丈夫です。disp_referrer.rbだけ置き換えてください。
■ 1.5系で本体に取り込まれるかもしれないとのことなので、もうちょっとがんばってみましょう。
July 25, 2002 [おもひで]
■ [tDiary] 本日のリンク元表示プラグイン
おぉ、きたさんとこは良い感じで文字化けが減ってますねぇ。つーか100%無くなったかな(まだ過去までさかのぼっていないのでなんとも言えないのですが)。機能的には良い感じですね、良かった。
■ が、しかし。半分は予想していたものの下ネタ(の検索語)が多いですね....。
こりゃ、もしかして文字化けしたままの方が良かったのかなぁ...とちょっと思ったり。
#次は検索結果の下ネタ除外フィルタが必要?(^^;)
July 26, 2002 [おもひで]
■ [tDiary] アクセスカウンタ表示プラグイン
またしてもcounter.datが壊れた。さっそく1つ前に復旧。といっても「壊れたときの1コ前」に戻るので今日の分も昨日の分も0にはならない。良い感じだ。それにしても、まさか、こんなに早く実運用環境で確認できるとは思わなかったよ(^^;)。
■ counter.datが壊れてから手作業で復旧するまで、ずーっと日記を読むことができないのはチトまずいな。ちょっと考えよう。
July 29, 2002 [おもひで]
■ [tDiary] 本日のリンク元表示プラグイン
要望があるということなのでtDiaryのCVSに入れときました。
コードは全くいじっていないのでバージョンアップする必要はないです。
たださんからこんなコメントもあったのですが、すでに結構使っていただいていることから互換性を考慮してファイル名はあえて変更しませんでした。
July 31, 2002 [おもひで]
■ [Ruby-GNOME2] だめだ〜やっぱりC言語は苦手だ....
なんか久しぶりにまともにC言語と格闘してる。そして今夜は久しぶりにメモリ領域怪獣と戦う夢を見そうだ....(T_T)。

▲ okoge [Kondaraの解散は本当に残念です。他のディストリビューションとまったく違って、遊び心いっぱいで魅力的だったのに。]
▲ むとぽん [okogeさんご無沙汰です。 Kondaraも魅力的でしたが他のディストリも魅力的だと思いますよ。 せっかくですので..]