トップ 最新 追記

3 日坊主日記


2003-02-03 [長年日記]

_ WideStudio

Ruby GUI センター にリンクがあったので見てみた。C++ (g++) だけでなく Perl, Python, Ruby でも書ける。ここまで自前で作りこんでしまうとは…。 でも Delphi IDE のほうが使いやすい。へへ。

_ Boost

cppll で Boost の 翻訳プロジェクト が祭りになっていた。C++ は使ったことないのだけど興味だけ。

_ refe gdbm

refe は gdbm を使う(ただし変更可) のだけど、うささんの配布には gdbm.so が付いていない。 sdbm だと値(つまり解説文)が大きすぎて作れない。 mswin32 版の gdbm.so を作る実験にことごとく失敗した。 仕方ないので eban さんの mingw32 版で mkrefe 。ふうむ。まあ私は rubymanjp.chm があればいいや。

DBM を使わない refe を作れば良いような気もする。 ruby-refm.rd に対する index を作って seek すればいい。

_ Ruby

1.6系はもうステの方向で。

_ Perl (?<=pattern)

A zero-width positive look-behind assertion. こんなものどこで使うのかと思いきや。 cppll regex++ ネタより。

print join(":",split(/(?<=島)や/,"松島や浦島や焼鳥やはいずこ")),"\n";
# 松島:浦島:焼鳥やはいずこ
print join(":",split(/(?<=島)や/,"松島や竹島や梅島や")),"\n";
# 松島:竹島:梅島

確かにこの局面では ?<= でないとうまくいかない。 Ruby には存在しない。 split にこだわるなら

p "松島や浦島や焼鳥やはいずこ".split(/(.+?島)や/).reject{|i|i.empty?}
# ["松島", "浦島", "焼鳥やはいずこ"]
p "松島や竹島や梅島や".split(/(.+?島)や/).reject{|i|i.empty?}
# ["松島", "竹島", "梅島"]

こうか。

splitをsplitらしく(?)使うなら

def foo(str)
  ary = str.split(/島や/,-1)
  tmp = ary.pop
  ary.map{|i|i.concat "島"}
  ary.push tmp unless tmp.empty?
  ary
end
p foo("松島や浦島や焼鳥やはいずこ")
# ["松島", "浦島", "焼鳥やはいずこ"]
p foo("松島や竹島や梅島や")
# ["松島", "竹島", "梅島"]

微妙。

_ String#split

ruby-man での解説:

sep が 1 つの空白(' ')の時、または $; が使用される場合でその値が nil の時には先頭の空白を除いて空白で分割を行います。

これは微妙な表現だなと思い、調べてみた。

$; = ' '
  
p "   a \t  b \n  c".split
	#=> ["a", "b", "c"]
  
p "   a \t  b \n  c".split(nil)
	#=> ruby 1.6.7 (2002-03-01) [i386-mingw32]
	#=> Exception `ArgumentError' at sep1.rb:6 - bad separator
	
	#=> ruby 1.6.8 (2002-12-24) [i586-mswin32]
	#=> ["a", "b", "c"]

ふうむ。昔は nil を引数にとれなかったわけか。今ではとれるし $; が nil でも ' ' でも挙動は変わらないので

sep が 1 つの空白(' ')または nil の時には先頭の空白を除いて空白で分割を行います。

と言って良いだろう。

ついでに sep が 空白 2 文字の場合:

$; = '  '
p "   a \t  b \n  c".split
p "   a \t  b \n  c".split(nil)
  
C:\>ruby -vd sep2.rb
ruby 1.6.7 (2002-03-01) [i386-mingw32]
["", " a \t", "b \n", "c"]
Exception `ArgumentError' at sep2.rb:5 - bad separator
sep2.rb:5:in `split': bad separator (ArgumentError)
        from sep2.rb:5
  
C:\>d:\ruby\bin\ruby -vd sep2.rb
ruby 1.6.8 (2002-12-24) [i586-mswin32]
["", " a \t", "b \n", "c"]
["", " a \t", "b \n", "c"]
  
C:\>d:\usr\bin\ruby -vd sep2.rb
ruby 1.8.0 (2003-01-18) [i386-mswin32]
sep2.rb:2: warning: string pattern instead of regexp; metacharacters no longer effective
["", " a \t", "b \n", "c"]
sep2.rb:5: warning: string pattern instead of regexp; metacharacters no longer effective
["", " a \t", "b \n", "c"]

本日のツッコミ(全1件) [ツッコミを入れる]

# ただただし [がーん。もうステですか!? >1.6]


2003-02-05 [長年日記]

_ 祖母と携帯

祖母が携帯を手に入れた。ちょくちょく使い方を聞かれるのだが…我、無力ナリ。状態遷移の概念抜きで教えるなんて無理だよ〜。


2003-02-07 [長年日記]

_ プログラミングRuby 正誤表

一応ここにあるんだけど、今日読んだらいろいろ気になるところが。

例えば p.625。ここでは 0,O,1,i,l が混ざっていておかしい。

p.554 の visitor パターンだけ項になっているのもおかしい。


2003-02-10 逃避行動 [長年日記]

_ iconv.so

ruby 1.8.0 (2003-02-09) [i386-mswin32]

http://www.kaoriya.net/#LIBICONV

を使うとできた。

_ zlib.so

ruby 1.8.0 (2003-02-09) [i386-mswin32]

なぜか zlib.dll があるので Ruby/Zlib を調べてみる。最新版は rough の中。

http://openlab.ring.gr.jp/tsuneo/tar32/

を使うとできた。

なぜ元の extconf.rb は -llibz なのだろう…。

_ rough/ext/zlib/doc/zlib.rd.src

s/adlar/adler/

typo ぽいので作者さんに報告。

_ もう月曜かよっ

chiro
ニコレッツ=レオパード様の雄姿を貼り付けとこ。

2003-02-14 [長年日記]

_ GUI作るのは

かったるい。面倒くさい。苦労の割にはしょぼい。

_ ちょこ

げっとだぜ。ご年配の方にいただいた。てゆか普通におやつ。

_ TStringGrid で複数行選択

One Click で行ごとに選択/選択解除したいわけなのだが。

Delphi-ML:39129 の方法でもいいのだけど、描画タイミングが難しい。

TStrColGrid を使うことにしよう。

_ Delphiコンポーネント設計&開発 完全解説

買わねばなるまい。

本日のツッコミ(全2件) [ツッコミを入れる]

# moriq [携帯から。かきこ。かきこって入れるのたいへん。]

# xwawjyocyy [Hello! Good Site! Thanks you! lnevbeucvmk]


2003-02-17 [長年日記]

_ 腹痛。

_ i-mode

ふと携帯から日記を見てみる。ちゃんと読めるし書き込めるよ!感動した!


2003-02-18 [長年日記]

_ Delphi

Delphiで作ってるといらいらする。昔はそんなことなかったのに。Rubyの功罪: 「ほかの言語を使うといらつく」。

_ 屋下屋

屋上屋と覚えていたのだけど、検索すると下が本来正しいらしい。