CLOVER🍀

That was when it all began.

Clojure

JDK付属、Undertowを使ったGroovy&Clojure、Perlでの簡単なHTTPサーバ

なんとなく、時々ちょっとしたテストとかで使っているダミーのHTTPサーバ用のスクリプトをまとめたくなりまして。で、せっかくなのでプラスアルファも入れて。ホントに簡単なものなので、以下のスペックで。 リクエストの内容を解析することは、必須としない…

HazelcastのGetting Startedを、Scala、Groovy、Clojureで書き直してみた

Hazelcastの開発者の方と、Java上の多言語の話をしていて、なんとなくHazelcastのGetting Startedを他の言語で書き直してみたくなりまして。Getting Started Tutorial http://www.hazelcast.org/getting-started/ Java版 ほぼ、オフィシャルと同じ。クラス名…

Re: Clojure/lucene-kuromojiでテキストマイニング入門 〜形態素解析からワードカウントまで〜

過去のエントリを、リライトしたエントリです。以前、こちらのエントリを見てClojure/kuromojiでテキストマイニング入門 〜形態素解析からワードカウントまで〜 http://antibayesian.hateblo.jp/entry/2013/09/10/231334素のKuromojiを使って形態素解析をし…

統計解析ツールIncanterことはじめ

以前、こんなエントリを書きました。Clojure/lucene-kuromojiでテキストマイニング入門 〜形態素解析からワードカウントまで〜 http://d.hatena.ne.jp/Kazuhira/20130911/1378914422なんですけど、ぶっちゃけこの時は元の参照エントリで使っていたIncanterの…

Clojure Reducers

かなり久々のClojureネタです。以前から、試してみたいと思いつつ放っておいた、ClojureのReducersについて。http://clojure.org/reducersAPIドキュメントは、このあたりから。http://clojure.github.io/clojure/clojure.core-api.html#clojure.core.reducer…

Undertowで遊んでみる

こちらで紹介された、Undertowが面白そうだったので、久々にClojureで書くことを兼ねて遊んでみました。WildFly の Web 基盤、Undertow の紹介 http://emamotor.blogspot.jp/2013/12/introduction-undertow.htmlUndertow http://undertow.io/紹介されていた…

addedメタデータから、varのClojureに追加されたバージョンを確認する

Clojure単独ネタ。Namespaceに定義されたvarをスキャンして、そのaddedメタデータからClojureに追加されたバージョンとvarの一覧みたいなものが作れないかなぁということを、ちょっと試してみたくなりまして。結論からいくと、こんな感じのソースでできまし…

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

Clojure 1.5から、「some->」、「some->>」というマクロが追加されているみたいです。Clojureを使うのを再開してから、1.5の情報とかをチェックしていたわけではなかったので、知らなかったのがちょっともったいなかったですかね。で、どういうマクロかとい…

Clojureで学ぶ、UDPネットワークプログラミング - マルチキャスト

いよいよ、マルチキャストを使ったネットワークプログラミングに。これまで、DatagramSocketクラスを使ったプログラムは、相手がひとりしかいない、ユニキャストでしたが、今度は複数の相手に送信するマルチキャストです。 *DatagramSocketクラスで、マルチ…

Clojureで学ぶ、UDPネットワークプログラミング - Non Blocking IO

前回はReliable UDPを書くのにClojureをすっ飛ばしてしまいましたが、今回はClojureから始めます。お題は、NIOを使ったUDP Echoクライアント/サーバ。外見上の動作は、前と変わらないので省略…。最初はClojure版から入ったわけですが、まーてこずりました。…

Clojureで学ぶ、UDPネットワークプログラミング - ソケットオプション

前回の続きで、今回は書籍に習って前回のUDPサーバ/クライアントの改良型を書きます。Javaネットワークプログラミングの真髄作者: エズモンド・ピット,岩谷宏出版社/メーカー: ソフトバンク クリエイティブ発売日: 2007/04/28メディア: 大型本購入: 9人 ク…

Clojureで学ぶ、UDPネットワークプログラミング - 基礎

前回、突然TCPソケットを使ったEcho Serverを書きましたが、冒頭にちょこっと述べていましたがホントはUDPソケットを使ってみたかったのでした。なにかと言いますと、最近Infinispan(JGroups)みたいなマルチキャストを使ったノードディスカバリを行うミド…

ClojureとScalaで、Echo Serverを書く(復習編)

少し、ネットワークプログラミングの勉強をしようと思いまして。ホントはUDPを中心にやりたいのですが、まずは以前TCPで復習をしてみようかなということで。1年ちょっと前に、こんなエントリを書きました。Clojure(とScalaとGroovy)でEcho Serverを書く ht…

Clojureの忘れっぽいrequire、use、import

Clojureでプログラムを書くと、当然のように使うrequire、use、importの各関数/マクロですが、なんかよく忘れるのでメモっておこうかと。 require関数 Clojureのライブラリをロードするための関数。こういう感じで使います。 (require 'clojure.string) 単…

Clojureでキャストを使う

Clojureでキャストを行うためには、clojure.core/cast関数を使用します。cast http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/casthttp://stackoverflow.com/questions/3652675/how-can-i-cast-a-java-class-in-clojure使い方は、 (c…

ClojureでMongoDBクライアントプログラミング

以前、JavaVM系の言語、Java、Groovy、Scalaを使って簡単なMongoDBクライアントプログラミングをまとめました。Java/Groovy/ScalaでMongoDBクライアントプログラミング http://d.hatena.ne.jp/Kazuhira/20130615/1371303505Clojureも書いてみたので、別エ…

Clojureで、アノテーションを付与したJavaのクラスを作成する

Java系のミドルウェアとかで遊ぶ時に、ちょっとずつClojureに移っていこうと思っているのですが、フレームワークとかを使う場合につまづきそうな気がしたのがアノテーション。これ、ClojureでJavaのクラスを作る時に付与できるの?ってことで、試してみまし…

ClojureとJavaのコレクションを渡り歩く

ちょっと試してみただけの、小ネタです。ClojureとJavaのコレクションの相互運用的な。List、Set、Mapについてですね。まずは、ClojureでJavaのコレクションを作成して、普通に使えるのかという話から。 (ns java-collections (:import (java.util ArrayList…

Leiningenを使って、Clojureスクリプトを実行する

Mavenなどを使うと、プロジェクトを用意して…とけっこう面倒な感じがするのですが、スクリプトとして実行が可能な言語なら、依存関係とかを解決しつつ使えると嬉しい!というのがあると思います。Groovy、Scalaでは、一応そういう仕組みがあります。Groovy(…

Leiningen入門(再)

続いて、Leiningenへ。Leiningenの位置付け自体はあまり詳しくは書きませんが、JavaにおけるMaven、Scalaにおけるsbt、Groovy(だけじゃないけど)におけるGradleみたいなものと思っていただければ。Leiningen http://leiningen.org/Githubでのプロジェクト…

Clojure 1.5.1インストール

久々にClojureを使ってみようと思いまして、基本的なことからやり直したいと思います。まずは、インストールからですかね。Clojure http://clojure.org/ダウンロードページから、バイナリを取得。ダウンロードページ http://clojure.org/downloads現時点での…

いろんな言語で、外部プロセス起動

前のエントリで、Groovy/Scalaでプロセス起動に関するコードをちょこちょこと書いていたのですが、ちょっと自分が割と使う言語でまとめてみることにしました。ほんの、サンプルです。サンプルのお題は、 外部プロセスの実行結果(戻り値)を取得し、変数ret…

ClojureでJavaクラスのフィールドに値を設定する

Clojureで、Javaクラスのフィールドから値を読み出すことはよくありましたが、そういえば値の設定はやったことがありませんでした。メソッド呼び出しのように (.field-name instance-name value) みたいな感じで書くのかな?と思いきや、ちょっと違う模様。S…

doc、find-doc、source、apropos

Clojureについては、普段はClojureDocsとかGoogleを使って調べていますが、REPLで使えるマクロ/関数を使ってもよさそう。まー、ClojureDocsだとサンプルとかも載っているので、それなりに効果はあるのですが。 docマクロ 指定した関数のdoc-stringを表示す…

ClojureでJavaのクラスを作る

これまで、だいぶ目を背けていたのですが、ClojureとJavaを使うにあたり、そろそろClojureでJavaのクラスを作成したり継承したりというのを覚えてみようと思います。う〜ん、遅いネタですねぇ…。ま、気にせずいってみましょう。 まずは Clojureでソースを書…

Clojureのクラスに、コンストラクタとStateを定義する

続いて、今度はClojureでコンストラクタを持つクラスを作成してみます。 foo.clj (ns foo (:gen-class :init init :state state :constructors {[String] []} :methods [[decorate [char] String]])) (defn -init [val] [[] val]) (defn -decorate [this c] …

Clojureの並列処理関連の関数

Clojureで並列・並行処理といえばSTMやエージェントが有名だと思いますが、お手軽な関数も用意されているみたいなので、調べてみました。 pmap map関数の並列版です。与えたシーケンスに対して、関数を並列に適用してくれます。 (time (println (let [sleep-…

package-info.javaの一括生成

だいぶ遅れているのですが、こちらのお題に参加してみることにしました。 http://npnl.hatenablog.jp/entry/2012/08/17/014930もうちょっと、早く見つけておけばよかった…なんか、Groovyが人気っぽいので、ScalaとClojureでいってみます。ターゲットのディレ…

map関数の並列版、pmap関数

GroovyのGParsとかを見ていて、そういえばClojureって並列コレクションとか持ってないのかなぁと思って見てみたら、なんか少しはありそうな感じです。とりあえず、map関数の並列版である、pmap関数を見つけたのでちょっと試してみました。ClojureDocsでの例…

Leiningenで、依存関係を管理する

インストールに続いて、Leiningenでモジュールの依存関係の管理をしたいと思います。今回も、Commons Langにスケープゴートになっていただきましょう。というわけで、project.cljを修正します。 (defproject hello-lein "0.1.0-SNAPSHOT" :description "FIXM…