読者です 読者をやめる 読者になる 読者になる

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 パッケージに…

Gradle で ScalaPB を使う

前回と同様の処理を ScalaPB で行ってみました。 ScalaPB であればビルドツールに sbt を使う方が簡単かもしれませんが、引き続き Gradle を使います。 Gradle 3.0 ScalaPB 0.5.40 今回作成したソースは http://github.com/fits/try_samples/tree/master/blo…

Gradle と Querydsl Scala を使った Querydsl SQL のコード生成

前回 の 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 のコード生成

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…

Apache Spark でロジスティック回帰

以前 ※ に 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 ファイルを処理2 - GeoLite2

前回の 「Spark SQL で CSV ファイルを処理 - GeoLite Legacy」 に続き、今回は Spark SQL を使って GeoLite2 City CSV ファイルを処理してみます。 GeoLite2 今回のソースは http://github.com/fits/try_samples/tree/master/blog/20141112/ はじめに GeoLi…

Spark SQL で CSV ファイルを処理 - GeoLite Legacy

以前、H2 を使って CSV ファイルを SQL で処理しましたが、今回は Spark SQL を使ってみました。 Spark SQL 「IPアドレスから地域を特定する2 - GeoLite Legacy Country CSV」 で使った GeoLite Legacy Country CSV を使って同様の処理を Spark SQL で実装し…

Arrow (Kleisli) で List モナド - Haskell, Frege, Scalaz

「Scalaz でリストモナド - Kleisli による関数合成 」等で試してきた List モナドを使ったチェスのナイト移動の処理を Arrow (Kleisli) を使って実装し直してみました。 Arrow は計算のための汎用的なインターフェースで、モナドを扱うための Arrow とし…

ジニ不純度の算出 - Groovy, Scala , Java 8, Frege

書籍 「集合知プログラミング」 の 「7章 決定木によるモデリング」 にあったジニ不純度(ジニ係数)の計算を下記の JVM 言語で関数言語的に実装してみました。 Groovy 2.3 Scala 2.11 Java SE 8 Frege 3.21 今回のソースは http://github.com/fits/try_samp…

Scala 2.10 で Apache Spark を使用

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…

Java で Apache Spark を使用

以前、sbt を使って Scala で Hadoop MapReduce 実装 や Groovy で Storm を使う で実施したお金の数え上げ処理を Spark 0.8 を使って Java で実装してみました。 Spark は以前、Spark を使って単純なレコメンドを実施 で 0.4 を試しましたが、0.8 でも API …

Gradle の Scala プラグインで -Xprint オプションを使用

Gradle の Scala プラグインで -Xprint オプションを試してみました。 Gradle 1.7 -Xprint はコンパイル途中のコードを出力する Scala コンパイラのオプションで、 -Xprint:<フェーズ> のようにコンパイルフェーズを指定して使用します。 例えば -Xprint:typ…

Vert.x 2.0 で Scala 言語モジュールを使用

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 言語モジュール…

Play2 の Iteratee を使った行単位のファイル処理2 - Enumerator.generateM, Enumerator.fromCallback1

前回 id:fits:20130212 は Enumeratee.grouped() を使って行単位のファイル処理を実装しましたが、今回は Enumerator.generateM() と Enumerator.fromCallback1() をそれぞれ使って同様の処理を実装してみました。sbt のビルド定義ファイルなどは前回と同様…

Play2 の Iteratee を使った行単位のファイル処理1 - Enumeratee.grouped() の利用

id:fits:20130116 で使った Play2 の Iteratee を単体利用して行単位のファイル処理を実装してみました。 play-iteratees 2.1.0 Iteratee は Enumerator や Enumeratee と組み合わせて使用し、それぞれ以下のような役割を担います。 Enumerator : データを生…

Scala で WebSocket - Unfiltered

前回(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…

Scala で WebSocket - Play2 Mini

前回 id:fits:20130114 と同等の WebSocket サーバー処理を Scala 2.10.0 で Play2 Mini 2.1 RC2 を使って実装してみました。 クライアントは id:fits:20130114 で作成したもの(HTML + JavaScript)をそのまま使用する事にします。サンプルソースは http://…

軽量 Web フレームワークで REST API を実装 - Vert.x, Gretty, Play2 Mini, Socko, Restify

個人的に REST API の実装では JAX-RS (Java)*1 や Sinatra (Ruby) あたりを使っていますが、今回は選択肢を増やす目的で下記のようなフレームワークを試してみました。 Vert.x (Java, Groovy, JavaScript, Ruby, Python) Gretty (Java, Groovy, Scal…

Scalaz で Codensity モナド

Scalaz の Codensity を試してみました。Codensity モナドは継続モナドと基本的に同じですが、処理の型が以下のように異なっています。 継続モナドの場合 Codensityモナドの場合 (A => R) => R (A => F[B]) => F[B] つまり、Codensity は何らかのコンテナ(L…

Scalaz で継続モナド

以前(id:fits:20121104)、Haskell で実装した継続モナドのサンプルを Scalaz で実装してみました。なお、今のところ Scalaz に継続モナドは用意されていないようで、id:fits:20121111 のような方法で自作する必要がありました。ただし、実際のところ Scala…

Haskell と Scalaz でモナドを自作

今回は、Haskell と Scalaz でモナドを自作してみました。良い題材を思いつかなかったので、とりあえず以下のような単純なモナド(Counter モナドとする)を自作する事にしました。 カウンターを持たせて、バインドで処理を繋ぐ度にカウンター同士を加算する…

Java でマッピング・フィルタリング・畳み込み - FunctionalJava, totallylazy, Commons Collections, Guava, Java 8 Lambda

Java でコレクションのマッピング(map)・フィルタリング(filter)・畳み込み(foldLeft)のような処理を使いたいケースがありますが、今のところ標準で用意されていません。そこで、以下のようなライブラリを使って試してみました。 Functional Java 3.1 …

Scalaz で Reader モナドと Applicative

今回は関数をモナドとして扱う 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"…

Scalaz で Writer モナド

今回は、ログを追記する 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…

Scalaz でリストモナド - Kleisli による関数合成

前回 id:fits:20120828 に引き続き、今回も書籍「 すごいHaskellたのしく学ぼう! 」 のサンプルを Scalaz で実装してみる事にします。今回は、リストモナドを使ったナイト移動 *1 の処理です。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.c…

Scalaz で Ordering モノイド

書籍「 すごい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 変換 - Ruby, PHP, Groovy, Scala, Node.js

Markdown 形式の文字列を HTML 変換する処理を複数のプログラム言語で試してみました。処理としては、標準入力から UTF-8 の Markdown 形式の文字列を取得し HTML 変換した結果を標準出力へ UTF-8 で出力しています。ちなみに、Markdown 文字列は LOGGiX プ…

Play framework 2.0 のアプリを Eclipse でデバッグする方法

Play framework 2.0 で作成した Web アプリを Eclipse 上でデバッグする方法をご紹介します。 準備 まず、play eclipsify を実行し、Eclipse 用のプロジェクトファイルを生成します。 Eclipse 用プロジェクトファイル作成 > play eclipsify次に、このプロジ…

Play framework 2.0 での自作プラグイン - Scala版

Play framework 2.0 における基本的なプラグインの作成方法をご紹介します。ちなみに Play framework 2.0 は Java・Scala 用の Web アプリケーションフレームワークで、JPA・Akka・EhCache 等の機能をプラグインとして実装しています。 Play framework 2.0 …

sbt のプラグイン作成 - 単純な Groovy スクリプトをコンパイル

sbt 0.11 プラグインの作成方法を簡単にご紹介します。 題材として、単純な Groovy スクリプトをコンパイルするプラグインを作成してみます。 sbt 0.11.2 ソースは http://github.com/fits/try_samples/tree/master/blog/20120304/ はじめに Groovy スクリプ…

Spark を使って単純なレコメンドを実施

分散処理フレームワークの Spark を使って、id:fits:20111123 で実施したような GitHub データの簡単なレコメンドを実施してみます。Spark はインメモリーに分散データをキャッシュできる等の特徴があり、個人的に Scala のコレクション API 風に MapReduce …

非同期処理でWebコンテンツをダウンロードする方法2 - Groovy, Scala, Java, C#

今回は、前回(id:fits:20111016)と同様の非同期ダウンロード処理を Java と C# で実装し、Groovy と Scala は別の実装方法を模索してみました。使用した機能は以下の通りです。 Groovy : Actor (GPars) Scala : 限定継続 + ops Java : Concurrency Utiliti…

非同期処理でWebコンテンツをダウンロードする方法 - Groovy, Scala, F#

前回(id:fits:20110925)、並列コレクション等で Web コンテンツをダウンロードする処理を実装してみましたが、今回はその非同期処理版を Groovy, Scala, F# で実装してみました。(主な仕様は前回と同じ) 実行例 groovy async_download_web.groovy destdi…

並列処理でWebコンテンツをダウンロードする方法 - Groovy, Scala, C#, Java, Ruby

複数のWebコンテンツ(HTMLや画像など)をダウンロードする際に 1件ずつ処理していたのでは非効率です。 というわけで、並列的にWebコンテンツをダウンロードするプログラムを Groovy, Scala, C#, Java, Ruby で実装してみました。主な仕様は以下で、外部ラ…

LINQやコレクションAPIを使ってCSVファイルからデータ抽出 - C#, F#, Scala, Groovy, Ruby の場合

id:fits:20110702 や id:fits:20110709 にて、SQL を使ってデータ抽出した処理を LINQ やコレクション API を使って実施し直してみました。(ただし、今回は station_g_cd でのソートを実施していない等、以前使った SQL と完全に同じではありません)今回は…

ScalaQuery で SQL を実行 - StaticQuery の使用

id:fits:20110702 で使った SQL を ScalaQuery でも実行してみました。ScalaQuery ではテーブル毎にテーブルオブジェクトを定義するのが一般的なようですので、SQL を直接使うケースは少ないかもしれませんが、とりあえず StaticQuery で SQL を実行できます…

Embed Jetty - Groovy と Scala で Jetty を組み込み実行

プログラム内での Jetty 組み込み実行を試してみました。 id:fits:20110521 で作成したサンプルの war ファイルを Groovy と Scala から組み込み実行してみます。使用した Jetty のバージョンは以下の通りです。 Jetty 8.0M3 サンプルソースは http://github…

Scalatra + Scalate + Morphia で MongoDB を使った Web アプリ開発

以前、Sinatra(id:fits:20110306)や express(id:fits:20110409)で作成したサンプルと同じものを Scalatra + Scalate(Scaml 使用)+ Morphia の構成で作成してみました。環境は以下の通りです。 Scala 2.9.0.1 sbt 0.7.7 Scalatra 2.0 Snapshot Scalate …

Scala で Morphia を使った MongoDB 操作

MongoDB のための Java 用オブジェクトマッピングツール Morphia を Scala で使ってみました。(Morphia は Ruby の Mongoid や MongoMapper と同等のツール)使用した環境は以下の通りです。 Scala 2.9.0 sbt 0.7.5 Morphia 1.0 Snapshot MongoDB 1.9.0 サン…

Windows Azure 上で Scala アプリケーションを実行 - Windows Azure Starter Kit for Java 使用

Windows Azure Starter Kit for Java を使って、Windows Azure 上で簡単な Scala アプリケーションを実行してみました。 Windows Azure Starter Kit for Java Windows Azure SDK 1.4 Scala 2.8.1 sbt 0.7.5 今回は、Grizzly を使った簡単な HTTP サーバーア…

Maven での BDD - Specs, Specs2, RSpec, Easyb, spock

Maven3 を使ったプロジェクトでの BDD(振舞駆動開発)の実施方法をまとめてみました。 今回試した BDD ツールは以下の通りです。 Specs Specs2 RSpec Easyb(Maven2) spock 結果として、この中では Specs/Specs2 か spock あたりを使うのが良さそうです。…

Haskell, Scala によるパーサーコンビネータを使った CSV ファイルのパース処理

以前(id:fits:20101129, id:fits:20101204)試したような CSV ファイルのパース処理を書籍 Real World Haskell―実戦で学ぶ関数型言語プログラミング を参考に Haskell と Scala のパーサーコンビネータでやってみました。 Haskell の方は本の内容ほとんどそ…

Groovy, Scala, F#, Haskell による関数・クロージャの合成

Groovy 1.8 のクロージャ合成の機能を試したついでに、Scala, F#, Haskell での関数合成の機能も簡単にまとめてみました。サンプルのソースコードは http://github.com/fits/try_samples/tree/master/blog/20101213/ Groovy の場合 Groovy では >> や Groovy…

Ruby, Groovy, Scala での Excel準拠 CSV ファイルのパース処理 - opencsv使用、Iterator.continually() 等

Excel の仕様に準拠した以下のような CSV ファイル(改行・カンマ・ダブルクォーテーションを要素内に含む)をパースし、第1・3の要素を標準出力に出力するサンプルを Ruby、Groovy、Scala で作成してみました。 CSVファイル例 test.csv 1,テスト1,"改行 含…

Scala, F#, Ruby によるメール送信 - メールで Evernote にノート登録

メールを使った Evernote へのノート登録を Scala, F#, Ruby で試してみました。Evernote は、ノート登録用のメールアドレス(アカウント情報に記載あり)に以下のような Subject(件名)でメール送信するだけでノート登録ができます。(メールの本文がノー…

Hadoop 完全分散モードで Scala による MapReduce のジョブ実行 - hdfs・mapred コマンドによる手動実行

前回 id:fits:20101010、Scala で実装した MapReduce のコードを完全分散モードで実行してみました。今回は、クラスタ上の全デーモンを起動する start-dfs.sh スクリプトは使わずに、hdfs や mapred を使って NameNode・DataNode、JobTracker・TaskTracker …

sbt を使って Scala で Hadoop MapReduce 実装

sbt を使って MapReduce を Scala で実装してみました。 使用した環境は以下の通り。(sbtの環境は id:fits:20100810 と同じ) Hadoop 0.21.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20101010/ プロジェクト設定 はじめに環…

specs で GAE/J データストアのユニットテスト - LocalServiceTestHelper使用

GAE/J データストアを使用した処理のローカル上でのユニットテスト(BDD なのでユニットテストとは呼ばないかも)を specs(Scala用BDDツール)で実施してみました。テストには GAE/J SDK の lib/testing/appengine-testing.jar ファイルに含まれる LocalSer…

Scala を使った Android アプリで JSON データをリスト表示 - AsyncTask を使った非同期処理と ListView によるリスト表示

今回は以前に iUI や jQTouch で作成した JSON データをリスト表示するサンプル id:fits:20100715 id:fits:20100731 の Android アプリ版を作成してみました。(JSON を返すサーバー処理は id:fits:20100713 の Sinatra サンプルを使用)Android版の画面は以…

Scala で Android アプリケーション作成 - sbt 使用(sbt-android-plugin)

Android アプリケーションを sbt を使って作成するためのプラグイン sbt-android-plugin があるので、これを使って簡単な Android アプリケーションを Scala で作成してみます。なお、今回は使っていませんが、sbt-android-plugin にはプロジェクトの雛形を…