Java

MySQL Binary Log connector でバイナリログをイベント処理

MySQL Binary Log connector (mysql-binlog-connector-java) を使うと、Java プログラムで MySQL / MariaDB のバイナリログをイベント処理できます。 そのため、MySQL の CDC(Change Data Capture)として使えるかもしれません。 MySQL Binary Log connec…

Akka でステートマシンを処理

前回 の有限ステートマシン(FSM)の処理を Akka の Java 用 API を使って実装してみます。 Akka 2.5.6 ソースは http://github.com/fits/try_samples/tree/master/blog/20171016/ ステートマシンの実装 まずは、以下のステートマシンを実装します。 初期状…

Spring Statemachine でステートマシンを処理

Spring Statemachine を使って単純な有限ステートマシン(FSM)を実装してみました。 Spring Statemachine 2.0.0 SNAPSHOT ソースは http://github.com/fits/try_samples/tree/master/blog/20171002/ はじめに Spring Boot 2.0.0.M4 を使用して Kotlin で実…

Akka Streams で MQTT Broker へ接続

ローカルで実行した MQTT Broker(前回 参照)に対して Akka Streams の Java 用 API を使って Groovy で接続してみます。 Akka Streams 用の様々なコネクタを備えた Alpakka に MQTT Broker 用の Source や Sink が用意されているので、今回はこちらを使い…

MQTT Broker をローカル実行

以下の MQTT Broker をそれぞれローカルで実行してみました。 Mosca Moquette ソースは http://github.com/fits/try_samples/tree/master/blog/20170910/ Mosca Mosca は Node.js 用の MQTT Broker です。 npm でインストールして mosca コマンドで実行でき…

Java で Apache Beam を使用

前回 と同等の処理を Apache Beam を使って実装してみます。 Apache Beam 0.6.0 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170327/ サンプルアプリケーション Beam では Pipeline の apply メソッドで処理を繋げるようですので…

Java 8 で Apache Flink を使用

前回 と同様の処理を Java8 のラムダ式を使って実装してみました。 Apache Flink 1.2.0 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170313/ サンプル 前回 の処理をラムダ式を使って Java で実装すると以下のようになりました。…

reveno でイベントソーシング

「sourcerer でイベントソーシング」 等と同様の処理を reveno で実装してみました。 reveno 1.23 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170306/ はじめに 使用する Gradle ビルド定義ファイルは以下の通りです。 build.gr…

Akka の FileIO でファイルを読み書き

Akka (akka-stream) の FileIO を使ってファイルの読み書きを行ってみます。 Akka 2.5-M1 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170131/ はじめに akka-stream では Java 用の API は akka.stream.javadsl パッケージに…

Sourcerer でイベントソーシング

「Axon Framework でイベントソーシング」 や 「es4j でイベントソーシング」 と同様の処理を Sourcerer で実装してみました。 Sourcerer v4.0.1 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170110/ はじめに 以下のような Grad…

es4j でイベントソーシング

「Axon Framework でイベントソーシング」 と同様の処理を es4j (Eventsourcing for Java) で実装してみました。 es4j 0.4.5 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20170107/ はじめに 今回はイベントをインメモリで保持する…

RxJava2 で並列処理

前回 と同じような並列処理を RxJava 2.0 で試してみました。 RxJava 2.0.3 ソースは http://github.com/fits/try_samples/tree/master/blog/20161226/ はじめに まずは、map の処理と subscribe の処理を順番に 3回繰り返す処理です。 前回の Reactor との…

Reactor で並列処理

Reactor の並列処理を試してみました。 reactor-core 3.0.3 ソースは http://github.com/fits/try_samples/tree/master/blog/20161208/ はじめに Reactor で以下のようなコードを実行すると、map の処理と subscribe の処理を順番に 3回繰り返します。(repe…

Spring Web Reactive を試す

Spring 5 で導入される Spring Web Reactive を試してみました。 本来なら Spring Boot で実行する事になると思いますが、今回は Spring Boot を使わずに Undertow で直接実行してみます。 ソースは http://github.com/fits/try_samples/tree/master/blog/20…

Java で行列の演算 - nd4j, commons-math, la4j, ujmp, jblas, colt

Java で以下のような行列の演算を複数のライブラリで試しました。 (a) 和 (b) 積 (c) 転置 とりあえず今回は、更新日が比較的新しめのライブラリを試してみました。 ND4J 0.6.0 Commons Math 3.6.1 la4j 0.6.0 UJMP 0.3.0 jblas 1.2.4 Colt Blazegraph 版 2.…

Lucene API で Solr と Elasticsearch のインデックスを確認

Groovy で Lucene の API を使用して Solr や Elasticsearch のインデックスの内容を確認してみました。(Lucene 6.2.1 の API を使用) ソースは http://github.com/fits/try_samples/tree/master/blog/20161024/ (a) ドキュメントの内容を出力 まずは、ド…

Deeplearning4J で MNIST を分類

「Deeplearning4J で iris を分類」 に続いて、畳み込みニューラルネットを使った MNIST の分類を試します。 Deeplearning4J 0.6.0 Deeplearning4J のバージョンが上がって、@Grab を使った Groovy 上での実行が上手くいかなかったので、今回は Kotlin で実…

Gradle で Protocol Buffers を使う - Java

Gradle を使って Protocol Buffers の protoc で Java ソースコードを生成し、ビルドしてみます。 Gradle 3.0 protoc-jar 3.0.0 protobuf-java 3.0.0 Gradle から protoc コマンドを呼び出す方法もありますが、今回は protoc-jar を使いました。 protoc-jar …

Axon Framework でイベントソーシング

Axon Fraework のイベントソーシング機能を軽く試してみました。 Axon Framework 3.0-M3 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20160815/ はじめに 今回は以下のような Gradle 用ビルド定義を使います。 lombok は必須ではあ…

JMX で Java Flight Recorder (JFR) を実行する

Java Flight Recorder (JFR) は Java Mission Control (jmc) や jcmd コマンドから実行できますが、今回は以下の MBean を使って JMX から実行してみます。 com.sun.management:type=DiagnosticCommand この MBean は以下のような操作を備えており(戻り…

JDI でオブジェクトの世代(Young・Old)を判別する2

前回 の処理を sun.jvm.hotspot.oops.ObjectHeap を使って高速化してみたいと思います。(世代の判別方法などは前回と同じ) 使用した環境は前回と同じです。 Groovy 2.4.6 Java SE 8u92 64bit版 (JDK) ソースは http://github.com/fits/try_samples/tree/…

JDI でオブジェクトの世代(Young・Old)を判別する

前回、オブジェクトの age を取得しましたが、同様の方法で今回はオブジェクトが Young 世代(New 領域)と Old 世代(Old 領域) のどちらに割り当てられているかを判別してみたいと思います。 (ただし、結果の正否は確認できていません) 使用した環境は…

JDI でオブジェクトの年齢(age)を取得

HotSpot VM の世代別 GC において、オブジェクト(インスタンス)には年齢 (age) が設定されており、Minor GC が適用される度にカウントアップされ、長命オブジェクトかどうかの判定に使われるとされています。 そこで今回は、Groovy で JDI (Java Debug …

Deeplearning4J で iris を分類

Deeplearning4J (DL4J) を使って 「ConvNetJS で iris を分類」 と同様に iris を分類してみました。 Deeplearning4J 0.4-rc3.8 今回は Groovy を使って実行します。 ソースは http://github.com/fits/try_samples/tree/master/blog/20160412/ 準備 iris …

MNIST データセットをパースする

MNIST データセットは、THE MNIST DATABASE of handwritten digits からダウンロード可能な手書き数字のデータです。 機械学習ライブラリ等に標準で用意されてたりしますが、 今回は Node.js と Java でパースしてみました。 ソースは http://github.com/fit…

Google Cloud Print を Web API で操作 - Unirest 使用

リフレッシュトークンを使って Google Cloud Print を Web API で操作してみます。 Google Cloud Print 以前、「Google アカウントで Google API を利用 - google-api-services-gmail」 では Apache HTTPClient を使いましたが、今回は Unirest を使っていま…

リストをN個に分割 - Groovy, Java, Python

リストをなるべく均等に N 分割する処理を Groovy・Java・Python で実装してみました。 今回は、[0, 1, 2, 3, 4, 5, 6, 7] を 3分割した結果が [[0, 1, 2], [3, 4, 5], [6, 7]] となるような処理を想定しています。 (余り分を先頭から順に1つずつ分配) ソ…

ResultSet の Stream 化

java.sql.ResultSet を java.util.stream.Stream 化する方法はいくつか考えられますが、今回は以下の方法を試してみました。 Spliterator インターフェースの実装クラスを作成 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/201510…

FunctionalJava の DB モナド?

FunctionalJava における fj.control.db.DB クラスの使い方を調べてみました。 FunctionalJava 4.4 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20151013/ はじめに 処理内容を見る限り fj.control.db.DB は Reader モナドをベー…

Spring Data Redis を Tomcat で JNDI リソース化

前回、Jedis を Tomcat 上で JNDI リソース化しましたが、今回は Spring Data Redis を JNDI リソース化してみます。 実際は org.springframework.data.redis.connection.jedis.JedisConnectionFactory を JNDI リソース化します。 サンプルソースは http://…