CLOVER🍀

That was when it all began.

Scala

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…

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

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

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をもう少し真面目に勉強してみ…

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…

Scalaz OptionW

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

Scalaz StringW

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

Scalaz ListW

少し間が空いてしまいましたが、今度はScalazのListWです。数も多いので、けっこう大変でした。 あと、モナドを使用するAPIは理解できていません。では、アルファベット順に。 元のListがNilでなければ、NonEmptyListが渡ってくるので、それに対して演算した…

Scalaz IntW

APIを見てみたら、意外と数が少なかったので勢いでそのままIntWもやってみました。 ordering 実行すると、Orderingトレイトのサブクラス、EQ、GT、LTが返ってきます。それぞれ、0、正の数、負の数にマッピングされている模様。 println("-10 ordering => " +…

Scalaz BooleanW

今月頭の更新で、Scalazをはじめましたと書きましたが、早々に仕事に忙殺されていたので、あんまり触れてませんでした。今後も忙しいので、それで終了!となるのもなんだかなぁという感じですので、合間に少しずつ遊んでいくことにします。よって、本当に更…

Gauche本の継続を、Scalaで書く

久々の更新です。先週末、先々週末は共に出勤だったため、さすがにブログ更新どころじゃなかったですからね…。今週末は、両方ともお休みです。まあ、次の週末が休みとなる可能性は、けっこう微妙なのですが…。さて、Gauche本を片手にScheme/Gaucheの勉強を…

Scalazを始めてみました

最近、日本のScala界隈で名前をよく目にするもので、Scalazというライブラリがあります。Scalaz http://code.google.com/p/scalaz/Scala標準ライブラリとJ2SEにのみ依存しているライブラリで、Scalaの標準ライブラリを補うことを目的に作られているっぽいで…

Scalaの限定継続に関するページ

後でまた戻ってくるつもりですが、限定継続を勉強しようと思っているので今の時点で参考になりそうなページをメモ。Scalaの論文 http://lamp.epfl.ch/~rompf/continuations-icfp09.pdfGaucheとScalaで限定継続を試している日記 http://d.hatena.ne.jp/einbli…

Scala Style Guide

いいですね、公式(もしくはそれに近いコミュニティ?)によるこういうコーディングスタイルのまとめが出てくると、非常に嬉しいです。Scala Style Guide http://docs.scala-lang.org/style/(大元)Community-driven documentation for Scala http://docs.s…

Scalaで継続モナド(Continuationモナド)を学ぶ

今年の6月くらいに買った以下のScala実践プログラミングなのですが、いくつかテーマ的には気になるものがありました。オープンソース徹底活用Scala実践プログラミング作者: 小笠原啓,尾崎智仁,関隆,水島宏太,今井敬吾出版社/メーカー: 秀和システム発売日: 2…

コップ本、第2版購入しました♪

2年前にScalaにハマるきっかけになったコップ本、その第2版が出ていたので購入してきました。Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレス発売日: 2011/09/2…

MXBeanを作成してみる

今回で、JMX関連は1度終わりにしようかなぁと思います。最後は、MXBeanです。お題はやはり、以下のサイトのサンプルをScalaで書き直し。 http://www.javainthebox.net/laboratory/JavaSE6/userdefinedmxbeans/mxbean.html まあ、MXBeanのAttributeとかOperat…

MBeanを作成してみる

前はJMX Remoteを使用して情報取得をしてみたり、TomcatにValveを組み込んだりして遊んでいました。で、それでJMXの基礎はある程度やった気になっていましたが…よくよく考えると、MBeanを作成することをやっていませんでした。というわけで、今回はMBeanの作…

TomcatのValveを使用して、アプリケーションのアクセス時にモニタリングを行う

前回は、JMX Remoteを使用してTomcatが管理しているMBeanにアクセスし、セッション情報などを取得しました。が、このアプローチだとHttpSessionなどの情報を直接見れず、不便です。開発中の監視とかを行いたいので、やっぱりアクセスをトリガーとして動く仕…

JMXを使用して、Tomcat内のセッションIDと属性を取得する

JMXを使ったTomcatのモニタリングの一環です。TomcatのJMXに関する以下のページ http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html#JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task を見ていた感じ、もしかしてこれってJMXで普通に呼べる…

TomcatをJMXで覗いてみる

仕事で、JMXを利用したアプリケーション監視をやることになりそうな感じです。今までJMXは情報自体は見聞きしていたのですが、実際にコードを書いたことはなかったのでこれを機にちょっと勉強したいと思います。監視対象はTomcatになりそうなので、最初からT…

sbtの依存関係管理をIntelliJから使用する

sbtを使うのなら、依存関係の管理はsbtに任せたいところですが、IntelliJにsbtで管理しているライブラリを認識させるには、一手間必要です。やっぱり、今回も使用するのはsbt-ideaプラグインです。 https://github.com/mpeltonen/sbt-ideaでは、実際やってみ…

sbtプロジェクトをIntelliJに取り込む

今回は、sbtで管理していたプロジェクトをIntelliJに取り込む方法を紹介します。というか、sbtでIntelliJの設定ファイルを生成するプラグインを紹介します、と言った方が正しいですかね。使用するのは、このsbt-pluginです。 https://github.com/mpeltonen/s…