Scala

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 にはプロジェクトの雛形を…

ScalatraによるWebアプリケーション作成 - sbtを使った開発

Sinatra 風の Scala 用 Web フレームワーク Scalatra を使って簡単な Web アプリケーションを作成してみた。使用した環境は以下の通り。ビルドには Scala 用のビルドツール sbt (simple-build-tool) を使用した。 Scala 2.8.0 sbt 0.7.4 サンプルソースは ht…

Groovy, Scala, Ruby, PHP による XML の加工 - 要素や属性の追加・更新・削除

今回は、各種スクリプト言語による XML の加工方法をまとめてみました。 Groovy, Scala, Ruby, PHP を使って以下のような XML を <root> <data id="1">sample1</data> <data id="2" ext="none"> <details /> <details /> </data> </root> 次のような加工を施して (1) id="3" の data 要素を追加 (2) id="2" の data 要素に type 属性を追加 (3) id="1…

Groovy, Scala, Ruby, PHPでのXMLパース処理 - XPath使用

XPath もしくは類似の方法を使ったXMLのパース方法を Groovy, Scala, Ruby, PHP でまとめてみた。 個人的には、XMLのパース用途では Groovy を主に使用し、状況や気分に応じて Ruby, PHP を使用するような感じだ。(Scala はXMLパース用途にはあまり使わない…

関数型プログラミングっぽいファイル検索 - Listモナド

関数脳の習得に向け、Scala で関数型プログラミングっぽいファイル検索を書いてみる事にしました。テーマは List モナド。 個人的な理解では、List モナドはリストの内容を変化(増減や値の変更)させる処理を繋げていくようなイメージです。使用した環境は…

Scala の限定継続2 - Swarmによるリモート継続

Scala 2.8 の限定継続用ライブラリ Swarm を使用すると、継続をリモートプロセスに転送する事ができるようになります。 という事で、Swarm を少し試してみました。使用した環境は以下の通り。 Scala 2.8 Beta1 continuations プラグイン(正式名がよくわから…

Scala の限定継続(Delimited Continuations)

Scala 2.8 では、限定継続(Delimited Continuations)という機能がサポートされる模様。 個人的に、この継続っていう機能の概念がイマイチよく分からなかったので実際に使ってみた。 Scala 2.8 Beta1 continuations プラグイン 事前準備 Scala 2.8 Beta1 で…

SproutCore で JAX-RS(Jersey) と連携させる方法

SproutCore の ToDo チュートリアルを元に、JAX-RS(Jersey 使用)と連携させてみた。 ちなみに SproutCore は JavaScript 用のフレームワーク。Ruby 上で実行やビルド(HTML や JavaScript を生成)を実施し、Rails と同様の感覚で JavaScript の Web アプ…

Scala で JAX-RS(JSR-311) - Jersey の場合

以前 id:fits:20080522:1235531047 では Groovy で Jersey を使ってみたが、今回は Scala で試してみた。使用した環境は以下の通り。 Scala 2.7.7 Jersey 1.1.4 JRuby 1.4.0(動作確認で使用) Scala でサンプル作成 Scala で JAX-RS する場合の注意点は以下…