RUBY

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とパッケージ名を分けるけど、アーロンさんの案には賛成。 なんか手伝えないかな…。

標準出力は60KBまで

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

るぱん?

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

Ruby 1.9.1でfcloseで落ちる件

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

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

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

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とか)を引数にとれなかったバグ…

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側のプロジェクト…

バッチで切り替えることにした

そろそろ1.9.1も考慮しないと…ということで、当面、バッチでの切り替えで過ごすことにした。 @echo off if exist C:\usr\local\ruby-1.8.orig ( move C:\usr\local\ruby-1.8 C:\usr\local\Ruby-1.9.1 > NUL move C:\usr\local\ruby-1.8.orig C:\usr\local\ru…

Windows-31JとShift_JIS

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/35774 Windows-31JとShift_JISのどちらを使うべきか迷ったので、すこし調べてみる。 エイリアスじゃなくて複製なのは、将来的な拡張を見越してかなぁ?それともRuby内部でも実際に違うのかしら…

link:多言語化

http://doc.loveruby.net/refm/api/view/spec/m17n メモメモ。

AquesTalk/Rubyの修正

https://twitter.com/hajimepg/status/1316278995 こーゆーつぶやきがあったので、帰ったら修正します。 #include <windows.h> #include "ruby.h" static VALUE ruby_path(VALUE self) { HMODULE hModule; char path[_MAX_PATH]; char short_path[_MAX_PATH]; hModule =</windows.h>…

ruby.exeのパスを取得する

#include <windows.h> #include "ruby.h" static VALUE ruby_path(VALUE self) { HMODULE hModule; char path[_MAX_PATH]; hModule = GetModuleHandleA(NULL); GetModuleFileNameA(hModule, path, _MAX_PATH); return rb_str_new2(path); } __declspec(dllexport) void </windows.h>…

AquesTalk/Ruby: おおむね完成

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/aqtk-ruby/?root=svn http://aqtk.rubyforge.org/ ※リリース済み 要AquesTalk。以下の文章なら一発で読み上げられるようになった。 require 'aqtk' AquesTalk::Da.play_sync(<

AquesTalk/Ruby 0.1.0

http://aqtk.rubyforge.org/ リリースしました。

AquesTalk/Ruby(作りかけ)

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/aqtk-ruby/?root=svn だいたい出来てきた。特徴としては… KAKASIを組み込んであるので(ある程度)漢字が読める 辞書をリソースとして取り込んでいるので、一応、辞書いらず やること。 英語をなんとかする …

拡張ライブラリにリソースを埋め込む

#include <windows.h> #include "resource.h" #include "ruby.h" static HINSTANCE hDll; static VALUE get_rc(VALUE self) { VALUE str; HRSRC hRc; HGLOBAL hGm; LPVOID p; long size; hRc = FindResourceA(hDll, MAKEINTRESOURCEA(IDR_TEXT1), "TEXT"); if (hRc == N</windows.h>…

aqtk: AquesTalk Ruby拡張

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/aqtk/?root=svn http://aqtk.rubyforge.org/ ※リリース済み Win32専用。実行にはAquesTalkのDLLが必要。 そのうちRubyForgeに登録して、CodeReposに移す予定。 使い方はこんな感じ。 require 'aqtk' # 再…

KAKASIを使って増田を音声読み上げ

ソースはこれ。 汎用化しようとするとnormalizeがたいへんそうな気が。 $KCODE = 's' ENV['KANWADICTPATH'] = 'C:\usr\local\kakasi\share\kakasi\kanwadict' ENV['ITAIJIDICTPATH'] = 'C:\usr\local\kakasi\share\kakasi\itaijidict' require 'rubygems' re…

mysql-2.8.1-x86-mswin32

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/mysql-2.8.1-x86-mswin32/?root=svn ビルドしてみました。 WindowsでMySQL/RubyとMySQL 4.1を使っていてプリペアードステートメントがうまく動かないという人は、↑のバイナリで直るかもしれないです。 使…

MySQL/Ruby: fetch_row()

static VALUE fetch_row(VALUE obj) { MYSQL_RES* res; unsigned int n; MYSQL_ROW row; unsigned long* lengths; VALUE ary; unsigned int i; check_free(obj); res = GetMysqlRes(obj); n = mysql_num_fields(res); row = mysql_fetch_row(res); lengths =…

MySQL/Rubyの不具合調査 その2

mysql_stmt_bind_result()でこけてるみたい。 サンプルプログラムだとmysql_fetch_fields()で結果の型をセットするコードはうまくうごいているように見える。 ビルド時と現在で定数の定義が変わった、なんてことはないよなぁ…。 win32バイナリビルド時のMySQ…

Windows版のMysql/Rubyでプレースホルダのバインドが失敗する

CR_UNSUPPORTED_PARAM_TYPEでこける。 Windows版は2.7.3までしか提供されてないけど、2.8.1にしたら直るかなー? WIndows版はgemのメンテナンス状況がよく分かんないなー。

isitruby19.com • Community-powered gem compatibility for ruby 1.9

http://isitruby19.com/ こんなサイトが出来ていたとわ!徐々に移行は進んでいるのかなー。 追記 あ、libarchiveは動いてた。

肉の日リリース出来なかった。。。

初めて知ったよ。来年こそは。

C++のusing namespaceみたいなことをやる

ブロック単位でincludeとかサポートされるといいのになー。 #!/usr/bin/env ruby def using_namespace(*mods, &block) ctx = Object.new mods.each {|m| ctx.extend(m) } ctx.instance_eval(&block) end module Foo def bar puts 'bar' end end using_namesp…