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にルールを追加して無理矢理救済。うーむ。
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じゃないと思う(わかった上でわかりやすさを優先してそう言ってるだけかもしれないけど)。
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とかでハイライト表示を消さなくていいし。
_ kurod1492 [なるほど、そういう理由なんですね。ハイライトしてくれるEmacsに慣れてしまった身としては、ハイライトしてくれると嬉..]
_ shugo [プルリクエストお待ちしております。]
_ kurod1492 [がんばります]