タグ

2009年1月26日のブックマーク (3件)

  • オープン・クローズドの原則(OCP) - Strategic Choice

    オープン・クローズドの原則(OCP:the Open-Closed Principle)(開放−閉鎖原則) ソフトウェアの構成要素は、拡張に対して開いていて、修正に対して閉じていなければならない。どういうこと?オープン(開いている)とは? モジュールの振る舞いを拡張できる。 クローズ(閉じている)とは? モジュールの振る舞いを変更しても、そのソースやバイナリはまたく影響を受けない。 なんで?この原則はオブジェクト指向設計の核心。なぜなら、この原則に従えば、オブジェクト指向の最大のメリットを享受できる! 柔軟性再利用性保守性たとえば?具体例として、よくある図形の例 。switch/caseで図形の種類ごとに処理を行う。 こうすると、図形の種類が追加になるたびにこの処理が変更になる。 ここで大事なのは、switch/caseがおそらく一箇所ではないところ。 至る所に図形の種類ごとの色々な処理が

    pipehead
    pipehead 2009/01/26
    the Open-Closed Principle, 開放-閉鎖原則
  • 同じ文字列のn回繰り返しを作る最速の方法を探求してみた - moriyoshiの日記

    注意: FF3.1b2の結果が不正確です。取り直したのはこちら。 ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyPythonで言うところの「"..." * n」) を高速に実装しなければならない状況に遭遇したのでベンチマークをとってみたところ、その結果がとても新鮮で驚いたので、これを共有しつつもダメ出ししてもらえないかなーと思って晒してみることに。 あらまし JavaScriptの文字列型 (およびStringオブジェクト) はJavaのようにイミュータブルなので、こういう文字列構築を行う方法としては、以前から、+や+=演算子を用いるよりも、一旦Array()に入れておき最後にjoin()するという方法が有効だと言われていてですね、まあ確かに、文字列用メモリ領域の確保

    同じ文字列のn回繰り返しを作る最速の方法を探求してみた - moriyoshiの日記
    pipehead
    pipehead 2009/01/26
    += vs. Array.prototype.join()
  • 続・1TBのHDDは何が違う? スペアのセクターで動作を保証

    1TB HDD内の19億ものセクターは通し番号で管理される。不具合のあるセクターは、自動的にスペアのセクターに代替され常にすべてのセクターが正常に読み書きできるようになっている。1TB HDDは32MBのキャッシュを搭載するが、一部のHDD用ツールでは、正常に容量が表示されないことがある。 HDDは512バイトを1つの単位としてデータを保存しており、1TBのHDDの場合、内部には19億以上のセクターがある。PCホストPC)からの指示によって、特定のセクターのデータを読み書きしている。 PCがHDDに対してセクターの場所を指定する方法は、2種類ある(図1)。一つは、物理的なシリンダー番号、ヘッド番号、セクター番号を指定する方法で、CHS(Cylinder Head Sector)方式と呼ばれている。 図1 HDD上でデータを記録してあるセクターを見付け出すには、2つの方式がある。CHS(C

    続・1TBのHDDは何が違う? スペアのセクターで動作を保証
    pipehead
    pipehead 2009/01/26
    CHS (Cylinder Head Sector), LBA (Logical Block Address)