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` など…

Doma で Joda-Time を使う

Annotation Processing を活用する Java製 ORM の Doma ですが、version 1.25.0 から外部のクラスをDomainとして使う事ができるという機能が実装されました。そこで、Joda-Time の DateTime などを使えるように DomainConverters を作成してみました。https:…

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…

Rails2.0 の Cookie Session を既存のJavaアプリに簡単に組み込める Servlet Filter

Rails2.0の Cookie Session Store 面白いですね。詳細については 2.0のcookie session storeを体感する といった記事が詳しいのでそちらに譲ります。この Cookie Session が RESTfull かどうかといった議論は正直どうでもよくて(個人的にはSessionて概念が発…

EnumのVisitorパターン

Enumに対してVisitorパターンを適用したいなーっていうケースはしばしばあったんですが、Visitor interface のメソッドオーバーロードのさせ方がわからずどうしたもんかな、と思ってました。しかしよくよく考えればオーバーロードの解決って静的だからこれで…

メンバーの順序

意見に対して別の論を示したら強烈にdisられてしまいました。議論にならないのは残念ですね。ともあれ、いい機会なのでメンバーの順序について掘り下げて考えたいと思います。といっても明確な結論は出なかったので、事実の確認と思考のメモということで。話…

generic の自己再帰定義活用

Haskell の Monad の bind は、戻り値が第一引数と同じ Monadインスタンスでないとなりません。そうでないとモナド則が成り立たないですしね。 そもそも Haskell の ad-hoc polymorphism では、同じ型クラスの違うインスタンスを混ぜて扱うことは許していな…

Pythonのメソッド引数に self を書くメリット

なぜPythonのメソッド引数に明示的にselfと書くのか に関連して。 確かに他の言語から移ってきた人からすると奇異に見えることが多そうですね。ただ、私はこの仕様を知ったとき「上手いな」と思いました。というのも、 instance.method(arguments) == ClassN…

Singleton にするために enum を使う是非

以下思考の変遷。priority という値を持つ DTO と、その DTO の List を priority順で処理する必要があるロジックがありました。 ■Dto public class HogeDto { private short priority; public short getPriority() {return priority;} // その他の項目は省…

S2JDBCによる不変オブジェクト活用

以前から S2JDBC を利用しています。DTOとEntityを同じクラスにしたいため、public field は避けて JavaBeans にしていました。最初、S2Dao と同じ感覚で各種アノテーションをアクセサに指定してたんですが、これが何故か動かない。はて、と思って S2JDBC の…

Effective Java の Builderパターンとその拡張

Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフトカバー)購入: 77人 クリック: 936回この商品を含むブログ (264件) を見るちょいと前から Effecti…

Key-Value Store の統一インターフェイスが欲しい

最近 Tokyo Cabinet/Tokyo Tyrant で遊んでいます。分散楽しいです。最初は Key-Value型のデータストアっていっぱいあってどれがいいかなーとか比較してたりしたんですが、やっぱりエンティティをシリアライズするコストがどうにも気になって。BigTable みた…

List モナドの mplus サンプル in JavaScript

前回の記事 で Listモナドと Maybeモナドの mzero/mplus について書きましたが、Maybe についての例しか出してなかったですね。なので List モナドの例についても紹介しておこうと思います。前回と同じくクローン羊の例を使います。 羊を表す Sheep クラスが…

Purely Functional Data Structures 写経 5.4 Splay Heaps

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見るHaskell写経の続きです。5.3章は3.2章の Binomal Heap…

JavaScript でモナド List と Maybe に mzero と mplus

JavaScript で Maybe JavaScript で Listモナド に続く Monadic Programming in JavaScript シリーズです。今回は List と Maybe に Haskell で言う mzero と mplus を用意してみましょう、というお話。と、ちょっとその前に。今までの記事では Haskell の r…

JSONスキーマの存在意義

檜山正幸さんがJSONスキーマについて丁寧に解説されています。この記事のブコメを見てみると XML Schema が在るんだし軽さがウリの JSON にそんなの必要なくね?的なコメントが散見されます。実を言えば私自身もこの記事を最初に見たときにそう思いました。…

Array.prototype.map の自前実装

javascript array map 自前 という検索ワードでのリファラがあったので map の自前実装でも書いてみます。 とはいえ、すでにやってる方がいらっしゃるので Arrayオブジェクトのmapメソッド - バリケンのJavaScript日記 多元配列を一元配列に変換 (JavaScript…

countUp できる CountDownLatch

先日、CountDownLatch の Count をインスタンス生成してから決定したいというケースがありました。 JDK標準で提供されているモノでなんとかならないかと思ったのですが、要望に合致するものが見つけられなかったので書いてみました。 import java.util.concu…

Purely Functional Data Structures 写経 5.2 Queues

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見るHaskell 写経の続きです。4章は遅延評価の章で、Stand…

Cache のクリア

以前に紹介した汎用オブジェクトCache [id:gakuzo:20090226:1235667999] ですが、キャッシュのクリアが無いと使えないよ!というご指摘を受けました。キャッシュのクリアについては、Cacheインスタンス自体を破棄すれば OK です。例としてはこんな感じに。 p…

Purely Functional Data Structures 写経 3.3 Red-Black Trees

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見るHaskell 写経の続きです。P24〜P29赤黒木です。赤黒木…