2007-06-01から1ヶ月間の記事一覧
JRubyの開発者の話がなかなか興味深かった。 Javaの複数言語サポートってあくまでJavaを補完するものだと考えていたから「Rhino <<<<< JRuby」と考えていたけど、Railsアプリをwarにするデモを見たら「RhinoとJRubyじゃぜんぜんポジションが違うんだな…
http://rblog-tech.japan.cnet.com/kirifue/2007/06/chachalemooos_6ce3.html さらに言えば、サーバーに他人のデータを保存する行為は、著作権侵害と捉えられる恐れがある。画像や文章のコピーを断りなく蓄えるのは、非常にまずいような気がするのだが..(…
一応、参加。明日、起きれるかなぁ…
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RubyAndXML メモ。あどで各パーサの速度を計ってみよっと。
http://subversion.bluegate.org/doc/ch03s05.html#ftn.id3018717 たまに、改行コードの一括置換とかしたりするので。
REXMLにもパーサがいろいろあるので、各パーサの速度を計ってみた。
なんとなく遅いと思っているgetElementById()だけど、「なんとなく」はよくないな…と思って計ってみる。
同じコードをFirefoxで計ってみたら、それほど差がなかった。
http://d.hatena.ne.jp/sawat/20060804 キャッシュする関数ばかり書いてたら、汎用的なメモ化機能が欲しくなったので調べてみた。 メモメモ。
http://www.codestore.net/store.nsf/unid/DOMT-5UBUVW?OpenDocument http://www.microsoft.com/downloads/details.aspx?familyid=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&displaylang=en 無料でダウンロードできるScript Debuggerを使った、IEでのJavaScript…
http://www.ruby-lang.org/ja/man/?cmd=view;name=profile 出力内容をきちんと理解していなかったのでおさらい。簡単なスクリプトで実験。 def bar sleep 7 end def zoo 1000.times{|i| puts i} end def foo bar zoo end foo foo % cumulative self self tot…
prototype.jsのAjax.RequestとかのevalScripts――正式な名称はよく知らないけど、レスポンスで返されたJavaScriptを評価する機能――には、たまにひどい目にあわされる。 ごく普通の<script>〜</script>で囲まれただけのスクリプトのふりをするから、どんどんシステムに浸透して…
あってるのやら… def run_as_daemon(gdbm_srv, pidfile) fork { Process.setsid open(pidfile, 'w') {|f| f << Process.pid } if pidfile trap(:INT) { gdbm_srv.shutdown; exit! 0 } trap(:TERM) { gdbm_srv.shutdown; exit! 0 } File.open('/dev/null', 'r…
オーバーヘッドを気にして使わなかったdRubyでGDBMサーバ作ってみる…というか、まあ、排他制御しなければ、何もやることない… require 'gdbm' DRb.start_service('druby://localhost:12345', GDBM.open('my.db')) sleep 速度は5倍くらい遅くなる。1000アク…
Rubyを仕事にしてみると、結構、Javaのよい所を再認識することもしばしば。 個人的な活動にはRubyを使ってるけど「サイズがあっているから」という理由も大きいし… 複数人でのプロジェクトなら、Javaを選択することが多いかも。
http://lifehacking.jp/2007/06/the-four-letter-word/ あー、わかるわかる。
スケジュールをかっちり決めるより、タスクを明確にするほうが重要だと思う。 誰もよく分かっていないタスクが、なぜかスケジューリングされていることもあるし…
http://www4.informatik.uni-erlangen.de/~jnweiger/screen-faq.html 一応、メモ。
簡単なechoサーバを作ったら、Ctrl-Cでサーバが落ちない。 require 'socket' alive = true trap(:INT) { alive = false } TCPServer.open('echo') {|server| while alive Thread.fork(server.accept) {|sock| begin while s = sock.gets puts ":#{s}" sock.w…
とりあえず、作ってみた。サーバのコードがこんな感じ。 require 'gdbmstore' gdbm_srv = GDBMStore::Server.new('gdbmstore.db', 18211) gdbm_srv.logger = lambda {|method, params| $stderr.puts "#{method}: #{params.join(',')}" } trap(:INT) { gdbm_s…
FFTT : memcached メモ - memcached + ruby « /ja super jump <me> memcache-client memcache-client の使い方 APIドキュメント 排他制御してないのかぁ…ライブラリのほうで何とかしてないかな? 追記 よく考えるとライブラリはクライアントと同じプロセスで動い</me>…
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C5%BA%C9%D5%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA Mutex Sync Sync_m Queue ∧_∧ カタカタ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ) ∧ ∧ < Syncだと共有ロックがかけられます…と。 ( ) (,,゚Д゚) \__________…
require 'rubygems' require 'memcache' cache = MemCache.new('localhost:11211') 1000.times do |i| cache[i.to_s] = (i * i).to_s end 1000.times do |i| cache[i.to_s] end ~$ time ruby validate-memcached.rbreal 0m1.048s user 0m0.015s sys 0m0.031s…
わざわざDB使いたくないなー…から始まってmemcachedまで来たけど、memcachedをDB代わりに使うのは「何か違うだろ!」と心の奥から警告が。永続化してるんだかしてないんだか、よく分かんないし。 素直にDB使えってことかなー。でも、機能的にはハッシュでい…
デザイナーがデザインの改善を要求するとき、修正にかかるコストやスピード・メンテナンス性を犠牲にすることは考慮していない気がする。なんとなくインターフェースが気に食わない、だから「補完機能を入れて」「ボタンを3ピクセル上にずらして」。 翻って…
以下のスクリプトでflockの動作を検証してみた。 当たり前の話かもだけど、よく混乱するのでメモ。 つぎ SHEXSH | NBEX | NB はじめSH開く待ち開くfalseが返る EX待ち待ちfalseが返るfalseが返る SH | NB開く待ち開くfalseが返る EX | NB待ち待ちfalseが返る…
さすがに読み取り時も排他ロックをかけるのはまずそうなので、読み取り時は共有ロックをかけるようにしてみる。 require 'gdbm' class GDBMStore @@READABLES = [ :[], :each, :each_key, :each_pair, :each_value, :empty?, :fetch, :has_key?, :has_value?…
さすがにPStoreより遅かったら、作った意味もなさそうなので。 PStore require 'pstore' db = PStore.new("pstore.db") 1000.times do |i| db.transaction do db[i.to_s] = (i * i).to_s end end 1000.times do |i| db.transaction(true) do db.fetch(i.to_s…
ロックをしないようにしてみる。 def fetch(key) GDBM.open(@dbfile) {|dbm| dbm[key]} end def []=(key, value) GDBM.open(@dbfile) {|dbm| dbm[key] = value } end ~$ time ruby validate_gdbmstore.rbreal 1m15.812s user 0m0.015s sys 0m0.046sでも、遅…
gdbm直たたき。 def initialize(dbname) @dbm = GDBM.open(File.expand_path(dbname)) end def fetch(key) @dbm[key] end def []=(key, value) @dbm[key] = value end ~$ time ruby validate_gdbmstore.rbreal 0m0.297s user 0m0.015s sys 0m0.015sさすがに…