2006-06-13
YARV はユーザスレッドじゃない
というのをきいたので適当なの書いて ruby 1.8.4 と比べようとおもった。
require 'thread'
require 'webrick/utils'
include WEBrick::Utils
threads = []
10000.times do
threads.push(Thread.start(random_string(16)) {|filename|
File.open("tmp/#{filename}", 'w') {|f| f.write random_string(1024) }
})
while Thread.list.size > 100
sleep 0.01
end
end
threads.each {|t| t.join }
実行してみる。
gorou[1]$ time ruby-yarv test.rb
test.rb:8:in `start': failed to allocate memory (NoMemoryError)
from test.rb:8:in `block in '
from test.rb:7:in `times'
from test.rb:7:in `'
[2] 11333 segmentation fault ruby-yarv test.rb
ruby-yarv test.rb 4.02s user 1.02s system 99% cpu 5.059 total
落ちた。ふつうの ruby
gorou[1]$ time ruby test.rb
ruby test.rb 15.07s user 3.95s system 94% cpu 20.051 total
とおった。YARV
gorou[1]$ time ruby-yarv test.rb
test.rb:8:in `start': failed to allocate memory (NoMemoryError)
from test.rb:8:in `block in '
from test.rb:7:in `times'
from test.rb:7:in `'
[2] 16978 segmentation fault ruby-yarv test.rb
ruby-yarv test.rb 4.04s user 1.07s system 86% cpu 5.909 total
落ちた。
えーん、YARV だと落ちる><ノ。ちなみに
$ ruby-yarv -v
ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [i686-linux]
YARVCore 0.4.0 Rev: 504 (2006-05-31) [opts: ]
な環境。
シンメトリー化するブックマークレット
ログあさってたら出てきたよ。WinIE 専用。うまくいくページは結構それっぽくなるな。こことかこことか。CSSじゃなくて table なレイアウトだとうまくいくことがおおいぽ。
javascript:(function(){w=document.body.clientWidth/2;document.body.insertAdjacentHTML("BeforeEnd","<\/iframe><\/div>");})();
</pre><p>from <a class="okeyword" href="http://d.hatena.ne.jp/keyword/%B2%F7%C2%AE">快速</a><a class="okeyword" href="http://d.hatena.ne.jp/keyword/%B2%BD%B3%D8">化学</a>の<a class="okeyword" href="http://d.hatena.ne.jp/keyword/wiki">wiki</a>の<a class="okeyword" href="http://d.hatena.ne.jp/keyword/google">google</a><a class="okeyword" href="http://d.hatena.ne.jp/keyword/%A5%AD%A5%E3%A5%C3%A5%B7%A5%E5">キャッシュ</a>より。<p class="share-button sectionfooter">
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fsubtech.g.hatena.ne.jp%2Fsecondlife%2F20060613%2F1150205016&layout=button_count&show_faces=false&width=100&action=like&colorscheme=light&height=21" style="border:none; overflow:hidden; width:100px; height:21px;">
aとかbとかcの話
先日ふつハスに青木さんのサインを頂いたんだけど、Haskell は一度置いておいて、これまた青木さんサイン入りのふつリナを途中からもう一度読み始めようかなぁ。やっと ruby の拡張ライブラリのコードがほんのちょっとづつ読めるようになってきて楽しくなってきたし。なので RHG 読みたいし。
vim script
ちょこっとだけ書き方解った。それはそうと vim-ruby でもうちょっと組み込みで便利メソッドが定義されてるとイイナー、と思った。今はこんなん付け足して使ってる。module VIM
class Buffer
def clean!
count.times {|l| delete(l + 1) }
end
def write(str)
str.each_line {|s| append(count, s.chomp) }
end
def read
(1..count).inject([]) {|a, l| a << self[l] }.join("\n")
end
def self.bdall!
self.count.times { VIM.command "bd!" }
end
end
end
vim メモ:mes
メッセージ履歴
randam_string$ ruby -rwebrick/utils -e 'puts WEBrick::Utils.random_string(8)'
TZPzPj2s
nrhd
fub に user.js ができた記念
Ctrl + Enter 必須!つーことで。// ==UserScript==
// @name Submit on Ctrl-Enter for WinIE
// @namespace http://tokyoenvious.xrea.jp/
// @description Submit form when you pressed in textarea.
// ==/UserScript==
(function() {
var forms = document.getElementsByTagName('form');
for (var i = 0, form; form = forms[i]; ++i)
{
var textareas = form.getElementsByTagName('textarea');
for (var j = 0, textarea; textarea = textareas[j]; ++j)
{
textarea.attachEvent(
'onkeydown',
(function(form) {
return function(event) {
if (event.ctrlKey && event.keyCode == 13)
form.submit();
}
})(form)
);
}
}
})();
http://tokyoenvious.xrea.jp/b/javascript/submit-on-c-enter-greasemonkey.htmlほとんど元のコードまんまでいけたよ。んでも毎回 keydown イベントで関数呼ばれるからめっちゃおそいよIE。Firefox じゃこんなことないんだけどな。。
Logger
ruby の Logger で昔の世代は gzip にして、つーのをやりたかったんだけど Logger::LogDevice の差し替えってできないのね。Logger::LogDeviceGzip とかに差し替えたかったのに。というよりオプションでLogger.new('foo.log', :age => 10, :size => 1.megabyte, :gzip => true)
とかするために initialize が def initialize(logdev, *args)
@progname = nil
@level = DEBUG
@default_formatter = Formatter.new
@formatter = nil
@logdev = nil
if logdev.kind_of?(LogDevice)
@logdev = logdev
elsif logdev
@logdev = LogDevice.new(logdev, *args)
end
end
とかならいいのなぁ。というわけで override して対処。これじゃ DHH に文句いえないよ><begin
require 'zlib'
class Logger
class LogDevice
def shift_log_age
(@shift_age-3).downto(0) do |i|
if FileTest.exist?("#{@filename}.#{i}.gz")
File.rename("#{@filename}.#{i}.gz", "#{@filename}.#{i+1}.gz")
end
end
@dev.close
Zlib::GzipWriter.open("#{@filename}.0.gz") do |gz|
gz.write IO.read(@filename)
File.unlink(@filename)
end
@dev = create_logfile(@filename)
return true
end
end
end
rescue LoadError
end
しょこたん
はましょーのブログってみたことなかったんだけどタイトルから配色からレイアウトから…
miv
Line completion:
File や Omni はよく使うから知ってたけど Line はしらんかった。あんま使うことなさそうだけど。
サッカーを見てないのは非国民!
奄美は問題ないのか!