タグ

ブックマーク / blog.satotaichi.info (3)

  • JavaのTimSortがバグってる件について | さにあらず

    Python で実装され、その後 Java にも移植されたソートアルゴリズムである TimSort が盛大にバグっていることが発見されました。 このバグがどのようにして発生するのかについては、以下のドキュメントを精査して下さい。 TimSort fails with ArrayIndexOutOfBoundsException on worst case long arraysOpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst caseどんなことが起こるのか#通常の利用では想定しえない場所でArrayIndexOutOfBoundsExceptionが発生します。 例えば、以下のようなスタックトレースになります。 Exception in thread "main" java.l

    JavaのTimSortがバグってる件について | さにあらず
  • go言語のテスティングフレームワークについて — さにあらず

    長いので結論だけ先に。 BDD風味に違和感が無いなら、Ginkgoがオススメ。 もっと軽くてシンプルなのが良いなら、Testifyがオススメ。 テスト対象となるコード 公式のHow to Write Go CodeからYour first libraryにあるコードを持ってきます。 package go_testing // Sqrt returns an approximation to the square root of x. func Sqrt(x float64) float64 { z := 1.0 for i := 0; i < 1000; i++ { z -= (z*z - x) / (2 * z) } return z } 標準で組込まれているテスト用ライブラリについて testing.* 実用性は確かにあって必要なものは揃ってる感あるのだけど、僕にはいくばくかの辛みがあ

    tarchan
    tarchan 2014/09/11
    >ポイントはstars:>30で、こういう風にすると30より多くstarを稼いでるリポジトリが結果に出てくる。
  • go言語の名前空間について | さにあらず

    package 宣言における名前付けのアプローチが、goJava では考え方が随分違っていて面らったので忘れないうちに書いておきます。 go 言語のテンプレート API#go 言語にはテンプレーティングする API が標準で二種類あります。 text/templatehtml/templateTemplate という struct がそこらじゅうで出てくるのですけども、何か混ざったような印象を受けるのです。 html/templateの APItext/templateを利用して実装しているので、ある種の重複は当然あってしかるべきなのですけども、何か違和感がありました。 コードを引っ張りだしてみます。 text/template/template.go package template import ( "fmt" "reflect" "text/template/parse"

    go言語の名前空間について | さにあらず
  • 1