2007-06-01から1ヶ月間の記事一覧

Ruby会議 1日目

JRubyの開発者の話がなかなか興味深かった。 Javaの複数言語サポートってあくまでJavaを補完するものだと考えていたから「Rhino <<<<< JRuby」と考えていたけど、Railsアプリをwarにするデモを見たら「RhinoとJRubyじゃぜんぜんポジションが違うんだな…

データを保存?

http://rblog-tech.japan.cnet.com/kirifue/2007/06/chachalemooos_6ce3.html さらに言えば、サーバーに他人のデータを保存する行為は、著作権侵害と捉えられる恐れがある。画像や文章のコピーを断りなく蓄えるのは、非常にまずいような気がするのだが..(…

RubyKaigi

一応、参加。明日、起きれるかなぁ…

link:RubyAndXML

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RubyAndXML メモ。あどで各パーサの速度を計ってみよっと。

svn diffで空白を無視する

http://subversion.bluegate.org/doc/ch03s05.html#ftn.id3018717 たまに、改行コードの一括置換とかしたりするので。

REXML:パーサの速度を計ってみる

REXMLにもパーサがいろいろあるので、各パーサの速度を計ってみた。

getElementById()を計ってみる

なんとなく遅いと思っているgetElementById()だけど、「なんとなく」はよくないな…と思って計ってみる。

getElementById()を計ってみる その2

同じコードをFirefoxで計ってみたら、それほど差がなかった。

link:JavaScriptでメモ化

http://d.hatena.ne.jp/sawat/20060804 キャッシュする関数ばかり書いてたら、汎用的なメモ化機能が欲しくなったので調べてみた。 メモメモ。

link:Debugging JavaScript in Your Applications

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…

profile

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…

隠れたeval

prototype.jsのAjax.RequestとかのevalScripts――正式な名称はよく知らないけど、レスポンスで返されたJavaScriptを評価する機能――には、たまにひどい目にあわされる。 ごく普通の<script>〜</script>で囲まれただけのスクリプトのふりをするから、どんどんシステムに浸透して…

forkしてPIDファイルを作る

あってるのやら… 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…

GDBMサーバ(dRuby板)

オーバーヘッドを気にして使わなかったdRubyでGDBMサーバ作ってみる…というか、まあ、排他制御しなければ、何もやることない… require 'gdbm' DRb.start_service('druby://localhost:12345', GDBM.open('my.db')) sleep 速度は5倍くらい遅くなる。1000アク…

つClick

Rubyを仕事にしてみると、結構、Javaのよい所を再認識することもしばしば。 個人的な活動にはRubyを使ってるけど「サイズがあっているから」という理由も大きいし… 複数人でのプロジェクトなら、Javaを選択することが多いかも。

link:職場の雰囲気を悪くしている、見えない「私」

http://lifehacking.jp/2007/06/the-four-letter-word/ あー、わかるわかる。

スケジュールよりタスク

スケジュールをかっちり決めるより、タスクを明確にするほうが重要だと思う。 誰もよく分かっていないタスクが、なぜかスケジューリングされていることもあるし…

Screen FAQ

http://www4.informatik.uni-erlangen.de/~jnweiger/screen-faq.html 一応、メモ。

echoサーバ

簡単な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…

GDBMサーバ

とりあえず、作ってみた。サーバのコードがこんな感じ。 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…

memcachedメモ

FFTT : memcached メモ - memcached + ruby « /ja super jump <me> memcache-client memcache-client の使い方 APIドキュメント 排他制御してないのかぁ…ライブラリのほうで何とかしてないかな? 追記 よく考えるとライブラリはクライアントと同じプロセスで動い</me>…

Mutex、Mutex_m、Sync、Sync_m、Queue

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だと共有ロックがかけられます…と。 ( ) (,,゚Д゚) \__________…

とりあえずmemcachedを使ってみる

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の検証

以下のスクリプトでflockの動作を検証してみた。 当たり前の話かもだけど、よく混乱するのでメモ。 つぎ SHEXSH | NBEX | NB はじめSH開く待ち開くfalseが返る EX待ち待ちfalseが返るfalseが返る SH | NB開く待ち開くfalseが返る EX | NB待ち待ちfalseが返る…

gdbm: ラッパーその2

さすがに読み取り時も排他ロックをかけるのはまずそうなので、読み取り時は共有ロックをかけるようにしてみる。 require 'gdbm' class GDBMStore @@READABLES = [ :[], :each, :each_key, :each_pair, :each_value, :empty?, :fetch, :has_key?, :has_value?…

gdbm: ラッパーをPStoreと比べてみる

さすがに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…

gdbm: ロックをなくしてみる

ロックをしないようにしてみる。 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: もうラッパーじゃない

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さすがに…