CLOVER🍀

That was when it all began.

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

GroovyでScalaのOptionを書いてみる

今日の小ネタ、第2弾。ホント、なんとなく書いてます…。ScalaにはOptionというクラスがあって、標準ライブラリやら普通のアプリケーションのコードの至る所に出てきます。これは、どこぞのMaybeモナド…にあたるものだと思うのですが、これをGroovyで書いてみ…

Scala/Clojure/Groovyで即時関数

あまり意味のない小ネタです。JavaScriptで使われるテクニックとして、即時関数というものがあると思います。こういうやつですね。 immediate_func.js (function (firstName, lastName) { println("Hello! [" + firstName + " " + lastName + "]"); })("Taro…

Javaのコマンドラインでのモニタリング/トラブルシューティングツール

Javaアプリでトラブルがあったりすると、アプリケーションのログなどを読んで解析をすると思いますが、パフォーマンスやGC周りでのトラブルについては、JDKに標準付属しているコマンドを使用すると原因究明の手がかりがつかめたりすることがあります。自分も…

GCログに日付/時刻を出力させる

GCログの小ネタです。GCログのオプションとして、「-XX:+PrintGCTimeStamps」、「-XX:+PrintGCDetails」、「-XX:+PrintGC」(PrintGCDetailsを指定すれば、無くてもOK)は有名だと思いますが $ java -XX:+PrintGCTimeStamps -XX:+PrintGCDetails Monitor 0.2…

HotSpot VMの起動時に有効になる拡張オプションを調べる

「-XX:+PrintFlagsFinal」という拡張フラグを有効にすると、「-XX」で指定できる拡張オプションがどのように設定されているかを表示させることができます。これを利用して、「-version」オプションを使って以下のように入力すると… $ java -XX:+PrintFlagsFi…

実行中のJavaアプリケーションの拡張設定を確認/変更する

jinfoというJDKに付属しているコマンドラインツールを使用すると、Javaの起動オプションやシステムプロパティを確認できたり、「-XX」ではじまる一部の値については実行中に変更できるようです。詳しい説明は以下に書いてありますが、jstackやjmapなどと同様…

Clojureの->マクロと->>マクロ

今回もきっかけは「実践プログラミングDSL」からだったりしますが、ClojureDocsとかでもたまに見かけて気になっていた表現があります。Clojureのこれ -> とこれ ->> です。何だろ?と思っていたのですが、書籍にも出てきたので調べてみることにしました。 ->…

Object#withとClosureと

先週購入したこんな本を読んでいて、Groovyであんまり見慣れないコードが書いてあるのを見つけました。実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ (Programmer’s SELECTION)作者: Debasish Ghosh,佐藤竜一出版社/メーカー: 翔泳社発売日…

Netty Http Snoop Clientを、SSL化する

せっかくなら、クライアント側もやってしまえ、ということで。 http://d.hatena.ne.jp/Kazuhira/20120610/1339323448クライアント側のSSLContextを作成するために、HttpsContextFactoryに修正を加えます。 HttpsContextFactory.scala import java.io.{Buffer…

Clojureでコードのロード系関数+evalを扱う

少し前にこういうエントリを書きました。その後、元にしたブログのエントリを見ていると、evalとかそういう方向に流れていて、この時に自分が取った方法は随分と遠回りだったことがわかりました。つか、evalの発想がなかった…。まだまだ考え方は静的言語って…

Netty Http Snoop Serverを、SSL化する

そろそろ、Nettyを使ったSSLサーバの作成をやってみようと思います。ExampleのHTTP(Snoop)は、SecureChatで使用しているSSL系のクラスを使用していますが、今回はkeytoolで作った証明書を使って、SSL化します。では、まずKeyStoreを作成します。KeyStoreの…

Clojureの条件分岐を覚える

ifとかwhenとかcaseとかいろいろあって、いつも迷うので1度しっかり見てみることにしました。代表的そうなものを、以下順に。 if 最も単純な条件分岐です。最初に条件式を書き、次に条件がtrueとなった場合の処理、その次にelseの処理を書きます。戻り値は、…

NettyでChat Server/Clientを書く

久々のNettyネタです。まあ、写経ですが…なかなかNettyネタだけで突っ走るのも難しいのですが、知識が衰えないように時々書いておかないと(笑)。Nettyのサンプルとして、SecureChatというのがあるのですが、今回はこれを書いてみようと思います。ただ、今…

isInstanceOf、asInstanceOfをnullに対して適用すると?

Nettyのコードを写経したりといった、Java関連のコードを置き換えている時にいつも気になっていたので。 *コメントいただいたので、もう少し内容を見直しましたScalaでは、Javaでいうinstanceof演算子とキャストがそれぞれAny#isInstanceOf、Any#asInstance…

Clojureの関数を、文字列での名前から動的に呼び出す

面白そうなチャレンジを見つけたので、別のアプローチでやってみることにしました。 *記事を執筆後、ちょっと書き直しました http://npnl.hatenablog.jp/entry/2012/06/02/150513元の記事は、文字列からシンボルを作って、それを評価しようとして四苦八苦さ…