CLOVER🍀

That was when it all began.

2012-01-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ではでは、いってみましょう。…

Nettyでストリームベースのプロトコルを扱う

前回のエントリから、ちょっと時間が空いてしまいました…。その間に、世間では ScalaがVersion 2.10のMilestone 1と2をリリース Nettyが3.3.1にバージョンアップ とまあ、ちょっと置いてかれてる感じですね。Scala 2.10はまだMilestoneリリースなのと、Netty…

NettyでTime Server/Clientを書く

今回は、Nettyを使用してTimeプロトコルのクライアント/サーバを書いてみます。といっても、なんか大層なことをするわけではなくUser Guidの以下のセクションの写しです。なお、Timeプロトコルっていうのは、NTP以前の時刻同期プロトコルなんだそうな。[Wri…

Discard ServerからEcho Serverへ

今度は、Discard ServerをEcho Serverに変更してみます。はい、これを写します。 http://netty.io/docs/stable/guide/html/#start.7結果は、こうなります。名前がDiscardServerHandlerのままなのは、ご愛嬌。 DiscardServerHandler.scala import org.jboss.n…

Discard Serverに送られてきたデータを見てみる

前回作成したDiscard Serverを、クライアントから送られてきたデータを見れるように修正してみましょう。って要は http://netty.io/docs/stable/guide/html/#start.6 に沿って修正するだけなのですが。つまり、こういう結果になります。修正するのは、Discar…

Netty 3.3.0を触る

このところ、ScalazやGaucheなどちょっと寄り道気味なものを勉強していたので、少し実務が見えるようなものの勉強を始めてみることにしました。んで、ここはネットワークプログラミングかなぁと思い、以前やっていたJBoss Nettyをもう少し真面目に勉強してみ…

「みんなのPython Webアプリ編」が無料ダウンロード可能に!!

以前自分もPythonを勉強するために購入した「みんなのPython」ですが、そのWebアプリ編がPDF化されて無料ダウンロードできるようになっているらしいです。会社の後輩から、情報提供を受けました(笑)。紹介サイトはこちら。 http://gigazine.net/news/20111…

Scalaz Effects ST

前回のScalaz Effects IOに引き続き、今度はSTで遊んでみようと思います。今回、参考にさせていただいたのは前回同様こちらのslideshareと http://www.slideshare.net/SanshiroYoshida/scalaz-effects Scalazに付属しているサンプル ExampleST.scala です。S…

Scalaz Effects IOで遊ぶ

ScalazでIOモナドおよびSTモナドを扱うパッケージとして、effectsというのものがあります。Haskellライクに入出力とか可変状態が扱えるということで、特にIOは触ってみたかったんですよね。以下のスライドを参考にさせていただきました。 http://www.slidesh…

JavaのDecompiler

JavaのDecompilerといえば、JADが有名ですよね。が、もうずっと更新されていない上に、本家はいなくなっちゃっているので、今では微妙なソフトです。一応、ミラーだけは見つかります。 http://www.varaneckas.com/jad最近ではJD(Java Decompiler)というツ…

Scalaz OptionW

2012年、明けましておめでとうございます。更新ペースはマイペースだと思いますが、頑張って書いていこうと思いますので、今年もどうぞよろしくお願い致します。さて、前々回〜前回の間より、さらに間隔が空いてしまいましたが、今度はOptionWです。Optionの…

Scalaz StringW

こちらは、意外とすぐにできたので。StringWです。 charsNel(e: ⇒ NonEmptyList[Char]) 元のStringが空文字であれば、引数で渡された関数の返却値であるNonEmptyListが返ります。そうでなければ、元のStringをNonEmptyListに変換したものが返ります。 printl…