2009-01-01から1年間の記事一覧

sparsehash 0.1.0

http://sparsehash.rubyforge.org/ リリースしました。ファイルはCodoReposに置いてます。 http://coderepos.org/share/browser/lang/ruby/ruby-sparsehash

Sparse Hash: Linuxでの測定

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/ruby-sparsehash/ext/sparsehash.cpp?root=svn&view=markup Linux上だと実用的な速度に見えなくもない。 [root@andLinux ruby-sparsehash]# ruby test.rb SparseHashMap 1000000 Sparsehash::SparseHashMa…

Twitter投稿プラグイン

http://storehouse.sakura.ne.jp/tpp/ Firefoxは常時立ち上げているので、検索窓からTwitterに投稿する検索プラグインを作ってみた。追記 これ、検索と間違えて投稿してしまうなぁ…追記2 期待していなかった副作用として、選択した箇所を右クリックで投稿で…

ついでにSTLのマップのバインディングも作ってみた

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/ruby-sparsehash/sparsehash.cpp?revision=2640&root=svn&view=markup テンプレート、強力だなー。 key_compareの実装の仕方があっているのかどうか…。 rnum= 100 10000 1000000 Hash 0.454 sec. / 0.168 …

Sparse HashのRubyバインディング

Sparse Hashに興味があったので、Rubyバインディングを作ってみた。http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/ruby-sparsehash/?root=svn #include "google/sparse_hash_map" #include "google/dense_hash_map" #include "sparsehash_internal.h" n…

Sparse HashのRubyバインディング: アクセス速度

一応、アクセス速度も測ってみる。 require 'sparsehash' require 'timeout' include Sparsehash [100, 10000, 1000000].each do |rnum| [Hash, DenseHashMap].each do |clazz| puts("#{clazz}: #{rnum}") hash = clazz.new (0...rnum).each do |i| buf = sp…

Sparse HashのRubyバインディング: charを使う

charを使えば少しは早くなるかもと思って、少し修正。 #include "google/sparse_hash_map" #include "google/dense_hash_map" #include "sparsehash_internal.h" #include <cstring> namespace { template <class T> struct Sparsehash { typename T *m; static void rb_sparse</class></cstring>…

ruby_errinfo -> rb_errinfo()

1.9でruby_errinfoがrb_errinfo()になったらしい。 Tue Jan 2 10:29:54 2007 Eric Hodel <drbrain@segment7.net> * ext/zlib/zlib.c: fix to compile on YARV ruby_errinfo -> rb_errinfo() Mon Jan 1 08:07:06 2007 Koichi Sasada <ko1@atdot.net> * ext/tk/tcltklib.c: fix to compile on YARV r</ko1@atdot.net></drbrain@segment7.net>…

read_bodyでジェネレータ

ジェネレータを使えば、呼び出し側トリガでread_bodyを回せるなぁ…と思って、少し頭をひねってみる。 #!/usr/bin/env ruby1.9 require 'net/http' require 'uri' require 'enumerator' class WebEnum def initialize(uri) @uri = URI.parse(uri) @http = Net…

net/httpでZIPファイルを開く

Zip/Rubyには、ProcオブジェクトをZIPのストリームとしてファイルを開くという、無駄な機能があるので、少し活用してみる。 #!/usr/bin/env ruby1.9 require 'net/http' require 'uri' require 'enumerator' require 'zipruby' class WebEnum def initialize…

link:Fat binary gems make the rockin’ world go round

http://tenderlovemaking.com/2009/05/07/fat-binary-gems-make-the-rockin-world-go-round/ しばらくはgemとパッケージ名を分けるけど、アーロンさんの案には賛成。 なんか手伝えないかな…。

sparse_hash_mapを使う

C++

http://google-sparsehash.googlecode.com/ APIは普通のMapと変わらない感じ。 #include <iostream> #include <google/sparse_hash_map> using namespace std; using namespace google; int main() { typedef sparse_hash_map<const char *, const char *> cmap; cmap m; m["foo"] = "hoge"; m["bar"] = "piyo"; m["zoo"] = </const></google/sparse_hash_map></iostream>…

標準出力は60KBまで

http://redmine.ruby-lang.org/issues/show/1063 今回のリリースでは直ったのかな?

るぱん?

http://rubypan.org/ なにこれ?

Ruby 1.9.1でfcloseで落ちる件

これか? 時間があったら追ってみよう。

link:Performance:Home Page

https://wiki.mozilla.org/Performance This page is meant to provide a starting point for developers who want to improve performance in Gecko and Firefox. Leak Toolsのページはもうちょいよく読もう。

クラスを使ってみる

訳あってperl。 新しいのと古いのが混在していて、どこを参照すべきか分からないなぁ… #!/usr/bin/env perl use warnings; use strict; use Carp; package Foo; sub new { my $class = shift; my $self = { x => 100 }; return bless $self, $class; } sub f…

デストラクタ

デストラクタがあることに少しびっくりした。 参照カウンタの成せる技かな。 #!/usr/bin/env perl use warnings; use strict; use Carp; package Foo; sub new { my ($class, $x) = @_; print "Foo::new($x)" . "\n"; bless { x => $x }, $class; } sub func…

URLデコード

非破壊的な置換ってどうやるんだろう? #!/usr/bin/env perl use warnings; use strict; use Carp; sub url_decode { my ($str) = @_; $str =~ s/%([\da-f]{2})/pack('C', hex($1))/egi; return $str; } my $x = "%83E%83B%83L%83y%83f%83B%83A"; print url_…

なんでnoraは出てこないんだろう?

http://jp.rubyist.net/magazine/?0001-NoraTutorial 軽量Webフレームワークとしては昔からあるのに話題にならないなぁ。 テンプレートが独特だからかな?

bar

http://www.theiling.de/projects/bar.html 使い方がいまいちよく分からない。 もうちょいよく読もう。

link: 有害な csh プログラミング

http://www.kiso.tsukuba.ac.jp/~makimura/text/node239.html 昔「cshはクソだ!」という趣旨の文章を読んだなぁ、と思って探したらあった。 これを読んで「cshはだめだめだ」と勝手に洗脳されていたけど、今は昔の話だなー。 最近のギーグな人たちはzshを使…

Zip/Ruby 0.3.0

http://rubyforge.org/frs/?group_id=6124 名前がまぎらわしいと評判のZip/Ruby 0.3.0をリリースしました。 変更点は以下の通り。 Ruby 1.9に(一応)対応 add_io()/replace_io()/add_or_replace_io()で、IOのサブクラス(Fileとか)を引数にとれなかったバグ…

バグを制御する

DEV

たぶん愚痴。 2〜3ヶ月前にちょっとしたリリースがあって、その前後でバグが発覚し、いろいろとごたごたしていた。いや〜な時間に電話がかかってきたり、いや〜な時間に出社したりと、よくあるトラブルに見舞われていたが、今は(一見)普通に動いているの…

Git Extensions

http://gitextensions.sourceforge.net/ Visual Studioのアドインが含まれているらしい。 mingw版使ってんのかな?

Zip/Ruby:落ちた…

fcloseで落ちてるっぽい。rubyの関数に置き換えられてんのかな? test.rb:3: [BUG] Segmentation fault ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]-- control frame ---------- c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :open c…

Ruby1.9.1: やっぱりfcloseで落ちてるっぽい

ASRに含まれているrubyは、たぶんruby-1.9.1-p0-i386-mswin32。 VC 9.0だとだめなのかな? #include <stdio.h> #include "ruby.h" static VALUE myfunc(VALUE self) { FILE *f; char buf[256]; f = fopen("C:/foo.txt", "r+b"); fgets(buf, 256, f); printf("%s\n", b</stdio.h>…

Ruby1.9.1: やっぱりfcloseで落ちてるっぽい その2

いろいろやってみる。 /MT→だめ fopen_s→だめ ruby.hを最初にインクルード→だめ msvcrt-ruby191-static.libをリンク→うまくビルドできない…orz WSAAPIを定義してみる→ビルドできない fdopenしてfclose→だめ 追記 _fclose_nolockにしたら一応直った。 たぶん…

Ruby 1.9.1(mswin32)でziprubyをビルドできた

とりあえず、今月中のリリースが目標。 API的な不備はなかったからLinuxでもビルドできると思うけど、環境を用意しないと…。以下、VC2008ビルドメモ。 config.hのバージョンチェックをコメントアウト windows.hをインクルードしない zipruby側のプロジェクト…

Xの設計思想

http://ja.wikipedia.org/wiki/X_Window_System なかなか興味深い。 実際のアプリケーションでどうしても必要という場合以外は、新機能を追加するな。 システムが何でないのかを定義することは、何であるのかを定義するのと同じように重要である。あらゆるニ…