トップ «前の日(12-09) 最新 次の日(12-11)» 追記   RSS 1.0 FEED  

Journal InTime


2002-12-10 (Tue)

_ 竜王戦

第4局は257手の激闘を制しての阿部勝ち。

これで面白くなった。


2003-12-10 (Wed)

_ Eclipse

apt-get dist-upgradeでまともに動くようになった。

Black-sunというプラグインでC#コード の編集ができるようになった。 (J2RE 1.4でないと動かないので注意が必要…ってさらりと書いてるけどかなりハマった。) Improve C# Plugin よりも良さそうな感じだ。 (Outlineが表示できるところとか。)

しかし、やっぱりJava用の環境の方が使いやすそうだなあ…。


2004-12-10 (Fri)

_ modruby.net expired

また、expireされてたorz...

去年もgandiからのメールがspamあつかいされたためにexpireされて、 あわてて学習させたのだが、またspamあつかいされていた。 しかたないので、.procmailrcにルールを追加して無理矢理救済。うーむ。

Tags: その他

_ trac

mod_rubyにもtracを導入。 Roadmapどおり行くかな?

Tags: mod_ruby

2009-12-10 (Thu)

_ instance_eval/class_evalの仕様変更

Ruby 1.9で変更されていた、instance_eval/class_evalのブロック内での定数・クラス変数の探索時の挙動を1.8の挙動に戻した(r25984)。 たとえば、class_evalの場合、レシーバが探索対象に含まれなくなったので注意してください。

1.9の新しい挙動の方が一貫性があってわかりやすいと思っていたが、メタプログラミングではレシーバに何が来るかわからないことが多く、定数名の衝突が問題になるため、Yehuda Katzの強い要望で結局元に戻すことになった。これで、Railsの1.9対応が加速するかも?

また、ブロックパラメータについても、1.8同様にレシーバが渡されるようになった(r26062)。

ちなみに、Yehuda Katzがしきりに定数のスコープをlexicalと言っているが、厳密にはlexicalじゃないと思う(わかった上でわかりやすさを優先してそう言ってるだけかもしれないけど)。

Tags: Ruby

2011-12-10 (Sat)

_ 素数の計算

Haskellで素数を求めるコードは、以下のように簡潔に書ける。

sieve (x:xs) = x : sieve [y | y <- xs, y `mod` x /= 0]
primes = sieve [2..]

main = print $ primes !! 1000

これが遅いのは有名だけど、実はSICPにも同じような例がある。

(define (integers-starting-from n)
  (cons-stream n (integers-starting-from (+ n 1))))

(define (divisible? x y) (= (remainder x y) 0))

(define (sieve stream)
  (cons-stream
   (stream-car stream)
   (sieve (stream-filter
           (lambda (x)
             (not (divisible? x (stream-car stream))))
           (stream-cdr stream)))))

(define primes (sieve (integers-starting-from 2)))

(display (stream-ref primes 1000))

MIT Schemeだとこのまま動いたが、Gaucheだと(use util.stream)した上でcons-streamはstream-consにする必要があるようだ。

比べてみるとHaskellの方が断然速い。

$ time ./prime
7927
./prime  0.11s user 0.00s system 95% cpu 0.122 total
$ time mit-scheme --batch-mode < prime.scm
7927mit-scheme --batch-mode < prime.scm  2.39s user 0.18s system 98% cpu 2.602 total
$ time gosh prime2.scm
7927gosh prime2.scm  14.84s user 0.06s system 99% cpu 14.979 total

別にSchemeが遅いと言いたいわけではなくて、このアルゴリズムは効率悪いけど、Haskell自体はやっぱり速いんだな、と。

しかし、Project EulerとかやるとやっぱりHaskellでも遅いのでprimesパッケージを使うのであった(ずるい)。 primesパッケージのprimesとかprimeFactorsはすごく速いけど、コード読んでもさっぱりわからないのでだれか解説してください。


2019-12-10 (Tue)

_ Textbringerのマーク

Textbringer Advent Calendar 2019の参加記事です。

TextbringerのマークはEmacs同様C-SPCでセットできる。

最近のEmacsではマークとポイント(カーソル位置)の範囲がデフォルトでハイライト表示されるようだが、Textbringerではエコーエリア(最下行)に控えめに「Mark set」と表示されるだけの、昔のEmacsのような挙動にしている。

マークしたからといって必ずしもリージョン(マークとポイントの範囲)のコピーなどの操作を行うわけではなく、C-x C-x(exhange_point_and_mark)でマークとポイントの位置を入れ替えたりといった用途もあるので、これはこれで合理的だと思っている。やっぱりやめた、という時にC-gとかでハイライト表示を消さなくていいし。

本日のツッコミ(全3件) [ツッコミを入れる]

_ kurod1492 [なるほど、そういう理由なんですね。ハイライトしてくれるEmacsに慣れてしまった身としては、ハイライトしてくれると嬉..]

_ shugo [プルリクエストお待ちしております。]

_ kurod1492 [がんばります]