2006年 11月 22日

Thread

そういえば Ruby 以外の LL のスレッド生成方法を全然知らないことに気付いた。JS は timeout/interval で疑似スレッドだしなぁ。
Perl の threads は使おうとするとハマりそう。とにかくスレッド作る時変数がコピーされることと、threads->new (複数形) なことを忘れなければいいのかな。

Socket

Ruby のソケットって壮絶に簡単なんだなぁと、他の言語を見てて思う。単に慣れてないだけ、というつっこみっっっっっっg

Fx のプロキシ設定を自動化

どうするのがいいんだろう。FoxyProxy が使いにくいし、場所変わるたびに設定するのがめんどくさい。
自動設定ファイルにしても再起動しないと適用されないし、うーん。
あと SSH のトンネリングもちゃんと自動化したいなぁ。ただスリープ入った時に SSH が固まるのがめんどくさい。

Hash merge

require 'pp'

class Hash
	def deep_merge(other)
		deep_proc = Proc.new { |k, s, o|
			if s.kind_of?(Hash) && o.kind_of?(Hash)
				next s.merge(o, &deep_proc)
			end
			next o
		}
		merge(other, &deep_proc)
	end
end

a = {
	:hoge => 'hoge',
	:fuga => {
		:aaaa => 'aaaa',
		:bbbb => 'bbbb',
		:dddd => {
			:test => 'test',
		}
	},
}

b = {
	:hoge => 'hoge',
	:hage => 'ore',
	:fuga => {
		:bbbb => 'baka',
		:cccc => 'remon',
		:dddd => {
			:TTst => 'test',
		}
	},
}

pp a.merge(b)
pp a.deep_merge(b)
:!/usr/bin/ruby tmp/test.rb                                                                                                                                                   
{:hoge=>"hoge",
 :hage=>"ore",
 :fuga=>{:bbbb=>"baka", :dddd=>{:TTst=>"test"}, :cccc=>"remon"}}
{:hoge=>"hoge",
 :hage=>"ore",
 :fuga=>
  {:aaaa=>"aaaa",
   :bbbb=>"baka",
   :dddd=>{:TTst=>"test", :test=>"test"},
   :cccc=>"remon"}}

みたいなのって AS にもあったりするのかな

わー

Perl のテストの書き方わかんねー(基本がそもそも

perl -Ilib t/*.t でいいのだろうか