ブックマーク / www.artonx.org (5)

  • L'eclat des jours(2011-10-07)

    _ マルチプロセスの恐怖 Windows固有の話かも知れないけれど、と前置きして、以下の処理の流れがあるとする。 1) プロセスAが実行を開始する。 2) プロセスAは既存のファイルaを置き換えるファイルbを作成する。 3) プロセスAはファイルbをファイルaへコピーする。 4) プロセスAはプロセスBを起動する。 5) プロセスBはファイルaを読む。 この流れで、Bが3でコピーしたaを読めないことがある。 これが、 5) プロセスAはファイルaを読む であれば、それが失敗することはない。 が、異なるプロセスとなった途端に失敗することがある(成功することもある)。 それが遅延書き込みが原因なのか、ウィルス対策ソフトが原因なのか、両方なのか、より何か上等なキャッシュが原因かはわからないのだが、(なので回避方法が良くわからない。これがCreateFileのようなAPIを使っていれば、遅延書き込

  • L'eclat des jours(2010-08-29)

    _ RubyKaigi2010 2日目 この日は、JRubyKaigiでLTやった。 発表資料 なんか最後まで走りきれなかった。 走りきれなかったといえば、大場さんのRAVAデモ(jrubyの上でravaを動かして、その上でjrubyを動かして、その上ででravaを動かして、というのを12単衣にして、美しき日Rubyというのを示すということに最終的にはなるはずのもの)が、まったくそこまでたどり着けなかったのが残念というか、観ていると余裕たっぷりに時間を使っているので予定調和としてデモまでたどり着かないのかと思った。後で聞いたら実際に動く(JRubyはクラスが不足しているから無理だけどfibは動く)というか動かすようにするためにravaのrequire循環参照のバグを潰さなければならなくてひどい目にあったとか。その成果物のrava。 あとは、えんどうさんのquine(特にエンディングの5

  • L'eclat des jours(2010-06-22)

    _ ジェネレーションギャップサンドイッチパターン 基底クラスと大量の派生クラスをジェネレートするのだが1ファイルにしたい。かつ、手書きクラスを基底クラスと派生クラスの間に挟みたい。 完全にファイルレベルで循環参照だ。でも派生クラス群をばらばらファイルに分けたくない。 で、ダメ元で作ってみたらちゃんとコンパイルできた。 このへんはC++のincludeよりJavaのimportのほうが格段に上だな。(まあ処理が違うから比較しても意味ないけど)

  • L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • L'eclat des jours(2009-05-21)

    _ ホルン 中学か高校のころ買って暗記はしないまでも相当読み込んだが出てきたので子どもにやって、それは良いのだが、さっきちょっと読んでいて驚愕した。 立体クラシック音楽 (1972年)(吉崎 道夫) 古いだから、ニグロの音楽というような表現があって、そういうのを目にするとなんかすごく嫌な感じを受けるのは、いかにおれが社会的な動物かという証左だなぁとか、はどうでも良くて。 なんとホルンは金管楽器だったのか! つい先日も子どもに金属なのに木管ってのはけっこうあって、ピッコロ、ジャジャマル、フルート、ポロリン、ホルンとかえらそうなことを言った記憶がある。 イングリッシュホルン(というか、読んでいて思い出したがコーラングレのことか。というか、今書いてわかったが、コール・アングレがリエゾンしてコーラングレだな)が木管だというところと、フルートみたく金属製でも木管があるということあたりでごっちゃに

  • 1