ToDo:
> time LD_PRELOAD=./nmalloc.so ruby -e 'for i in 0...100; ("aaa".."zzz").each {|i| }; end' 0x804a150(0x804a000+0x50) 0x805a000 0x807ae94(0x804a150+0x30d40) 0x809a000 0x809a007(0x8099fff+0x4) 0x80aa000 -e:1: [BUG] Segmentation fault ruby 1.8.4 (2005-12-24) [i386-linux] zsh: abort LD_PRELOAD=./nmalloc.so ruby -e LD_PRELOAD=./nmalloc.so ruby -e 0.01s user 0.01s system 86% cpu 0.023 total
(11:29)
http://www9.ocn.ne.jp/~ymt/perl6/rules.html
ぐはー。
via http://www.jmuk.org/d/?path=2006/04/03#d03t03
(11:44)
http://www.houseabsolute.com/presentations/jsan-ajax-perl-ja/slide29.html
(17:23)
何度やっても忘れる。
each "/data/wine/borland/Bin/impdef.exe %p.def %" *.dll each "i586-mingw32-dlltool --def %p.def --dllname %p.dll --output-lib %p.a" *.dll
(08:45)
とりあえず保守的なチャットを考える。
頻度を考えるにまぁ発言だけ頻度が高い。 あたりまえ。
発言だけ別ファイルでappendしていく。 他はワンファイルに詰め込む、が良さげか。
あとはまぁ、更新部分だけ通知するのが利口だろうな。
(02:20)
本文やらコメントやら通じて微妙に抵抗がある部分も多いんだけど。 なぜか。
http://d.hatena.ne.jp/sumii/20060404/1144111484
(14:45)
今度調べるためのメモ。
i@u ~/src/ruby-1.8.1> time ruby -e 'h={}; for i in 0...1000000; h["str"]=i; end' ruby -e 'h={}; for i in 0...1000000; h["str"]=i; end' 2.21s user 0.02s system 99% cpu 2.252 total i@u ~/src/ruby-1.8.1> time ruby -e 'h={}; for i in 0...1000000; h[:sym]=i; end' ruby -e 'h={}; for i in 0...1000000; h[:sym]=i; end' 1.27s user 0.00s system 100% cpu 1.267 total i@u ~/src/ruby-1.8.1> ruby -e 'p "str".hash; p "str".object_id' 987610256 -604106804 i@u ~/src/ruby-1.8.1> ruby -e 'p :sym.hash; p :sym.object_id' 2627854 2627854 i@u ~/src/ruby-1.8.1> ruby -e 'p :a.hash; p :b.hash; p :c.hash' 2627854 2629902 2631950
これだとハッシュのヒット率落ちそうな気もするが。 要チェック。
(20:49)
#define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\ bin_pos = hash_val%(table)->num_bins;\ ptr = (table)->bins[bin_pos];\ if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\ COLLISION;\ while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ ptr = ptr->next;\ }\ ptr = ptr->next;\ }\ } while (0)
まぁ Symbol の数なんて少ないんだから ハッシュのキーは Symbol が正解なんだろうな。
(20:52)
デバッグビルドのみ。
estmaster: estraier.c:5547: est_aidx_attr_put: Assertion `db && id >= 0 && vbuf && vsiz >= 0' failed. zsh: abort (core dumped) estmaster start casket
#0 0x080fcd41 in raise () #1 0x080bf910 in abort () #2 0x080bb1d6 in __assert_fail () #3 0x08079f4f in est_aidx_attr_put (db=0x818e1d0, id=-1, vbuf=0x81ad440 "mod_estraier", vsiz=12) at estraier.c:5547 #4 0x0806e2aa in est_db_edit_doc (db=0x818d9f8, doc=0x81a4320) at estraier.c:1946 #5 0x0808257d in est_mtdb_edit_doc (db=0x815d430, doc=0x81a4320) at estmtdb.c:193 #6 0x08056ff4 in sendnodecmdeditdoc (clsock=32, req=0xb5a43194, node=0x81a4160) at estmaster.c:3391 #7 0x08050020 in sendnodedata (clsock=32, req=0xb5a43194, user=0x815d1e8, path=0x815d0d6 "web") at estmaster.c:2037 #8 0x0804d5a3 in communicate (targ=0x81e0360) at estmaster.c:1545 #9 0x0808d402 in start_thread () #10 0x080f76ce in clone ()
doc->id が -1 になってる。 まだセットされてない or 必要ない、たぶん。 混入は 1.2 系の est_aidx_attr_put だと思う。
(22:29)
前に gzstore は作ったことがあったので zstore を作ってみた。
http://shinh.skr.jp/koneta/zstore.rb
http://shinh.skr.jp/koneta/gzstore.rb
ruby /usr/lib/ruby/1.8/pstore.rb 1.13s user 1.09s system 85% cpu 2.593 total ruby gzstore.rb 1.55s user 1.23s system 93% cpu 2.989 total ruby zstore.rb 13.62s user 5.12s system 92% cpu 20.313 total
とりあえず愕然とするようなパフォーマンスの悪さ。
(16:43)
http://shinh.skr.jp/koneta/zstore2.rb
ちょっとマシに。
ruby zstore.rb 9.45s user 3.70s system 84% cpu 15.503 total
(16:51)
一行紹介
るびーつかったらまけだとおもいつつ、Ruby。
プロフィール
飽きてきた。
(17:14)
(17:22)
http://www.atdot.net/~ko1/diary/200604.html#d3
面白そうすぎる。 インラインアセンブラ書けるのもステキだけど たぶんこれは強力な reflection にもなるわけで。 メソッドを逆アセして中身調べれば、
http://www.rubyist.net/~matz/20060401.html#c09
のへんの次世代チックな IDE も作れそう。
(00:55)
mf.rb の時も考えたことだけど Sample Oriented Programming というのは魅力的。
http://d.hatena.ne.jp/shinichiro_h/20050822#1124695279
まぁでもサンプルがあれば実装は自動的にされます、 ってのは妄言に近い。
ただ、サンプルがあればドキュメントが自動で書かれます、 ってのは良さげな気がする。 doc/ は書きたくないけど test/ は書いてもいいわけで、 assert とか見ればほらだいたいドキュメントくらい作れるじゃないか。
> sample_base_document_generator YAML::load YAML::load(io) io はたぶん IO 継承クラスっぽい。Fileかも知れんけど。 返り値はなんか色々帰ってるね。 Hash とか Array とかそのへん。
素直に doc/ から test/ 生成ですかそうですか。
(01:43)
これがエントロピーというものだよ
i@u ~/test/ruby> cat test_zlib.rb require 'zlib' abc = 'abcdefghijklmnopqrstuvwz' aaa = 'aaaaaaaaaaaaaaaaaaaaaaaa' zd = Zlib::Deflate.new abcd = zd.deflate(abc, Zlib::FULL_FLUSH) aaad = zd.deflate(aaa, Zlib::FULL_FLUSH) print "#{abc.size} => #{abcd.size}\n" print "#{aaa.size} => #{aaad.size}\n" zi = Zlib::Inflate.new p zi.inflate(abcd) p zi.inflate(aaad) i@u ~/test/ruby> ruby test_zlib.rb 24 => 32 24 => 9 "abcdefghijklmnopqrstuvwz" "aaaaaaaaaaaaaaaaaaaaaaaa"
手軽で良いわー
(02:07)
不思議さ。
http://www.sankei.co.jp/news/column.htm
http://ja.wikipedia.org/wiki/%E7%94%A3%E7%B5%8C%E6%96%B0%E8%81%9E
(14:19)
The following packages will be REMOVED: gphoto2 (2.1.6-1.1) gtkam (0.1.11-2) kdebase (3:2004_09_23-7) kdebindings (6:3.5.1-0.3.fc4) kdelibs (3.5.1-0.1.fc4) kernel#2.6.10-1.741_FC3 (6:3.5.1-0.1.fc4) kernel#2.6.11-1.14_FC3 (2.6.10-1.741_FC3) kernel#2.6.9-1.667 (2.6.11-1.14_FC3) kernel-utils (2.6.9-1.667) kudzu (1:2.4-13.1.49_FC3) lm_sensors (1.1.116.3-1) pcmcia-cs (2.9.1-3.FC4.2) sane-backends (3.2.8-4.12) sane-backends-devel (1.0.17-0.fc4.2) sane-frontends (1.0.17-0.fc4.2) system-config-soundcard (1.0.13-2) xinitrc (1.2.12-5.FC4) xorg-x11 (4.0.18.1-1) xorg-x11-tools (6.8.2-37.FC4.49.2) xorg-x11-xdm (6.8.2-37.FC4.49.2) xsane (6.8.2-37.FC4.49.2)
(19:34)
GI と思ったら KI だった。
i@u wrk/ruby/genwn> ruby genwn.rb エージェントシステム AgentSystem i@u wrk/ruby/genwn> ruby genwn.rb 麦酒マシン BeerMachine i@u wrk/ruby/genwn> ruby genwn.rb ビアマシン BeerMachine i@u wrk/ruby/genwn> ruby genwn.rb C言語コンパイラ CCompiler i@u wrk/ruby/genwn> ruby genwn.rb 基底変換 BaseConvert i@u wrk/ruby/genwn> ruby genwn.rb ダイナミックバインド DynamicBind
このへんは良い
i@u wrk/ruby/genwn> ruby genwn.rb ローレンツ変換 LowRentsuConvert i@u wrk/ruby/genwn> ruby genwn.rb 麦酒缶 BeerKan i@u wrk/ruby/genwn> ruby genwn.rb 地震 Jishin i@u wrk/ruby/genwn> ruby genwn.rb 死んでしまえ ShiNdeshimae i@u wrk/ruby/genwn> ruby genwn.rb ペペロンチーノ Peperonchi^no i@u wrk/ruby/genwn> ruby genwn.rb ラグナロク LagNaroku i@u wrk/ruby/genwn> ruby genwn.rb エクスカリバー Ekusukariba^ i@u wrk/ruby/genwn> ruby genwn.rb ログハウス LogHouse i@u wrk/ruby/genwn> ruby genwn.rb 弾幕 Danmaku i@u wrk/ruby/genwn> ruby genwn.rb 英国 Eikoku i@u wrk/ruby/genwn> ruby genwn.rb ロシア Russia
使えん。
(00:44)
http://d.hatena.ne.jp/rubymi/20060417#1145283941
使えない子、うびみ。使えない。
i@u ~/test/ruby> cat trace_func.rb dumping = false begin r = ARGV[0].reverse print "#{r}\n" rescue if dumping Tracer.off raise end dumping = true require 'tracer' Tracer.on retry end i@u ~/test/ruby> ruby trace_func.rb ahi iha i@u ~/test/ruby> ruby trace_func.rb #0:trace_func.rb:13::-: retry #0:trace_func.rb:3::-: r = ARGV[0].reverse #0:trace_func.rb:3:Array:>: r = ARGV[0].reverse #0:trace_func.rb:3:Array:<: r = ARGV[0].reverse #0:trace_func.rb:3:Kernel:>: r = ARGV[0].reverse #0:trace_func.rb:3:NameError::message:>: r = ARGV[0].reverse #0:trace_func.rb:3:NameError::message:<: r = ARGV[0].reverse #0:trace_func.rb:3:NoMethodError:>: r = ARGV[0].reverse #0:trace_func.rb:3:NameError:>: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:>: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:<: r = ARGV[0].reverse #0:trace_func.rb:3:NameError:<: r = ARGV[0].reverse #0:trace_func.rb:3:NoMethodError:<: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:>: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:<: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:>: r = ARGV[0].reverse #0:trace_func.rb:3:Exception:<: r = ARGV[0].reverse #0:trace_func.rb:3::: r = ARGV[0].reverse #0:trace_func.rb:3:Kernel:<: r = ARGV[0].reverse #0:trace_func.rb:6::-: if dumping #0:trace_func.rb:6::-: if dumping #0:trace_func.rb:7::-: Tracer.off trace_func.rb:3: undefined method `reverse' for nil:NilClass (NoMethodError)
(01:39)
/usr/bin/gtk-update-icon-cache: error while loading shared libraries: libXrandr.so.2: cannot open shared object file: No such file or directory
/var/tmp/rpm-tmp.37855: line 3: /usr/X11R6/bin/mkfontdir: そのようなファイルやディレクトリはありません
/usr/bin/pango-querymodules-32: error while loading shared libraries: libXau.so.6: cannot open shared object file: No such file or directory
とか出てた。
あとでやること。
(02:15)
i@u ~> stow --version stow (GNU Stow) version 1.3.3 i@u ~> stow --vers stow (GNU Stow) version 1.3.3 i@u ~> stow --ver stow: unknown or ambiguous option: ver
…
} elsif ($opt =~ /^vers(i(on?)?)?$/i) {
...
(12:16)
http://t16web.lanl.gov/Kawano/gnuplot/
via
http://www.jmuk.org/d/?path=2006/04/18#d18t02
(01:01)
いつも忘れる分散のもとめかた。
まず普通にコヒーレントと内積取って二つくっつける。 この時点で積分三つ。
m の積分を持ってきてδ関数に変換する。 その際 φm を微分に変換する。
δ関数の微分は微分してδ。 つーわけでΓ関数の微分が登場。
http://en.wikipedia.org/wiki/Polygamma_function
このへんを参考に。 結論としては1乗の場合はΓ関数微分したところは消える。 2乗以降の場合は残る。
(01:08)
(11:02)
Windows でも動いた。 問題点まとめ。
(04:16)
http://d.hatena.ne.jp/rubyca/20060419/1145459336
例えば。
class MethodCallingError < StandardError; end module CallOnce def self.included(cname) set_trace_func proc{|event, file, line, id, binding, klass| return if cname != klass return if event !~ /call/ def klass._define_method(id, &p) define_method(id, p) end klass._define_method(id) do raise "#{id} called twice" end } end end class C def f p "func" end def f2 p "func2" end end c = C.new c.f c.f2 c.f class C include CallOnce end puts "OK, let's forget." c.f c.f2 c.f
def klass._define_method がださい。
(19:15)
別にこれでいいのか。
set_trace_func proc{|event, file, line, id, binding, klass| return if cname != klass return if event !~ /call/ klass.send(:define_method, id) do raise "#{id} called twice" end }
もちろん二度目に include された場合の処理とかしてないので、 まぁそのへんは適当に。
(19:19)
http://www.derkarl.org/why_to_tabs.html
斜め読みした感じ、先頭のヤツ以外はどっちも holy war くさい気がした。
とりあえず1文字単位のインデントがしたいケース、 まさに
SomeClass::SomeClass() _____.:.InheritingClass(false, false _____...................5, 10, true, _____...................bleh, blah) { // .... };
みたいなケースが面倒なのと、 あとタブの設定変えてインデントが深くても大丈夫、 っていうのはインデントが深い方が問題なので別にいいやとかそんな。
まぁスペースオンリーでいいじゃない。
(13:58)
_____if.(true)....//This should be replaced _____{............//with a proper boolean _____.....func(); _____}
このスタイルは結構アリかもとか。
(14:00)
http://trident.infotech.gr.jp/~arai/d/index.php?/archives/387-mod_estraier.html
対処すること。
(03:17)
やっぱ素敵。
http://www.sankei.co.jp/news/060422/morning/column.htm
なんでこう、単純な文章としての体裁がこうアレなんだ。
気に食わない表現や言論を封じる“暴力”は、以前にもあった。
とか、それはもういわゆる言論弾圧はそりゃ左右問わず 権力者によるものも運動家によるものもものすごい数 あったろうに出てくる例に必然性がこう全く見つからないとか。
(05:16)
(05:31)
何回ひいてるんだ。ざっと思い出すに、
(07:45)
要は関数についての群論みたいなものだろうかと 思ったらそうだった。
原理
最後の || の部分は && では無いというのは たぶんそうだよな。
(20:08)
http://d.hatena.ne.jp/rubyco/20060423/seq12
そうか。 EOOEOOEOO... か EEEEEEE... のパターンしか無いのか。
偶数全体を元とする加法は群で、 奇数はそうじゃないんだな。
(21:08)
最近勝ち組だったのに。
時刻を含む一意な ID を生成する関数。
def idgen(prev) now = Time.now.strftime('%y%m%d%H%M%S') cnt = if prev && now == prev[0...12] c = prev[12..-1].to_i + 1 c < 10 ? "0#{c}" : c.to_s else '00' end now+cnt end if $0 == __FILE__ id = nil for i in 0...20 id = idgen(id) print "#{id}\n" sleep(0.1) end end
1秒に100回以上呼び出すのは禁止。
i@u ~/test/ruby> ruby idgen.rb 06042322553900 06042322553901 06042322553902 06042322554000 06042322554001 06042322554002 06042322554003 06042322554004 06042322554005 06042322554006 06042322554007 06042322554008 06042322554009 06042322554100 06042322554101 06042322554102 06042322554103 06042322554104 06042322554105 06042322554106
(22:57)
はなんかプロトタイプベース畑に来ておきながら なんであれがないんだ症候群によって 郷に入りて…的なものだと考えてた、
け、ど、
よく考えると C のマクロとかと違って、 プロトタイプベースは そもそも拡張してもらうことが前提なわけで それもありかと思ってきた。
(20:44)
あんま好きになれませんでした…
http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html
$() は便利そう。あと Ajax.Updater はまぁ抜き出して使いたいかなぁ。
これをまるごと include したらなんか終わる気がする。
(22:05)
http://mput.dip.jp/mput/?date=20060207#c04
の記述を見て。 配列のケツ持ってくるのになんで O(1)ができるんだろうと思って。 ていうか Array は配列だと思ってたけど本当に配列なのかと思って。
とりあえず rb_ary_fetch を見た。
return RARRAY(ary)->ptr[idx];
うむ配列。
一応実験。
i@u ~/test/ruby> ruby -e 'a=[1,2,3]; b=a[1..-1]; p a; p b; b[0]=4; p a; p b' [1, 2, 3] [2, 3] [1, 2, 3] [4, 3]
うむ。
となると slice が CoW だとかかな…と思って rb_ary_subseq と rb_ary_modify 見たら CoW ぽかった。 えらい。でもそらそうか。
(17:46)
(18:26)
/usr/bin/libtool -arch_only ppc -dynamic -install_name @executable_path/../Frameworks/SDL_kanji.framework/Versions/A/SDL_kanji -noall_load -flat_namespace -undefined suppress -o SDL_kanji -L/usr/lib/gcc/darwin/3.3 -L/usr/lib/gcc/darwin -L/usr/libexec/gcc/darwin/ppc/3.3/../../.. SDL_kanji.o -framework SDL -lgcc -F/home04/ss56092/Frameworks
最終的にはコレ。だるかった。
(17:34)
前 | 2006年 4月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ rubymi [ひどい。帰ったら手つけます多分。 今はそれよりincludeしたらインスタンスメソッドが一回しか呼び出せなくなるよう..]
_ rubymi [顔文字使うの忘れてた ^-^;;;;;;;;;;;;]
_ ruby25ru [(^^^)]