Java

java.sql.Timestampのequalsが規約を満たしてない

事の発端 とある社内ライブラリを修正していたら、java.util.Date同士の比較で、getTimeを呼び出さないとtrueにならなくてエラー、というコードを発見した。こんな感じ date1.getTime == date2.getTime // => true date1 == date2 // => false Scalaの==はJa…

エロゲ回想シーンのスクショを自動で取る

はじめに 30億のデバイスで動くJava(とScala)でエロゲ回想シーンの自動スクショを取るツールを作ってみた。 要件 とりあえず必要なのは、 WindowのタイトルからWindowの範囲を取得する プログラム側から自動でクリックする Windowをアクティブにする スク…

JavaのMapでgetOrElseしようとした

したいこと Mapの中身をgetするときに、中身が無い場合はデフォルト値を返すようにしたい。 Scalaなら map.getOrElse(key, defaultVal) Javaだと 要Guava Optional.fromNullable(map.get(key)).or(defaultVal); ぐらいしか思い付かなかった。 Java8だと map.…

joda-timeを仕方なく使う(時間で四則演算したい)

はじめに Scalaで使える日時を扱うライブラリの1つにorg.scala_tools.timeがあるが、これjoda-timeの薄いラッパーで、ドキュメントもマトモにないので、結局joda-time調べた方が早いという話があったりする。で、時刻の差を取得したいときに少しハマったので…

ScalaのAtomic性

はじめに Scalaにある+=演算子、これってAtomicじゃないの?という疑問があって調べてみたの巻。やりたいこととしては、parでスレッド分けてmutableな変数に+=でアクセスしたらどーなるのよ、という話。 サンプルコード object Main extends App { var count…

ary[-1]の動作

ary[-1]の動作 配列の-1番目の要素を指定した場合何が起こるのかちょっと興味あったので調べてみた Pythonの場合 我らがPythonは後ろから1番目の意味になる。 ary = [1,2,3] print(ary[-1]) # 3 Rubyの場合 RubyもPythonと同じ仕様 ary = [1,2,3] puts ary[-…

剰余のうんちく

はじめに 方向を以下のように定義しておく 上(0度):0 右(90度):1 下(180度):2 左(270度):3 すると、90*n度回転させる処理はそのまま足し算で実行できる。 だが、1回転した場合0-3に正規化する必要がある。 この処理のお話。 剰余の限界 この正規…