Scala
久々にNettyです。以前はUser Guideの写経でしたが、今度はもうちょっと踏み込んだ内容に手を出していこうと思います。まずは、Pipelineとそれに組み込まれているChannelHandlerを理解していくところから。ChannelHandlerインターフェースは、そのサブクラス…
最近、業務でこそっとGroovyを使いだしているのですが、軽くクロージャ周りでハマったのでメモ。別に階乗のプログラムが書きたかったわけではないのですが、サンプルとして。 def factorial = { n -> if (n > 0) { n * factorial(n - 1) } else { 1 } } prin…
先の日記は、同様の趣旨のプログラムをJavaで書いたのですが、今度はScalaで書いてみました。パッケージの取得と配下のクラスファイルの走査方法自体は前回で書いているので、今回は割愛。とりあえず、結果のソースを載せてみます。なお、動作的にScala版がJ…
Netty User Guidの最後のチュートリアルです。アプリケーションのシャットダウン方法を学びます。9. Shutting Down Your Application http://netty.io/docs/stable/guide/html/#start.12ではでは、訳していってみましょう。 TimeClientを実行したのであれば…
今度は、Timeクライアント/サーバをChannelBufferからPOJOを使うように変更してきます。User Guide的には、こちらの内容です。Speaking in POJO instead of ChannelBuffer http://netty.io/docs/stable/guide/html/#start.pojoではでは、いってみましょう。…
前回のエントリから、ちょっと時間が空いてしまいました…。その間に、世間では ScalaがVersion 2.10のMilestone 1と2をリリース Nettyが3.3.1にバージョンアップ とまあ、ちょっと置いてかれてる感じですね。Scala 2.10はまだMilestoneリリースなのと、Netty…
今回は、Nettyを使用してTimeプロトコルのクライアント/サーバを書いてみます。といっても、なんか大層なことをするわけではなくUser Guidの以下のセクションの写しです。なお、Timeプロトコルっていうのは、NTP以前の時刻同期プロトコルなんだそうな。[Wri…
今度は、Discard ServerをEcho Serverに変更してみます。はい、これを写します。 http://netty.io/docs/stable/guide/html/#start.7結果は、こうなります。名前がDiscardServerHandlerのままなのは、ご愛嬌。 DiscardServerHandler.scala import org.jboss.n…
前回作成したDiscard Serverを、クライアントから送られてきたデータを見れるように修正してみましょう。って要は http://netty.io/docs/stable/guide/html/#start.6 に沿って修正するだけなのですが。つまり、こういう結果になります。修正するのは、Discar…
このところ、ScalazやGaucheなどちょっと寄り道気味なものを勉強していたので、少し実務が見えるようなものの勉強を始めてみることにしました。んで、ここはネットワークプログラミングかなぁと思い、以前やっていたJBoss Nettyをもう少し真面目に勉強してみ…
前回のScalaz Effects IOに引き続き、今度はSTで遊んでみようと思います。今回、参考にさせていただいたのは前回同様こちらのslideshareと http://www.slideshare.net/SanshiroYoshida/scalaz-effects Scalazに付属しているサンプル ExampleST.scala です。S…
ScalazでIOモナドおよびSTモナドを扱うパッケージとして、effectsというのものがあります。Haskellライクに入出力とか可変状態が扱えるということで、特にIOは触ってみたかったんですよね。以下のスライドを参考にさせていただきました。 http://www.slidesh…
2012年、明けましておめでとうございます。更新ペースはマイペースだと思いますが、頑張って書いていこうと思いますので、今年もどうぞよろしくお願い致します。さて、前々回〜前回の間より、さらに間隔が空いてしまいましたが、今度はOptionWです。Optionの…
こちらは、意外とすぐにできたので。StringWです。 charsNel(e: ⇒ NonEmptyList[Char]) 元のStringが空文字であれば、引数で渡された関数の返却値であるNonEmptyListが返ります。そうでなければ、元のStringをNonEmptyListに変換したものが返ります。 printl…
少し間が空いてしまいましたが、今度はScalazのListWです。数も多いので、けっこう大変でした。 あと、モナドを使用するAPIは理解できていません。では、アルファベット順に。 元のListがNilでなければ、NonEmptyListが渡ってくるので、それに対して演算した…
APIを見てみたら、意外と数が少なかったので勢いでそのままIntWもやってみました。 ordering 実行すると、Orderingトレイトのサブクラス、EQ、GT、LTが返ってきます。それぞれ、0、正の数、負の数にマッピングされている模様。 println("-10 ordering => " +…
今月頭の更新で、Scalazをはじめましたと書きましたが、早々に仕事に忙殺されていたので、あんまり触れてませんでした。今後も忙しいので、それで終了!となるのもなんだかなぁという感じですので、合間に少しずつ遊んでいくことにします。よって、本当に更…
久々の更新です。先週末、先々週末は共に出勤だったため、さすがにブログ更新どころじゃなかったですからね…。今週末は、両方ともお休みです。まあ、次の週末が休みとなる可能性は、けっこう微妙なのですが…。さて、Gauche本を片手にScheme/Gaucheの勉強を…
最近、日本のScala界隈で名前をよく目にするもので、Scalazというライブラリがあります。Scalaz http://code.google.com/p/scalaz/Scala標準ライブラリとJ2SEにのみ依存しているライブラリで、Scalaの標準ライブラリを補うことを目的に作られているっぽいで…
後でまた戻ってくるつもりですが、限定継続を勉強しようと思っているので今の時点で参考になりそうなページをメモ。Scalaの論文 http://lamp.epfl.ch/~rompf/continuations-icfp09.pdfGaucheとScalaで限定継続を試している日記 http://d.hatena.ne.jp/einbli…
いいですね、公式(もしくはそれに近いコミュニティ?)によるこういうコーディングスタイルのまとめが出てくると、非常に嬉しいです。Scala Style Guide http://docs.scala-lang.org/style/(大元)Community-driven documentation for Scala http://docs.s…
今年の6月くらいに買った以下のScala実践プログラミングなのですが、いくつかテーマ的には気になるものがありました。オープンソース徹底活用Scala実践プログラミング作者: 小笠原啓,尾崎智仁,関隆,水島宏太,今井敬吾出版社/メーカー: 秀和システム発売日: 2…
2年前にScalaにハマるきっかけになったコップ本、その第2版が出ていたので購入してきました。Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレス発売日: 2011/09/2…
今回で、JMX関連は1度終わりにしようかなぁと思います。最後は、MXBeanです。お題はやはり、以下のサイトのサンプルをScalaで書き直し。 http://www.javainthebox.net/laboratory/JavaSE6/userdefinedmxbeans/mxbean.html まあ、MXBeanのAttributeとかOperat…
前はJMX Remoteを使用して情報取得をしてみたり、TomcatにValveを組み込んだりして遊んでいました。で、それでJMXの基礎はある程度やった気になっていましたが…よくよく考えると、MBeanを作成することをやっていませんでした。というわけで、今回はMBeanの作…
前回は、JMX Remoteを使用してTomcatが管理しているMBeanにアクセスし、セッション情報などを取得しました。が、このアプローチだとHttpSessionなどの情報を直接見れず、不便です。開発中の監視とかを行いたいので、やっぱりアクセスをトリガーとして動く仕…
JMXを使ったTomcatのモニタリングの一環です。TomcatのJMXに関する以下のページ http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html#JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task を見ていた感じ、もしかしてこれってJMXで普通に呼べる…
仕事で、JMXを利用したアプリケーション監視をやることになりそうな感じです。今までJMXは情報自体は見聞きしていたのですが、実際にコードを書いたことはなかったのでこれを機にちょっと勉強したいと思います。監視対象はTomcatになりそうなので、最初からT…
sbtを使うのなら、依存関係の管理はsbtに任せたいところですが、IntelliJにsbtで管理しているライブラリを認識させるには、一手間必要です。やっぱり、今回も使用するのはsbt-ideaプラグインです。 https://github.com/mpeltonen/sbt-ideaでは、実際やってみ…
今回は、sbtで管理していたプロジェクトをIntelliJに取り込む方法を紹介します。というか、sbtでIntelliJの設定ファイルを生成するプラグインを紹介します、と言った方が正しいですかね。使用するのは、このsbt-pluginです。 https://github.com/mpeltonen/s…