Ruby言語やLinuxのネタが多いです。
February 01, 2002 Ruby-GNOME [おもひで]
■ [Ruby] Gdk::Event周りの整理とGdk::DragContext周りの実装
あまりテストしていないので人柱ボシューです。CVS版に反映されていますのでこちらからどうぞ。
CVSの使い方がわからない方はCVS版の取得方法をご覧ください。
February 03, 2002 Ruby GetText Package 0.1.1 is released [おもひで]
■ [Ruby] Ruby GetText Package 0.1.1
Ruby GetText Package 0.1.1をリリースしました。ちょっとしたバグフィクスですので無理にバージョンアップしなくても良いと思います。つーか、使っている人がいればですが。
というのも、平松さんからバグ報告があるまで気づかなかったんだけど、ドキュメントのめちゃくちゃ肝心なインストール方法の章に大ウソがあったんだよね。インストール用のスクリプトのファイル名はsetup.rbじゃなくてinstall.rb。インストールの際に絶対使うスクリプトなんだけど、これに気づく人が今までいなかったっつーことはつまりは誰も使ってくれてる人がいないってことだ(あるいはsetup.rb/install.rbの関係を熟知している人)。サムイ。
まぁ、平松さんが使ってくれたということで世の中に少なくとも二人は使っている人がいる、っていうだけでも良しとしよう。
#あり?つーことはRuWeexの最新版も使われていないのか?(T_T)。
■ [Tools] 付箋/Ruby
Ruby GetText Packageがあまりに使われないのも寂しいので、くわがたさんの付箋/RubyをRuby GetText Package化してメール(まぁ、いきがかり上というのもあったのですが(^^;))。採用してもらえそうな気配。採用されたら、RuWeexについで2つ目のRuby GetText Package対応ツールが誕生だ!
これでRuby GetText Packageを使ってる人が少なくとも3人に...(以下略)
#あ、もちろん、コントリビュートっすよ>くわがたさん
February 04, 2002 s2.xrea.comのサーバがディスク障害! [おもひで]
■ [Misc] xreaのサーバってバックアップ取ってないのかな...。
zt日記経由で、kameriaの♪らんらんらん日記へ。 無料サービスだからしょうがないのかな....。にしてもこれはムゴイ。 とてもじゃないけど人ごとに思えないので、ひとまず、wgetにてローカルハードディスクにバックアップを取ることに。$wget -N -r ftp://username:passwd@username.s5.xrea.com/これって、考えてみるとweexの逆だよな〜。
February 05, 2002 付箋/Ruby-0.5 [おもひで]
■ [Tools] 付箋/Ruby
無事パッチを取り込んでいただけました。わ〜い。■ ざっくり動かしてみていますがまだバグにはぶちあたってないです。
■ Ruby GetText Packageが無くても動くというのは良いアイデアだと思います。
#ただ、それでうれしいのは実は英語圏の人だけな気はしますが(^^;)。
■ ところでsrc/fusenの1行目の#!/usr/local/bin/rubyですが、これ、bin/fusenの時に2行になって表示されちゃいますね。実害はないですがpre-setup.rbをちょこっといじるとなお良しという気がしますです。
diff -ruN pre-setup.rb.org pre-setup.rb
--- pre-setup.rb.org Tue Feb 5 22:46:29 2002
+++ pre-setup.rb Tue Feb 5 22:58:17 2002
@@ -11,9 +11,7 @@
open(TARGET, "w"){|file|
file.print("#!#{config(\"ruby-path\")}\n")
- open(SOURCE, "r"){|io|
- file.print(io.read)
- }
+ file.print(IO.readlines(SOURCE)[1..-1].flatten)
}
podir = srcdir_root + "/po/"
■ 英語のREADMEの方はがんばってください。私も英語が苦手なのでこの辺はご助言いたしかねます(^^;)。
■ それと、xpmディレクトリがdata/fusen/配下から戻されていますが、これは、data/fusen/配下に置いておいた方が良いのでは?
というのも、Linux的には、/usr/share/配下にアプリケーションのデータファイルを置いた方が良いですよね。
data/fusen/配下に置いておけばinstall.rbで自動的に/usr/share/fusen配下に置かれます。今のままですとユーザが各自ローカルに画像ファイル等を配置しないとならないことになります(もちろん、それを意図してるのならそのままで問題ないです)。
February 06, 2002 [おもひで]
■ [Misc] Linuxビボ〜ろくメインページ
とうとう10,000アクセスに到達しそうです。記念ですのでキリ番取った方はご一報を。
#一番下の方にちっちゃくアクセスカウンタがあります、見つかるかな?(^^;)。
■ [Tools] 付箋/Ruby
なるほど。そういうことでしたら、以下のパッチはいかがでしょう。$fusen --mofile /home/hoge/fusen/data/localeとかで、mofileを指定できます。
--- fusen.org Thu Feb 7 00:21:39 2002
+++ fusen Thu Feb 7 00:28:52 2002
@@ -2659,12 +2659,8 @@
# Main
#
require 'getopts'
-if !$NO_GETTEXT
- include GetText
- bindtextdomain("fusen")
-end
-getopts( "", "browser:", "argfmt:", "face:", "rc:", "shape", "help", "stamp:")
+getopts( "", "browser:", "argfmt:", "face:", "rc:", "shape", "help", "stamp:", "mofile:")
if $OPT_help
STDERR.print <<"USAGE"
@@ -2689,6 +2685,9 @@
--stamp XPMFILE
set complete stamp xpm.
+ --mofile
+ set mofile path.
+
--shape
use shape extention.
@@ -2696,6 +2695,11 @@
show this message.
USAGE
exit 0
+end
+
+if !$NO_GETTEXT
+ include GetText
+ bindtextdomain("fusen", $OPT_mofile)
end
if !$OPT_face.nil?
やりすぎ?(^^;)
February 07, 2002 Linuxビボ〜ろく10,000カウント突破! [おもひで]
■ [Misc] 記念すべき10,000カウントはペン忍さんでした
つーか、ツッコミ第一号もペン忍さんです。なんと2冠です(^^;)。はじめていらっしゃったとのことですが、これも何かの縁だと思いますので、たまに覗いてやってくださいまし。
にしても、やっぱり感慨深いですね。Linuxビボ〜ろくをはじめた頃はまだLinux-2.2.0がリリースされたばっかりでUNIXなんてほとんど触ったことなくて....(以下略)。
■ [Ruby] Ruby-GNOMEメモがruby-talkで紹介されちゃいました
このところ、加速度的に私のページを見に来てくれる人が増えてきていてとてもうれしいのですが、なんと、Ruby-GNOMEメモを読んでくれてる外国の方がいらっしゃいました。日本語しかないので、きっと、コードの断片から色々と想像して読んでるんでしょうけど、効率悪いだろうなぁ。Ruby-GNOMEメモは英語化したいコンテンツの一つなのですが、日本語部分すら満足に進んでいない現状、英語化はまだまだ先でしょう。つーか誰かやってくれる人いませんか?
February 09, 2002 [おもひで]
■ [Palm] Sony CLIE(PEG-N700C)がPalmOS 4.1になって帰宅
6,300円也。インストールされていたソフト等は全部クリアされちゃってるのね。まぁ、しょうがないか。
で、さっそくLinuxに取っておいたバックアップを戻そうとするとsyncできない....うーむ。
やっぱりOSが4.1になっちゃったのが原因かなぁ。
■ とりあえず、pilot-link portal pageを見てみてもよくわからん。なにやらCVS版はいろいろと手が加えられている様子だけど、あまりPalmOSのバージョンアップに関係はなさそうだなぁ。
February 11, 2002 [おもひで]
■ [Ruby] Ruby GetText Package
配布用のtar玉にCVSディレクトリが含まれていて、install.rbでインストールするとCVSディレクトリも一緒にインストールされてしまいます(平松さんご報告ありがとうございます)。 早急にCVSディレクトリがインストールされないようにしてバージョンアップをしたいと思いますが、それまでは以下のようにしてからインストールしてみれば(CVSディレクトリが削除されますので)問題を回避できます。$ruby pre-clean.rbなお、インストール時にCVSディレクトリが一緒にインストールされても特には問題はないです。もし、気持ち悪いようでしたらCVSディレクトリ以下をざっくり削除してください。
February 12, 2002 [おもひで]
■ [Palm] 会社のMS Windows2000でCLIE(PEG-N750C相当(^^;))をsync
すげーはまった。PEG-N700Cの環境を残したままPEG-N750C用にCLIE付属ソフトをアップグレードしたのがまずかった。
初めてSyncした時、なぜか途中でエラー終了してしまう。
その状態でもなんとかブート(というんだろうか?)はするんだけどホーム画面が表示されない。はたまたSyncボタンも利かない。何より部分的にハイレゾになったりならなかったりでめちゃくちゃ動作が不安定。
■ なぜだろうと悩んでハードリセットを繰り返した挙げ句、以前の環境の(CLIEアプリのパス)\Backupフォルダに古いPEG-N700C用のアプリが残っていて、それをPEG-N750C化された本体のアプリを上書きしたのが原因だったことを突き止めた。
■ そんなわけで、(CLIEアプリのパス)\BackupフォルダのアプリでPEG-N750Cと重複しそうなアプリ(*.prcファイル)を全部削除してから再度Syncしたところ無事完了。ふぅ。
■ にしても、標準でMS OutlookとのSyncができるのが良いね。以前は有料のDesk Top To Goというツールを使ってたんだけど、もう使わないで済むとはうれしい限り。
#え?会社ではMS Outlook使ってるって?会社指定なんでしょうがないんです。でも、結構使いやすかったり(^^;)。
■ そうそう、英和・和英辞書も助かる。他にもおまけ(?)アプリ多数。なんか6,300円でこんだけいろいろ入っているのはお買い得感があってマル。
February 13, 2002 Ruby GetText Package 0.1.2 is released. [おもひで]
■ [Ruby] Ruby GetText Package 0.1.2をリリースしました
メインは平松さんに指摘された問題の修正版という位置づけですが、細かい変更もいくつか入っています。それからサンプルとしてRuby/Tk版を用意しました。
February 14, 2002 XREAのアクセスログ解析結果をローカルに取得 [おもひで]
■ [Tools] XREAのアクセスログ解析結果(analog出力)をローカルに取得保存する
今日からXREAのアクセスログページ(analog出力)のURLにアクセス制限がかかるようになった。実はこれまでアクセスログは誰でも見放題だったことには気づいていてちょっとまずいよなぁと密かに思っていたところだったので、それが改善されたのは喜ぶべきことだ(←えらそう(^^;))。
■ そんなわけで(?)、アクセスログをローカルに取得するツール(RubyのCGI)を作ってみた。ローカルに落とす途中にジャマな広告も削除してくれる。
一応、CGIとしてじゃなくても動くので、XREAユーザはお試しアレ。
#実は前からあったんだけど、アクセス制限なしで取得できちゃうのはさすがにマズイと発表するのやめてたんだよね。
■ そうそう、テキトーに気持ちの赴くままに作ってて、Rubyも1.7.2以降じゃないと動かないんだよね。すまそ。
February 15, 2002 XREAのアクセスログ解析結果取得 + FTPでデータのダウンロード [おもひで]
■ [Tools] get_xrea_analog → get_xrea_data
なんかちょっとだけ期待されてるような気がしたのでRuby1.6系で動くか確認するついでにバージョンアップしてみた。
- analogの結果と同時にFTP経由でXREA上のデータをダウンロードできるようにした
といっても、wgetを呼んでこれと同じことをしているだけなんだけどね - コマンドラインからの実行をちょっとだけユーザフレンドリにした
■ そんなわけで、スクリプト名もget_xrea_analogからget_xrea_dataに変更。
■ これで、XREAのtDiaryのデータもanalogの結果もローカルにダウンロードできるようになったので、サーバがダウンしても被害は抑えられるな。
■ そういや、cronで動かすってのも良いかも。
■ あ〜、肝心なこと忘れてた。Ruby 1.6.xでもたぶん大丈夫。少なくともRuby 1.6.5では大丈夫。れっつとらい。
February 17, 2002 safeshutdown [おもひで]
■ [Tools] safeshutdownというshutdownのラッパスクリプトを作ってみた
何をするかっつーと、safeshutdownを実行するとshutdownする前にホスト名(hostnameコマンドの結果と比較)を聞いてきて、正しくホスト名を入力しないとshutdownはできない。そんだけ。他は全くshutdownコマンドと同じ。
■ Linuxを1台しか使っていない人にはピンと来ないと思うが、複数のサーバを管理し、リモートからX端末を使って作業をする人なんかは、「自分が思っていたサーバと違うサーバで作業していた」なんて経験があるはず。
特に作業系と実稼働系の両方で作業をしている場合で、間違えて実稼働系をシャットダウンしてしまった日にゃ目も当てられない。場合によっては始末書モノだよね。
■ というわけで、シャットダウンをする際にこのsafeshutdownを常日頃使うように心がけておけば、うっかりコマンドをたたいてしまっても、ホスト名を入力することで若干ではあるがミスを回避できる。ま、結局のところは程度問題なんだけどね。
■ にしても、こういうツールはディストリビューションに標準で入っていてくれるとうれしい気がするんだけどな....。
February 18, 2002 [おもひで]
■ [Tools] safeshutdown
あ、たださんに感想もらっちゃった(*^o^*)。どーもありがとうございますです。
そうそう、調子に乗ってsafeshutdownの英語ページ用意してみた。添削くんボシュー。
■ [Misc] safeshutdownに絡めて最近思うこと
機械が便利になり、いろいろなモノが自動化されていくにしたがって、人間のミスつまりヒューマンエラーというのが比重を増していくよね。機械が決めれない部分を人間がやるわけだからそれだけ重要なことをするわけだし。
その割には*NIX系のコマンド・アプリケーションやツールはイマイチユーザフレンドリじゃ無いような気がするんだよね(というか対ヒューマンエラーレベルが低い)。特にrootのコマンドとかはね。もちろん「rootはスペシャリスト以外は触っちゃイカン!」って言う発想もわからないでもないけど、もうちょっとヒューマンエラーを避ける工夫があっても良いんじゃないのかなぁ。他の人たちよりも重要なことをやるわけだしね。
■ そんなわけでsafeshutdownを作ってみたんだけど、これ自体まだやれることはあるだろうし、まだ他にも改善できるコマンドとかがあるような気がするんだよね。
■ 例えば、rmコマンド。やっぱりこれほど危険かつ頻繁に使われているコマンドって無いよね。
たぶん、普通の人はrm をrm -iにエイリアスしたりして使ってるんだろうけどこれぢゃ不十分な気がするんだよね。特にオイラなんかそっこーで\rm hogeとかエイリアスを効かないようにして実行しちゃってるからaliasだとあまり意味がないし。無理にaliasにしていてそれを効かないようにしている分、たちが悪かったり。
■ とはいえ、どんなrmコマンドが良いのだろうと聞かれるとちょっと困る。まぁ、おおざっぱに言えば、
「うっかり実行すると言うことを避けれて、かつ、やり直しが効く」
ってとこかなぁ。
そうだ。/usrとか/varとか/etcとかの重要そうなディレクトリは削除する際には必ずホスト名を聞かれるとかはど〜だろう(それを/etc/rm.confで指定できたりしたら面白いかも)。
■ まぁ、あれこれ考えると今のところの実装ではやっぱりMS WindowsやMacにあるゴミ箱かなぁ。そういや昔、mvコマンドで代用している人がいたなぁ。履歴が取れるようになれば良いのかな〜。でも、それぐらいだったらすでに実装がありそう。
#ま、それを言ったらsafeshutdownなんてどこにでも転がっていそうな気はするんだけど....(^^;)。
■ そんなわけで、ここで書いたことを実現しているツールとか(あるいはshellの設定とか(^^;))って知ってる人います?すでにあるなら使ってみたいなぁ。
■ P.S.
各種設定をWebから行うことで極力CUIを触らないようにするというのは解の一つではあるなぁ。そうするとWebminあたりが現実解なのかな。でも、それで管理者って言うのはちょっと寂しいかも....というのは偏見か....。なんかまとまらん。
■ [Tools] get_xrea_data
get_xrea_dataをバージョンアップしました。今回はProxy対応です。けど、オイラはProxy使ってないので試してないです(^^;)。 それから、ちょっとだけドキュメントとエラーメッセージを親切にしました。またチャレンジしてみてくださいね。> NanaさんFebruary 19, 2002 サーバ管理者の憂鬱 [おもひで]
■ consoleで言えば、一つのconsoleからいくつものサーバに(多段にリモートで)ログインして作業することをイメージしてます。あるいは複数の仮想端末からいくつものサーバにログインして作業する感じですね。
だからXのセッションとかは直接本旨とは関係ないです。safeshutdownもXとは一切関係ないです。書き方悪かったかな。
■ ちなみに、くわがたさんのところではXのセッションを終わらせてconsoleでシャットダウンとのことですが、私の場合、サーバは元々Xはあげて無くて、リモートからMS WindowsのTeraTermとかでtelnet/sshして作業してます(たまにX端末も使うけど)。で、safeshutdownはそこから使うことを想定してます。
■ それから、私は仕事ではLinuxは(ほとんど)使ったことないんで、Linux云々と言うよりも*NIX系の一般論として言ってるつもりです。BSD系も含むってな感じで。というわけで文化の違いと言われるのはちょっと抵抗を感じますです。
■ CVSのことですが、それは私の問題定義の意図とはちがいますよ〜。rmコマンドの代用にはなりませんよね。それに、やっちゃったモノを復元はできますが、やること自体を防ぐモノではないですよね。もちろん、それで充分といえば充分ですが元々の論点とはちょっとずれるです。
■ haltアカウントは以前使ってました。結構メジャーなテクですよね。まぁ、当時はsshではなくtelnetでしたけど(^^;)。確かにこの方法も有効ですよね。でも、なんか使わなくなっちゃったなぁ。なぜだろう。
■ 「設定とかで甘やかすとどうかなぁ」という点に関しては現状の*NIXな管理者を育成するという観点からは私も同意しますが、最近流行のアプライアンス的なアプローチというのも(今回の問題定義に対する解の方向性としては)有効じゃないかなと思ってます。
実際、私はGUIというのは各種の設定を楽にするために必要とされている割合は高いと思ってます。RuWeexなんかもそれを意図して作ってます。
でも「設定はテキストファイルをそのまま編集するんじゃぁ」的な人にはきっとじゃまなもの以外の何モノでもないんでしょうねぇ(そーか、だからユーザが少ないのか....(-o-))。
February 20, 2002 サーバ管理者の憂鬱(2) [おもひで]
■ 文化的とはそう言う意味でしたか。これは私が完全に読み違えてました。言い訳をさせていただくとすれば、
「しかし、良く考えるとDebianとかRedHatって.....(略)普通かも知れない(*7)。まぁこういうのも有りなのかも知れない。このへんが文化の差なのかもとも思う。
:
:
*7 BSD系のOSすきすき人間(ちょっと意味が異るが)でLinuxは(ちょっとしか)使った事無いので良く知らないけど」
のfootnoteとのつながりを見て、「Linuxはそういう文化かもしれないけど、BSDの文化とは違うよ」と言ってらっしゃるのかと思いました。昔、そういうこと言う人が周りに多くて、多少うんざりしていたので(^^;)。くわがたさんの中の文化が私と違うということですね。それなら納得です。たぶん、そう思われている方も多いと思いますし(つーか圧倒的多数だと思います。じゃなきゃ、すでにOSにそういう機能が搭載されてる思うし)。
■ P.S.
それと、たぶん、くわがたさんは推敲前の私の文章読まれたんですね。免罪符とか。結構、行き過ぎた表現があったので、そっこーで修正したんですが、どうやらその間に読まれてしまったみたいです。オンラインで更新される場合はその辺の書き方に気をつけないといかんですね(^^;)。不愉快な気分にさせてしまったようで申し訳ないです。は〜、反省。
February 21, 2002 Ruby GetText Package 0.2.0 is released. [おもひで]
■ [Ruby] Ruby GetText Package 0.2.0をリリースしました
GetText.N_(msg)というメソッドを追加しました(required by さかいさん)。
■ これで気がついたんだけど、Rubyって大文字で始まるメソッドを定義できるのね。しらんかった...。でも、RubyLexでは定数(TkCONSTANT)として認識される(通常、メソッドの場合はTkIDENTIFIERのはず)。どっちが正しいのだろう。
気持ち的には、大文字で始まるのは定数というイメージがあるから大文字で始まるメソッドはない方が良いような気がするけど、でも、そうするとGetTextの方を考えなおさなきゃだしなぁ。
そうかぁ。こんな事もできちゃうのか(ruby 1.7.2 (2002-01-05) [i686-linux])。
def A=(a) a + 1; end def B(b) b + 1; end p A = 2 # -> 2 定数Aに値を代入しているだけ。メソッドA=(a)が呼ばれたわけではない。 p A = 3 # -> 3 ここはwarningが出る。 warning: already initialized constant A p B(2) # -> 3 こっちはメソッドB(b)を呼び出してる。 p B(3) # -> 4 こっちは大丈夫。当たり前と言えば当たり前な振る舞いだけど、この違いはちょっとわかりづらいかも。まぁ、滅多に使うものでもないからこれはこれでも良いのかな。
February 22, 2002 目がかゆい、鼻水がとまらない [おもひで]
■ [Ruby] 大文字で始まるメソッド名
さっそくZnZさんがコメントしてくれました。どうもです。
なるほど、FloatとかArrayとかってメソッドなんすね。今まで特殊なオブジェクト生成方法(Float.new()のAlias)だなぁなんて思ってたりしてたというのはここだけのヒミツと言うことにしておいてください(^^;)。
RubyLexがTkCONSTANTになるのもそれでいいみたいです。
■ で、よく考えなおしてみると、昨日の例は、思いっきり考え違いしてる。アホだ < 自分。
def A=(val); val + 1; end def a=(val); val + 1; end p self.A = 2 #これはメソッド呼び出し p self.a = 2 #これもメソッド呼び出し p self.A = 3 #これもメソッド呼び出し p self.a = 3 #これもメソッド呼び出し p A = 1 #これは定数 p a = 1 #これは変数 p A = 2 #これは定数に二度目の代入をしようとしている。
■ うーぬ。それにしても=()メソッドはいつも難しい。
■ [Ruby] Ruby GetText Package 0.2.1
余計なこと(?)に気を取られて、思いっきりバグってました(←言い訳)。万が一、0.2.0をインストールしてしまった方は、0.2.1にアップデートしてください。
February 25, 2002 [おもひで]
■ [Misc] Linkavailable: Ruby,diary
捕捉していただいてありがとうございます。にしても、大丈夫なのだろうか? < 自分。

▲ ペン忍 [はじめまして。はじめてきたのに、10000踏んでしまいました(^^ゞ]