Scala
Scala のケースクラスで値に制約を持たせたい場合にどうするか。 例えば、以下のケースクラスで amount の値を 0 以上となるように制限し、0 未満ならインスタンス化を失敗させる事を考えてみます。 case class Quantity(amount: Int) 使用した環境は以下 Sc…
quill は Scala 用の DB ライブラリで、マクロを使ってコンパイル時に SQL や CQL(Cassandra)を組み立てるのが特徴となっています。 quill には Infix という機能が用意されており、これを使うと FOR UPDATE のような(quillが)未サポートの SQL 構文に対…
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 パッケージに…
前回と同様の処理を ScalaPB で行ってみました。 ScalaPB であればビルドツールに sbt を使う方が簡単かもしれませんが、引き続き Gradle を使います。 Gradle 3.0 ScalaPB 0.5.40 今回作成したソースは http://github.com/fits/try_samples/tree/master/blo…
前回 の JPA に続き、今回は Gradle と Querydsl Scala を使って Querydsl SQL のコード生成を試します。 Gradle 2.5 Querydsl Scala 4.0.3 ソースは http://github.com/fits/try_samples/tree/master/blog/20150810/ はじめに Querydsl SQL の場合は Scala …
Gradle と Querydsl Scala を使って Querydsl JPA の Scala 用コード生成を試してみました。 Gradle 2.5 Querydsl JPA 4.0.2 Querydsl Scala 4.0.2 ソースは http://github.com/fits/try_samples/tree/master/blog/20150727/ はじめに 「Gradle を使った Que…
以前 ※ に R や Julia で試したロジスティック回帰を Apache Spark の MLlib (Machine Learning Library) を使って実施してみました。 Apache Spark MLlib 1.3.1 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20150427/ ※「 R …
前回の 「Spark SQL で CSV ファイルを処理 - GeoLite Legacy」 に続き、今回は Spark SQL を使って GeoLite2 City CSV ファイルを処理してみます。 GeoLite2 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20141112/ はじめに GeoLi…
以前、H2 を使って CSV ファイルを SQL で処理しましたが、今回は Spark SQL を使ってみました。 Spark SQL 「IPアドレスから地域を特定する2 - GeoLite Legacy Country CSV」 で使った GeoLite Legacy Country CSV を使って同様の処理を Spark SQL で実装し…
「Scalaz でリストモナド - Kleisli による関数合成 」等で試してきた List モナドを使ったチェスのナイト移動の処理を Arrow (Kleisli) を使って実装し直してみました。 Arrow は計算のための汎用的なインターフェースで、モナドを扱うための Arrow とし…
書籍 「集合知プログラミング」 の 「7章 決定木によるモデリング」 にあったジニ不純度(ジニ係数)の計算を下記の JVM 言語で関数言語的に実装してみました。 Groovy 2.3 Scala 2.11 Java SE 8 Frege 3.21 今回のソースは http://github.com/fits/try_samp…
Apache Spark をソースからビルドして Scala 2.10 上で実行してみました。 Apache Spark 0.9 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20131121/ Spark のソースをビルド まずは、Spark ソースの scala-2.10 ブランチを git c…
以前、sbt を使って Scala で Hadoop MapReduce 実装 や Groovy で Storm を使う で実施したお金の数え上げ処理を Spark 0.8 を使って Java で実装してみました。 Spark は以前、Spark を使って単純なレコメンドを実施 で 0.4 を試しましたが、0.8 でも API …
Gradle の Scala プラグインで -Xprint オプションを試してみました。 Gradle 1.7 -Xprint はコンパイル途中のコードを出力する Scala コンパイラのオプションで、 -Xprint:<フェーズ> のようにコンパイルフェーズを指定して使用します。 例えば -Xprint:typ…
Vert.x 2.0 用の Scala 言語モジュールを使って簡単な HTTP サーバーを実装してみます。 Vert.x 2.0.1 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20130901_4/ Scala 言語モジュールのビルド Vert.x 用の Scala 言語モジュール…
前回 id:fits:20130212 は Enumeratee.grouped() を使って行単位のファイル処理を実装しましたが、今回は Enumerator.generateM() と Enumerator.fromCallback1() をそれぞれ使って同様の処理を実装してみました。sbt のビルド定義ファイルなどは前回と同様…
id:fits:20130116 で使った Play2 の Iteratee を単体利用して行単位のファイル処理を実装してみました。 play-iteratees 2.1.0 Iteratee は Enumerator や Enumeratee と組み合わせて使用し、それぞれ以下のような役割を担います。 Enumerator : データを生…
前回(id:fits:20130116)は Play2 Mini で WebSocket サーバー処理を実装しましたが、今回は同様の処理を Unfiltered で実装してみました。 Unfiltered 0.6.5 (Scala 2.10.0) サンプルソースは http://github.com/fits/try_samples/tree/master/blog/2013…
前回 id:fits:20130114 と同等の WebSocket サーバー処理を Scala 2.10.0 で Play2 Mini 2.1 RC2 を使って実装してみました。 クライアントは id:fits:20130114 で作成したもの(HTML + JavaScript)をそのまま使用する事にします。サンプルソースは http://…
個人的に REST API の実装では JAX-RS (Java)*1 や Sinatra (Ruby) あたりを使っていますが、今回は選択肢を増やす目的で下記のようなフレームワークを試してみました。 Vert.x (Java, Groovy, JavaScript, Ruby, Python) Gretty (Java, Groovy, Scal…
Scalaz の Codensity を試してみました。Codensity モナドは継続モナドと基本的に同じですが、処理の型が以下のように異なっています。 継続モナドの場合 Codensityモナドの場合 (A => R) => R (A => F[B]) => F[B] つまり、Codensity は何らかのコンテナ(L…
以前(id:fits:20121104)、Haskell で実装した継続モナドのサンプルを Scalaz で実装してみました。なお、今のところ Scalaz に継続モナドは用意されていないようで、id:fits:20121111 のような方法で自作する必要がありました。ただし、実際のところ Scala…
今回は、Haskell と Scalaz でモナドを自作してみました。良い題材を思いつかなかったので、とりあえず以下のような単純なモナド(Counter モナドとする)を自作する事にしました。 カウンターを持たせて、バインドで処理を繋ぐ度にカウンター同士を加算する…
Java でコレクションのマッピング(map)・フィルタリング(filter)・畳み込み(foldLeft)のような処理を使いたいケースがありますが、今のところ標準で用意されていません。そこで、以下のようなライブラリを使って試してみました。 Functional Java 3.1 …
今回は関数をモナドとして扱う Reader モナドを Scalaz で使ってみます。 Scalaz 7.0.0-M3 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20121013/sbt 用ビルドファイルは以下の通りです。 build.sbt scalaVersion := "2.10.0-M7"…
今回は、ログを追記する Writer モナドを Scalaz で使ってみます。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120917/ 使用した sbt 用ビルドファイルは以下です。 build.sbt scalaVersion := "2…
前回 id:fits:20120828 に引き続き、今回も書籍「 すごいHaskellたのしく学ぼう! 」 のサンプルを Scalaz で実装してみる事にします。今回は、リストモナドを使ったナイト移動 *1 の処理です。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.c…
書籍「 すごいHaskellたのしく学ぼう! 」 の Ordering モノイドを使った lengthCompare 関数を Scalaz で実装してみました。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120828/ lengthCompare 関…
Markdown 形式の文字列を HTML 変換する処理を複数のプログラム言語で試してみました。処理としては、標準入力から UTF-8 の Markdown 形式の文字列を取得し HTML 変換した結果を標準出力へ UTF-8 で出力しています。ちなみに、Markdown 文字列は LOGGiX プ…
Play framework 2.0 で作成した Web アプリを Eclipse 上でデバッグする方法をご紹介します。 準備 まず、play eclipsify を実行し、Eclipse 用のプロジェクトファイルを生成します。 Eclipse 用プロジェクトファイル作成 > play eclipsify次に、このプロジ…