katsuwo's diary - かつを日記

先月 2001年05月 来月
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 31
HNS logo

2001年05月01日(火)

#1 ごがつー

です。

どこどあ:

うわ、期限過ぎてる(;_;)
まだ pay してないよ〜。とりあえずまた dl して期限を引き延ばしてみる。

#2 [ruby] ruby のある日々

あぁ、端末があるってすばらしい:)

ということで、高校でちょろちょろとメモしていたものを build 。
おもちゃ完成まであと一息:)

interval:

一定間隔おきに何かを実行するという library はあったっけ??
crontab なんて module も思いついたけど、用途が違う気がしたので skip it:p
ng 。こんな感じ??
require 'lockfile'

def interval(msec, block_each_exec = false)
  key = rand
  if not(iterator?)
    msg = 'interval method must be called with block.'
    raise ArgumentError.new(msg)
  else
    while(true)
      begin
        lockfile = '/tmp/' + Process::pid.to_s + '.' + key.to_s

        lock = Lockfile.new(lockfile)

        lock.lock                       if(block_each_exec)
        thread = Thread.new(lock) do |lockref|
          Thread::pass
          yield
          lockref.unlock
        end
        thread.abort_on_exception = true
      rescue Lockfile::LockFailedError
        # ingore.
      end
      sleep(msec.to_f / 1000)
    end
  end
end
んで、こうやって使う。
msec = 1000	# every 1 sec.
interval(msec) do
  puts '  Time is come!: ' + Time.new.to_s
end
こんなものがさくさく作れてしまう ruby はすごいなぁ:)

2001年05月02日(水)

#1 疲れ気味?

なんか今日は体が重い。
tension もあがらない。うう…だめすぎ…。

#2 とびら

扉が閉まる。なぜたったそれだけのことで他人に思えてしまうんだろう。
扉の向こう側とこちら側、どこにも違いがないのに。
たった一言の挨拶で他人になってしまうの? たった一枚の壁で他人になってしまうの?
気づいて欲しいとは思わない。どうにかして欲しいとは思わない。
ただ、なんとなく寂しい気持ちになる。

近すぎるからだろうか。それとも遠すぎるからだろうか。
冷たすぎるの? 求めすぎているの ?全く持って勘違いをしているの?


たまに感じる違和感なのだけど、どうしてなんだろう。
別れの後がとても寂しく感じる。
それは別れの寂しさではなくて、もっと別の、見えない距離の寂しさなんだと思う。

とかなんとか:

帰り道、少し気になって考えてみました。
自分も意図せずにしていることなので、考え過ぎなのでしょう。
解っていて考えてみてみたり。

しかし、陳腐すぎる。言葉はやはり道具として扱いづらい。
もっともっと言いたいことは別のことのように読めて仕方がないっす。
heart をそのまま誰かに見せることが出来ればどんなに楽なことか。

2001年05月03日(木)

#1 覚醒

調子が悪いのはおさまったみたい。
少し寝過ぎた感もあるが、体調優先。
さて、お出かけしますか〜。

すでに一つ目の約束はすっぽかしつつあるのだけど:p
きっと誰かがどうにかしてくれているだろう(笑)

やはり:

tv とおいしい紅茶にはまりすでに午後の微睡み。
こ、心地よすぎる…:)

結論:

だめだ、家にいるとなにもする気が起きない。
とりあえず、すべての約束を cancel しておく。
運良く向こうも都合が悪いみたいで、商談成立:)

さらに:

夕飯食べたら眠くなってしまって、気づけば午前 2 時。
むぅ、news23 とか news station とか見られなかった〜(;_;)
憲法記念日っぽい特集を期待してたのに。

総論:

寝過ぎ。

2001年05月04日(金)

#1 鳩サブレー

サブレーというのはフランス語でクッキーとかビスケットとかを示すようだ。

#2 okui aki new single

見つからん…(;_;)
okui aki official web だともう売ってるみたいなのだが…。
むぅ、やはり厚木などという田舎町では見つからないのか…(;_;)

#3 ほんや

駅前の本屋が 4 月から内田屋書房から文教堂に鞍替えをしていたらしい。
今日レシートを見てようやく気づきました。

内装とか全然変わってないから全然気づかなかった(^^;

#4 うわっ

電話忘れた。
まぁ、連休中だし本当に大事な電話はかかってこないはず…はず。
連絡は icq is online! だし。

#5 うわっ(2)

連休中ってもしかして銀行の atm って closed ??
コンビニの atm は動いているものだと思っていたのだけど、裏切られてます(;_;)
ぬぅ、秋葉行ってお買い物するのは難しいのかっ?!
cat ruby

#6 今日の ruby-*

load(filename, true):

foo.rb を
class Foo
end
として、
load('foo.rb', true)
Foo.new
とすると、Foo を知らないと怒られてしまいます。

これは load() の第 2 引数を true にすると、module/class などの scope が
global scope から file scope に変わるようです。

samba cap filename:

SJIS から CAP filename への変換は
name     = 'なんらかの文字列'
sjisname = NKF::nkf('-s', name)

capname  = sjisname.gsub(/./) { $&[0]>=0x80 ? format(":%x", $&[0]) : $& }
capname  = sjisname.gsub(/[:\x80-\xff]/) {|x| sprintf("%x", x[0])}
とするとよいようです:)

PC 計測器具:

よくは知らないけど、pc 計測器具のお話。
ためになるかしら??
普通のパソコン計測の場合は、単体計測器(オシロとかデジボル(DMM)とか)を
 GPIBでつないでコントロールしますよね。ただ、それだとパフォーマンスやら、
配置(ラッキング)やらで、ちょっとした規模のシステムを組もうとすると、
大変になってくるのは想像できると思います。

パソコンでの計測でもA/D変換ボードとDIOボードを使って計測しよう、などと
考えるのと同様に、VXIなるシャーシにカード型の計測ボードをさして1つの
ユニットを作ってしまおう、といった発想だと思っていただければよいです。

# キーワードとしては NI, Agilent, VISA, VXI PnP, VME, PXI, CompactPCI と
# かでしょうか。

でも、こうやってGPIBだけでない複雑なモノが出てくるとソフトを書く側は大変
なので、NIやHP(Agilent)など、GPIBボードメーカが独自に規定してたライブラ
リやVXI計測ボードを標準的な形(Plug & Play で) で使えるように、VXIコンソー
シアムという組織を作り、標準的なルールを作ったのです。VISAはその中で通信
部分の共通化(抽象化)を担っています。

 VXIは既に終りの見えているシステムですが、VXI PnPの成果は計測関連のいろい
ろなところで引続き継承されているため、かなり有用なものです。

で、VISAなのですが、一般的なGPIB通信の使い方に絞り、シリアル通信のような
stream 風の扱いが出来るように考慮されたもので、およそ以下の関数だけで
大抵の計測は満足できます。

  viOpenDefaultRM()   ... ライブラリの初期化のようなもの
  viOpen()            ... デバイスのオープン
  viClose()           ... デバイスのクローズ

  viWrite()           ... データの書き込み
  viRead()            ... データの読み込み
  viReadSTB()         ... ステータスバイトの取得

  viInstallHandler()  ... SRQ(などの) イベントハンドラの登録
  viEnableEvent()     ... SRQ(などの) イベントのハンドラ呼び出し許可

また、上記のVISA のAPIが規定されており、HP(Agilent)やNIがVISA ライブラリ
として提供しているため、ユーザはVISAのAPIを使ってプログラミングしていれ
ば、HPのGPIBボードとを使おうがNIのボードを使おうが、プログラムを変更する
事無しに(同じプラットフォームであればバイナリ互換で)動作させる事が出来る、
というのが利点です。それに、GPIBライブラリは1種類覚えれば良い、という点
でもメリットはあるでしょう。

/regexep/o:

10.times do |i|
  p /#{i}/o
end
とすると、/0/ という正規表現だけが出力されます。
これは、正規表現の o option が式展開を一度しか行わないためです。
10.times do |i|
  p /#{i}/
end
と比べてみれば違いは一目瞭然ですね。

do ... end と { ... }:

do ... end と { ... } はともに block を示す構文ですが、
結合強度が違うため利用できる場面が違うようです。
それぞれ というふうに利用できます。

結合強度の違いにより、同じ記述でも意味が変わる場合があります。
foo bar do ... end #=> foo(bar) do ... end
foo bar {  ... }   #=> foo(bar{...})
などがそうです。
(参考情報:[ruby-list: 27234 ])

グローバル変数の言い伝え:

グローバル変数は三代祟るとか、親の死に目に会えないとか、
一つ使うと三日寿命が縮むとかってのは迷信でしょうか。:-)
うへぇ:p

$cgi:

mod_ruby を使ってる場合、
$cgi = CGI.new
とかするとまずい?? *1

*1: これに対する res が無いため、詳細は不明。

#7 [links] 今日の links

排他制御(ファイルロック)をする:

Perlの排他制御 (flock,open,symlink,mkdir,rename):

lockfile はよく利用する構造なので、ぜひ押さえておきたいところですね:)

2001年05月05日()

#1 うめぼし

こめかみのところをこぶしでぐりぐりやるのって、
私はうめぼしと呼んでいたのですが、そうは呼ばない地域があるらしい。
全国共通語ではなかったのね(^^;

#2 5.1ch

今日は研究室に人が少なかったので、研究室にある 5.1ch のスピーカーを使って
音楽を聴いてました:)
やぱ音を大きめにして、音楽を聴きながら作業するのは気持ちいいですね〜:)

misato:

やぱ misato が一番よかった:)

#3 連休

結局 1 日しか休まなかったよ(;_;)

2001年05月06日()

#1 go akiba.

秋葉で hdd とups を買ってきました:)
用事はこれだけ & 重いのでさくさく帰宅です。
途中、sofmap で tearring saga の体験版配ってたのがちょっと気になったり。

うわ:

奥井亜紀な cd 見てくればよかった(;_;)

オチ:

ups は普通に動いたんだが、hdd がうんともすんとも言わない(;_;)
tzone 助けて〜(;_;) 近くに tzone が無いのがだめな感じ〜。

あぁ、新しい環境に移りたい…(;_;)
とりあえず返ってきた dvd-rom とか付けておいたので、
disk さえあれば debian install ready な感じにはなった感じ:)

箱あけたり、部屋散らかしたりで、もうへとへと〜。

2001年05月07日(月)

#1 仕様変更

どうやら、昨日秋葉に行っている間に仕様変更のお手紙が届いていたようだ。
仮納期とはいえ、前日にそんな無茶なこと言われてもなぁ…(;_;)
とりあえず、数日のばしてもらうよう働きかけておく。

#2 ups

出かける前に daemon だけでも動かそうと思う…が、なぜか動いてくれない。
# /etc/init.d/freqship start
Starting FREQUPS monitoring daemon:


FREQSHIP: Failed to communicate with UPS.

Stopped freqshpd.
まぁいいや。後日だな(^^;

三菱UPS「FREQUPS」シリーズホームページ:

freqship という upsd っぽいのが置いてあります。

debian package:

sugiura さんによって、freqship が deb package になってます:)
that's sound nice!

trace the source code.:

README.Debian やら webpage でいろいろ書いてあるので
ちょっと freqship の source 読んでみたら、かなりだめだめだった(;_;)
もすこしなんとかならんもんだろうか(;_;)

時間とれるかなぁ? 少し hack が必要な気がする。

#3 [ruby] It's a small, but a powerful ruby world.

`cmd` の再定義:

[ruby-dev: 12829 ] によると、
def `(command)
  ...
end
とすることで、
`cmd`
の再定義が出来るようです。
この例のように OS に影響を受ける場合などには便利なのかも:)

上書きされた method の呼び出し:

class Foo
  def bar	# (1)
    puts 'bar'
  end
end
という class があったとき、
class Foo
  def bar	# (2)
    puts 'barbar'
  end
end
のようにすると Foo#bar の override が出来ます。
ただし、このとき Foo#bar(1) を呼び出すことが出来なくなってしまいます。
その際、
class Foo
  alias :old_bar :bar	# old_bar is bar(1)
  private :old_bar

  def bar		# (2)
    puts 'barbar'
    old_bar		# bar(1)
  end
end
のようにして、Foo#bar(1) を alias しておくと ok のようです。

ただし、なんに使うとよいのかが難しいところですね:p
たいていの場合は
class Foo_derived < Foo
  def bar
    puts 'barbar'
    super
  end
end
とすれば済むことが多いでしょうから。

というわけで:

oracle module に Oracle#islogon? とか付けてみました。
まずは、OracleEx class を作ってみました。
class OracleEx < Oracle
  def initialize(uid = nil, pswd = nil, conn=nil)
    @logon = true
    super
  end
  def logoff
    @logon = false
    super
  end
  def islogon?
    @logon
  end
  def islogoff?
    not @logon
  end
end
次に、Oracle class を再定義してみました。
class Oracle
  alias :old_initialize :initialize
  private :old_initialize
  def initialize(uid = nil, pswd = nil, conn=nil)
    @logon = true
    old_initialize(uid, pswd, conn)
  end

  alias :old_logoff :logoff
  private :old_logoff
  def logoff
    @logon = false
    old_logoff
  end
  def islogon?
    @logon
  end
  def islogoff?
    not @logon
  end
end
とりあえず、code をいじらなくて済む後者を採用。
ただ、あとで時間をとって前者に移行したいところ。

Singleton:

普通の Singleton module よりも
module SingletonEx
  def SingletonEx.append_features(klass)
    klass.private_class_method(:new)
    klass.instance_eval %{
      @__instance__ = nil
      def instance
        Thread.critical = true
        unless(@__instance__ &&
               defined?(@__instance__.isused?) &&
               (not @__instance__.isused?))
          begin
            @__instance__ = new
          ensure
            Thread.critical = false
          end
        end
        return @__instance__
      end
    }
  end
end
とかやった方が便利なのかも、と考えてみる。
singleton な object が自分の寿命を察して re-born するというのは、
なかなか幸せな気分になれると思うがどうだろう。一見よさげ。

String#omit:

長い文字列を省略して表示するときに
class String
  def omit(size)
    length > size - 3 ? sprintf("%.#{size - 3}s...", self) : self
  end
end
とかいうのがあると便利であるなぁ、とか思ってみたり。

#4 dpkg@Windows

最近あんまり話は聞かないですが、 Debian GNU/Win32いかがでしょう?
手元にある url は古いらしく、どこにあるかわからないんですが、
使えるようになっているのなら便利かもしれません:)

windows も apt ready になっていて、なおかつ vector とか窓の杜みたいな
software news site も巻き込んで体制が整えられれば happy なんですけどねぇ。
いつになればこの面倒くささから抜けられるのやら…(;_;)

think more creative:

もしかして、Ruby/Win とかでつくれたりしないかしら。
version と depends だけだったらそんなに難しく無かったりして。

2001年05月08日(火)

#1 dpkg for Win32

meadow じゃなくて cygwin の (xemacs|emacs) ではだめなんですか?? *1

package management system for windows:

しかし、これだけ windows が普及して時間がたってるのに
windows 用の package management system が出てこないのは残念だなぁ。
apt とまでは行かなくても、rpm とか ports 程度のことができないのは…。

cygwin + dpkg/apt でどうにか代用が出来ないもんだろうか。

*1: 私は vi people なので vim さえあれば:)

2001年05月09日(水)

#1 .jp domain

気がついたら普通に登録できるようになっていたんですね。

衝動的:

まだ登録が始まったばかりだからか、いろいろ空いているみたい。
ちょうどお給料が入ったところだったので、気をよくして登録してみる。
monochrome.jp
とかなんとか。

さて、server どうしましょうかねぇ。
動き出して dead lock を壊してみましょうか。

おさいふ:

なんてゆーか .com とかと比べると料金が高いのはちょっとなぁ。
何年も続けて持つのは .jp は不利?

#2 風邪

研究室で蔓延していた風邪がうつりかけているらしく、体調が悪い。
頭が軽くいたくて、なおかつ体がやたらと重い。

#3 apache module

solaris のマシンに apache + mod_ruby を入れたら
[Wed May  9 20:56:45 2001] [error] Cannot remove module mod_ruby.c: not found in module list
こんなことを言われてしまいました。
調べてみると DSO が入ってないのかも、らしいけど…なんでかなぁ…。
configure 時に --enable-module=so していればいいんでしょう??(;_;)

いくら調べても症状が治らないので、とりあえずごまかしに
AddHandler cgi-script .rb
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
とかして回避。

早めに調べなくてはなぁ。あぁ、だから debian 以外ってやつぁ。 *1

*1: たかが install に時間を割くのはもったいないよ。設定とか coding ならともかく。

#4 transparent proxy

transparent proxy ってただ単に ipchains/iptables で
redirect してるだけなのね。
というわけで、家でも早速登録。

あとは wwwoffle から squid に乗り換えることだな。
always online なので、wwwoffle である必要はないものね:p

2001年05月10日(木)

#1 めざめれば bug

bug report な電話でたたき起こされるのはもうイヤだっ(;_;)

とめどなく bug:

なんだかぽろぽろ出てくる bug をなおしておく。
致命的なのは少ない。…はず。

fixed.:

とりあえず、見つかったものは全部破壊。

どれも code の品質が低いのが原因のような気がする。
あまりにも maintenance しづらいものばかりだったし。

#2 broken diary?

なんだか日記がめちゃくちゃになってたので、直しておく。

#3 whois

ようやく設定されたみたい。
さて、server を考えて上げる必要があるなぁ。
せっかく domain 取ったのに使わないんじゃもったいないもの:p

#4 飲み会(1)

友人とこに泊まったら酒を振る舞われた。

2001年05月11日(金)

#1 飲み会(2)

今日も飲み会。かなり rich な感じで飲むことが出来て happy:)

#2 filter of air conditioner

研究室で冷房が効かないのは、もしかしてフィルターのせいじゃないかと、
調べてみたらほこりだらけ(;_;)
とりあえず 2 カ所だけ掃除してみるが、おかげでほこりまみれ。
あと 4 箇所残ってるのは他の人にやってもらおう。

装着:

乾かして装着してみた。

…。
……。
………。
おお、風がでてる! great!

#3 [ruby] 今日の ruby-*

*1

symbolic link:

symbolic link の歴史とか。
シンボリックリンクは歴史的には4.2BSDのBerkley Fast File Systemに伴って
導入されたものですが、当初はlstat(2)あたりを除いて殆んどのシステムコー
ルはシンボリックリンクを辿る様になっていました。

4.4BSDの後、386BSD以降の紆余曲折(注)を経て、今時のFreeBSD/NetBSDあたり
では、シンボリックリンク自身が所有者やモードを持つ様になっています。こ
の結果lstat(2)の他に、lchmod(2), lchown(2), lutimes(2)といったシステム
コールが用意されています。これらによってシンボリックリンク自身の、

o 所有者を変更する。
o アクセス権を変更する。
o 最終のアクセス日時と修正日時を設定する。
  (実際には、シンボリックリンクの修正日時はシンボリックリンクを作成し
  た日時ですが。)

といったことができます。(また、シンボリックリンクをハードリンクできた
りもします。)

NetBSDのオンライン・マニュアルのchown(2)によると、このうちlchown(2)は、

        X/Open Portability Guide Issue 4 Version 2 (``XPG4.2'')

に準拠しているとあり、少なくともlchown(2)はBSD独自ではなく標準で規定さ
れているものということになります。

このあたりのシステムコールを File#lchmod, File#lchown, File#lutimes(or
File#lutime ?)といったメソッドとして使えると嬉しいです。というか、これ
らがあると、ファイル階層をrubyでコピーすることができます。

ちなみに私の本業の方では、

        o 元々root権限で実行するスクリプトなので、実効ユーザを一時的に
          変更してシンボリックリンクを作成する。
        o ターゲットが古いFreeBSD 2.2.8で、実はシンボリックリンクのサ
          ポートが完全ではないため、lchown(2)/lutimes(2)の処理はあきら
          めた。

という形で解決をみました。

なお、4.4BSDではfile flags(chflags(2)/fchflags(2)/lchflags(2))というの
もありますが、これらは完全にBSD独自なので拡張モジュールが適当でしょう
ね。
symbolic link の属性があるとなにがうれしいんだろう?

symlink in BSD:

bsd では symlink の働きは次のようになっているらしい。
o シンボリックリンクを辿らないシステムコールは、lchmod(2), lchown(2),
  lstat(2), lutimes(2), readlink(2), rename(2), unlink(2)の7つである。

o かつてchown(2)はシンボリックリンクを辿らない時代があった。(4.3BSDあ
  たりまで。)

o マウントのオプションに symperm というのがあり、指定すると以下の挙動
  をする様になる。

        1. readlink(2)ができるためには、シンボリックリンクに読み込み権
           限が必要となる。

        2. シンボリックリンクを辿るシステムコールは、辿るすべてのシン
           ボリックリンクに対して実行(検索)権限がなければならない。

        3. シンボリックリンクのアクセス権の書き込み、sticky, setuid,
           setgidといったビットは意味を持たない。

ということでした。

net/*:

http = Net::HTTP.new(...)
req = Net::HTTP::Get.new(path)
http.request(req) do |response|
  p response
end
のように使うことが出来るらしい。
さらに、
http.open_timeout = 60
http.read_timeout = 60
とすることで、timeout も設定することが出来るようになっています。so good!

出来ることなら socket のレベルで非通信時間での timeout に
対応して欲しいのだけど:p
作ってみようかと思ったけど、primitive っぽくて駄目な感じ。

rajah:

「Rajah」は、Ruby 言語と Java 言語のブリッジを提供する、 オープンソースのプロジェクトです。
だそうな。
  1. Ruby から Java
  2. JVM から Ruby
  3. Ruby interpreter の Java による実装
が目標のようです。

1. についてはそろそろ alpha version が出てくるようです。楽しみ:)

*1: 修正:In 0515, CAT が小文字だったのを fix.

#4 [ruby] eruby + mod_ruby について

mod_ruby と普通の cgi に対応した script:

<%
if defined?(MOD_RUBY)
  Apache::request["Content-Type"] = "text/html"
else
  CR  = "\015"
  LF  = "\012"
  EOL = CR + LF
  print "Content-Type: text/html" + EOL
  print EOL
end
%>
のようにして MOD_RUBY が定義されているかどうか調べるのがよいようです。

charset 指定と出力される文字コードをそろえる:

以下の code を eruby/jcode.rb などとして保存して、
rhtml の先頭で
<%
require 'eruby/jcode.rb'
ERuby.charset = "ISO-2022-JP"
 %>
とすると、charset の指定と出力される文書の文字コードをそろえることが出来ます。
require "nkf"

module ERuby
  module CodeConv
    PROC_TABLE = {}

    module_function

    def add_proc(charset, proc = Proc.new)
      PROC_TABLE[charset.downcase] = proc
    end

    def exec
      charset = ERuby.charset.downcase
      if PROC_TABLE.key?(charset)
        $>.replace(PROC_TABLE[charset].call($>.to_s))
      end
    end

    add_proc("iso-2022-jp") { |s|
      NKF::nkf('-j', s)
    }

    add_proc("euc-jp") { |s|
      NKF::nkf('-e', s)
    }

    add_proc("shift_jis") { |s|
      NKF::nkf('-s', s)
    }

    at_exit { exec }
  end
end

#5 [links] 今日の links

HttpUnit:

cgi などの testing framework for ruby。
開発には test が必要な体になっているので、重要な tool です。

WebUnit:

rubyunit と組み合わせた webpage を test するための tool 。

Rinn:

ruby から CORBA を使う module。

ruby の自作ツールなど:

画像ファイルのサイズを取得する image_size module が公開されています。
web で表示する際に非常に便利そうですね:)
対応 format は だそうで。便利そうですね。

2001年05月12日()

#1 さらば仕事よ

とりあえず、一息。
さて、このあと refactoring と言う名の remaking しますかね。
client から ok もらってるので、大手を振って remake できる〜:)

#2 see friends

さて、これから寝ずに遊んできますか〜。

2001年05月13日()

#1 ちかれた…

帰宅。すでに keyboard を打つほど元気ではないので志望気味。
おやすみ。

2001年05月14日(月)

#1 今振り返る昨日と今日

要点のみ。 あたり? 楽しかった & 疲れたのでまた次回と言うことで:)

#2 broken hdd

broken hdd は本当は休みにあわせて秋葉で交換してもらうつもりだったのですが、
持っていくのを忘れてしまったため、今日友人に頼んで運んでもらいました。
で、やってきた mail によると交換はしてもらえたようです。
あとは受け取って交換するのみですね:)

todo:

そのときまでに ups の停止信号受け取るようにしておきたいなぁ。
時間なさそー(;_;)

#3 [debian] extract deb package

deb package を展開するには
dpkg --extract <debfile> <directory>
とするとよいみたい。

ただ、依存関係でめんどうなので、特別な場合以外は使わないでしょう。

#4 [links] 今日の links

国際化/生データを文字列に変換する:

文字列を任意の文字コードに変換するには
public static String raw2String(String raw, String encoding)
  throws UnsupportedEncodingException {

  return (new String(raw.getBytes("8859_1"), encoding));
}
のようにするとよいみたい。

Javaにおける文字化けについて によると、〜 や丸付き数字も化けるらしい。
前者はともかく、後者は使う気はないのだが:p *1

Beefway:

java な super mario がおいてある。
mouse 操作なので難しげ。

on servlet:

を組み合わせると lockfile の代わりになるようです:)
primitive api だそうですよん:) > File#CreateNewFile()

code にするとこんな感じだそうです。
File f = new File(".lock");
File f.deleteOnExit();
for(int i = 0 ; i < 600 ; i++){
    try {
        if(f.createNewFile()){
            break;
        }
        Thread.sleep(100);
    } catch(Exception e){
        throw e;
    }
}

if(i == 600){
    throw IOException("処理中だよ。。。");
}

try{
    //any process
} catch(Exception){
    //error process
} finally {
    f.delete();
}

*1: とはいえ、使わざるを得ないのが仕事ってもんだからなぁ(;_;

#5 悩める若者

最近は 悩みすぎて躁鬱 が keyword なのか?
私は逆に 悩むのをやめてる ので、相反してる感じがしますが…:p

最近の policy は
悩むより考えよ、そして heart に聞け
かな。
多くのことを解決するのは、そういうものでは?
考えて解らないものは当たってぶつかって砕くしかないんじゃないかしら。
うじうじ悩んでどうにかなったって例は私が寡聞なのか聞いたことないですしね:p

いや、実際:

そんなもんなんでは? > 悩める羊さん
本当にそう思うのなら、自分も踏み出すべきでは??
Boys be revolutionist of you! でしょう。 *2

self reference.:

つーか、せめて悩むぐらい繊細になりましょう(ぉ

いいわけ:

悩みとか不安とかを抱えられるほど余裕がない感じで忙しいんです、とか言ってみる。

*2: うわ、説教っぽくてはずかしー

2001年05月15日(火)

#1 antenna software

必要だ、と言うのもあるが暇つぶしに antenna とか作り始めてみた。
お仕事で次の仕様が固まるまでにうごくといいなぁ。

requires.:

あたりは必須気味?

invalid time between the servers:

file server と web server の時間が少しずれていたおかげで、
ちょっと苦労してしまった(;_;)
まぁいいんだけどさ。

#2 自由落下

keyboard の上にお酒を落としてしまいました(;_;)
で、ふき取ろうと思ったら、keytop 壊してしまうし(;_;)
まぁ、壊してしまったのは f2 key なので気にならないのだけど:p

しかし、ちょっとかなしいなぁ。

2001年05月16日(水)

#1 transparent proxy: squid

*1 squid による透過型プ ロキシ にあるとおり squid.conf に の設定を加え、
ipchains -A input -p tcp -d 0/0 80 -j REDIRECT 3128
と ipchains の rule を書き足すだけで ok です:)
らくらく〜:)

*1: 修正:In 0517, 誤って 15 日分に書き足してた。

2001年05月17日(木)

#1 hdd comes back.

hdd が修理から返ってきました:)
家で動作を確かめたかったんですが、うまく時間がとれないので研究室で
debian を入れておきました。
あとは あたりをコピーすれば移行完了かしら:)

new MTA?:

この際、mta も sendmail から変えてしまいたいやね。
exim? postfix? qmail?
今まで怖くて触る気がしなかったのだけど、この際に master してしまおうかしら。

mail って super infrastructure なので、失敗するわけには行かないとっていう
pressure を非常にかんじるのやね。

unfinished works:

む、結局 ups な話は終わってないなぁ。やぱ週末だね。
今週末は空いてるので、部屋の掃除 & server maintenance 希望。

さらに言えば squid + mrtg も触りたいのだけど。
cache hit rate とかどうやって出すの?

#2 lately mama's day

服を贈ると言うことで決着。
あと靴ですか? 貧しいんですよ?(;_;)

#3 tomorrow...

object day ++2000(ぉ らしーので、早めに寝ます。

#4 [ruby] oracle - postgres bridge

寝るといいつつ、coding。(ぉ
おうちにいると oracle な code が書けないので、それをどうにかごまかせるように
postgres module を oracle module っぽく wrapping してみた。
とりあえず、手元にあるいくつかの test は通るみたい。

Oracle::Binary はちゃんと large object と bridge したほうがよかったのかも。
まぁ、所詮は簡易テスト環境ということで。
本当にちゃんとやりたいのなら rdbc とか使うべきだろうし:p
if(not defined?(Oracle))
  class Oracle
    class Cursor
      def initialize(cursor)
        @cursor = cursor
      end
      def fetch
        if(iterator?)
          @cursor.result.each(Proc::new)
        else
          @cursor.result.shift
        end
      end
      def close
        @cursor.clear
      end
    end
    def initialize(uid, pwd)
      host = 'localhost'
      db   = 'database-name'

      @cn = PGconn::connect(host, 5432, nil, nil, db, uid, pwd)
    end
    def exec(sql, *bindvar)
      if(bindvar == nil)
        cursor = @cn.exec(sql)
        Cursor.new(cursor)
      else
        bindvar.each_with_index do |var, index|
          sql.gsub!(/:#{index}/, "'#{var.to_s}'")
        end
        cursor = @cn.exec(sql)
        Cursor.new(cursor)
      end
    end
    def self::Binary(var)
      ''
    end
  end
end
最近、こういう妙な ruby script ばっか書いてるような…(;_;

2001年05月18日(金)

#1 rio on linux

koh くんの memo をみて触発されたかったのだけど、
usb cable が見つからないので、ダメ気味。(;_;)

for debian:

rio500-utils は apt で入りますね:) package-name は rio500。
potato とかのひとは
apt-get source rio500
dpkg-source -x rio500.dsc
cd rio500-*
dpkg-buildpackage
あたりでいけるのでは? *1 ダメなら debian/control あたりをいじって retry!

commands:

rio500 package をのぞくと
% dpkg -L rio500 | grep bin
/usr/bin
/usr/bin/rio_add_directory
/usr/bin/rio_add_folder
/usr/bin/rio_add_song
/usr/bin/rio_del_song
/usr/bin/rio_font_info
/usr/bin/rio_format
/usr/bin/rio_get_song
/usr/bin/rio_stat
だそうな。まんまですねぃ。
rio_format して、rio_add_folder して rio_add_song/rio_add_directory かな。

しかし、なにゆえ rio_add_folder なのだろ。
rio_mkdir のがわかりやすいのに:p rmdir はないし(;_;)

*1: 身も心も debianist ならば repackaging ぐらいは当然です(ぉ < 信者

#2 Object day 2001

loop:

電車の中で目覚めてみたら、登戸を小田原方面に向かってました。
どうやら新宿で起き損ねた模様(;_;)
そーゆー時間のロスの積み重ねで、まつもとゆきひろさんの session を逃す(;_;)

today's cource:

の 3 本でお送りします。(さざえさん調)

UML 入門:

が定義されているそうな。

話を聞いた限りでは あたりは必須かな。他は要件に応じて。

あと、CASE ツールというたぐいの util で UML -> source code templte の変換が
可能なようです。興味あるので要調査ですかねぇ。

Design Pattern:

あたりに触れる。先人の知恵は偉大だと言うことを今更ながら思い知る。

uml が読めれば、あとは自分ではじからひもとくだけでよいでしょう:)

XP panel discussion:

XP は
[- 日記システム警告:コマンド XP は予約されています。-]
とかいう面も持ってるので、簡単に、考えなしに適用できそうなものではないですね。
不要な document の判断も難しいし。
ある程度経験値のある group で、xp core を理解しているのなら
利用してもよいかもしれません。
そうでないならば、なかなか適用しても利を得るのが難しいと思われます。

ただ、 の 2 つに関しては XP とは独立して採用することを考えても良さそうです。

coffee break:

途中、休憩の時に coffee が振る舞われていたのですが、
どうやら紅茶は無かったようです。
ちょっとおいしい紅茶とか期待してみたのに〜(;_;)

#3 *.jp

いつから使えるようになるの??

2001年05月19日()

#1 真面目な日

ちゃんと午前中(ぎりぎり)に起きて、network specialist な授業を受けて、
コードとか完成させて、しかも document 書いてたりした。

む、今日は perfect によい日ですぞ:)

#2 [ruby] rd

ようやく rd っぽさをつかんだような。
とりあえず
=begin
= class name
description of class.
it's a nice class, hmm?
== methods (headline)
: foo_method
    this is method description
: bar_method
    this is, too.
=end
javadoc のように method の直上に書くのではなくて、
class の上にまとめて書くのが書きやすいですね。読みやすさから言って。
書きやすさから言えば、method のすぐ近くにあった方がよい感じですが:p

もうすこし制約を強くした方が ruby document tool としては便利なのかも。

2001年05月20日()

#1 server's hdd changed.

ここ最近の課題であった hdd の換装が終了:)
あとはじっくり育てていきますかね。

#2 nmap

nmap を使うと listen している port を調べることが出来ます:)
% nmap localhost

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1534 ports scanned but not shown below are in state: closed)
Port       State       Service
22/tcp     open        ssh
23/tcp     open        telnet
25/tcp     open        smtp
53/tcp     open        domain
80/tcp     open        http
139/tcp    open        netbios-ssn
953/tcp    open        rndc
5432/tcp   open        postgres


Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
不必要な port が開いている場合はすぐ確認すべきでしょう。

さらなる nmap:

こちらの nmap はさらに強力な機能を備えている。

#3 ups

結局うまく動いてくれない(;_;)
不良品なのかしら…??(;_;)

今度 windows で試してみよう。

2001年05月21日(月)

#1 [debian] chroot-bind

最近は bind を chroot して動かすのがよいような話が出ています。
気になったので、手元で try 。おお、動くぜ:)
詳しい話は Chroot-BIND HOWTObind の chroot 化 あたりを参照のこと。
(後者は debian での quick hack っぽいので、前者を必ず読むこと。 *1 )

でも、debian 的にはあたらしく named.named な人を作るよりも
daemon.daemon な人を使って上げた方がいいのではないかと思った。

try packaging:

いきなり挫折。bind package って難しすぎてよくわからん。

おそらく source から生成するのを と、さらに にしてあげればいいんだろうが、multipackage って作ったことがないので、
なにがなんだか解らないのであった(;_;)

try packaging(2):

debuild で
tar: ./var/lib/bind-chroot/dev/null: Cannot mknod: Operation not permitted
とか言われるし:p
mknod は debian/rules ではなく postinst ですべき??

あと あたりを直す必要あり?

つか、作っても自分で使わない可能性多大かも。
適当に作ったら誰か maintenance してくれないかしら(笑)

しかし、忙しいのになにやってんだか:p > me

*1: debian-users: 27725 とか。

#2 lame

む、debian くん入れ直した影響で lame が無くなってしまった(;_;)
もう一度 packaging するかのぉ。めんどすぎ。

see you later.:

後回しの刑。

#3 post work's mail

完了。あとは implment のみ??
…だといいなぁ。

2001年05月22日(火)

#1 view の更新

postgresql は view の更新が出来ないようです。
うわ、やられた(;_;)
oracle ならちゃんと出来るので oracle で go のようです。

2001年05月23日(水)

#1 think about research

なにやろか。まいったなぁ。

結局一日考え事して過ごす。

#2 bind-chroot*.deb

なんかうまく動いているっぽい。
めでたい感じなので終わり。

しかし、named ってなんで root.root で動いてるんでしょう??
packaging するときに daemon.daemon で動かしてみているのだけど、
もしかして問題ありなのかしら??
技術的に問題が無くて、debian policy に反しているだけなら
おうちの bind は chroot でない状態で、 daemon.daemon にしてしたいのだけど…。

chroot は maintenance cost の関係で維持できそうにないので pass かな。
lintian passed でないし(;_;)

2001年05月24日(木)

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

ようやく get :)
…が、memory card 買ってくるのを忘れたので play 出来ず(;_;)
仕方がないので、対戦モードをちょっと触ってみる。

むー、キャラクターがよくわかんない(;_;)
素直に買ってくるまで置いておこうか〜(^^;

#2 meeting

おしごとも次の step へ進んだり進まなかったり。
とりあえず今年度分の plan をもらう。
研究との折り合いが付くかどうか試算してみなければ。

だけど、これ蹴ったらお給料なくなっちゃうんだよなぁ(;_;)

#3 適材適所

使わないものは使いたい人の元に post してあげたりする。
それが報われるとよいなぁ。

#4 think about mind

人の心が読めればどんなに楽なことか。
なに考えてるか解らない人の考えを推測するってのは難しすぎますね(^^;

#5 ticket has come

interop の入場券が届く。
さて、どの日に行きますかねぇ。
明日にでも行きそうな人に問い合わせをしてみよう:)
*1
*1: 修正:In 0526, 粋そうな人って誰だろう?:p

2001年05月25日(金)

#1 報われない日々

いいんです(;_;) えぇもぉ(;_;) < ヤケ

#2 [FE] えむぶれむにっき

最初の方はさくさく進んでいくのでした。
んー、まだおもしろさは未知数〜。

終了:

なんかもう 4 時過ぎなんですが(;_;)

2001年05月26日()

#1 planning

おわり。let's implement!

#2 [links] バカ links

Tomak〜Save The Earth〜−LoveStory−:

なにも聞かないでくれ…(;_;)

2001年05月27日()

#1 燃え尽き症候群

昨日は本を読みながら寝てしまった(;_;)
おかげで日記更新しない日々記録更新!!

こうなるのは、疲れ切ってるのかも。
日曜なので思い切って寝ることにして、睡眠時間 15 時間の大台を mark。
今夜眠れるんかいな(汗)

#2 虫さされ

かゆい〜(;_;)

#3 後悔先に立たず

YARPC 行っておけばよかった(;_;)
悔しいから Linux Wolrd/Tokyo とか行っておこうかしらん。

2001年05月28日(月)

#1 だらだら

結局一日ゲームして終わってしまった。
まぁ、たまには。

いや、しかし:

よくできてますよ。おもしろいですよ:) > tearring saga
この過剰にシビアなゲームバランスがよいです:) 仲間死にまくり。

2001年05月29日(火)

#1 まただ。

tearring saga やってたら徹夜してしまった。ダメすぎ:p
とりあえず一眠りして授業です(;_;)
じわりじわりと map23 まで侵攻中。

2001年05月30日(水)

#1 おはよう

久しぶりに短い睡眠時間で活動中:)
これで動けるとは自分で思ってなかったですよ!(ぉ

#2 事務作業

院の推薦の資料作成完了。

ふぉとぐらふぃ:

写真が必要!? む、友達のうち泊まるんじゃなかった(;_;
撮影は明日に延期なり。

#3 download.cgi

download.cgi を
#!/bin/sh

echo 'Content-Type: application/octet-stream'
echo ''

cat filename
というふうにただ単純に cat しただけではファイル名が download.cgi に
なってしまうので、ほかの手を使う必要があります。

これは extra path を使って回避できるようです。
download.cgi/filename という風に指定してあげると、download されるファイルには
filename というファイル名がついて download されます。

また、download.cgi/filename?key=param という url を用いると
?key=param が download.cgi に渡るようです。

implement:

seek.cgi を
#!/usr/bin/ruby

require 'cgi'
require 'resolve'

cgi = CGI.new
id = cgi['id'][0].to_i
filename = resolveid(id)

printf "Location: download.cgi/%s?id=%d\n", CGI::unescape(filename), id
print  "\n"
download.cgi を
#!/usr/bin/ruby

require 'cgi'
require 'resolve'

print "Content-Type: application/octet-stream\n\n"

id = CGI.new['id'][0].to_i

print getcontents(id)
として保存して resolveid を適当に実装すると動くようです:)

ちなみに resolve.rb は
#!/usr/bin/ruby

def resolveid(id)
  case id
    when 1
      "seek.cgi"
    when 2
      "download.cgi"
    when 3
      "test.lzh"
    else
      "menu.html"
  end
end

def getcontents(id)
  open(resolveid(id)).read
end
とか、手抜きにかいてあります。

あとは resolve.rb をデータベースなり何なりと連携するようにすると良いのかな。

2001年05月31日(木)

#1 頭痛小さじ一杯

風邪っぽいので、今日は休み。
ちょっと前に雨に降られたのが効いてるのかも。

結局:

ts な日。

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

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