現実逃避のお供に。 ワンライナーじゃないすけど。
class Symbol def to_proc Proc.new do |*args| args.shift.__send__(self, *args) end end def [](*args) args.inject do |car, cdr| car.__send__(self, cdr) end end end l = "a b c d e f foo1 foo2 foo3 foo4 foo5 bar1 bar2 bar3 bar4 bar5 baz1 baz2 baz3 baz4 baz5 j k l m n o p" ary = l.chomp.split(/\t/, -1) table = [6, 5, 5, 5, 7].map do |i| ary.slice!(0, i) end head = table.shift tail = table.pop :zip[*table].map(&:flatten).each do |r| puts((head + r + tail).join("\t")) end
[追記] .map(&:flatten) が要らねぇ。Array#join.thanks!
Version: '1.5.0_rc0' なやつ。
/* Force "Connection: close" for Mozilla browsers to work around * a bug where XMLHttpReqeuest sends an incorrect Content-length * header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType) requestHeaders.push('Connection', 'close');
これ、Bugzilla#246651 はもう閉じちゃってるような気がするんだけど、 まだ Keep-Alive: に出来ないのかな。periodically_call_remote で頻繁にサーバのご機嫌を伺わないとダメなんだけど、 CLOSE_WAIT なソケットが一杯出来て、あんまりうれしくないなぁ。試しに下 2 行をコメントアウトしてみても、 ちゃんと動いてるようには見える。と言っても、渡すデータによって計算を間違えたりするのかなぁ。改行だけって書いてある?よなぁ。
それよりも、prototype.js ベースでは、サーバ側で何か起こった時に、 クライアントに何かを通知って出来ないかな。:frequency を長くして、:complete なり :success/:failure なりで再接続、 サーバ側は、何か起こるまで Controller#action 内で待機、とか。 ActiveRecord::Observer とかで出来ないかなー。