Java
「Java(TM) Platform SE binary は動作を停止しました」が出て java -version も動かない場合 環境 Windows7 Pro 64bit JDK8 64bit Avast Avast の挙動監視シールドが C:\ProgramData\Oracle\Java\javapath\java*.exe の実行にちょっかい出しているのが原因…
結論 JCE (Java Cryptography Extension) の AES/CBC/PKCS5Padding のパディングは、実際には PKCS#7 でパディングしている。 (少なくとも Oracle Java8_141 環境下では) 経緯 Java で AES 暗号化を扱う機会があり、ググっていたところ AES/CBC/PKCS5Padding…
Java で Socket Listen するときのアドレスを InetAddress.getByName("0.0.0.0") で与えると、 IPv4 の 0.0.0.0 と IPv6 の [::] の両方を Listen しちゃって、v4v6の両方で接続できちゃう ようになるような(今更)
eclipse で開いて文字化け、「ふぁっきんms932!」と叫んだときに。eclipse.ini に -Dfile.encoding=utf-8を追加設定→一般→ワークスペース で変更する手もあるけど、そちらはワークスペース単位なので。「eclipseで開くのは UTF-8 に決まってるだろぉぉぉぉ…
Commons CLI で設定したオプションをソートせずに help 表示・出力する方法。HelpFormatter#setOptionComparator に null を渡せばソートが無効化される。HelpFormatter のデフォルトでは、 Options に設定したオプションが通常の文字列順序にソートされて出…
問題 JSON ライブラリ Jackson の ObjectMapper を使ったシリアライズ・デシリアライズで、Stream や Reader/Writer を対象にしたメソッドを使うと、そのStream, Reader/Writer が自動的に close されてしまうので、再び読み書きしようとした際に IOExceptio…
Java の InputStreamReader、 Windows 環境ではデフォルト文字コードは UTF-8
Gradle で Ant の jar タスクで言うところの exclude のやりかた。 task jarTare(type: Jar) { baseName = 'Tare' from sourceSets.main.output exclude('jp/ne/hatena/d/samples/shell/**') } baseName は出力する jar ファイルのファイル名。 src/main/jav…
XML を DOM で扱う場合、 DocumentBuilderFactory#setNamespaceAware(true) で名前空間が有効になる DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocu…
最後は実行編です。まず、サーバを立ち上げます(classpathは先に通しておいてください)。 > java WebSocketTest 2011-10-18 18:29:04.406:INFO:oejs.Server:jetty-8.0.3.v20111011 2011-10-18 18:29:04.517:INFO:oejs.AbstractConnector:Started SelectCha…
前エントリに続いてブラウザ側の実装について。こちらは単純ですね。 WebSocket の有無を確認して、使えるなら WebSocket の URL を指定してコネクションを開く。 後は、メッセージが届いたら div ブロックを追加してメッセージ表示。送信ボタンが押されたら…
Jettyをサーバに使ったWebSocketベースのチャットサンプルのようなものを作ってみた。ターゲットは Jetty 8 と Firefox7, Chrome14。 WebSocket のバージョンは draft-ietf-hybi-thewebsocketprotocol-10 になるはず。 (WebSocket(Wikipedia) の実装状況参…
MessagePack-RPC Java版の Server が終了してくれないトラブルで20分ほどはまったのでメモ。Server をデフォルトコンストラクタで起こして使ってると、close() を読んで止めたつもりでもスレッドが残ってプロセスが止まってくれません。残ってるスレッドの正…
Jetty6 において、Servlet の doXXXX 系ハンドラメソッドがHTTPリクエストのどのタイミングで呼ばれるのかをちょっと調べてみた。結果:HTTP リクエストヘッダが全て届いた時点でハンドラメソッドが呼びだされる。リクエストのボディは未着なことがある。要…
Java で Thrift を試してみて得た know-how(あくまで独自研究なので注意) マルチスレッドと Thrift IDL から起こした Thrift.Client クラスはインスタンスのスレッド間で共有できない。 より正確に言うと、Thrift.Client 1つが1コネクションに対応してい…
Thrift では C++との相互運用の都合で RPC の応答に null を返すことができない模様。(呼ばれた側で return null; ができない)*1厳密には return null; できるわけですが、その場合クライアント側で TApplicationException: getFoo failed: unknown result a…
その1で環境が整ったので実際に RPC コードを作ってみる。 IDL ファイルの作成 RPC のメソッド定義にあたる IDL ファイルを作る。 お試しと言うことで単純な物を。 見ての通り String hello(String arg); 相当 Hello.thrift service Hello { string hello(1…
Java で使える高速な RPC ミドルを探して Thrift を試してみたのでメモ いるもの Apache Thrift これがなけりゃはじまらない Thriftコンパイラのバイナリパッケージ Thrift IDL から言語毎のコード生成するのに必要。Linuxだと簡単にビルドできるけど、Windo…
アーカイブ内に日本語ファイル名なファイルを含むzipファイルをJavaで解凍・展開するには。 コード自体は「java zip 展開」あたりでググればすぐ出てくる。やまろうのJavaなわけ/Vol.42 JavaでZIP解凍。日本語ファイル名対応 http://yamarou.at.infoseek.co.…
Axis 1.2.1 + Tomcat 5.5.25 + JDK 1.5.14 でトラブったメモ。 webapp/axis/lib を common/lib に置いたときはwebapp/axis/lib をクリアしとかないと競合して痛い目に合う。 モジュールを common/lib に置くときは simplelog.properties は common/classes …
Zipf 分布な乱数を作るジェネレータを作ってみた。車輪の再発明なのは重々承知。 たぶんもっとマシなライブラリがどこかにあるだろうけど、頭使わずに使えそうな単機能なのがググってもサクッとでないので作ってみた。てきとーに作ったので精度は不明。使う…
Map が持ってる要素の中からランダムに 1 要素を取り出すには keySet を Array に変換して、その中からランダムに選択するしかないのかな? String[] keys = map.keySet().toArray(new String[map.size()]); String value = map.get(keys[rnd.nextInt(keys.l…
OpenPNE の DB を Java から叩こうとしたときにはまったメモ。先に結論を書くと、 PHP mcrypt の zero padding は元データが8の倍数長の場合は padding しない。 Java BouncyCastle の zero padding は元データが8の倍数長でも padding ( 8 バイトの 0x00 を…
Ant から eclipse 内蔵コンパイラを使ってコンパイルするのにつまづいたのでメモ。EclipseWiki見ただけじゃ解決せず。調べていったらJavalobbyに答えがあった。まず、Ant の build.xml には、コンパイルタスクの前に build.compiler プロパティに org.eclips…