Scala
blog1.mammb.com からの続きで、簡単な Hello Scalate をしてみます。 Scalate とは Scala で書かれたテンプレートエンジンで、以下のシンタックスがサポートされています。 Mustache: 多くの言語で実装があり どこでも使えるテンプレートエンジン Jade: 軽…
blog1.mammb.com からの続きで、簡単な Hello Scalatra をしてみます。 Scalatra とは web micro-framework とされている通り、非常にコンパクトな Web フレームワークです。 以下のような Sinatra 風の DSL が利用できます(Scala + Sinatra = Scalatra)。 g…
Scala のビルドツールと言えば sbt ですが、もちろん Gradle でも簡単に始められます。 ここでは Gradle の scala プラグインを使った Hello World を見ていきます。 プロジェクトの作成 Scala プラグイン Main オブジェクトの作成 アプリケーションの実行 …
単なるエコーサーバをScalaで凝縮してみると、、 import java.net.{InetSocketAddress, StandardSocketOptions} import java.nio.ByteBuffer import java.nio.channels.{AsynchronousSocketChannel, CompletionHandler, AsynchronousServerSocketChannel} ob…
Scala からオブジェクトDBの db4Object を使う blog1.mammb.comの記事でも取り上げた db4Object を Scala から利用してみます。 db4o-8.0.184.15484-all-java5.jar をクラスパスに追加して Scala から使うだけです。 エンティテイ として、Customer クラスを…
前回 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…
前回 blog1.mammb.com の簡易 Web サーバのやっつけ実装を整理してみます。 Handler の依存が気に入りません Server クラスでは、ServerSocketChannel の初期化を行い、アクセプト要求にこたえる AcceptHandler の登録をしています。その後、selector のセレ…
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…
blog1.mammb.com から、さらに最近出た本を追加して加筆 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須のコップ本「Scala スケーラブルプ…
内容が古くなったのでこちら blog1.mammb.com に新しく出た本を追加して更新します。。 昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。個人的なお勧め順で紹介。 必須の…
Java コレクションと Scala コレクションは、implicit により相互変換を簡単に、というか、意識せずに行うことができます。 以前は scala.collection.jcl でしたが、Scala 2.8 から scala.collection.JavaConversions としてコンバータが提供されています。 …
Scala での正規表現 Scala での正規表現は、scala.util.matching.Regex を使って、 val Decimal = new Regex("""(-)?(\d+)(\.\d*)?""") または StringLike の r を使って val Decimal = """(-)?(\d+)(\.\d*)?""".r のように指定できます。 scala.util.matchi…
ダウンロードとインストール 以下をダウンロードしてインストール。 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 Plugin Portal に 4月27日付で登録されてました。 scala-2.8.x for NetBeans 7.0 こんな感じです。
blog1.mammb.comからの続き エンドポイント エンドポイントは Camel において、システムがメッセージを送受信できるチャネルの終端をモデル化した抽象です。これを以下に図示します。 Camel では file:data/inbox?delay=5000 のような URI を用いてエンドポ…
blog1.mammb.com からの続き 1.4 Camel のアーキテクチャ それでは Camel のアーキテクチャに焦点をあてていきましょう。最初にアーキテクチャの概要から見ていき、その後で特定のコンセプトについて詳細に見ていくことにします。この章を読み終われば、第2…
blog1.mammb.com からの続き Camel のメッセージモデル Camel ではメッセージのモデリングに 2つの抽象があります。本章ではこの2つについて説明します。 org.apache.camel.Message ― Camel にて運び届けられるデータを含む基本的なエンティティ org.apache.…
blog1.mammb.comからの続き 1.2 Getting started この章では Camel ディストリビューションの利用方法を説明します。Camel ディストリビューションの中身を説明し、Apache Maven を利用した例を実行します。これが終われば、本書のソースコードの例を実行で…
blog1.mammb.comからの続き 1.1.2なぜCamelを使うのか Camel は既存のフレームワークを使う代わりに、いくつかの斬新なアイディアを統合スペースにもたらします。これは著者が第一にCamelの開発を決めた理由となります。本書では Camel の豊富な機能を見てい…
以下で公開されている 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:…
http://ingomaier.blogspot.com/2010/11/scalaswing-package-in-28-and-beyond.html を邦訳メモしてあったので公開してみます。 scala.swing は Java Swing と、いくつかの AWT クラスのラッパーライブラリです。Java と Scala の相互運用のために、ラッパー…
以下のようにトレイトの 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 2.9.0.RC1 のリリースから数日で、Scala IDE for Eclipse の 2.9 対応版がリリースされています。Scala IDE 自体も 2.0.0 版となっており軽く触った限りでは、好印象です。 ダウンロードサイトは現時点では以下となっていました。 http://download.sca…
2011年3月25日、早くも Scala 2.9.0 のリリース候補が出ています。本家の記事を適当に邦訳して紹介しますね。 元ネタはこちらの POST となります。 http://www.scala-lang.org/node/8976 Scala 2.9.0 RC1 数か月の作業を終え、Scala チームは新しい Scala 2.…
JSONP 形式での時刻配信 NICT の日本標準時プロジェクトにて NTP の時刻情報を JSON で、こんな感じで取得できます。 jsont( { "id": "ntp-a1.nict.go.jp", "it": 1232963971.248, "st": 1232963971.920, "leap": 33, "next": 1230768000 } ) 取得項目は以下…
以下のドキュメントのままです http://www.scala-lang.org/docu/files/packageobjects/packageobjects_0.html パッケージオブジェクトとは 2.8 以前のScalaでは、パッケージの中にはクラスとトレイト、そしてスタンドアロンオブジェクトが定義できました。こ…
Scala 2.8 にて名前付き引数(Named Arguments)が利用できるようになりました。 名前付き引数 以下のような joiner メソッドに対して、 object StringUtil { def joiner(strings: List[String], separator: String = " "): String = strings.mkString(separat…
Scala 2.8 からメソッドの引数にデフォルト値を指定できるようになりました。 Scala 2.7 系では引数にデフォルト値を用意したい場合は、 object StringUtil { def joiner(strings: List[String], separator: String): String = strings.mkString(separator) …
IntelliJ IDEA の Scala プラグインで fsc (Fast Scala Compilation) オプションの使い方はちょっと分かりにくいです。Ctrl + Alt + S で Scala Compiler ダイアログの Use fsc (fast scalac) オプションをチェックします。 Run - Edit Configurations から …
現時点で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 を落として適当なディレクトリに解凍します。ドキュメ…