katsuwo's diary - かつを日記

先月 2001年04月 来月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
HNS logo

2001年04月01日()

#1 秋葉行

この前買ったばっかりの vaio が調子が悪いので、交換に行ってきました。
おかしかった点は の 2 点。support center に持ち込んだら時間はかかったけど、
新しいものと交換してもらえました:) 今回の対応は○ですな。 > sofmap

交換したら、この前は欠品だった office 2000 personal がついてきた。
しかも値段はそのままでいいらしい。
本当はうれしいはずなのだが、この前自分で買ってしまったのでちょっと悲しげ。

visor edge:

support の待ち時間を使って ikeshop で visor edge の展示を見てきました。
残念ながら show case に入った状態での展示だったのですが、
一目見ただけでほしくなっちゃう感じです。
slim というよりも smart な感じがして、非常にポイントが高いです。

今までの visor とは一味違うなぁ。

cd 屋さん:

お買い物しようと思ったら、今日さくら銀行お金下ろせないらしい(;_;)
おかげでなんにも買い物できなかった(;_;)
せっかく秋葉まで来たのに〜(;_;)

2001年04月02日(月)

#1 動き始めた感じ

研究室がまともに稼働し始める。
もう少しで休みもあけるし、生活リズムをならさなくては。
やはり昼おきで過ごし続けるのはよくない。
cat ruby

#2 今日の ruby-*

Integer() と String#to_i:

Integer() はリテラルの表現に準拠し、String#to_i は、10 進で解釈する
そうです。
str = "0x16"
puts Integer(str)
puts str.to_i
という script で試してみると、
% ruby int.rb
22
0
となり Integer() は 16 進数なども解釈してくれるのに対し、
String#to_i は先頭の 0 だけを解釈しているみたいですね。

method chain と debug:

確かに method chain と debug は相性が悪いですね。
[ruby-list: 26783 ] みたいにやるのは、ちと苦肉の策な感じが。
決して読みにくくはないけど、編集とかがやはり面倒ですね。

ruby with debian:

ruby の最新版を deb.ruby-lang.org で取得できるみたい。
deb     http://deb.ruby-lang.org/debian woody main contrib non-free
deb-src http://deb.ruby-lang.org/debian woody main contrib non-free
deb     http://deb.ruby-lang.org/debian project/experimental/
deb-src http://deb.ruby-lang.org/debian project/experimental/
を apt-line に加えるとよい。

2001年04月03日(火)

#1 x-jump

これ ?? > 某方面
( Xbox初上陸でユーザーの反応は…… より)

#2 apache + suexec

いままで気づかなかったけど、debian で apache-common を入れると
自動的に suexec が有効になるらしい(;_;)
んでもって、apache の実行 user を標準の www-data ではない user にすると、
[2000-03-23 12:17:50]: user mismatch (nobody instead of www-data)
(suexec.log) のように suexec に失敗したあげく、
[Tue Apr  3 12:17:50 2001] [error] [client 192.168.0.31] 
Premature end of script headers: /home/Sub-Member/katsuwo/public_html/diary/index.cgi
*1 (error.log) みたいなことになるらしい。

これに気づかず苦労してしまった(;_;)

対処方法:

suexec を消すか、実行 user を www-data に戻すと直ると思います。
ここでは suexec を削除しておきました。
cd /usr/lib/apache
mv suexec suexec.orig
/etc/init.d/apache restart
(参考情報:[debian-users 21871 ])

*1: 修正:In 0407, 行が長いので改行を加える。

#3 cgi script の debug

mod_cgi が入っていると debug 情報とかが簡単にでるみたい。
httpd.conf あたりで
ScriptLog /var/log/apache/script.log

# 10 MB
ScriptLogLength 10485760
とかすると ScriptLog で指定した file に debug に便利そうな情報が入ってきます。
http request が保存されているので、おそらく便利ですね。

2001年04月04日(水)

#1 not found の日

そんなくだらないことを仕事中に考えていた。

#2 BeOS

ようやく研究室の環境が安定したので、BeOS を入れてみる。
…が、graphic driver がないらしく 640x480/grayscale になってしまう(;_;)
むぅ、network は使えるのだけど色がでないんだとするとおもしろくないなぁ。
VoodooBanshee って support されてないのかしらん(;_;)

うぅむ。結局 WinNT 4.0 に逆戻りか。
まぁ、便利だからいいんだけど:)

#3 last bus has gone ...

今日は泊めてもらう宛がない。どうしようか(;_;)

2001年04月05日(木)

#1 end of 春休み

一応明日から学校開始らしい。
と言っても、今までも通っていたのだから変わらないのだけど:p
とりあえず朝が早くなる気が(;_;)

がんばって起きなくては。

だらだら:

code 書いてたら、もう 3:30 に。こりゃ起きられんな(;_;)

#2 ひとり group ware

なんつーか calender と todo list ぐらいはうまく管理したいのだけど、
palm -> pc -> web というのがうまく連携とれるようにならないかなぁ。
ちょこっと探してみたけど適当なものが見つからない。

とりあえず、todo が pc 上でうまく管理できるようになんか考えなくては。

考えなしに。:

よくしらんが、outlook なんて scheduler としても動くのだから、
実はそれくらいできるんじゃないだろうかと考えてみる。
…が、macro 処理(batch 処理?)的に web に反映させられないので、考え物。

まぁ、候補ぐらいには考えておこう。

palm device の効力:

なんつーか、いくら慣れたとしても graffiti って面倒ですねぃ。

palm しかないときならともかく、keyboard がある場面では
私は graffiti は使いたくないし。
加えて、今使ってる visor はなんだか digitizer が狂ってるらしく、
graffiti 文字がちゃんと認識されない時すらある。

pc の前にいるときは palm になるべく触らなくてもよいようになるとよいのだが。
bluetooth + auto syncronize で pc からすべてが操作できるとよいなぁ。
bluetooth + remote control ってのもおもしろいけど(笑)

もっと考えてみれば:

palm desktop が web export を備えてくれればいいんじゃないか??
そういう機能作ってくれんかのぉ(;_;)
plug-in interface みたいなの調べてみようかしら。

仕方がないので:

とりあえず、必要そうな機能だけ作ることにした。
車輪感 *1 がかなり否めないが、見つからないものは作るしかあるまい。
とりあえず適当に dbms 側は作ったので、あとは interface だ。
それは明日かあさってに手をかけるかね。
今回は見栄えとか使い勝手よりはまずは使えることだ。

去年から今年にかけてお仕事で dbms いじりまくってるだけあって、
簡単なものなら作るのが早くなってるなぁ *2 :)
やぱ database はかなり pattern-ize できるんじゃないかなぁ。(;_;)

うー、design pattern 読もうかなぁ。安い hand-book があるといいのだけど。

*1: "車輪の再発明" 的な技術の無駄遣い感(;_;
*2: 同時に、speedy なのは私の skill だけでなくて、ruby 様々のおかげである。

#3 忘れてた。

flez に加入する前の isp 解約せねば。
とりあえず ppxp で dialup しないように
chmod 000 ~/.ppxp/conf/libac
とかしておく。これでどうやっても dialup だけはしないはず。
あとは解約の電話を入れなければ〜だな。

2001年04月06日(金)

#1 [linux] vine linux

今更ながら apt-vine について。

比べものにならないぐらい便利になった感はあるのだけど、
debian 並になったかというと今ひとつ。

あと、気になったのは xcdroast は cdrecord に depend してなくてよいのかしら?
apt-get install xcdroast
しても cdrecord は入らなかったのだが。
xcdroast って cdrecord の wrapper だと思っているのだけど??
debian だと
Depends: gdk-imlib1 (>= 1.9.8.1-1), imlib1 (>= 1.9.8.1-1), 
libc6 (>= 2.1.97), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.8-1), 
libjpeg62, libpng2, libtiff3g, libu ngif3g (>= 3.0-2) | giflib3g (>= 3.0-5.2), 
xlibs (>= 4.0.1-1), zlib1g (>= 1:1.1.3), makedev (>= 2.3-4), 
cdrecord (>=1:1.6a14-1), mkisofs, cdda2wav
とかなってるのに。

package bug じゃなくて apt + rpm の bug だったりして。
後で調べて再現性があるようなら post してあげやう。…どこに??(;_;)

#2 寝坊

予想通り の展開。
結局昼に起きて、だらだら code 書いて、すでに 15:30 。
さて、今日は飲み会だしそろそろ出かけるかな。

2001年04月07日()

#1 花見

やぱわいわい飲むのは楽しいですねぃ。またやりましょう:)

#2 お買い物

昨日、なんとなく本を買ってみた。
そのうち役に立つだろう。時間みて呼んでみよう。

だけど、いくらか探してみたのだけど design pattern handbook みたいなのは
見つからなかった(;_;)
大きい本じゃなくて、手元に置いておけるサイズであるとうれしいのだけど。
o'reilly とかやってくれないかなぁ。ふぅ。

#3 todo

自分に必要な schedule 管理のうち、todo はとりあえず形におこす。
まだ web interface が書き上がってないので、それはまた次の機会で。
今のところは command line から利用する(^^;

夕食前にざくざく自分の top page に todo を組み込む。
割と悪い感じじゃないかも。smart でないのは、改善点に積んでおきましょう。

機能的には不足が多いけど、さしあたり困ることはなさそう。
それよりも先に、calender を作りたいところ。
来週から仕事的に動き出すのだけど、時間がとれるかしら??

#4 crash

友人の pc が crash した。disk が、じゃなくて pc が。
motherboard とか hdd とか memory とかいろいろやられたみたい。
原因は不明。なんかいろんな kernel の message がみれておもしろいです(ぉ

しっかし、他人の振りみてなんとやら。明日は我が身な訳で。
彼は home server が壊れたときのことは考えていなかったらしく、
機能停止してるんですが、それだと困りますよねぇ。
せめて internet につながるようになってくれないと…(;_;)/

#5 [FE] とらきあ

7 章でひたすら闘技場ちう。

2001年04月08日()

#1 知識と本

友人が面接で本(専門書)を読むよう薦められたそうだ。
なのだが、どういった本を読むべきかは伝えられてないらしい。
で、さらに友人は本は全然読んでいないので、どれがよいのかわからないと言う。

ん〜。どんどん専門化して細分化していく情報産業で単に 本を読め
言われても困ってしまいますよねぇ。
特に仕事のためなのだから、どれでもいいというわけではないでしょうし。
本人が network だというので、適当に network 系の本を推しておきましたが。

本の価値:

多くの人は本をよく読むんでしょうか??
私は調べものをするのによく本を使いますが、目的なしに本を読むことは
ほとんどないのでこういう時困ってしまいます *1
まぁ、あれやこれやと知りたいことはあるので、choice には困らないのですが:p

一般的な情報系の人にお薦めの本ってどういうものなんでしょうねぇ(^^;
consulting 系の人に programming 技法の本を渡してもうれしくないでしょうし、
programmer な人に network 構築な本を渡しても同様でしょう。
やはり用語集的なものしか統一的にうれしくないんでしょうか。う〜む。

tcp/ip reference:

しかし、network engineer とかに protocol についての本は渡すべきなんだろうか。
"mail protocol 詳説"とか"http 詳説"とか紹介した方がよかったのかなぁ?

まぁ、もともと network engineer がどんなもんだか私もわかってないんだが。

*1: 趣味の本は別として。

#2 new vaio

なんか新しいのがでてますねぃ。
docking 部分がちょっと膨らんでるように見えるのだけど、
実際に触ってみると気にならなかったりするのかなぁ。
やはりもう 505/N505 シリーズは新しく作られないのかなぁ(;_;)

12.1 インチ LCD だと筐体が大きくなってイヤなのだけど…(;_;)

#3 [links] 久しぶりの links

久しぶりすぎ。たまってますよ??

News of News:

news のための antenna。
自分で antenna たてる場合はここを参照にすると便利かも。

KazuDE:

mozilla による desktop enviroment。windows でも利用可能らしい。

CGIプログラミングとセキュリティ:

あたりには常に気を払うべきですね。
私も心がけねば。

Windows Scripting Host Laboratory:

wsh を勉強するには良さそうです。
説明などがよくかかれています:)

UNIX データベース入門:

なぜ今まで乗せていなかったのか不思議なくらいの site 。
wakhok の教科書なんでせうか? 非常によく database の説明がなされてます。
私はこれをみて database(sql) の使い方を学びました〜:)

RubyRing:

rubyring なんてあったんですねー。
時間のあるときにいろいろ巡って技を盗みたいとか何とか。

処ログ/ログイン向上委員会:

馬鹿。だから、ログインなのだろうけど。
椎名林檎の最新アルバムタイトル案自動作成システム とか、馬鹿システムも満載。

#4 wanna be change

明日こそ起きるぞ。起きるぞ起きるぞ起きるぞ(自己暗示)
つーか、頼まれものをしてるから朝早くいかねばならんのだ。
んでもって、積み物をすべて終わらせねば。僕の todo stack をからにせねば。
while todostack.isempty?
  todo = todostack.pop
  todo.finish
end
がむばらねば。

retry:

ちょっと細かく書き直してみる。 < 暇人
todo = nil
begin
  timeout(24 * 60 * 60)       # 24h
    while todostack.isempty?
      todo = todostack.pop
      todo.finish
    end
  end
rescue
  # timeouted ... stack todo processing.
  todostack.push(todo)
end

raise Exception.new('TODO could not end ...') if(not todostack.isempty?)
うぅむ、そんな Exception は catch したくないぞ(;_;)

#5 でーぶいでー

かねてから気にしていた debian potato-r2 が付いてる unix user を本屋で発見。
早速確保しておく。linuxbox には dvd なんてついてないんだが *2
それはそれでそのうち付けるとして、復旧時に役に立ちそう。
うち network 貧弱だし。
non-free やら debian-jp やらが足りないらしいが、困ることはないだろう。

さて、woody やら sid やらはどうするんですかねー。
potato よりも dvd に納めるのに苦労するだろうに。
potato が obsolete になる 7 月過ぎぐらいにまた woody を dvd にして欲しいなぁ。

買った物:

よくよく考えたら再来週にはもう database specialist の試験だったり。
全く勉強してないのだけど、受かるのかしら(汗)

*2: cd-rom drive すら付いてない…欲しい(;_;)

#6 nis server

うう…研究室の nis server が落ちてるっぽい。
それだと remote で復旧作業ができないよん(;_;)
mail server もアレだし、もしかして timeout 起こしてしまったり…??
まずいなぁ。かといって、こんな時間じゃ直しにいくこともできないし。

うー、こういうときに自分が車持ってないことが悲しいのだな(;_;)

2001年04月09日(月)

#1 japanese database

database を利用するとき、いつも考えるのが面倒なので
urlencode してしまうのだけど、今回はそのまま store してみようと思った。
なので、database の作成時に character encoding を euc にしてあげる必要がある。
createdb hoge -E EUC_JP
いまのところ、適当に文字を入れているが問題がないようだ:)

#2 [oracle] oracle installation

ようやく oracle の正しい install 方法を発見。
今まで $NLS_LANG は JA16EUC を設定していたのだが、
Oracle for Linux インストール HOWTO ( 4.3 Q&A ) によると、japanese_japan.ja16euc が正解らしい。
これを設定したら、error がでなくなった。
manual にはそんな記述なかったのに〜(;_;)

ちなみに、前述の JA16EUC を設定していると、dbca 実行時に
 ORA-01012: Not logged in
という error message がでます。

links:

あと、
http://clyan.hongnet.com/guide/oracle/install8i_howto/oracle-doc/oracle8i-faq.html#Not logged in NLS_LANG
*1 というところにもお世話になりました:)

*1: うぅ、hns から link 張れない(;_;)

#3 [links] 今日の links

日立の樹 ONLINE:

"この木なんの木" な cm の movie が落ちています。
今放映されているのはどうやら 8 代目のものらしい。
どれも微妙に arr. が違って楽しげです。

#4 [oracle] database の設定ファイル

いまいちなにを設定するのかがわかってないのだけど、
${ORACLE_BASE}/admin/${ORACLE_SID}/pfile/init${ORACLE_SID}.ora
で database についての設定ができるらしい。
database の予想される size とかはここで指定できる。

#5 故に我思う

人気者の条件って知ってる?
その場で本音を言わないことよ
(日本橋ヨヲコ短編集 BASHIZM より)
短編集を友達から借りてきました:)
あいかわらずずばっと斬りかかってくるねぃ。おもしろいです。
んで、考えさせられます。生き様とか考え方とか自分が今していることとかを。
自分は思ったままに、縮こまったりせずやりたいことをやっているのかなぁ。
誰かに遠慮したり、なにかに流されたりして、大事な物を見失っていないかなぁ。
なかなか答えは出ないのだけど。
でも感じ入った物は取り入れていきたいですね。もっと楽しく生きていくためのコツとかさ(笑)

またそのうち読み返したいですね:)
いあ、ほんと日本橋ヨヲコさんつーのはすばらしい作家さんですよ。マジで。

#6 流れてく。

気づけば今日は 9 日。これを書いている今は実は 10 日:p
すでに 4 月も 1/3 すぎてしまったのですねぃ。
そろそろ始業ボケ(?)も終わりにして、活動を始めなくては。
バイトやら本業やらそのあたりはまだまだつもってますからねぇ(^^;

結局今日も todo がすべて終わったわけではなかったのである(;_;)
まぁ、いくらか減ったのは賞賛すべきところではあるが。

#7 誤算

どうやら第 3 日曜って 15 日らしいぞ。22 日だと思っていたので、大誤算だ(;_;
15 日といえば、もう一週間切っている。

つまり、もう database specialist の試験まで一週間切ったと言うことだ(;_;)
まだ少し余裕があると思っていたのは、すべて水泡に帰したらしい。うがー。
ただでさえ勉強する気がないのに、どうすればいいんだ〜(;_;)

…どうにか地道にやってみるか〜。 < やる気なし

2001年04月10日(火)

#1 あふれる

server の /var があふれてた。うわー(;_;)
なんかなんだかなぁ。

うーむ、だれも触らないなら私の管理下におくかぁ?

#2 [links] 今日の links

システム管理者“一年生”に贈る言葉:

だそうだ。

MPEG4U.NET:

capture に関する site みたい。

Progeny Linux Systems:

Progeny Debian という名前から察するに debian based distro. なのかな??

#3 outlook

最近 PIM を気にしているのもあって、参考に outlook に触ってみる。
mailer としてはかなりたたかれてるが、PIM としては良くできているだろう:)
ただ、やはり私の希望する remote access がかなり遠いもののような気がする。
予定表なんかは web page として保存できるのだけど、ほかのものはさっぱりだし。
.net な outlook、早くでてきませんかね〜(;_;)

#4 [ruby] chmod

File#chmod は
File::chmod(0600, filename)
とかして使うみたい。

#5 [ruby] Integer#times

いままで 10 回の繰り返しは
(1..10).each do |i|
  puts i
end
として Range object を生成して Range#each を呼んでいましたが、
単に 10 回の繰り返しをしたいだけであれば
10.times do |i|
  puts i
end
の方が smart に書けてよいかもしれません。
ただし、
% ruby -e '(1..3).each{|i| puts i}'
1
2
3
% ruby -e '3.times{|i| puts i}'
0
1
2
と、block にわたる引数が違うので要注意です。

#6 [linux] それいけ linux!!(4): groups

linux や多くの UNIX はファイルのアクセス管理に permission という仕組みを
用いており、このときに用いられるユーザの区別にグループがあります。
詳しくは知りませんが、HP-UX では ACL という仕組みも利用されているようです。
グループは主に /etc/group で設定されます *1 が、
これはグループが主体で記述されているため、
自分が所属するグループが一目でわかりません。
src:*:40:katsuwo
gnats:*:41:
shadow:*:42:
utmp:!:43:telnetd
video:*:44:
staff:*:50:katsuwo
(/etc/group の一部)

groups コマンドは自分の所属するグループの一覧を表示するためのものです。
% groups
katsuwo disk dialout src staff
これは私の自宅で実行した結果です。
実行したユーザ(katsuwo)が の各グループに属していることが表示内容から解ります。

*1: /etc/group だけではなく /etc/passwd でも設定されますね。

2001年04月11日(水)

#1 database specialist

勉強間に合わない〜(;_;)

#2 本棚

念願の本棚をようやく購入。
にまんえんなり〜(;_;) 探していた 10k のは見つからず。
これ以上探しててもしょうがないので、思い切って購入:)

さて、あとはおうちの設置場所を掃除しないと。まだ山積みだよ(;_;)
おそらくこれで部屋が片づく〜:)

#3 relocation error

solaris で mod-ruby を使おうとしたら、
Syntax error on line 222 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/mod_ruby.so into server: ld.so.1:
   /usr/local/apache/bin/httpd: fatal: relocation error:
   file /usr/local/apache/libexec/mod_ruby.so: symbol ruby_init_loadpath:
   referenced symbol not found
/etc/init.d/apache start: httpd could not be started
*1 なんて error を吐いて動かなかった(;_;)
いろいろ調べてみたら、GNU binutils を使ってるのが問題らしいのだけど、
そんなもの使っていないつもりだったのだ。

で、ruby-list に泣きつこうかと思ったら、 [ruby-list: 2747 ] なんて記事を発見。
ふむ、/usr/ccs/bin に path を通すだけでは足りないのね(;_;)
setenv PATH /usr/ccs/bin:${PATH}
として ok だと思って満足してましたよ。とほほ。
ふむ、今度試してみよう。 *2

*1: 長すぎるので適当に改行してます。
*2: バイト先のやつなので今すぐ試せないのだな(;_;)

2001年04月12日(木)

#1 授業開始

今日から授業開始らしいです。
私は明日から。

本当は 4 年生だから授業らしい授業はないはずなのだけど、
わざわざ採ってみたり、単位が足りなかったりで授業があるのだな(;_;)
まだ決まってはないけど、前期は月/水/金が授業があるみたい。
…一日おきか、微妙だなぁ。

ともかく、ようやくキャンパスも研究室もにぎわってきた感じ。
なんつーか活気があると、こっちも影響してきますよね。

#2 high activity

賞状 get。捨て置く。

#3 ぼやき

…今日なにやってたんだろう…(;_;) なにかしたんだろうか…。
明日こそがんばろう…。

#4 disk

おうちの mp3 な partition がもういっぱいに。
んー、何とか手を打たねば…。
/dev/hda8             6.4G  5.8G  668M  90% /home/music
だけど、root partition とか 2.5G もあまってるんだよなぁ。
確実に割り方間違えてるねぇ:p

tune2fs -m 1 とかしてみようと思ったのだけど、
/dev/hda8 on /home/music type reiserfs (rw)
というのをすっかり忘れてた(^^;
reiserfs だと root reserved な領域はないのかしら??
とりあえず tunereiserfs は入ってもよう:p

2001年04月13日(金)
BGM:Rest of Your Heart(広瀬香美)

#1 vb と cvs

vb から cvs って使えないのかなぁ(;_;)
vc からだと 使える のに〜
visual studio 仲間なんだから、どうにか使えないかなぁ…。

#2 programmer or not programmer

program が書けるってのは書けない人から見ればきっとすごいことなんだろうけど、
でもその'すごい'状態になるはちょっとのきっかけが必要なんだと思うんですよ。
文法なんてのはすぐ消化できる物なのに、それだけじゃ足りなくて。
じゃあ後なにがあればいいのかと問われれば、山のように項目があがるのに。
それでも program が書けるようになるにはほんのきっかけがあればいいんだと思う。

だって、図書館のような大量の知識が無くたって、
programming 上のいろんな作法だって、知らなくても code は書けるんだもの。
そんな物が無くたって、動く program は作れるもの。
おそらく、program が書けないのは、みんなそれを知らないで
殻の外に出るには多くの知識と伝統の作法が必要だと信じ切っているから。
それを得るには青空の下じゃないといけないのに。

確かに確実に、速く、動く program を書くにはそれらは重要ではあるけど、
それを得るには大量の時間と code を必要とするはず。
なのに、いつまでも "Hello world" でとどまってるなんて。

結論:

もちっと踏み出さない?? きっとなんとかなるよ *1

*1: 結論はこれだけ:p

#3 広瀬香美の日

今日の bgm はずーっと広瀬香美にしてみた。
なんかそんな気分。
この人ってば冬の歌以外もかなりよいのに、誰も気づいてくれないんだもの。
まぁ、いわゆる有名どころの'冬の歌'もよいのだけどね。
いかんせん季節はずれなのよね。
I Wish あたりはいつ聞いてもよいよね *2

*2: アカペラの魔力にやられ中(笑) 気持ちよさ過ぎ。次はごすぺらーず??


2001年04月14日()

#1 format string

printf で文字列を表示する %s に %.[n]s なんて書き方があったんですね。
n byte までしか表示しないっつー option らしい。
今まで全く知らなかった(^^;
具体的には
const char string[] = "hogehoge";

printf("%s\n", string);
printf("%.4s\n", string);
とか書きます。これを動かしてみると
hogehoge
hoge
と出力されます。

奥が深いぜ、c 言語(;_;)

#2 database specialist への道

いくらなんでも全然理解してないのに勉強時間 15 分というわけにもいかないので、
がんばって本なんて読み解いてみる。
こんなことするのは…受験の時もやらなかったぞ…??

しかし、全く触ったことのない hierarchical database やら network database、
distributed database の問題なんてでてきても全然わからん。
つーか、読んでるこの本は 練習問題の内容が載ってない場合がある のはなんでなんだ??
半分以上は 図*参照 とか書いてあるのに、載ってないものに関しては
*の動作を理解すること
とか書いてある。どこにも書いてないのにどうやって理解しろっていうんだ。
どこが 標準教科書 なんだか:p

#3 palm

なんだか調子が悪いので、全部入れ直しを決意。
別に Saved Preference だけ消しても良いのだけど、ごちゃごちゃしてるしね。

で、全部最新版にして入れ直してみたのだけど、以前から気になっていた
Keyring が正しく動かないというのは直ってないみたい(;_;)
んー、visor-delux-j だとちゃんと動いてくれないのかなぁ。
app を切り替えてしまうと passwd を忘れてしまうので、使いものにならない:p

んー、まいったなぁ。

#4 icecast

なんとなく icecast に try しようとおもう…が、うまく設定できない。
shout で接続しようとしても、すぐ切られてしまう。

その前に *1 しても、ちゃんと動いてくれない。
/var/log/icecast/* の owner が root になっているのが原因みたい。
んー、なんかおかしいぞ…(;_;)

まぁ、また明日やろう。

*1: /etc/init.d/icecast-server start

2001年04月15日()

#1 database specialist

やっぱ詰め込みじゃだめだねぇ…。

ていうか、network specialist の時もそうだったけど、
実務経験がないとかなり勉強のしようがないような気がします(;_;)

#2 春の散歩道

試験は外苑だったんですが、よい陽気だったので少し散歩することにしました。
以前、新宿から秋葉まで 1h で着くと聞いていたので、
それくらいで済むと思っていたんですが、ふらふら道を間違えながら進むことかなり。
どうやら 2.5h もかかってしまったようです。

歩きづめでちょっと疲れてしまいました(^^;

#3 家計簿

なんとなく visor に PEM を入れてみました。
さて、これで無駄遣いが減るとよいのだけど…

#4 [debian] ssh on sid

ssh の version が openssl(libssl-0.9.6) に追いついてないみたい。
woody から libssl-0.9.6 を引っ張ってきて入れ直したら正しく動くようだ。
とりあえず hold しておくかな。

つか、何で私は unstable 追ってるんだ??(笑)
stable どころか frozen 信者っぽかった私が unstable なのは大いに疑問ですね。
まぁ、どれでも本当に困ることは少ないような気がするけど。
私の利用範囲だとどれでも変わらないのかしら。
trouble は経験値のために募集中だしねぇ:p

さて、起きたら BTS 調べてみよう *1 かしらね。

*1: 寝る前にちょちょいと調べてみたら、やっぱり あった よ。早く直って〜(^^;


2001年04月16日(月)

#1 昼過ぎに起きて

部屋の掃除。本当は午前中に起きてやる予定だったのだけど。
とりあえず本棚を設置する場所のスペースを大幅にとる。
あとはくるのを待つのみ〜:)

#2 [ruby] 今日の ruby-*

*1

(...):

(... rescue ...)
なんて書き方があったんですね。
これってもしかして begin-end のブロックと同じなんでしょうか??
% ruby -e 'a = (true rescue nil); p a'
true
% ruby -e 'a = (false rescue nil); p a'
false
% ruby -e 'a = (raise rescue nil); p a'
nil
ちょっと確かめてみたらこんな感じ。

embrace change:

変化を受け入れる、ってことかな。

私も testing workframe に慣れなければ〜

*1: 修正:In 0417, hns コマンド間違い(;_;

#3 [links] 今日の links

VCE-Lab Home Page:

VCEとは、"Virtual Community Engine" の略で、サーバー集中型の ネットワークゲームや、 コミュニケーションツールを作るための基礎となる、 通信ライブラリです。
試用版がユーザ登録のみで落とせるらしい。

RZBD (Ruby version of Zebedee):

ruby から利用できる Zebedee の clone 。
これで ruby から暗号化された通信が簡単にできるようになりますね:)
(参考情報:[ruby-list 26939 ])

Another HTML-lint gateway:

有名な htmllint 。

i-Checker:

ホームページの アクセシビリティー をチェックするツール
だそうだ。htmllint ついでにこっちもやっておくと良いのかも:)

HTML Validation Service:

やはり htmllint っぽいことをしてくれるみたい。

プログラミングと暦:


2001年04月17日(火)

#1 おもちゃ

icq と 何か(仮) を vaio につっこんでみる。

icq はなんだかごちゃごちゃして使いづらいですね(;_;)
もちっと interface なんとかならないものなんだろうか。

何か〜はおもしろいですね。hack しがいがあるって感じです。
とりあえず sstp.rb を raa から拾ってきたので、適当におもちゃでも作ろうかしら。
この前作った暇つぶし mail checker を sstp に対応させておく。
つーか、本体にそういう機能があるのでだめ気味。
multi server 対応じゃないみたいだが。利点はそれくらい?

2001年04月18日(水)

#1 なにか

とりあえず、skin がないと困るので適当に zero hour な黒服春菜の skin を拾う。
…というか、それぐらいしか見つからず(;_;)
だけど、恥ずかしくて iconize しておかないとつらい…。
なんか otaku なのではなく、cool な感じの skin てないのかしら。
…自分で作るか??(;_;)

snoopy:

なんも思いつかなかったので、snoopy にしてみる。
手順はこんな感じ。
  1. snoopy.com から適当に材料を拾ってくる
  2. png に変換する
  3. surface0.png, surface10.png という名前にする
  4. descript.txt を作ってセリフの位置を調整する
詳しくは Document(シェル) 参照のこと。
あと、INSTALL/1.0 とかも読んで置くと良いかも。私は面倒なので follow せず:p

透過作業完了〜。普段

chime on message:

吹き出しがでるだけでは物足りないので音が鳴るようにしてみた。
音声/効果音再生 を読んで SEND 時に \h\8[filename] してみるとなるみたい:)
$port = 9801           # いま port:9801 に設定されてるの。人によっては 11000 ?
host   = `hostname`
msg = "SEND SSTP/1.1\r\n" +
      "Sender: Notifier#{host == '' ? nil : '@' + host}\r\n" +
      "Script: \\h\\8[Chimes.wav]hello!\r\n" +
      "\r\n"
socket = TCPSocket.new(client, $port)
socket.write(msg)
socket.close
とかいう適当な script で動くみたい:)

本当は sstp.rb を使うのがよいだろうけど、さしあたっては socket でいいや。

sstp.rb:

raa から sstp.rb を拾ってきて試す。
上と同じようなことが
sakura = SAKURA.new(client, $port)
sakura.set_sender = "Notifier#{`hostname` == '' ? nil : '@' + `hostname`}"
sakura.message("\\h\\8[Chimes.wav]hello!")
でできるのはよさげ:)

#2 [ruby] 続: (...)

(... rescue ...)
みたいにかけるようになったのは 1.6 からなんですね。
情報 ありがとうございます〜:) > ZnZ さん

#3 [ruby] finalizer

finalize をするには ObjectSpace#define_finalizer をつかうらしい。
stringobject = 'create new string object'
proc = Proc.new{puts 'welcome to finalizer!'}

ObjectSpace::define_finalizer(stringobject, proc)
ちょっと面倒だけど。

なんで Object#finalize ってないのかしら?

2001年04月19日(木)

#1 自宅待機

本棚が届いたり vaio を修理のために引き取りに来てくれるらしいので、自宅待機。

本棚到着:

うむ、すばらしいぞ:)
ちと部屋が暗くなるような印象もあるが、どうせ家にいないからそれはよし(ぉ *1
とりあえず水拭きとかしておいて、中に詰め込むのは週末にしよう。
ていうか、地震対策 goods とか買ってきたいなぁ。命がけですよ?(;_;)

vaio 出発:

いってらっさい。がんばって keyboard 直されてきてください。
入れ違いに recovery cdrom も届いたことだし、あとは行く先を考えるだけだな。

よて〜:

かなり自慢されてアレ気なので、ups でも買うかぁ。
ていうか、最近 game 動かないことが多いから desktop pc も欲しかったりする。
おそらく vaio じゃ lay storm も動かないよ(;_;)
…バイトやね。

*1: 弟の机のところが陰になるかも。まぁ、昼間は学校だろうけど:p

#2 適当に

ipchains の設定とか変えておく。今までのはちょっと unsecure だったので。
まだまだ考慮すべき点は多いですな(;_;)
もう少し server にかまってあげなくちゃだわ。

#3 さぎょ〜

明日飲み会!? …てことは、今週は今日で作業打ち止め!? *2 (;_;
うわぁ。

今日家でごろごろしててよかったのか??(;_;)
徹夜とか考えてしまおうかしら。

というわけで:

でもないのだけど、お泊まり@研究室〜。
やはり夜の方が作業がはかどるね〜。
昼夜の違いじゃなくて、誰もいないということの方が大きいような気がするけど。

*2: 週末は打ち合わせ〜。

#4 お買い物っ、お買い物っ

本棚がきたのはいいけれど、地震がきたら倒れてしまいそうなので
耐震 goods を買おうとお出かけ。
適当にさまよったあげく、家具屋へ。
見つけたのはいいのだけど、そこそこ値が張る。1 セット 5000 円。
すでに本棚を買ってひからびてるお財布では買えそうにありませんでした(;_;)
まぁいいか。ほかの本棚も耐震してないみたいだし *3

…地震が起きたらカエル決定だな(;_;)

*3: 新しい本棚を耐震化しようと、ほかの本棚におそわれる計算になる。…マジ!?

#5 何か(仮)日記 3 日目

なんか文字化けしてしまうようになってしまいました(;_;)
正確には文字化けというより文字が重なって出力されるみたい。
原因不明です(;_;) どないしてくれましょう。
ruby -rsstp -e "SAKURA.new('192.168.0.71', 9801).message('hoge')"
という tiny code でもだめみたい。

なおった:

なんどか再起動しているうちに直ったみたい。
なぜ(;_;)

もしかして:

suspend や hybernation から復帰しないのって何か(仮)のせい??
あとで試してみるか。

#6 Too many open files

なんか自宅のマシンが調子が悪い。
login 時に動かしている fortune に
/usr/share/games/fortunes/fortunes.dat: Too many open files
とかいわれるのだ。
しかし、大量にファイルを開いているわけでもないのでかなりおかしい。
ちょっと調べてみると /proc/sys/fs/file-max で file descripter の max を
変えることができるようだ:)
が、fd の数を倍の 8192 に増やしても message は同じ…(;_;)

やむなく、reboot なんてしてしまうのでした…。

…考えなしに remote でやったのだけど、起きてこなかったらどうしようか…(汗)

ちょっと経過…:

うぅ…起きてこないのはなぜ…(;_;)

かなり経過…:

絶望的だ…明日帰ったら直そう。

#7 PEM

適当に使っていたら、どうやらもう demo 終了らしい(;_;)
もう登録できないそうだ。
pem があると私の腐りかけた頭でも衝動買いを踏みとどまることができるっぽいので、
かなりほしいところ。
見てみたら vis-a-vis でも販売しているみたいだし、そのうち購入するか〜。

#8 modruby-ja

なんか mod-ruby な ml ができたらしいので、登録してみる。

#9 [links] 今日の 先行者 links

先行者:

一部で有名なやつ。
なんつーか、オレ検索で引っかからないのは許せなさすぎ:p

#10 my portal

ちょこちょこと整備。
やはり interface や news/topic は日々更新されるものであるよ:)

2001年04月20日(金)

#1 回線不調

丸一日不通だった home server だが、どうやら server 自身は動いていたみたいだ。
だが、調べてみるとなぜか iij につながらない。
どうやら lcp とかそういうレベルで kick されているらしい。
原因が全く分からない(;_;)

で、やむなく vaio から access 。
こっちも flez 経由だとうまくいかない。
…なんだか iij が悪いような気がしてきたなぁ…

…課金なのでゆっくり日記書いている暇もない…(;_;) 悲しすぎる…

#2 宴会

今日は本当にごちそうさまでした:)
毎度のことだけど、またやりませう:)

今回は特にただ酒だったので普段の倍ちかく happy なのだな:)

2001年04月21日()

#1 おうちさーばぁ続報

全然直らない(;_;)
原因は全く不明。とりあえず flez 経由だと確実につながらない。
windows からだと大した情報が得られないのだけど、linux + ppxp では
Apr 21 22:12:41 [3724] CP   : LCP: Send-Protocol-Reject id=1
Apr 21 22:12:41 [3724] CP   :  LCP
なんていうログが大量に出てる。LCP で reject されてる…??

#2 つながらない理由

kernel を 2.2.19 に上げたりしてみるが、状況は改善せず。
あいかわらず Too many open files っていう message もでるし。

理由は解らないのだけど、TA がぴっと鳴って回線が切れるみたい。
なので、夜中には実験ができないらしい。
log から推測するに
Apr 22 00:16:32 [899] OS   : received SIGHUP
Apr 22 00:16:32 [899] PHASE: Network =DOWN=> Terminate
何らかの原因で sighup を受けているが見える。

いったいなにが原因なんだろう??
  1. TA がおかしい
  2. Debian 君が crack された
  3. Server が物理的に壊れた
vaio から usb 経由で使うと動くことを考えると、1. は薄いなぁ。
やぱ 2. か? 最近多いみたいだし。
とりあえず余ってる hdd に適当に vine とか入れて試してみるしかないね。
これで hardware の check ができるはず。

flez:

うぐ、vaio から入れなかった理由は簡単で、password を間違えていたみたい。
flez は account@isp が password なんですよね。忘れてた(;_;)

2001年04月22日()

#1 post message to debian-users(jp)

らちがあかないので、助けを求めに debian-users に mail を 投げて みる。
Too many open files やら SIGHUP な理由とかが解るかもしれない。
いや、解るといいなぁ。

#2 normal diary.

ここ数日は飲み会(^^; + お仕事 + server down でまともなことかいてないなぁ。
mail も見られないし。どうにかならんかな。

#3 悲劇的状況

おそらく、ここ最近の状況ってのは unstable だから、な気がしてます。
apt-get で upgrade をしようとしても
# apt-get -d -y upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
  communicator debian-policy libssl0.9.6 netscape tetex-bin
32 packages upgraded, 0 newly installed, 0 to remove and 5  not upgraded.
Need to get 24.5MB of archives. After unpacking 8241kB will be used.
Failed to exec method /usr/lib/apt/methods/http
Failed to exec method /usr/lib/apt/methods/ftp
E: Method http has died unexpectedly!
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method ftp has died unexpectedly!
E: Method /usr/lib/apt/methods/ftp did not start correctly
E: Tried to dequeue a fetching object
E: Tried to dequeue a fetching object
E: Tried to dequeue a fetching object
こんな message が出てしまいますし。
うわぁ。upgrade できないなんてつらすぎる(;_;)

まぁ、こんな時は落ち着いて offline-apt で go ですねぃ。
あうう、woody に帰りたい…(;_;)

まだ終わらず:

研究室の server が落ちてたせいで、研究室でおとしたものがまだもってこれない…。
だめだめだなぁ。

think more:

よくよく考えてみれば、うまく動いていないのは
Failed to exec method /usr/lib/apt/methods/http
Failed to exec method /usr/lib/apt/methods/ftp
あたりなわけで、wget は普通に使える(確認した)からそっちを使えばよかったんだ。
…時すでに遅し(;_;) 明日でいいよ、ちくしょう。

#4 回線復活

よくわからんが、夕方頃 root で実験し直してみたらなんかつながった。
…結局原因は不明でした。

しかし、上述の apt の話とか fortune の話とかは直ってないので、
結局何か手を打つことを考えなくてはならないですね。
golden week にでも disk の入れ替えを考えていたので、
いい timing かもしれませんが。

#5 labo's server down...

研究室の server が down しているので、いそぎ研究室へ。
kernel ごと落ちてるみたいなので、やむなく reboot 。復旧完了:)

しかし、nis server が落ちると外からまったく中の様子がわからないのは、
問題ありのような気がします。
gateway machine にそういう時専用の user を作った方がいいんでしょうか。
すべて nis 経由の user だと、nis server が落ちたとき問題があるわけで。

んー、あれですね。
network に standard はないわけで、頭を回すしかないですね。

#6 ねっとわぁくじゃんきぃ

なんかもう always wired でないと耐えられない体になってるのかもしれない。
ここ数日で予想通り痛感したです(;_;)

2001年04月23日(月)

#1 a day for diary.

ここ数日のあれた感じを回復するために、なんか思いつく順に書いてみよう。

#2 何か(仮)日記 x 日目

suspend や hybernation から復帰しない のは、やはり何か(仮)のせいでした(;_;)
…やっかいな…。

#3 pay on the bank

横浜銀行も平塚信用金庫もなんで三井住友銀行に対応してないんだ(;_;)
おかげで pem のお金が振り込めないよ…。

#4 next story of modruby-ja

入ってみたのはともかく、moduryby-ja-ctl 宛のメールを間違って modruby-ja に
投げてしまったのは非常に自己嫌悪だ。
つーか、記念すべき(?)modruby-ja の 1 通目が私の mistakes mail だなんて。
ダメすぎ。

#5 うさぎとかめ

もしもしかめよ〜 という曲は"うさぎとかめ"というタイトルらしい。
いや、知ってはいたのだけど友人が誤解していたので。
もしもしかめよ かめさんよ せかいのうちで おまえほど 
あゆみののろい ものはない どうしてそんなに のろいのか

なんとおっしゃる うさぎさん それならおまえと かけくらべ 
むこうのおやまの ふもとまで どちらがさきに  かけつくか 
(うさぎとかめ:石原和三郎 詞, 納所弁次郎 曲)
こういう歌詞らしい。さすがに 2 番はわからないです(;_;
"なんとおっしゃるうさぎさん" て部分はやや知られているような(?)感じですねぃ。
私は"なにをおっしゃるうさぎさん"だと思ってましたけど。
地方の問題??
(参考情報: その拾七 )

#6 hub の段数

今日まで誤解していたのだけど、HUB の段数の上限は 10 BASE-T が 4 段100 BASE-T が 2 段 なのね。
今までずーっと両方 3 段だと思っていました(;_;)

うちの研究室ってばすべて access path が 3 段以上にならないか!?(汗
どっかで repeating するしかないんやねぇ。

#7 [links] 今日の links

LAN運用のポイントと留意点:

hub の段数の上限について気づかせてくれたにくいあんちくしょう。
目を通しておいた方がよさそう。

OBJECT DAY 2001:

なんかおもしろそうなセッションがあるので参加することにしました。
まつもとゆきひろさんのお話が聞けたり、
私的に旬な uml/design pattern/xp の話が聞けたりするようです。

2001年04月24日(火)

#1 backup

とりあえず、月末なので定期 bacup とかしておく。

#2 rubyunit

あいた時間に試してみる。
なかなか良くできてる:)

testing のありがたみがいじっててわかってきたし、
あとは手になじませるようにしないと。
まだ test から書き始める癖が身に付いてない。

#3 何か(仮)日記 x 日目

resume 時に落ちる問題は、新しい version に上げたら起きなくなった。
すばらしすぎる。
あとは client 作るのみね。

#4 [ruby] finalizer と finalize method

ObjectSpace#define_finalizer で指定する Proc に ObjectId が渡ってくる
obj = Object.new
ObjectSpace::define_finalizer(obj){|oid| puts oid}
ので、これを利用して
class
call_finalizer = Proc.new{|oid| ObjectSpace::_id2ref(oid).finalize}

class Foo
  def initialize
    ObjectSpace::define_finalizer(self, finalizer)
  end
  def finalize
    puts 'finalize'
  end
end
のように MyObject#finalize を作ろうと思っていたのだけど、
[ruby-dev 4090 ] の thread によると GC 対象になる object の id からは _id2ref できない仕様に
なっているようですね。これに気づかずに四苦八苦してました。
もちっと調べてみればよかった。

2001年04月25日(水)

#1 徹夜 de coding

眠れないので、適当に曲を書けつつ code を書いていたら朝になってしまった。
とりあえず、一眠りすることを考えようか。

wake up:

一眠りのつもりが 6 時間ぐらい寝てる(^^;
umm..ざくざく動かねば。

できたもの:

徹夜で作ってたのはバイトの program ではなく、rubyunit の練習がわりに
lockfile 制御の class なんて作ってみた。
lock = Lockfile::lock

# running routine ...

lock.unlock
として、普通に使うもよし、
Lockfile::lock{
  # running routine ...
}
のように、block を実行するときにも使える:)
おもちゃとしてはまぁまぁかなぁ。

おかげで、かなり rubyunit の作業に慣れました:)
便利便利〜。
あとは testcase と設計がちゃんとすればなぁ(笑)

#2 [ruby] method with block

foo{
  puts 'bar'
}
のように block 付きの method を定義するときは yield を使う *1
def foo
  yield
end
yield は与えられた block を解釈し、実行するようだ。

ただ、この場合 block を与えないまま foo を呼ぶと落ちてしまうので、
iterator? で block が与えられているか確認した方がよい。
def foo
  if(iterator?)
    yield
  else
    raise ArgumentError
  end
end

また、block に引数を与えたい場合は、block への引数を yield に渡すとよい。
def foo
  yield 'bar'
end

foo{|x| puts x}

*1: 他の方法もあるのだけど、ここでは yield で。

#3 [palm] PEM registered.

pem の登録が完了:)
で、ここ数日の分をメモを元に登録とかしてみたり。

むむっ!? 2000 円計算があわないのはなぜ…(;_;)

remember!:

そいえば、お金返してもらったの忘れてた。
後一息でもう一回請求できるところだったのに(笑) ^

#4 [FE] ティアリングサーガ

電撃 playstation に体験版が付いているというので買ってみる。
表面上はどうあれ、やっぱり fire emblem ですね。
体験版で save は出来ないわ、3 stage しかないわで、微妙なところだけど、
まぁ、触った感じはこんなものなのかも。
emblem らしさというか、全体的なシビアさがまだ見えてこないのでなんともはや。
まぁ、emblemer としては"買い"以外の選択肢を求めてはいけないのです:p

んー、776 も最初はそんなに難しくなかったしなぁ。
saga も至る所で悩むような感じだとおもしろげなのだけど。

#5 スペイン戦

4:30 kick off らしい。起きてられるかなぁ。
かなり眠げ。

#6 [ruby] #!/usr/bin/ruby

最近、ruby script の最初の行には
#!/usr/bin/ruby
ではなくて、
#!/usr/bin/env ruby
を使うようにしている。
ruby が /usr/bin/ruby にあるとは限らないからだ。
周りはほとんど debian だから、/usr/bin/ruby なのだけど、
1 台だけある solaris は /usr/local/bin/ruby 。
これを回避するために env を介して起動して上げてる。

…が、env って必ず /usr/bin/env にあるものなんだろうか??

2001年04月26日(木)

#1 (生|活)きる。

バスカード補充とか。
今年からまた購入のシステムが変わってて、うろうろしてしまう。
証明書発行機は、もう少しやわらかいわかりやすい interface にならないかなぁ。
たまにしか使いそうにないから、慣れるというほどのものでもないだろうし。
慣れないとわからないってのは、ちょっとねぇ…(^^;

入試課によって大学院のパンフを拾う。
とりあえず入試の過去問とかももらってくる。

#2 playstation

pc playstation emulator ってないのかなぁ(;_;

ps は ps2 ほどではないにしろ、うるさくてダメです。遅いし。
少なくとも cd 革命のような cdrom emulator と足しあわせないと、
楽しく game できないなぁ、とか思うわけです。

普段全然 emulator 触らないから、どこ探していいのかわからん(;_;
あとで知ってそうな人に聞いてみよう。

emus.:

あたりがあるみたい。

#3 katsuwo@programmer.net

mail.com から verification mail が届いた。
特別になにもする必要がないようなのだが、ふと password を知らないことに気づく。
それじゃまずいので、mail.com で password を取り寄せる。

…password 取得にも失敗してます(;_;) ダメぎみ?
ん〜、つたない英語でがんばって support に投げてみるかなぁ。

#4 all ja 2001

どうやら、今週末がまさにそれらしい(;_;)
むぅ、高校に赴かねば〜。予定を動かさねば。

#5 [FE] 予約

ティアリングサーガのコンビニでの予約がはじまったらしいので、
ファミ通.com で 調べて 予約してくる。
ふむ、あとは発売日を待つのみだな。

2001年04月27日(金)

#1 だらだらうねうね

なんだか今日はゆとりなさすぎ(;_;)
なにがいけないんだか。

なにかがぼくをそうさせる:

なんか今日はいつもの倍ぐらい crazy だった気が。
かなり迷惑気味でごめんなさい(;_;) > all, moko-p

crazy っつーか、かなり lunatic だったのかしら。
とりあえず週末で休養です。お出かけはするのだけど。

おつきさま:

というわけで、月齢とか調べてみたり。
bsdgames の中の pom というので、月齢表示が出来るらしい。
% pom
The Moon is Waxing Crescent (19% of Full)
これってどこで地域設定してるんだろ?? LANG じゃ無いみたいだけど…。

2001年04月28日()

#1 [ruby] だらだら scripting

おうちでごろごろしながら script とか書いてみたり。

わなのつくりかた:

Ctrl + C や kill を受け取っても正しく終了するためには
SIGINT や SIGTERM などをちゃんと処理してあげる必要があります。

ruby ではそのために trap を使います。
使い方は簡単で、
trap("SIGINT") do
  puts 'recv sigint'
  exit
end
として signal の種類と処理すべき block を渡してあげるだけです。

気を付けなくてはいけないのはこの block で exit を書かなかった場合、
signal を受け取っても exit はしないということです。
signal を無視したいときなどはよいかもしれませんが、
at_exit のような使い方をしたい場合には要注意です *1

かみさまのつくりかた:

遊びに ruby で daemon を作りたくなったので、さくさく調べもの。
Ruby で Daemon を作るのときのメモ によると、
def daemon
  catch(:RUN_DAEMON) do
    unless (fork) then
      Process::setsid
      unless (fork) then
        Dir::chdir("/")
        File::umask(0)
        STDIN.close
        STDOUT.close
        STDERR.close
        throw :RUN_DAEMON
      end
    end
    exit!
  end
end
という method がかかれていた *2 のでこれを利用して、
def run(pwd)
  while(true)
    sleep 1

    f = open(pwd + '/datetime', 'w')
    f.printf "%s\n", Time.new
    f.close
  end
end

def daemon
  catch(:RUN_DAEMON) do
    unless (fork) then
      Process::setsid
      unless (fork) then
        pwd = `pwd`.chop

        Dir::chdir("/")
        File::umask(0)
        STDIN.close
        STDOUT.close
        STDERR.close

        $0 = Dir::strip(__FILE__)
        run(pwd)
        throw :RUN_DAEMON
      end
    end
    exit!
  end
end


trap("SIGTERM") do
  $lockfile.unlock
  exit
end

begin
  $lockfile = Lockfile::lock('daemon.lock')
  daemon()
rescue Lockfile::LockFailedError
  processname = Dir::strip(__FILE__)
  printf processname + " is already running. exited.\n"
end
のように適当に sample script を作ってみました。

触ったのは run() を呼び出す部分と run() のみ。
あとは適当に飾りを付けているだけです:p

どうやら daemon の process を作るときには
  1. fork
  2. setsid
  3. fork
  4. (子の)exit
*3 という手順を踏む必要があるようです。
また、optional で というのもやるべきだとか。

個人的拡張:

あうう、Dir::strip とかって default じゃないですね。
def Dir::strip(path)
  path.split('/')[-1]
end
と言う風になってます。
pathname から filename を取り出すものです。

あと、Dir::expand とかいうのも用意していたり。
def Dir::expand(path)
  fullpath = nil
  if(path =~ /^\.\.?\// || path !~ /\//)
    fullpath = Dir::pwd + '/' + path
  else
    fullpath = path.clone
  end
  fullpath.gsub!(/\/\.\//, '/')
  fullpath.gsub!(/[^\/]+\/\.\.\//, '')

  fullpath
end
こっちは相対 path から絶対 path を求めるやつ。
option とかそういうのに重宝:)

*1: 素直に at_exit 使えという話もあるが(^^;
*2: ていうか、これしか書いて無くて最初よくわからなかった(;_;)
*3: 修正:In 0503, exit してるのは親じゃなくて子ですね。つっこまれ。

#2 old vaio

そいえば、修理に出した vaio が帰ってきてた。
代引な品物は予定より早く出さないで欲しいんだが。
僕が家にいない間に帰ってきたらしく、高額の請求を親に怒られました。
今日くるはずだったんだがなぁ。まったく。

文句のない程度には修理がなされているよう。
とりあえず、中身ぐちゃぐちゃだから入れ直すところから始めるかしら。
んでもって売りつける、と。
面倒だから、向こうで入れ直してもらおうかしら??(^^;

#3 phs de internet

おもいっす(;_;)
せめて 64kbps で通信させて…。

なんつーか、unix network 上にいないとこんなに無力だったとは。
せめて便利そうな editor とか入れておくべきかな?? vim とかさー。

2001年04月29日()

#1 ただいま...

そして、おやすみ。

2001年04月30日(月)

#1 反省点

いくら眠かったとはいえ、 起きたとき惨状気味(;_;)

#2 眠気

だめだ、全然さめない。あきらめて動き出そう。

#3 all ja

無線やらんでずっと話してたなぁ(笑)
まぁ、ham は現役生の特権とゆーことで…。免許持ってなかったし。
なぜかわからないけど、JoJo の comic が置いてあったのでだらだら読んでみたり。

#4 [ruby] つっこまれたら即かうんたー

ZnZ 様々から つっこみ をいただく。
情報 very very thanks です:)

File::basename, File::expand_path:

File にあったとは(;_;)
Dir で見つからなかったから、ざくざく書き始めてしまったからなぁ。

かみさまのつくりかた(2):

私は daemon 自体初めて作ったので fork を 2 回する理由はよくわからないです(^^;
UNIX Programming FAQ *1 によると
  1. fork() する。
  2. 親 process は終了し、制御を shell に返す。
    (新しい process が process group leader にならないことを保証する)
  3. process group/session group leader になる。
  4. もう一度 fork() する。
  5. 子 process (session group leader)は終了する。
とかかれていますね。あんまり理解できてないですが。

/usr/bin/env ruby:

/usr/bin/env ruby
って記述は では利用できるのですね:)

-Ks の話はどの os ででるんですか??
手元の debian(woody), solaris(2.7) では再現できないのですが。
% uname -a ; ruby -v
Linux terra 2.2.13 #8 SMP Mon Dec 6 17:45:21 JST 1999 i686 unknown
ruby 1.6.2 (2001-02-08) [i386-linux]
% env ruby -Ks -e 'puts $KCODE'
 SJIS
% env ruby -Ke -e 'puts $KCODE'
 EUC
% uname -a; ruby -v
SunOS oracle 5.7 Generic_106541-08 sun4u sparc SUNW,Ultra-1
ruby 1.6.1 (2000-09-27) [sparc-solaris2.7]
% env ruby -Ks -e 'puts $KCODE'
 SJIS
% env ruby -Ke -e 'puts $KCODE'
 EUC
もしかして誤解してます??

SIGINT:

とりあえず linux で動かすから ok っす。 < なげやり

さておき、^C を拾いたいときは SIGINT を trap するのは間違いなんでしょうか??
ちょっと試してみたら拾えたのでそのまま使ってみてるのですが、
本当はほかの signal で拾った方が better だったりします??
うぅ…あとでちゃんと文章あさってみよう…。

*1: File not found になるので google's cache で代用。

#5 車輪問題

再発明を防ぐには、まずは車輪の存在を知らなくてはならないのね。
当然のこととはいえ、現状を考えれば難しいことですね。
やはりもう少し component を世に知らしめることが必要なような。
そういう知識がなくても component を見つけることが出来れば最高なのだけど。

簡単なものほど探そうとしないで作ってしまうからいけないのだなぁ。

以上、30 日分です。
Powered by hns-2.10-beta7, HyperNikkiSystem Project

このページへの link はご自由に。 アンテナへの登録の際には di.cgi を使ってください。 RSS 使いは rss.cgi もどうぞ。