CLOVER🍀

That was when it all began.

2012-03-01から1ヶ月間の記事一覧

Pipelineに組み込まれたChannelHandlerの実行順を確認する[クライアント編&まとめ]

前に、NettyのTelnetサーバのサンプルを写経して、Pipelineに組み込まれたChannelHandlerがどういう順番に呼び出されていくのかを確認しました。今度は、クライアント側を見ていこうと思います。というわけで、TelnetクライアントのサンプルをScalaでアレン…

NettyでPipelineの構成を動的に変更する

前回は、Pipelineに組み込まれたChannelHandlerがどう呼ばれているのかをトレースしました。今度は、Pipeline内のChannelHandlerを動的に変更してみたいと思います。これ自体は、実は前にWebSocketの例を写経した時に書いているんですよね。まあ、当時は「何…

NettyのPipelineとChannelHandlerの関係を学ぶ

久々にNettyです。以前はUser Guideの写経でしたが、今度はもうちょっと踏み込んだ内容に手を出していこうと思います。まずは、Pipelineとそれに組み込まれているChannelHandlerを理解していくところから。ChannelHandlerインターフェースは、そのサブクラス…

ScalaとGroovyのクロージャで、再帰を使った場合の違い

最近、業務でこそっとGroovyを使いだしているのですが、軽くクロージャ周りでハマったのでメモ。別に階乗のプログラムが書きたかったわけではないのですが、サンプルとして。 def factorial = { n -> if (n > 0) { n * factorial(n - 1) } else { 1 } } prin…

Groovyのバインディング変数とローカル変数

Groovyでは、スクリプト中の変数のスコープが宣言方法で大きく変わるようです。これも仕事でGroovyを使っていて、ハマったのでメモ。例えば、以下のスクリプトについて。 binding_local.groovy outside = "binding object" def outsideLocal = "local object…

Scalaで特定のパッケージ配下のクラスを検索する

先の日記は、同様の趣旨のプログラムをJavaで書いたのですが、今度はScalaで書いてみました。パッケージの取得と配下のクラスファイルの走査方法自体は前回で書いているので、今回は割愛。とりあえず、結果のソースを載せてみます。なお、動作的にScala版がJ…

Javaで特定のパッケージ配下のクラスを検索する

1度やってみたかったんですよね、これ。DIコンテナとかで、よく特定のパッケージ配下のクラスを検索するような機能がありますが、これを自分で書いてみようと思います。検索対象のクラスが配置されているパターンとしては、 ディレクトリ配下に.classファイ…

Nettyアプリケーションをシャットダウンする

Netty User Guidの最後のチュートリアルです。アプリケーションのシャットダウン方法を学びます。9. Shutting Down Your Application http://netty.io/docs/stable/guide/html/#start.12ではでは、訳していってみましょう。 TimeClientを実行したのであれば…

NettyのChannelBufferをPOJOに置き換える

今度は、Timeクライアント/サーバをChannelBufferからPOJOを使うように変更してきます。User Guide的には、こちらの内容です。Speaking in POJO instead of ChannelBuffer http://netty.io/docs/stable/guide/html/#start.pojoではでは、いってみましょう。…