Scala

Gradle で Hello Scalate on Scalatra

blog1.mammb.com からの続きで、簡単な Hello Scalate をしてみます。 Scalate とは Scala で書かれたテンプレートエンジンで、以下のシンタックスがサポートされています。 Mustache: 多くの言語で実装があり どこでも使えるテンプレートエンジン Jade: 軽…

Gradle で Hello Scalatra

blog1.mammb.com からの続きで、簡単な Hello Scalatra をしてみます。 Scalatra とは web micro-framework とされている通り、非常にコンパクトな Web フレームワークです。 以下のような Sinatra 風の DSL が利用できます(Scala + Sinatra = Scalatra)。 g…

Gradle で Hello Scala

Scala のビルドツールと言えば sbt ですが、もちろん Gradle でも簡単に始められます。 ここでは Gradle の scala プラグインを使った Hello World を見ていきます。 プロジェクトの作成 Scala プラグイン Main オブジェクトの作成 アプリケーションの実行 …

Java7からのNIO2で高凝縮のエコーサーバを書いてみた

単なるエコーサーバをScalaで凝縮してみると、、 import java.net.{InetSocketAddress, StandardSocketOptions} import java.nio.ByteBuffer import java.nio.channels.{AsynchronousSocketChannel, CompletionHandler, AsynchronousServerSocketChannel} ob…

Scala と ODBMS の合わせ技が効率的すぎる

Scala からオブジェクトDBの db4Object を使う blog1.mammb.comの記事でも取り上げた db4Object を Scala から利用してみます。 db4o-8.0.184.15484-all-java5.jar をクラスパスに追加して Scala から使うだけです。 エンティテイ として、Customer クラスを…

Scala で簡易 Web サーバのプロトタイプをリファクタしてみた(2)

前回 blog1.mammb.com の続き。 エントリポイント Main.scala package etc9.aokan object Main { def main(args: Array[String]):Unit = new Acceptor(8900, new IoHandler[HttpRequest, HttpResponse] with HttpReadChannel with HttpProcess with HttpWrit…

Scala で簡易 Web サーバのプロトタイプをリファクタしてみた

前回 blog1.mammb.com の簡易 Web サーバのやっつけ実装を整理してみます。 Handler の依存が気に入りません Server クラスでは、ServerSocketChannel の初期化を行い、アクセプト要求にこたえる AcceptHandler の登録をしています。その後、selector のセレ…

Scala で簡易 Web サーバのプロトタイプ書いてみた

Httpd.scala NIO 経由でのリクエストとレスポンスの処理。 package etc9.aokan import java.nio.ByteBuffer import java.io.{File, FileInputStream} import java.nio.channels._ import etc9.aokan.HttpDef._ import collection.mutable.{ListBuffer} impor…

Scalaを学ぶためのScala本の読み進め方 (10冊)

blog1.mammb.com から、さらに最近出た本を追加して加筆 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須のコップ本「Scala スケーラブルプ…

Scalaを学ぶためのScala本の読み進め方

内容が古くなったのでこちら blog1.mammb.com に新しく出た本を追加して更新します。。 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須の…

Java コレクションと Scala コレクションの相互変換

Java コレクションと Scala コレクションは、implicit により相互変換を簡単に、というか、意識せずに行うことができます。 以前は scala.collection.jcl でしたが、Scala 2.8 から scala.collection.JavaConversions としてコンバータが提供されています。 …

Scala の正規表現でマッチフラグを使うには

Scala での正規表現 Scala での正規表現は、scala.util.matching.Regex を使って、 val Decimal = new Regex("""(-)?(\d+)(\.\d*)?""") または StringLike の r を使って val Decimal = """(-)?(\d+)(\.\d*)?""".r のように指定できます。 scala.util.matchi…

IntelliJ IDEA における SBT のセットアップ手順

ダウンロードとインストール 以下をダウンロードしてインストール。 IntelliJ IDEA Community Edition(Version:10.0.3 Build:103.255) http://www.jetbrains.com/idea/download/index.html Scala(2.8.1) http://www.scala-lang.org/downloads simple-build-t…

NetBeans 7.0 の scala-2.8 対応プラグインめっけ。

NetBeans 7.0 の scala-2.8 対応プラグインあった。 NetBeans Plugin Portal に 4月27日付で登録されてました。 scala-2.8.x for NetBeans 7.0 こんな感じです。

Camel In Action の1章の適当邦訳 〜Apache Camel その6

blog1.mammb.comからの続き エンドポイント エンドポイントは Camel において、システムがメッセージを送受信できるチャネルの終端をモデル化した抽象です。これを以下に図示します。 Camel では file:data/inbox?delay=5000 のような URI を用いてエンドポ…

Camel In Action の1章の適当邦訳 〜Apache Camel その5

blog1.mammb.com からの続き 1.4 Camel のアーキテクチャ それでは Camel のアーキテクチャに焦点をあてていきましょう。最初にアーキテクチャの概要から見ていき、その後で特定のコンセプトについて詳細に見ていくことにします。この章を読み終われば、第2…

Camel In Action の1章の適当邦訳 〜Apache Camel その4

blog1.mammb.com からの続き Camel のメッセージモデル Camel ではメッセージのモデリングに 2つの抽象があります。本章ではこの2つについて説明します。 org.apache.camel.Message ― Camel にて運び届けられるデータを含む基本的なエンティティ org.apache.…

Camel In Action の1章の適当邦訳 〜Apache Camel その3

blog1.mammb.comからの続き 1.2 Getting started この章では Camel ディストリビューションの利用方法を説明します。Camel ディストリビューションの中身を説明し、Apache Maven を利用した例を実行します。これが終われば、本書のソースコードの例を実行で…

Camel In Action の1章の適当邦訳 〜Apache Camel その2

blog1.mammb.comからの続き 1.1.2なぜCamelを使うのか Camel は既存のフレームワークを使う代わりに、いくつかの斬新なアイディアを統合スペースにもたらします。これは著者が第一にCamelの開発を決めた理由となります。本書では Camel の豊富な機能を見てい…

Camel In Action の1章の適当邦訳 〜Apache Camel その1

以下で公開されている Camel In Action の適当な邦訳です。 http://www.manning.com/ibsen/Camel_ch01_update.pdf Table of Contents Part 1 – First Steps Chapter One: Meeting Camel Chapter Two: Routing with Camel Part 2 – Core Camel Chapter Three:…

Scala 2.8 以降の scala.swing パッケージ

http://ingomaier.blogspot.com/2010/11/scalaswing-package-in-28-and-beyond.html を邦訳メモしてあったので公開してみます。 scala.swing は Java Swing と、いくつかの AWT クラスのラッパーライブラリです。Java と Scala の相互運用のために、ラッパー…

Scala 2.8 ではトレイトの val がオーバーライド可能になった

以下のようにトレイトの val をオーバーライドした場合 trait Tr1 { val hoge = "Trait1" } class Sample extends Tr1 { override val hoge = "Sample" } val s = new Sample() print(s.hoge) Scala 2.7 で以下のような出力となり正しくオーバーライドできま…

Scala IDE for Eclipse 2.0 の Beta 版で Scala 2.9.0.RC1 が早くも使える

Scala 2.9.0.RC1 のリリースから数日で、Scala IDE for Eclipse の 2.9 対応版がリリースされています。Scala IDE 自体も 2.0.0 版となっており軽く触った限りでは、好印象です。 ダウンロードサイトは現時点では以下となっていました。 http://download.sca…

早くも Scala 2.9.0 のリリース候補が出ています

2011年3月25日、早くも Scala 2.9.0 のリリース候補が出ています。本家の記事を適当に邦訳して紹介しますね。 元ネタはこちらの POST となります。 http://www.scala-lang.org/node/8976 Scala 2.9.0 RC1 数か月の作業を終え、Scala チームは新しい Scala 2.…

NTPからJSON形式で現在時刻を取得するサンプル

JSONP 形式での時刻配信 NICT の日本標準時プロジェクトにて NTP の時刻情報を JSON で、こんな感じで取得できます。 jsont( { "id": "ntp-a1.nict.go.jp", "it": 1232963971.248, "st": 1232963971.920, "leap": 33, "next": 1230768000 } ) 取得項目は以下…

Scala 2.8 で追加されたパッケージオブジェクト

以下のドキュメントのままです http://www.scala-lang.org/docu/files/packageobjects/packageobjects_0.html パッケージオブジェクトとは 2.8 以前のScalaでは、パッケージの中にはクラスとトレイト、そしてスタンドアロンオブジェクトが定義できました。こ…

Scala 2.8 で追加された名前付き引数

Scala 2.8 にて名前付き引数(Named Arguments)が利用できるようになりました。 名前付き引数 以下のような joiner メソッドに対して、 object StringUtil { def joiner(strings: List[String], separator: String = " "): String = strings.mkString(separat…

Scala 2.8 で追加されたデフォルト引数

Scala 2.8 からメソッドの引数にデフォルト値を指定できるようになりました。 Scala 2.7 系では引数にデフォルト値を用意したい場合は、 object StringUtil { def joiner(strings: List[String], separator: String): String = strings.mkString(separator) …

IntelliJ IDEA の Scala プラグインで fsc を使う

IntelliJ IDEA の Scala プラグインで fsc (Fast Scala Compilation) オプションの使い方はちょっと分かりにくいです。Ctrl + Alt + S で Scala Compiler ダイアログの Use fsc (fast scalac) オプションをチェックします。 Run - Edit Configurations から …

IntelliJ IDEA へのScala プラグイン導入手順

現時点でScalaでIDE使うなら、IntelliJ かなぁ。 Scala の導入 念のため Scala の導入から。。 http://www.scala-lang.org/downloads から scala-2.8.1.final.zip と scala-2.8.1.final-devel-docs.tgz を落として適当なディレクトリに解凍します。ドキュメ…