katsuwo's diary - かつを日記

先月 2001年09月 来月
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年09月01日()

#1 time to count down

あー。締め切り間近だってのに、なにも浮かんできやしない。
うぅ。結構負け気味っすよ(;_;

#2 tgif と僕。

この前 のりべんぢ。

この前、適当にやっていたので気付かなかったのだけど、
.Xdefaults は切り張りしていたときに
Tgif.Modifiers:         "@im=skkinput"
というのをなおしていなかったので、これを
Tgif.Modifiers:         "@im=kinput2"
という風に変更。

最初に vnc でやってみると成功:)
むむ。じゃあ、astecx を…む、うまくいかない??

wakou さんにもらったメールには
Tgif.Modifiers:         "@im=ASTEC_IMS"
とすると良いというメールがあったので、変更をしていじってみると、
日本語入力モードが ctl + space になっているのだけど、他は問題なく動くみたい。
(参考情報:[ vine-users:013712 ],[ mld-ml:8098 ])

まとめ:

tgif で日本語を出すには Tgif を使おうとしたのですが、日本語を処理できません
を参照して、.Xdefaults を書き換えるとよい:)

また、astecx で日本語変換をするときは
Tgif.Modifiers:         "@im=ASTEC_IMS"
の設定を加えると ok 。
ただし、日本語入力モードには ctl + space キーを使う。

#3 Lycos とぼく

最近 lycos さんから激しく robot がくるおかげで、
hns の log analizer がかなり使えない感じに(;_;
表示の 8 割が lycos からの log になってしまう(^^;;

以前 も同様のことで悩んだのだけど、
今回は現実逃避にソース読みに挑戦とかしてみたりして(爆

で、問題のところを少し読み解くとすごく簡単なことでした。
hns の robotlist.txt って だったようです。
正規表現が通るだなんて、今まで全然気付きませんでした。

つまり、robotlist.txt に
Lycos_Spider_(T-Rex)
と記述した場合は Lycos_Spider_T-Rex という
UserAgent 以外には match しないのです。

その証拠に、
Lycos_Spider_(T-Rex\)
という中途半端な記述をした場合、
Error Occured: /Lycos_Spider_(T-Rex\)/: unmatched () in regexp at lib/HNS/Status.pm line 44,
chunk 14. 
という風に、perl が落ちてしまうのです:p

とりあえず、正しく記述して回避完了:)

escape a regexp:

perl だとどうやるのだろう?地道に s///g ??
ruby だと
Regexp.escape(str)
で十分ですよね:)

2001年09月02日()

#1 packaging gogo-3.0

なんか正しく compile 出来ない。
実行しても Illegal instruction とか出てしまうし。
% ./gogo ~/work/wave/track01.cdda.wav ./test.mp3
GOGO-no-coda ver. 3.00  (Sep  2 2001) is a mp3 encoder based on lame 3.88,
which is distributed under LGPL on http://www.mp3dev.org/mp3/ .
See http://member.nifty.ne.jp/~pen/ .
Illegal instruction
むむぅ。うちの k6-2 じゃ動かない?? 落としてきて
make -C linux/
しかしてないのだけど…。

それじゃあんまりなので、面倒だと kick した 3.02 を試すことに。
こっちは nasm に patch を当てなくてはならないのだな。うー。
ざくっと nasm を repackaging して、肝心の gogo を remake。成功。
 % ./gogo ~/work/wave/track01.cdda.wav ./test.mp3
 GOGO-no-coda ver. 3.02  (Sep  2 2001) is a mp3 encoder based on lame 3.88,
 which is distributed under LGPL on http://www.mp3dev.org/mp3/ .
 See http://member.nifty.ne.jp/~pen/ .
 familiy 5:vendor AMD
 extended instruction - MMX 3D Now!
 MPEG 1 layer III
 {   9050/   9050} 100.0% (  1.82x)  re:[00:00:00.00] to:[00:02:10.00]
でも、gogo ではなく lame を使うのでした:p

go public:

せっかくなので見える場所に置いておこう。そうしないとなくすし(^^;
でも、自分で使うつもりはないので更新するかは不明です:p
まぁ、version up したら誰か教えてくださいな(笑)

せっかくなので apt-line も作っておくことに。
作り方は簡単で、.deb を適当な directory に放り込んで、
apt-ftparchive packages [directory] | gzip > Packages.gz
で ok。
ついでに、(.orig.tar.gz|.dsc|.diff.gz) を集めておいて、
apt-ftparchive sources [directory] | gzip > Sources.gz
apt-ftparchive contents [directory] | gzip > Contents.gz
しておく。
*1
apt-line は
deb http://www.ish.ic.kanagawa-it.ac.jp/~katsuwo/debian/ ./
のはずです。

ついで:

ぇーぃ、ついでだ。debian の page もつくってしまえ。

というわけで、とりあえず形だけでも 完成

中身は待て次号って感じで。まぁ、現実逃避待ちですな(ぉ

*1: 修正: In 0904, apt-ftparchive の option が間違っていた

#2 日本サッカーの日(嘘)

ユースサッカー:

お昼ご飯を食べながらユースの決勝を見る。
おお、さすがは決勝。レベルが高い:)
後半からしか見ることが出来なかったのだけど、なかなか満足。

応援してた国見もちゃんと勝つし:)

jomo cup:

む、world dreams って招待選手ぐるーぷじゃないんだっけ??
まぁ、ゆな^H^Hえむぼまが来てたので、そこそこ満足。

あ〜、はやくアレックスは帰化しないかなぁ。
日本代表入ってくれるととってもうれしいのだがなぁ。

やっぱり応援してた world dreams が勝ちました。やるなぁ。
ぼくらのチェ・ヨンスは残念ながら chance に絡むことが出来なかったのだけど:p

#3 [links] 今日の links

RNet:

高レベルネットクラスだそうです。
net/* より扱いやすい??

NETRuby (NOTRuby for .NET):

NOTRubyと言っても、「似て非なるもの」程度のつもりなので、ネガティブな意
味に取らないで欲しいですが、Ruby風の何かです。
何かというと、.NET上のマネージドコード内で動くRuby風のコンパイラです。
とりあえず、ちょっぴり動き始めたので、公開します。
([ ruby-list:30112 ]) だそうです。

Perlメモ:

小ネタ満載の perl tips。
当然、他の script 言語にも適用できる部分が多いでしょうから、
目を通しておくことをおすすめします。

URI:

以前は URb という名前だった、uri を扱うための class library。
他にも uri.rb は ある のだが、obsolete なのでこちらを使うべきでしょう。
rough/ にも入って、そのうち ruby に取り込まれる可能性もありますし。

かくいう私は obsolete な uri.rb を使っているので、
そろそろこっちの方に書き換えていかないと…(^^;

A garbage collector for C and C++:

c/c++ の gc library だそうです。
c の場合は malloc() を GC_malloc() に置き換えるのが面倒な気がしますが、
c++ は new を override しているみたいですから、楽で良さそうです:)

platform もざっと読んだ限りでは、 などを support しているみたいです:) greate!

玄人志向からGigabit Ethernetカードが8,000円割れで登場:

おお、すごいなぁ。あとは hub が下がるのを待つだけですねぇ。

#4 [ruby] ある日の ruby-*

現実逃避万歳〜。

BC.4713:

BC.4713 というのには意味があるらしい。
太陽章 (28年)、太陰章 (19年)、インディクティオ (15年) という周期があっ て、これらの全周期は 7980 年になります。ユリウス日はもともとこの 7980 年の周期で、その第一年目になるように紀元前 4713 年が選らばれたというこ とです。

safe-eval:

tainted string を eval したいときは
def safe_eval(str)
  Thread.start do
    $SAFE = 4
    eval(str)
  end.value
end

p safe_eval("1+1")                 # OK
p safe_eval("system 'rm -rf /'")   # だめ
のように $SAFE=4 の状態で別 thread にして実行すると very secure。

drag&drop and ruby:

IUnknown にある Drop on Script を使うと、ruby script に対する d&d が
出来るようになるそうです。

ただし、
注意点としては、*.rb ファイルのダブルクリックで ruby が起動す るようにしておくこと(笑)。最初はまってしまいました。
だそうだ。気を付けよう。

classify of software:

GNUのweb siteでは、

(1)それがフリーソフトウェアのライセンスと言えるか否か。 
(2)それがコピーレフトを保証するライセンスであるか否か。 
(3)それが GNU GPL と矛盾しないか否か。 (「矛盾しない」とは、
そのライセンスの下で発表された モジュールを、 GPL で保護された
モジュールと統合して 一つのより大規模なプログラムにすることが
可能である ということを意味します) 
(4)それが実際上何らかの特殊な問題を生じるか否か。 

という4つの観点でソフトウェアを分類していて、GPL compatibleというのは
(3)のこと(上記では「矛盾しない」がcompatibleの訳)で、それ以上の意味は
ないです。

で、BSDLはGNU compatibleなfree software licenseだけど、copyleftではない
とはっきり書いてあります。

Static 変数の作り方:

ruby には static 変数はないので、そういう class を作ることに。
require 'singleton'

class StaticBasePool<Hash
    include Singleton
end

class Static

    def initialize(obj)
        @pool=StaticBasePool.instance
        @tag=getCallerMethodName
        unless(@pool.has_key?(@tag))
            @pool[@tag]=obj
        end

        @val=@pool[@tag]

        #
        # following code originate from delegate.rb 
        #
        preserved = ::Kernel.instance_methods
        preserved -= ["to_s","to_a","inspect","==","=~","==="]
        for t in self.type.ancestors
            preserved |= t.instance_methods
            preserved |= t.private_instance_methods
            preserved |= t.protected_instance_methods
            break if t == Static
        end
        for method in @val.methods
            next if preserved.include? method
            eval <<-EOS
            def self.#{method}(*args, &block)
                begin
                    @pool[@tag]=@val.__send__(:#{method}, *args, &block)
                    return @pool[@tag]
                rescue Exception
                    $@.delete_if{|s| /^\\(eval\\):/ =~ s}
                    raise
                end
            end
            EOS
        end
    end

    private
    def getCallerMethodName
        tmp=caller[2].split(":in ",2)
        return tmp[0].split(":")[-1].to_s+":"+tmp[1]
    end
end
で、使うときは次のように。
def foo
    s=Static.new(0)
    s+=1

    return s
end
むむ。ちょと力押し気味で美しくないなぁ。
program pattens で回避できる物であれば、そうしたいところですね。

acl by thread:

thread による access control について。
require "thread"

class MailBox
  def iniaitlize(owner = Thread.current)
    @owner = owner
    @queue = Queue.new
  end

      def push(obj)
    @queue.push(obj)
  end

  def pop
    raise "permission denied." if Thread.current != @owner
    @queue.pop
  end
end
生成時に Thread.current を保存して置いて *2
実行時に実行している thread が生成 thread であるか確認してますね。

dup と Marshal:

dup は浅いコピーをして、Marshal は深いコピーを取ることが出来ます。
# shallow copy
duplicated = obj.dup
# deep copy
duplicated = Marshal.load(Marshal.dump(obj))
浅いコピー、深いコピーの違いは以下の 2 つの script を実行すると解ります。
str = "test string"
container = [str]

duplicated = Marshal.load(Marshal.dump(container))
duplicated[0].reverse!

p container, duplicated # => ["test string"],["gnirts tset"]
str = "test string"
container = [str]

duplicated = container.dup
duplicated[0].reverse!

p container, duplicated # => ["gnirts tset"],["gnirts tset"]

archive packaging:

release 用 archive を作る際に便利そうな Makefile の記述。
dist:
	cvs export -r $(RELEASE_TAG) -d $(MODULE)-$(VERSION) $(MODULE); \
	cd $(MODULE)-$(VERSION); \
	make data doc; \
	cd ..; \
	tar cf - $(MODULE)-$(VERSION) | gzip -c > ../$(MODULE)-$(VERSION).tar.gz
	$(RM) -r $(MODULE)-$(VERSION)
make data doc あたりは必要ないかもしれませんが、他は便利そう:)

*2: 明示的に指示する事も可能ですね。

#5 contents の必要性

log をよく見ると、4 月からはうちの研究室の access の 80-90% 近くは
この日記宛のような気がしますね。
正しく数字を取ったわけではないから数字は適当だけど。

今まで hit 数をあげていたのは実は mrtg だったのだと言うことを知って、
結構びっくりしました。

まぁ、うちは研究室なわけで hit を稼ぐ必要も、
contents を置く必要も無いのかもしれませんが、それってかなり寂しいですよねぇ。
せっかく web server を設置しているのだから、もっと世界に appear しないと。

あー。でも、この日記も hit は結構行っているのだけど、
結局は search robot *3 ばっかりで、browser で見ている人は一握りという説も。
情けないねぇ。

げんじつとうひ:

嘆いていても始まらないので、 debian tips とか書いてみる。
ちょうどこの前 tgif の話をしたので、ちょうどいい題材に。
ある程度まとめて post 。

武藤さんのところにはより良い物があるのが、見なかったことにしておこう。
私が書いたのは for potato ではなくて、for sid だし。

*3: 最近 lycos ががんばってますが、一体全体どうしたんでしょう??

2001年09月03日(月)

#1 payment

lc2001 なお金を振り込んでおく。
5 日以内というのを 5 営業日と読み替えれば、セーフ(ぉ

#2 やること

おーわりっ。まぁ、どうにかなったみたいです。

宴会:

予想通り。

2001年09月04日(火)

#1 睡眠

むむ。22-4 という中途半端な寝方をしてしまった。
寝るにしても起きるにしても非常に中途半端なんだがどうしようか。

その後の彼:

だらだらと朝がさめるまで pc をたたいていた後、10-13 でまた寝てしまったらしい。

#2 茶番

つきあう気を無くしたよ:p
もうさすがに見飽きたし、そろそろつきあっている余裕もないしね。
彼は周りのことって考えているんだろうか?

…考えていないんだろうね。寂しいことだよ。

#3 [links] 今日の links

Rubik's Online:

rubik's cube の rubiks 社。
Rubik's Revense という 4x4x4 のも出ているようですね。
そーいえば、toshi(nbc) が好きだっていってたなぁ。勧めてみようかな。

preserved.rb:

method の再定義を禁止するための ruby library。

synopsis を見ると、
require "preserved"

class XXX
  def foo
    # ... should not be redefined ...
  end

  preserved :foo
end

class YYY < XXX
  def foo #########!! NameError raised here
override しようとすると NameError が出るようです。good!

Shift Or algorithm:

文字列検索系のアルゴリズムである shift or 法の説明。

Secure iXplorer:

scp が使える file transfer agent らしい。
explorer like な tree view があって、結構操作性は良さそう。
まぁ、見た目は普通の ftp agent と似たような感じ。

どうやらちゃんと rsa/dsa key にも対応しているみたい:)

だけど、どうやら iXplorer 自身は単なる frontend で、
中身はただ単に pscp.exe を呼んでいるだけみたい。
後一息気味ですな(;_;
(参考情報: Knok's Diary )

Code Studio:

java の object pooler である PoolMan が置いてあります。
jdbc の proxy にもなるようで、非常に便利なような印象を受けます。
(参考情報: ひよこサーブレット: オブジェクト・プーリング(PoolMan) )

HEWLETT-PACKARD AND COMPAQ AGREE TO MERGE, CREATING $87 BILLION GLOBAL TECHNOLOGY LEADER:

おお、HP + Compaq ってすごいことになりませんか?

ついでに。
HP-Compaq合併を提言した男——では次に起こるのは? 、なんて非常に興味深いですね:)
ibm の pc 事業撤退なんかはすでに秒読みなんでは?
apple が windows に、と言う話はやってくれれば非常に面白いですよ。

World PC Expo 2001:

あんまり行く気になれないなぁ。どうしようか。
security stadium 2001 があるけど、それだけじゃなぁ。

MML DA:

palm で mml を再生するための da。
この期に及んで mml というのはなかなか渋くて良いですね。
fm chip とか積んでいて 3ch 使えると楽しげなのだけど。
beep 1ch ではかなり寂しい感じが。携帯ですらそんな酷くないですよ:p

K.T.Factory VBらぼ:

MagicPoint for Windows が置いてあります。
…が、 あまり良くないらしい というのを見かける。むむむ。

BizTech News | Autonomy について:

nikkei bp 系の記事の link を支える autonomy の検索技術の話。
DF値 *1 が低く、TF値 *2 が高い単語の集合がコンセプトである。 こうして解析した文書ごとのコンセプトを照らし合わせて、 その類似度を%表示で数字化する。そして類似度が 上位の記事を BizTech の記事ページに表示する仕組みである。
効きそうですね:)

*1: Document Frequency。ある特定の文書に多く出現する言葉に対する重み。
*2: Text Frequency。単語ごとに文書への登場頻度をカウントしたもの。

#4 [ruby] 今日の ruby-*

せっかく朝早く起きたのだから、メールでもまとめてみましょうか。

Haiku:

あぁ。high sence っつーか non sense っつーか。
Frog.new.dive(pond).getSound
# => 古池や蛙飛び込む水の音 -- 芭蕉
while doWork
  watch myhand if mylife != Life::COMFORT
end
# => はたらけど はたらけど猶わがくらし楽にならざり ぢっと手を見る
# -- 啄木
rapids = waterfall == rock ? rapids : rapids
# => 瀬をはやみ 岩にせかるる 滝川の われてもすゑに あはむとぞ思ふ -- 崇徳院
こっちは短歌だけど、載せておこう。
Thread.start { GC.start while true }

self.memory = you.memory = ferris_wheel.roll

Thread.start { sleep(60*60*24);  you.memory = nil }
Thread.start { sleep();         self.memory = nil }


---
観覧車 回れよ回れ 想ひ出は 君には一日 我には一世
memory が GC されちゃうというのが切なくていいなぁ:)

Array.new:

Array.new(n, value) で作成した配列の要素はすべて同じ object を指しています。
なので、
n = 3
value = "string"
array = Array.new(n, value) # => ["string", "string", "string"]
array[0].reverse!           # => ["gnirts", "gnirts", "gnirts"]
となってしまいます。 すべて別の object にしたい場合は、面倒でも
array = Array.new
n.times{  array.push(value)  }
とでもしなくてはだめですね。

a ||= b:

同じ記事より。

a = a || b
a ||= b
と書けます。
二項演算子と代入演算子の式変形の一つですね。
私は || 自身ほとんど書かないのですが:p

複数の初期化方法:

初期化方法を切り替えながら生成したい場合には
class Test
  def Test.create1
    new.init1
  end
  def Test.create2
    new.init2
  end
  def init1
    @value = 1
  end
  def init2
    @value = 2
  end
end
のように、new でない生成メソッドと初期化メソッドを用意すると良いようです。

しかし、この方法は Test#init1, Test#init2 が public なのがイヤですね。
もうちょっと c++,java みたいに access control 出来ると良いのだけど。
でも、それはそれで ruby っぽくなくて気持ち悪いかも(^^;

obj2src:

1.6.4 と CVS の現在の Ruby で pstore(Marshal) の出力結果に互換性がないので しょうがなく、オブジェクトをソースへ変換するスクリプトを組んで(添付しました)、 対処しました。
だそうな。
version を気にしなくてはならない状態では、非常に重要ですね。

is file exist?:

ファイルの存在を調べるには FileTest.exist? を使った方がよいようです。
ただし、FileTest.exist? は wild card には対応していません:p

wild card を使いたい場合は Dir.glob を使うことになりますが、
空白を含む file,directory をうまく扱えないと言う欠点があります。
(空白はパターンの区切りとして使われている)
% ls -l
total 12
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  4 05:38 bar/
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  4 05:38 foo/
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  4 05:38 foo bar/
% ruby -e 'p Dir::glob("foo bar")'
["foo", "bar"]
foo bar/ を見つけることが出来ません。
(参考情報:[ ruby-list:30948 ],[ ruby-list:30950 ])

cvs release how to:

  1. commit
  2. release
  3. tag
という順番で cvs の操作をしないと、
tarball 作成から commit までの間に誰か別の人が commit してしまうと、 リリースがレポジトリ上のスナップショットとして存在しなくなってしまうため、 リリース後、タグや時刻指定で cvs checkout したり cvs (r)diff できなくなって しまうのです。(不幸にも、実際に 1.6.3 ではそうなってしまいました)
という事態が発生してしまうようです。

HP C Compiler:

hp-ux 標準(?)の c compiler に関する mini q&a。
 HP C Compiler で inline はどうするの?

Q:
 GCC だと

extern inline func1(int n)
{
  return n * n
}

とか

static inline func1(int n)
{
  return n * n
}

などと書けますが、HP C Compiler では
どう書けばいいんでしょうか?

A:

 HP C Compiler は、inline という予約
語がありません。ANSI C も同様です。
C++ にはありますので、上記のような書
き方は C++ 的ですね。

 HP C Compiler の場合には、cc コマン
ドの引数に指定するか、#pragma をソー
スコード中に入れることになります。

cc +O3 +Oinline=func1 src1.c

inline を使用できる条件として、最適
化レベルが 3 以上ということがありま
す。

#if OPT_LEVEL >= 3
#pragma inline func1
#endif

static func1(int n)
{
  return n * n
}

という書き方になると思います。

# inline として扱うときには static 
# 宣言が必要です。

ヘッダファイルなどで定義して、複数ファ
イルに共通のコードを扱うときは、もっ
とあれこれ注意が必要になります。関数
が多重定義になってしまうことがあるた
めです。
portability を保つってことがこんなにやっかいだとは!

symbol list of dll:

dll に含まれる symbol の一覧を取得するには
SymEnumerateSymbols という API を用いると可能なようです。
ただし、
いちおう、Windows95以降(ただし95の場合は再配布可能DLLとして)NTは4.0以 降ということなので、Windows95で使うためにはImageHelpをいっしょに配布しな ければならないというのが致命的なような。

拡張ライブラリと timeout:

gethostbynameのようにCレベルでとまっちゃうものに関してはtimeoutは無力です。 同じような例ではたとえば無限ループしちゃう拡張ライブラリとか。
c で書かれた library の実行は ruby から見ると primitive なのですよね。うーむ。

[] の使い道:

実は [] っていろんな使い道が! 普段使っていてあまり気にはならないのですけどね。
  * Array[]、Hash[]による(newと異なる)インスタンスの生成
  * Proc[]、Method[]、UnboundMethod[]による(newと同等の)
    インスタンスの生成
  * Dir[]によるファイル名(String)のArray生成(globと同じ)
  * Struct#[]による構造体オブジェクト生成

  * String#[]、Array#[]によるslice
  * コンテナ的クラスのインスタンスに対しての、indexing的な用法
     * Interger#[]によるビット取り出し
     * MatchData#[]によるマッチしたデータ取り出し
     * Thread#[]によるスレッド取り出し
     * (Structのインスタンス)#[]によるメンバ取り出し
     * Hash#[]による要素取り出し

  * [] によるArrayの生成
  * %q[]、%r[]みたいなオブジェクト生成

Dir.chdir:

このメールを見る限りでは Dir.chdir は block を取ることが
出来るように思えるのだが、手元では動いてくれないようだ。
Dir.chdir('/tmp') do
  puts Dir.pwd
end
では何も起きない(;_; なぜ…

order of library search:

library search の順番に関する話。
以前は

  pathの順序に.rbを探し、なければまたpath順に.soを探す

という挙動だったのですが、これではたとえばカレントディレクト
リに socket.rb というファイルがあると標準のsocket.soより先に
ロードされてしまいます。

そこで、

 pathの順序に、各ディレクトリについてまず.rbそれから.soを探す

という風に変更しました。これであれば-Iで明示的に指定しない限
り、標準ライブラリがいつも優先的にロードされます。

#5 lame-3.89beta

しばらく放っておいたのだけど、gogo package を作ったついでに
lame package も upgrade しておく。
やっぱりこれも original debian packages archives に突っ込んでおく。

lintian passed でないのは気が引けるが、面倒なので気が向いたときにでも直そう。
% lintian lame_3.89beta-1_i386.deb
W: lame: binary-or-shlib-defines-rpath ./usr/lib/libmp3lame.so.0.0.0 /usr/lib
W: lame: copyright-lists-upstream-authors-like-dh_make
W: lame: extra-license-file usr/share/doc/lame/LICENSE
rpath の話はかなり面倒な感じが(;_;

lintian-info:

ついでに書いておこう。
lintian-info を使うと lintian's message をより詳しく調べることが出来る。
たいていの場合は lintian -i で呼び出すが、lintian log を食べさせても良い。
% lintian -i lame_3.89beta-1_i386.deb
W: lame: binary-or-shlib-defines-rpath ./usr/lib/libmp3lame.so.0.0.0 /usr/lib
N:
N:   The binary or shared library defines the `RPATH'. Usually this is a
N:   bad thing. Most likely you will find a Makefile with a line like:
N:       gcc test.o -o test -Wl,--rpath
N:   or
N:       gcc test.o -o test -R/usr/local/lib
N:   Please contact debian-devel@lists.debian.org if you have questions
N:   about this.
N:
W: lame: copyright-lists-upstream-authors-like-dh_make
N:
N:   There is "Upstream Author(s)" in your copyright file. This is not a
N:   fixed field name, it's just a default dh_make value. You should adjust
N:   it.
N:
W: lame: extra-license-file usr/share/doc/lame/LICENSE
N:
N:   All license information should be collected in the debian/copyright
N:   file. This usually makes it unnecessary for the package to install
N:   this information in other places as well.
N:
N:   Refer to Policy Manual, section 13.6 for details.
N:

#6 ear phone

右側が断線しちゃったみたい(;_;
最近は安定して動いていたと思ったのだけどなぁ。
さっき寝ながら付けてたのがとどめになったか?

むむぅ。こればかりは仕方がないから、買ってくるしかないやね。
半分消耗品なので仕方ないというのはあるのだけど。

inner ear phone:

そういえば、昨日研究室で特殊なイヤホンを見た。
より耳の奥にまで入るような形をしていて、立体音響を効くのに最適な物らしい。
実際に聞いてみると、すごい。
実際に耳元でささやかれているような、そう言うすごさがありました。うへー。

それは 45,000 円ぐらいすると言っていたから、さすがに買えないな。

ちなみに、私が使っている sony の inner ear phone もなかなか負けていなかった。
まぁ、source が相当良くできているというのもあったんだろう。

rent from junior brother.:

弟から余っているイヤホンを借りる。
1 時間しないとはいえ、お店で買うまで bgm なしというのも寂しいので。

が、jack 部が大きくて耳が痛くなってしまう(;_;
尋ねてみると、これでも普通の大きさらしい。
んー。そういえば、昨日 mit のイヤホンを借りたときもそうだったな。
うぅ、長時間付けてると耳が痛くなってしまう…。
明日 sofmap で買ってくるまでの辛抱だな。

そういえば、壊れた ear phone は ear cap(s) を使っていたなぁ。
耳の穴のサイズが小さいのかな?

#7 mod_gzip

potato には libapache-mod-gzip が存在しないので、作っておく。
  1. apt-get source libapache-mod-gzip(@woody)
  2. debuild(@potato)
はいできあがり。
あー。楽でいいや。simple package で良かった:)

2001年09月05日(水)

#1 今日の links

IPv6start.net:

nikkei の ipv6 情報サイト。
やっぱ contents 少ないなぁ。
まだまだ ipv6 to home というのは先のお話にしか聞こえないよ:p

デザインパターン・メーリングリスト:

結城浩さんが主催されている dp-ml。
早速入会してみました:)

www.textfile.org:

結城浩さんが集められた links。
結構価値のありそうな大量の link があるので、たどるのも大変そう(^^;

Kerberos-ML:

synclabo 内にある kerberos に関する ml。
こっちには不参加:p

WebService 同好会:

web services に関する同好会らしいです。
ml もあり。とりあえず subscribe 投げてみました(ぉ

faq に
2. Webサービスはどのような標準技術要素で構成されていますか?
メッセージングのベースとしては、XML。転送手段としては HTTP。 サービス実行手段としては、SOAP。サービス検索、公開手段としては、UDDIやWSDL。
なんて書いてあるのはちょっと素敵ですね。

#2 [pgsql] 今は昔の pgsql-jp

あー。逃避ばんざーい(やる気なし)

backend server:

postgres の backend は postmaster から fork される process ですよね。
postmaster 自身は listen process なので、backend ではありません。
postmaster:
  socketを待ち受ける、一番最初から立ち上がるprocess

backend:
  クライアントと接続され、実際のqueryを処理するprocessで、
  たいていはpostmasterからfork()される
 (例外として、initdbのようにbackend単体で利用するケースあり?)
frontend になりうるものは などですね。
(参考情報:[ pgsql-jp:19721 ])

set sequence.value:

sequence object の値を設定するには
 SELECT SETVAL('sequence_object', 12345)
という SQL を発行するとよいようです。

Table 名の最大長:

テーブル名の最大長は 32 byte(文字?) までのようです。
それ以上は 32 byte(文字?) で丸められてしまうようですね。

functional index:

関数を用いた select を行う場合
 select * from tbl where date_part('year',wk_date) and date_part('day',wk_date)
通常の index ではなく、functional index を利用すると高速になります。
create table tbl (wk_date timestamp);
create function extract_year(timestamp) returns integer as '
select date_part(''year'',$1)::integer from tbl
' language 'sql';
create function extract_date(timestamp) returns integer as '
select date_part(''date'',$1)::integer from tbl
' language 'sql';
create index myindex on tbl using btree(extract_year(wk_date));
insert into tbl values('now');

string includes single quato:

' を含む文字列を記述するときは \ でエスケープする必要があります。
 INSERT INTO table VALUES('I\'m katsuwo.')

または、二つシングルクオートを並べます。
 INSERT INTO table VALUES('I''m katsuwo.')
(参考情報:[ pgsql-jp:19802 ])

order by が使えない場合の並べ替え:

こういうのは program でやるのが良いような気がするし、
最初から database の設計が間違っているとも言える気がするのですが…。
select *, case when data1=d then 1
               when data1=a then 2
               when data1=c then 3
               when data1=b then 4
               when data1=e then 5
               else              6
          end as n
from table where data1 IN (d,a,c,b,e)
order by n
条件文で並べ替え用の行を生成して、それを元に order by しているという力技です。

#3 ear phone(2)

早速買ってくる。やっぱりこっちの方が耳に fit していてよいですよ:)
ear cap のゴムがちょっと堅いので、ここだけは古いのと交換すべきかな。
む。よきかなよきかな:)

#4 つっこみどころ満載の毎日。

あ。膨大な accesslog に埋もれていた つっこみ が(^^;

inline:

確かにそのとおりですね(^^;
class 宣言の内部に書く場合は inline keyword は
記述しなくてもかまわないんですよね。
久しぶりに書いたので忘れていました。

static SingletonImpl *_instance(NULL);:

こっちで適当に試してみましたが、問題ないようですが…??

で、ついでに。
static なメンバ変数を初期化するときには
class Foo{
  static int bar;
};
int Foo::bar = 0;
のように書くのですね。むむ。
こっちに書き換えておいた方がよいのかな??

#5 のぐちげらげら。

名前まで書いたら、'ロバの耳'の穴にならないからダメなのです:p
別に不協和音を生みたい訳じゃないですしね〜。

とかとか、w 氏に向けて個人的に message とか発信してみる(^^;

…お互い疲れてますね(;_;

#6 おしごととぼく

パートナーの人から連絡が来ないので、自分だけで仕事を進めることに。
またかいな(;_;

とりあえず、要求を見ながら仕様を適当に決めて sample coding。
今日のところは sample code が十分動くと言うところまで。
おおざっぱに作ったにしては良くできてるので、ちょっと tuning すればよさそう。
1 日で済むとは思わなかったので、思わぬ収穫だ:)

明日はこの code の調子を見ながら組み込むことを考えるかな。

2001年09月06日(木)

#1 つっこみどころ(2)

ruby Dir.chdir{}:

あ、1.7 feature なんですね。
…と、早速確認。
% ruby-beta -v -e 'Dir.chdir("/tmp"){ puts Dir.pwd }'
ruby 1.7.1 (2001-08-06) [i386-linux]
/tmp
すばらしい!

escape a regexp:

perl では quotemeta なんですね。
% perl -e 'print quotemeta("hello(world)[.]\n")'
hello\(world\)\[\.\]\
やっぱり perl script の hack も出来るように、ちょっと perl やっておくかなぁ。

それはそれとして。
入力された文字列を Regexp.compile して使う場合は、quote は必須でしょう。
user に対して regexp を要求している場合は別として:p
それは入力された文字列を sql にそのまま張り付けてはいけないとか、
html tag を escape してから張り付けなさいとかと一緒ではないかしら?

tainted string を気にせずに coding しているからこそ、
cross site scripting 等が起きるので、十分気を付けるべきですね。

ruby glob 空白:

んー。escape が効くのは 1.7 じゃないですかね?
% ls -l
total 32
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  6 13:47 bar/
-rw-r--r--    1 root     root           31 Sep  6 13:45 cpustat
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  6 13:46 foo/
drwxrwxr-x    2 katsuwo  katsuwo      4096 Sep  6 13:47 foo bar/
srwxr-xr-x    1 wnn      nogroup         0 Aug 22 23:37 jd_sockV4=
drwx------    2 katsuwo  katsuwo      4096 Sep  6 12:52 ssh-XXBsF7eD/
drwx------    2 katsuwo  katsuwo      4096 Sep  6 12:15 ssh-XXxrSWdd/
-rw-r--r--    1 katsuwo  katsuwo      5338 Sep  5 14:08 tmp
と言う条件下で試してみました。
% ruby -v -e 'p Dir.glob("foo\ bar")'
ruby 1.6.4 (2001-08-06) [i386-linux]
["foo", "bar"]
% ruby-beta -v -e 'p Dir.glob("foo\ bar")'
ruby 1.7.1 (2001-08-06) [i386-linux]
["foo bar"]
1.6 系では escape は無視されていますが、1.7 系ではちゃんと動いていますね。

ちょっとあさってみたら、[ ruby-list:30949 ] *1 でこう書かれていますね。
> 2. Dir.globは空白文字を特殊な意味で扱う(リファレンスマニュア
>    ル参照)。

これはそうなのですが、

>    というわけで、空白文字を含むパスを扱う場合はその前に\を書
>    かないといけない。

ruby1.6 では、\ は(globにとって)メタ文字ではないのでこれができません。
# Windows 版では違うのでしたっけ?

touch foo\ bar
ruby-1.6 -ve 'p Dir.glob("foo\\ bar"); p Dir.glob("foo bar")'
=> ruby 1.6.4 (2001-08-06) [i586-linux]
   []
   []

ruby1.7 では、空白をそのまま扱う(特殊文字は'\0'だけになった)
のでバックスラッシュがいりません。

| Mon Jun 25 09:54:48 2001  Yukihiro Matsumoto  <matz@ruby-lang.org>
| 
|         * dir.c (isdelim): space, tab, and newline are no longer
|           delimiters for glob patterns.

touch foo\ bar
ruby-1.7 -ve 'p Dir.glob("foo\\ bar"); p Dir.glob("foo bar")'
=> ruby 1.7.1 (2001-08-14) [i586-linux]
   []
   ["foo bar"]

というのが、現在の仕様のようです。
# 1.7 の挙動はまだ変更される可能性がありそうです。
更に [ ruby-list:30952 ] の新井さんの patch を当てると
再修正後:

touch foo\ bar foo\*bar
./ruby -ve 'p Dir.glob("foo\\ bar"); p Dir.glob("foo\\*bar")'
ruby 1.7.1 (2001-08-14) [i586-linux]
["foo bar"]
["foo*bar"]
と言う風になるようですね。

というわけで、Dir['foo\ bar'] は 1.7 feature ですね。

ssh-agent:

む。.zshrc(.cshrc) でやっても良さそうですね:)
shell 起動の度に ssh-add に passphrase を聞かれるのは
あまり好みではない *2 ので、私が設定するとしたら
if [ -x /usr/bin/ssh-agent -a -z "$SSH_AUTH_SOCK" ]; then
  exec /usr/bin/ssh-agent zsh
fi
ぐらいですかねぇ。

*1: 修正: In 0911, ruby-dev じゃなくて、ruby-list でした(^^;
*2: 今は必要に応じて ssh-add してます。

#2 ruby-beta

つっこみ確認用…もとい、1.7 確認用に ruby-beta を入れて置いた。
やっぱりやまだあきらさんに感謝しつつ使おう:)

#3 [links] 今日の links

メタのたわごと:メタ・ユートピアの7つの藁人形に火を放つ:

xml などに代表される meta data にたいする問題提起。

むー。やはり xml は難しそうだなぁ(^^;
いくつかのすでに形式化が進んでいるような場所であれば良いのでしょうけどね:)

1.2.SmartMediaTMには寿命があるのでしょうか?:

flash memory 系の media の寿命のお話。
SmartMediaTMや、他のメモリカード(CF、SDカード、メモリスティック等)に 使用されているFLASHメモリには消去、書き換えの寿命があります。 但し、通常の使い方では、寿命による故障は無いと考えてよいと思います。
実際には、その他の要因、例えば接点の磨耗や破損等の理由で、 この前に他の原因で使えなくなると思います。 つまり、SmartMediaTMに使われているメモリには書き込み、消去の寿命 はあるのですが、これが原因になって使えなくなる事は、ユーザにとって 心配がなさそうです。
memory 素子よりも端子とかの方が寿命が早そうだってことですね。
こっちは大切に扱えばそれなりに持つので、気を付けますかね。

HandEra:

handera に関する ml らしい。

Data Explorer for SQL:

php の database frontend。
が出来ます。

JISX0213(所謂第3,4水準漢字)用bdfフォントのページ:

第 3,4 水準漢字の font がおいてあります。
…が、私は font は全然詳しくないのでよくわからないのでした。

#4 ProjectX

さっさと寝るつもりだったのだけどやはり見てしまった(;_;

今回は seiko のお話。
やー。私も技術者としてあ〜ゆ〜物を作りたいですねぇ。
歴史的なとか記録的なとかじゃなくて、思い出に残るようなやつを。
今のところ残ってるのは悪い物ばかりなので、かなりうらやましげです。

仲間と一緒にがんばるというのもうらやましげですが(;_;

my project:

昨日作った sample code を使いやすいように refactoring しつつ、
ruby module をつくっておく。
なおかつ、rubyunit の testcase と rd の document を整備してみたり。

あー。ちゃんと働いた気がするよ:)

2001年09月07日(金)

#1 [pgsql] 今日の pgsql-jp

範囲による grouping:

         time          | access_cnt | authuser_cnt
------------------------+------------+--------------
 2001-02-05 00:00:00+09 |       2399 |            1
 2001-02-05 01:00:00+09 |       1515 |            1
 2001-02-05 02:00:00+09 |        930 |            1
 2001-02-05 03:00:00+09 |        708 |            1
 2001-02-05 04:00:00+09 |        331 |            0
 2001-02-05 05:00:00+09 |        289 |            1
 2001-02-05 06:00:00+09 |        329 |            0
 2001-02-05 07:00:00+09 |        370 |            1
 2001-02-05 08:00:00+09 |        465 |            0
のように 1 時間ごとに集計されたデータがあったときに、
これを 3 時間ごとの集計がしたい場合には
select sum(access_cnt),sum(authuser_cnt) from log
       group by time::date,date_part('houer',time)::int/3;
のような SQL 文で解決できるそうです。
(参考情報:[ pgsql-jp:19893 ])

limit:

limit 句を使うと、resultset の数を制限できます。
select * from table
とした場合に大量に hit する検索も、
select * from table limit 10
とすると 10 件までに制限することが出来ます。

'ある時間内':

例えば、AM8時からAM9時の間で検索という事ならば
where 時刻 between '08:00:00' and '09:00:00'

delete とvacuum:

delete では削除フラグを付けるだけでディスク上からはデータの削除はしません。
vacuum を行うと、削除マークの付いたデータの削除を実際に行います。

でも、delete で消したデータの rescue 方法は提供されていないんだな:p

#2 [links] 今日の links

Ed, man! !man ed:

ed をたたえる詩。…とその 和訳
I just want an EDitor!! Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!!
When IBM, in its ever-present omnipotence, needed to base their "edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely you jest. They chose the most karmic editor of all. The standard.
THE MIGHTY ED HAS SPOKEN!!!

?
あぁ、バカばっかだ(爆笑)

MultiZilla:

mozilla ベースの tabbed browser らしいです。
まだまだ不安定だそうですけど:p

れんたる tDiary:

tDiary 普及のためにレンタルし始めたそうです。
おもしろげ?

手書き PDF 入門:

pdf format の解説記事。

トロハブドライバ for Solaris8:

うああ。torohub はついに solaris でも動くのですね!
世の中はすごい人でいっぱいですねぇ。

#3 jfortunes

古い file server に fortune の japanese cookie があったので確保しておく。
内容は落語とか駄洒落とか有名なセリフとかなのだが、結構おもしろくてよい。

せっかくなので手元に置いておくだけではなく、利用しやすいように
debianize しておいた。

#4 redirect on mod-ruby

mod-ruby の FAQ より。

Location header を出力するには
$>.headers_out["Location"] = "http://www.modruby.net/"
exit Apache::REDIRECT
とすると良いらしい。

#5 non-package upgrade

solaris machine に入っている ruby,eruby,mod-ruby が古くて
開発に支障が出てきたのでざくざくと入れ替える。

うぅ…面倒すぎる。
すでに ./configure の option を眺めるのにすら嫌気がさす。うぅ〜。

やっぱり packaging system は偉大ですね。
当然それをささえる maintainer の人々の力も。

#6 get cpu information on solaris.

/usr/platform/sun4u/sbin/prtdiag を実行すると良いみたい。
おそらく、sun4u のところは適宜読み替える必要があるのでしょうね。
手元で実行すると
% /usr/platform/sun4u/sbin/prtdiag
System Configuration:  Sun Microsystems  sun4u Sun Ultra 1 SBus (UltraSPARC 167M
Hz)
System clock frequency: 84 MHz
Memory size: 128 Megabytes

========================= CPUs =========================

                    Run   Ecache   CPU    CPU
Brd  CPU   Module   MHz     MB    Impl.   Mask
---  ---  -------  -----  ------  ------  ----
 0     0     0      167     0.5   US-I     2.2


========================= IO Cards =========================

     Bus   Freq
Brd  Type  MHz   Slot  Name                              Model
---  ----  ----  ----  --------------------------------  ----------------------
 0   SBus   25     2   cgsix                             SUNW,501-2253
 0   SBus   25    14   espdma/esp (scsi)
 0   SBus   25    14   ledma/le (network)
 0   SBus   25    14   SUNW,bpp

No failures found in System
===========================
などといわれます。

#7 樹液シート

助手の先生が樹液シートという健康グッズを購入していた。
説明書を見る限りかなりあやしいものにしか見えないのだが…。

帰り際に 1 セットもらったので足に張って眠ってみよう。
本当に効果が目を見張るものであれば、少し見直す必要が出てくるだろう。

2001年09月08日()

#1 アドレナリン効果

やはりノると coding の速度が変わりますね:)

というわけで、がんがん音楽をかけて sleepy high の状態でせっせと coding。
なんかアドレナリンが出ているような気すらしてきます。

速度だけではなくて、質もそこそこ上がっているような気がしますよ。
割と書いてて見逃しやすい html の escape とかもふと思いつくし、
何よりも脳内 multi thread で複数のことを考えながら code が書ける!
しかも、いつもより脳内 stack は忘れにくく段数が深い!(笑)

あぁ、だからつい coding を夜にやってしまうのだな。むむぅ。
でも楽しいからいいや〜:)

very tired:

元々徹夜で睡眠不足な上に、激しく脳を酷使したせいか、激しく体が重い…。
大音量で音楽をかけつつ、脳を高速回転させたせいで、頭痛すらする…。

ぼろぼろだ…。

目を閉じたらどこまでも落ちていくことが可能だな。うへへ…(;_;


おやすみ〜。

#2 樹液効果

…よくわからないや。

粉が封入されていたシートは、朝起きると変質していて樹液のような色に
変色していたのだから、何かが起きたようにも思えるのだけど…。
貼っていた場所を見た限りでは特に変化は見受けられない:p

やはり 1 回貼っただけで驚きの効果! とはいかないのかもねぇ。

#3 管理が出来ていないと言うこと

会社から連絡が。

私が以前作った ActiveX control の拡張をちょっとやって欲しいとのこと。
作業量は大したことがなかったので引き受けると、その次に無理難題が。
今使っている control は古いものだから、それを拡張して欲しいらしい。

まぁ、納品前に version を引き上げるのは危険だという判断は正しいのだけど、
問題なく動いているからといって古い control を使い続けているということと、
どの version を使っているのかわからない というのはどうしようもないよなぁ:p
source tree はあるのだけど、どれだかわからなければ拡張のしようがないだろうに:p
しまいには binary の日付を持ち出して"この日付のソースだろう"とか
言い出す始末(苦笑)
source の日付と binary の日付に相関関係ってあったのか?:p

教訓:
program module には version 番号がわかるような仕組みをつけよう
組み込んだ module の version ぐらいどこかに控えておけ!!

生きた教訓を与えてくださることには感謝せねばなるまい(;_;
同時に大事な時間と僕の精神的余裕を奪ってくれるのはアレだが:p

#4 Comparable

なんとなく Comparable module を使ってみた。

Comparable module は <=> method を利用するので include するだけではなく
<=> method を適切に implement してあげる必要がある。

<=> method は という動きをすればよい。

特に深い意味はないのだが、Integer の wrapper を作ってみた。
class IntegerWrapper
  include Comparable
  attr_reader(:value)

  def initialize(value)
    raise unless(value.kind_of?(Integer))

    @value = value
  end
  def <=>(other)
    if(@value < other.value)
      -1
    elsif(@value == other.value)
      0
    else
      1
    end
  end
end
でも、これって結局 Integer#<=> を利用しているのだから
  def <=>(other)
    @value <=> other.value
  end
と書いても同じなのだよね:p

#5 [links] 今日の links

Matrox、ハードウェアT&L搭載のMillennium G550発表:

g550 って LowProfile PCI 対応モデルがあるみたいですね。
早速街に出て探さねば!

2001年09月09日()

#1 calender

おうちのカレンダーがめくられないままになっているのに気づく。
すでに 1/3 が過ぎようとしているのになんてこった。
普段使っていないとはいえ、何という不覚。

2001年09月10日(月)

#1 だうん

動けないので動きません。

seminar:

うぅ。起きた時点で終わってたっぽいので忘れよう…。
資料作ってなかったので都合がよいし。

#2 はりけーん

ごうごうゆってます。うわーい(;_;

2001年09月11日(火)

#1 careful, careful.

風邪はほぼ治ったのだけど、体が重いので養生生活二日目に突入。
ちょうど外は嵐だしちょうどいいかな?

#2 lune

げー。オレは'空'じゃねー。誤解だー(;_;
やっぱ J.A.D.E. でしょっ *1

*1: やっぱ牛乳でしょ の口調で:)

#3 works

なんか memory leak が起きているとか何とか連絡を受けて、
寝ながら debug するのだけど、さっぱり…。
うーむ。やっぱ memory leak は paper trace ではなくて debugger だよなぁ。
明日はどうにか研究室に行って trace するか。

すでに windows app. の memory leak の trace のやり方なんて覚えてないよ(;_;
なんかそれを追うための MFC Class があったと思うのだけど…。

#4 painful headache

病状は思ったより重いんだろうか。
いつも通り季節代わりに弱いだけの気もするが、ちと辛いなぁ。

#5 テロ

すごい惨事になってますね。

こんな酷いことをするのはどこの誰なんだろう…。
きっとそのことに絡んでアメリカは報復だとかいって争いを起こすんだろうなぁ。

なんでこんなことが出来るのかしら。ふぅ。

2001年09月12日(水)

#1 power failure

定期検査のための停電なので failure じゃないんじゃないかな?
inspection of power source のがよさそうな感じが…どーだろ??

なんかお昼過ぎから停電だという話を聞いたので待機中。
むー。研究室に行こうと思ったのだけどなぁ。
ups がうまく設定できてないので、10 分以上の cut off には耐えられないのさ(;_;

終了予定時刻の 1500 を +30 ぐらい過ぎたら出かけるかな。

@1500:

なんか停電しないのだけど、どうして? 遅れてるのかしら。

#2 wanna buy CDs

急に hamming bird の cd が聞きたくなったので、次に秋葉行ったら探してみよう。

#3 [links] 今日の links

PEG-N750C:

新しい clie が出ていますねぇ。
これにあわせて N650 出てくれるととってもうれしいのだけど…。
size, weight ともに n700 と変わっていないのは残念です…。

n700 よりも薄くて軽ければかなり良いのですけどね…。

まぁ、ようやく Linux からも hotsync 出来るようになっているみたいですし、
そろそろ乗り換えても良さそうな感じですねぇ。
visor に不満を持っていないので、なかなか難しいところですけど。
(参考情報:[ palm-unix-j:00254 ])

もう1つの「2000年問題」もクリア——10億秒目を刻むUNIX:

2001/9/9 問題の話。cvsup とかが引っかかったらしい(;_;
素直に time_t や long で扱っていれば問題なかったのに、なんで char に…(;_;

しかし、あの Dennis Ritchie もついに 60 歳になっていたのですね…。

米国政府のハッカー対策専門家を育てる奨学金プログラム:

日本はこういうことをやらないのですかねぇ。
正しく IT の実状を理解すれば必要だと感じるはずなのに…。
やっぱ IT 革命なんて云っても lip service でしかないんですかね(;_;

いいなぁ。こういうのだったら、コースに入りたいよなぁ。

詰め vi のページ:

すばらしい!

#4 おそうじ

停電待機中、暇だったのでいらない package を消す作業をする。
deborphan を使うと、どの package にも依存されていない
package の一覧が取得できるので、ここに出てくる物で必要のない物を削除する。

しかし、deborphan すると ldso が出てくるのだけど、必要ないのかしら?

ldso:

んー。ld-linux.so はいつからか libc6 package に統合されているから問題なし?
% dpkg -L ldso
/.
/lib
/lib/ld-linux.so.1.9.11
/lib/ld.so.1.9.11
/lib/libdl.so.1.9.11
/usr
/usr/share
/usr/share/doc
/usr/share/doc/ldso
/usr/share/doc/ldso/README.gz
/usr/share/doc/ldso/copyright
/usr/share/doc/ldso/changelog.gz
/usr/share/doc/ldso/README.Debian.gz
/lib/ld-linux.so.1
/lib/libdl.so.1
dpkg -S /lib/ld-linux\*
ldso: /lib/ld-linux.so.1
libc6: /lib/ld-linux.so.2
ldso: /lib/ld-linux.so.1.9.11

ldso(2):

む。よく見てみたら、
Description: The Linux dynamic linker and library for libc4 and libc5.
とか書いてあるよ…。
% dpkg -l libc4 libc5
No packages found matching libc4.
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
un  libc5          <none>         (no description available)
という環境の私には必要のない物だったのね:p

let's remove it!

#5 驚愕の事実

HP ってヒューレットパッカードの略ではなくて、林家ぺー/パー子の略!?

どちらを示しているのかは、文脈から読みとれるはずだ。
男性名詞・女性名詞の活用から読みとることもできる。

2001年09月13日(木)

#1 leavings of colds.

やはり昨日は体調が不完全だったらしくて、
研究室にたどり着くだけで体力をかなり消耗したのだけど、
いくら本調子でないとはいえ、ちょっとひどいなぁ。

むー。今日は休んでしまおうかなぁ。

たどり着く場所:

なんだかんだ言って、研究室にやってきた。
index がらみの code がまだ仕上がっていないからしかたないやね:p

#2 [links] 今日の links

Internet-Intranet Input Method Protocol (IIIMP) Specification Revision 2.0 Draft 0.2:

IIIMF による ImputMethodProtocol である IIIMP の draft。

イスラム教徒への暴行事件相次ぐ 米国各地:

坊主憎けりゃ袈裟まで憎い じゃないんだから、
イスラム教徒で filtering するのは頭がどうにかしているとしか思えない。
冷静な思考を失っているとしか考えられない。悲しいことだ。

LV Homepage:

どうもすごい良くできた viewer だという噂の lv の page。

#3 上遠野さん

む。holy & ghost なんて出ていたのか。
帰りにでも拾っていきたいところだが、駅前の本屋においてあるのかしら?

way to home.:

ありゃりゃ。売ってないよ。
ま、秋葉に行けばきっと売ってるよね:)

#4 TopRunner

う。テロの話で鬼束ちひろ特集が〜っ(;_; 朝 tv 欄見てから楽しみにしてたのに〜
許すまじ、テロの犯人めっ。

…我ながら平和を満喫してますな。

#5 terrible truth

この日記って
  1. google で
  2. joke avenue と言うキーワードを
  3. 日本語のページを検索 で検索すると
一番最初に出てくる …(;_;
perry ののろい?

2001年09月14日(金)

#1 go akiba city.

さ。でかけましょ:)

#2 [links] 今日の links

Translatorパターンを使ってより良いWebサイトを作る:

まだ読み終わってないけど、なくさないように書いておく。
タイトルからするに新しいパターンを手に入れられそう:)

Webトラフィックの測定: 第1回:

同じく未読。
traffic 計測の役割とか方法とかが書いてあるのでしょう。

XMLの論考: 第8回:

未読。

8 回だけと言わず全部読みたいところだが…。

2001年09月15日()

#1 秋葉行

いろいろあって疲れたけれど、無事 Aptiva を get して帰ってきたのでした:)

#2 Aptiva.

昨日買ってきた Aptiva を開梱中。
やっぱ Aptiva はかっこいいですよ! aptiva ばんざーい。lcd ばんざーい:)

掃除:

今まで飾っていた v200 と Aptiva を交換するのにあわせて大掃除を決行。
コンセントの周りが誇りだらけだったのが解消されました:)
というか、いままでのままだといつ火事になってもおかしくない状態でした。
みなさん、気をつけましょう(^^;

Let's enjoy computing!:

動かしてみて気づいたんですが、やはり音が気になります。
比較的静かな方だとは思うのですが、fan の音が気になります。
cdrom もうるさいのですが、これは daemon tools あたりで逃げたいところ。

かなり気にしていた lcd の dot 落ち/常灯なども特になく、快適です:)
うむ。買い換えて良かった:)

細かいところは明日にでも見てみよう。

2001年09月16日()

#1 akiba-koh

再び秋葉行。

前回が大荒れだったのに対して、今回は komaz と二人の穏やかな秋葉:)
つか、前回の 5 人っつーのが多すぎたのだろうが:p
ふらふらとまだみつからない G550 を探し回りつつ、
本屋と CD 屋と parts shop を回る。

今日の戦利品は 256MB のメモリーのみ。
ふふふ〜。

増設完了:

これで default 64MB -> 320MB に。

#2 いどまれ。

なんかそのうち格ゲーで勝負らしいですよ?
苦手な私を誘うあたり、カモるつもりですねぇ(;_;

むぅ。せいぜい pad 握って練習でもしておこうかしら。

2001年09月17日(月)

#1 too late...

おお。寝坊だよ(;_;
仕方ない。寝直すか…。

at night.:

だらだらと web surf してみたり。

2001年09月18日(火)

#1 kick it!

ゴミ捨て。
ものが圧倒的に増えてしまったので、いらないものを捨てる捨てる捨てる。

…それでも減った気がしないのはなぜなんでしょう…(;_;
うぅ…そろそろあきらめて pc-98x1 な機材は捨ててしまおうか…。

#2 aptiva 考

lcd:

やっぱ液晶は発色がよくてよいですね:)
比べる対象が 5 年近く使い込んだ pc-tm151 だというのも効いてますが(^^;

反応速度も気にするほどでもなく、scroll 中に凝視でもしてない限り気づきません:)
browsing やら shooting game やら action game やら movie やらでは
まったく気になりませんね:p
dot 落ちなどなどもないので、幸せな感じです:)

cpu fan:

全然静音でないのは減点ですね。
まぁ、もともと付いている fan は買い換えるまでの'もたせ'でしかないので、
その点は気にしなくてもよいともいえますが:p

しかし、30 分もつかっていると高周波が出始めるのはどうかと思うのだが…。

cdrom drive:

cdrom drive はやっぱりひどい(;_;
もう低速回転なドライブは搭載しないんだろうか…。
cd-rom を入れると机にまで振動が及ぶとゆーのはひどすぎるよ(;_;

softwares:

最初は aptiva には windows-me しか install されていない状態で、
install manager を使って必要な software を追加で入れていく形。
従って、不要な software を排除することができるというのはすばらしいです:)

keyboard/mouse:

key touch はふつう。
ちょっと固めにも感じるけど、まぁ交換するまでもないでしょう:)
ただし、key repeat の速度がやたらと遅いので、vi が非常に使いづらい(;_;
これって bios あたりで設定してあげればいいんだろうか?

mouse はいまさら 2 button mouse だったのでさっさと交換:p
握った感じもあまりよろしくないので、どちらにしろ kick ですね。
ちなみに、上位モデルに付属の 3 button mouse もあまりよくなさそう:p

で、pad は以前から使ってる初代の side winder 。
やぱ grip はこれが一番っすよ〜:)

2001年09月19日(水)

#1 phs

機種交換をするために ddi-pocket center に行こうとしたのだけど、
web page に載っている場所から遠く移転してしまったらしい…。
駅前から 15 分ぐらい歩くという最悪の立地条件の場所らしいのだが、
いったいどこのあたりに…(;_;

うぅ…せっかく ddi から新しい phs をもらったのに交換できない…(;_;

2001年09月20日(木)

#1 drunkers.

birthday の挨拶代わりにごきゅごきゅと飲んでおりました。

#2 my works.

学生のバイトだということを考えてないひどい発言が連発…。
うぅ…、せつなすぎる…(;_;
月 100 時間以上働けって僕に言うのですか…??(;_;

#3 top runner

いつぞや延期になった鬼束ちひろの top runner をやっていたので、みる。
なんかバカでのノリのいい男子中高生みたいですね(^^;
うたうとまったく別人になってしまうのだけど。

二重人格とか??(^^;

2001年09月21日(金)

#1 uploading...

すっかり日記を研究室に送るのを忘れていたので、ざくっと送っておく。

#2 fix a cable

lan cable のツメが破損していたので、修復する:)

elecom の connector は x-jack と fit 感がよいようだ。
…というか、前使っていた no-brand のものが粗悪品だったのだろうなぁ。

#3 delay of key repeat.

windows の key repeat の速度を変えるには
[コントロールパネル] - [キーボードのプロパティ] - [速度] - [表示の速度]
を任意の速度に変えるとよい。

#4 XMLを階層モデル、リレーショナル・モデル、オブジェクト指向モデルに適応させる

xml と rdbms の話。

やはり xml は rdbms 内に保存すべきでなさそうですね。
出力形式としてはともかく、内部形式としては xml である必要はないでしょう。
速度や機能的な面で特に利点を感じませんし。

odbms に近いという話ですから、そっちと組み合わせるのはよいかもしれません。
odbms は全然詳しくないので適当に書いてますが:p

xml with rdbms は oracle ががんばっているのですけど、どう実現するんでしょう?
dtd からデータを読み込んで table が作成できるとか、 sql で読み込んだ結果が xml で取得できるのであればおもしろそうですけどね:)

#5 sofmap world

部屋の掃除をしていたら、sofmap world の 1994/02 というのを発見した。
値段に歴史を感じる…。

NeXT for intel が入った AT/PC マシン(dx2/66,16MB,250MB)が 80 万円もするとは…
それに、4MB 70ns な 72pin-simm が 18,800 円というのには泣けますね。

あぁ、懐かしいなぁ。これは捨てずにとっておこう。

#6 joyful, joyful

やっぱり 天使にラブソングを 2 を見てしまう。
やはりおもしろいですな:)

#7 aptiva & hub

ibm から hub が送られてきた。

aptiva の nic と adsl modem の相性が悪いことが多いらしく、
両者の間に挟んで使ってほしいとのこと。
うちにはそんなものないので、そのまま余ってしまった。

aptiva を買ったときにもらった canon の printer もそうだけど、
マシン買ったら望まずともいろいろ付いてきてしまうのかしらん(^^;
printer は売れたけど、これじゃなぁ…。

#8 the birthday.

おめっとさ〜ん > tomi。

2001年09月22日()

#1 works at home.

昨日は雨で学校を休みにしたので(^^;、今日はその分まで作業をする。

学校に行く気にはなれなかったので、家でさくさく作業。
とりあえず、懸念事項を少しずつでよいので減らしていく。

surprise!:

なんか、噂によると今日は open campus だとかなんとか。
研究室で手伝わなくてはいけないこととかがあったのでは!?(^^;
知らなかった(^^; とはいえ申し訳ないことをしたなぁ。

#2 先発予告

む。明日は友人どもが乗り込んでくるらしい(^^;
迎え撃つ準備(掃除)をせねば…。

返り討ち:

と言うことで、再び今日も掃除の日に。

今日はいよいよ変な物の巣窟である本棚付近 *1 を掃除することに。
古い教科書やら software package やら大量に出てきます(;_; まさに魔窟!
windows nt4.0 workstation …捨て。
windows nt3.5 for pc-98x1 …捨て。
mosaic version 2.0 …捨て。
vga card driver cd 15 枚 …捨て。
netscape 2.0 cd 8 枚 …捨て。
…この調子で大量にわけのわからん物が出てきます(;_; 助けて…。

os2 warp 3.0 とか ms-dos 6.2 extention kit とかはどうしようか。
あー、なんで warp 4.0 持ってないんだろう(;_;

*1: すでに本棚の手前に物が積まれていたりする(^^;

#3 super soccer

ようやく相馬が帰ってきましたね:)
これでアントラーズの動向が楽しみに…:)

2001年09月23日()

#1 play at home.

だらだら〜。

たまに家に人を入れると、それに刺激されて部屋が掃除されるのでよいですね(^^;

#2 SCSIケースサイズの超小型FlexATX自作PCキット「CUBE-24」発売

おお、小さくてよいですねぃ。
これに遅めの cpu と silent cpu fan を積めば、ちょっと幸せになれそうですが…。

しかし、記事の
ケースが総アルミでできているために比較的高級感もあり
というのはどうだろう。
私はアルミ製の方が安っぽいと思うのだけどなぁ。
それとも 鉄製と比べて 比較的高級感もあり… なのかなぁ?? だったら納得:p

高級感とかそういうのは材質だけで決まるものじゃないと思うのだけどね:p

2001年09月24日(月)

#1 廃棄活動

cd rack.:

今度は cd の棚にその魔の手が。

…と、見てみるとあるわあるわ、使用済み cd-r の山が。
データの受け渡しのために使うことが多いので、いらないのもたくさん。
中身を見つつ、捨て捨て捨て。

うへ、半分以上消えてしまった(^^;

prize.:

えゝい、景品の山もいらぬ。これも捨ててしまへ。

#2 run netscape with javavm.

javavm とともに netscape を起動するには netscape の起動オプションに
-start_java を与えます。

#3 [links] 今日の links

Japanese Edition (UFAQ[ja]) Netscape非公式FAQ日本語版:

netscape unofficial FAQ だそうです。

2001年09月25日(火)

#1 自白。

すみません、この年になって未だに日付を設定するときに man を引きます(;_;
date [MMDDhhmm[[CC]YY][.ss]]
が正しく覚えられてないです(;_;
うぅ…。

#2 うわわ。

ある site の 99 万 hit を踏んだのだけど、その site が閉鎖中の場合は
どうすればいいんでしょう?(;_;
うぅ…せめて掲示板が生きていれば…。

#3 [links] 今日の links

○ うったて ○:

google で唯一の うったて に関するサイト。
うったて とは
意味は「習字などで文字を書くときの最初に筆先を置く点」であるとのことです。
だそうです。
うぅむ。方言恐るべし。

経産省、天才プログラマー12人を認定:

あいかわらず訳の分からないことをしていますねぇ(;_;

ドラえもんSuperDataBase:

うわぁ。
▼ドラえもん(てんとう虫コミックス) 全45巻に登場する全ての秘密道具を、 解説付きで全て網羅!
▼あなたの知りたい道具がきっと見つかります。

バナナだってモバイルだ!:

携帯バナナホルダーなんて作って、売れるのかいな(^^;
しかし、
「C-NEWS/インフォプラント」が調べたところ, ユーザーの6割が「バナナが好き」と回答。「おいしい」「栄養価が高い」 などがその理由で,「嫌い」は5%とその人気ぶりがうかがえる。
なんていう調査をしているところは笑える。
ただ「バナナホルダー」については「利用したい」「できれば利用したい」 ユーザーは合計 2割弱にとどまった。
これがふつうの反応だろう。

バナナ大学:

バナナ輸入組合で作っているサイト。
ここでもバナナホルダーが紹介されています。

特徴も書いてあったので抜粋。
【 特 徴 】
 1. バナナ1本用のかわいいバナナ型携帯ケース
 2. マジックテープで出し入れ簡単
 3. 通気性&クッション性のある素材
 4. 洗濯もできます
 5. ぶら下げるための紐付き
出し入れ…するのか…? 1 本しか入らないのに…。

売れない店は「ワーディング」に問題あり:

online shop にありがちな、不適切な言葉の使い方(wording)について。
key point は らしい。

rm -rf /bin/laden:

やはり、internet は black joke の Mecca ですな。
早くもわけのわからない t-shirt を売り出しています(^^;

Palm版デス川柳:

バカ系 software。
名前に妙に惹かれます。

Inro:

同じくバカ系 software。しかも一見系。
screen shot みて入れる気がなくなってしまうというのは
なかなかの力作ではないでしょうか(ぉ

翻訳者インタビュー:高山美香:

アリー my ラブ の吹き替え翻訳をしている方への interview。
なかなかおもしろそうですね:)

真の経営幹部 CxOを日本で育てる法:

CTO, CEO ぐらいしか知らなかったんですが、
C*O ってこんなにたくさんあったんですねぇ。
多すぎてどれがどれだかおぼえられそうにない…。

#4 nimda

wakou さんから nimda が postfix に与える影響の話を聞いたのだが、
どの記事なのか見つけることができない(;_;

おそらく postfix に mail filter をつけた場合に
負荷が激増するという類の話なのだとは思うが。

2001年09月26日(水)

#1 today

後輩やら kyou からの質問につきあっていたら一日が過ぎていってしまったような…。
むむ。今日は締め切り前最後の平日だというのに。
どうにか滑り込みでやることは終えたのであとは bug のないことを祈るのみ。

#2 the paper

あー。送らなくちゃいけない資料が完成しない…。
lc2001 もあることだし、明日に回すか。

#3 [links] 今日の links

PC無音化計画:

cpu fan を買い換えるのに資料あさりをさせていただきました:)

CoolON:

NorthBridge の設定を書き換えて、Athlon を冷やすらしい。
試しに数分動かしてみたが、特に効果は見られなかった。
しかも Sound に noise が載ったので、ざくっと削除。

CPUCool.:

愚かな Windows に変わって halt instruction を発行してくれる素敵なツール。
…なんだが、こっちも効果なし。やはり sound に noise が。

2001年09月29日()

#1 install cpu fan.

昨日買ってきた cpu fan を取り付けてみた。

以前の fan の高速回転時とほぼ同じ程度の風量といったところ。
なのだが、以前のものより高周波成分が少ないので使っていてまぁ満足。
…が、静かというわけでもないので、やはり間を持たせる程度でしかないみたい。

まぁ、次の機会にでもゆっくり探しますか。

#2 the next conference.

なんか 10/25 に debian conference/tokyo があるらしい。
むむ。また木曜ですよ!?
授業には影武者を出したいなぁ。Uhmm...

#3 top of stylus.

visor's stylus の先端の部分がはまってとれなくなってしまった(;_;
むむむ。まいりましたぞ(;_;
家帰って pilot-xfer して、開腹決定かな。

cannot go home.:

うぐ。締め切りとの闘争に巻き込まれたため、帰宅不能に(;_;

#4 caching singleton object.

今まで気付かなかったんですが、mod_ruby は singleton object も cache します。

で、
class Foo
  include Singleton

  attr_reader(:value)
  def initialize
    @value = Time.new
  end
end
という library を作って require すると、
mod_ruby が無い場合は常に表示時の時刻を返すのですが、
mod_ruby の元ではこの object が cache されるために希望の動作をしません。

user information:

手元では AccessUserInformation というユーザ情報を管理するクラスが
うまく動いていないので気付きました。
class AccessUserInformation
  include Singleton

  def initialize
    cgi = CGI.new

    @id = cgi['UID'][0].to_i
  end
end
どうしましょうかねぇ。

ad-hoc:

とりあえず、refresh するような中間層を作って回避〜。

2001年09月30日()

#1 逃避行

作業の合間に、wakou さんに頼まれた network 上の
閉路を探すプログラムを作ってみたり。
問題なく動くようになったと思うので、wakou さんに捧げておく。

もっとよいアルゴリズムがあるんだろうなぁ、とは思うものの
まぁ、富豪だしいいよね:p とも思うのでした(^^;

#2 the end.

とりあえず終わり。
おそらくこれから bug report がくるんでしょうが、とにかく終わり。

次からは相棒の人に厳しくして、締め切りを守ってもらうようにしましょうかね。
今回徹夜したのは僕よりも彼のが悪い。
まぁ、私も思っていたよりやることがわいて出てきたので、人のことはいえませんが:p

#3 help me, super pinch crasher!

うへ、月曜の発表資料って作ってないんだがどうするよ(;_;

#4 [links] 今日の links

ネットトラフィックの洪水の中で:

これくらいの対処がきっちり出来るといいなぁ:)

#5 uri.rb

やまだあきらさんの URI がなぜか debian には存在しないので、
やっぱりさくさくと package を作っておく。

作ってから気付いたのだが、uri ではなく前身の urb は存在するようだ。
…が、uri を使いたいし、そっちのことは捨て置く:p
urb 最新版の 0.4 にも対応してないしね。

せっかくなので、自分の Debian Archive にも追加しておく。

new gogo released!:

む。いつの間にか gogo 3.05 なんて出てるよ。
同じ debian/rules で通るなら、packaging しておこうかな。

gogo passed debian/rules.:

完成〜。

しかし、よく見てみると古いやつにゴミが混じっているのを発見。
間抜けすぎ。

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

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