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)
�ˤ�Ȥ�ư����
��ϤǤ�������������ɤǤ��ޤ��Ȥ������Ȥǡ� LoadLibrary ���ɤ�Ǥߤ�Ȥ������餫�ʤ���
(11:51)
����: �Ѥ��ɤο�=ǯ��-20
����: ������Ѥ��ɤϡֺ��Τ��ɤ߽���ä����㤪���ȻפäƤ����ܤο���
(01:27)
�Ȥꤢ�����ݼ�Ū�ʥ���åȤ�ͤ��롣
���٤�ͤ���ˤޤ�ȯ���������٤��⤤�� ������ޤ���
ȯ�������̥ե������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)
http://raa.ruby-lang.org/project/nihongobenkyo/
���������ʤ�ΤĤ�����
(15:24)
���� 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 �ø��쥳��ѥ��� 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)
˺��ʤ������ˡ�
̵������ץ쥤��Ƥ������Ʊ��������Ϥ��� ���������ɥ⥸�塼���Ϥ����ϡ��ɥ��������ۡ�
(04:17)
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)
ƿ̾�ؿ����Ȥ��ơ����δؿ��Υ�åɤ� �ѿ���«�����뤳�Ȥʤ�á���äƤΤϤǤ���Τ��ʡ�
proc{}.call()
�ߤ����ʤΡ�
(00:57)
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)
�ޤ��������������� ��ꤿ�����Ȥ����뤱�ɤǤ��Ƥʤ��� �äƻ��˽��������Τ�Τ�Ф��ʤ������Ϥ�������ʤ���
(04:55)
��ä���Ũ��
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://mixi.jp/view_bbs.pl?id=5933534&comm_id=665545
�Ǥ������줫���Ÿ�������Τ��ߤǤ���
(16:27)
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)
http://www.namikilab.tuat.ac.jp/~sasada/prog/t2nani.html
����ʤä���
(22:00)
/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 [(^^^)]