Scala

finagel-http path の紹介

これは Finagle Advent Calendar 2012 (だいたい俺) の16日目です。Finagle には HTTP通信用の http サブプロジェクトがありますが、この中に path というパッケージと Path によって Routing を行う RoutingService というものが提供されています。今日はこ…

twitter-util Spool の紹介

この記事は Play or Scala Advent Calendar 2012 の9日目です。 はじめに twitter-util には cuncurrent に関する基本的なクラスが提供されています。Scala本体に取り込まれる予定の `Future` や、非同期にオブジェクトを仲介する `Offer` や `Broker` など…

Scalaz の命名規則

この記事は Scalaz Advent Calendar 2012 の4日目です。どこかで Scalaz7 の package や class/trait の命名規則について書いてというのを見た気がするのでその辺を書いてみようと思います。ちなみにあくまで現状のソースコードを見た上での推測で、MLなり何…

JavaOne Tokyo 2012 の JVM言語BoF でスピーカーしてきたよ

4/4-5 に行われた JavaOne Tokyo 2012 の JVM言語BoFに、スピーカーとして参加してきました。BoFの概要は以下のような感じです。 JavaVM上で動作するさまざまなプログラミング言語 (Groovy、JRuby、Scalaなど) のコミュニティや興味を持つ個人が集まって、各…

PlayBay で Play2.0 + pjax の話をしてきたよ

パソナテックさんのエンジニアカフェで行われた PlayBay - Play!Framework + WebSocket勉強会に講師として参加してきました。発表スライドDEMOのソースコードUstでも動画がみれるそうです。WebSocketと謳ってるのに全く関係ない pjax の話をさせてもらいまし…

implicit value の定義方法いろいろ

このエントリは Scala Advent Calendar jp 2011 の四日目です。Scala には implicit parameter という機能があります。どういう機能かと言うと、引数に implicit という修飾子をつけると、関数呼び出しの際にその引数を省略することが可能になるというもので…

クラスの extends とトレイトの extends の違い

Scala の extends と with の意味合いがちょっと解りづらかったので整理してみました。先に結論を書いておくと以下になります。 extends の直後は必ずクラスになる トレイトは mixin するために必要な条件を持つ これだけだとちょっと何言ってるんだって感じ…

Loanパターンのアレに Conceptパターンを足してみたよ

Loanパターンをfor式で使えるようにしてみたよ に Conceptパターンを足してみました。と言うのも、後始末のメソッドは close() だけとは限らず、リソースによって dispose() や release() destroy() など様々あります。それら全部に対応できるといいなと思っ…

Loanパターンをモナドfor式で使えるようにしてみたよ

みんな大好きLoanパターンですが、複数のリソースを扱いたい時などネストが深くなってしまうのでちょっと困ってしまいます。そこでLoanパターンをモナドfor式で使えるようにしてみました。 class Loan[T <: {def close()}] private (value: T) { def foreach[U](f: T => U): U = try { f(value) } finally { value.close() </:>…

List内に最も多く出現するオブジェクトを取得するメソッド

Twitterでこんな処理はどう書けばいいんだろう?というツイートがあって、Scalaの勉強がてらちょっと書いてみました。仕様は以下の通り 引数で任意の要素型のListを受け取り、そのList内に最も多く出現するオブジェクトを取得する。 最も多く出現するオブジ…

Scala2.8 と Lift2.2 のアーキタイプを M2Eclipse 上に import する

Scalaの勉強を始めました。Liftで何か作ろうとアーキタイプを作成したんですが、どはまりしたのでメモを残しておきます。 mvn archetype:generate \ -DarchetypeGroupId=net.liftweb \ -DarchetypeArtifactId=lift-archetype-basic_2.8.1 \ -DarchetypeVersi…