Clojure
なんとなく、時々ちょっとしたテストとかで使っているダミーのHTTPサーバ用のスクリプトをまとめたくなりまして。で、せっかくなのでプラスアルファも入れて。ホントに簡単なものなので、以下のスペックで。 リクエストの内容を解析することは、必須としない…
Hazelcastの開発者の方と、Java上の多言語の話をしていて、なんとなくHazelcastのGetting Startedを他の言語で書き直してみたくなりまして。Getting Started Tutorial http://www.hazelcast.org/getting-started/ Java版 ほぼ、オフィシャルと同じ。クラス名…
過去のエントリを、リライトしたエントリです。以前、こちらのエントリを見てClojure/kuromojiでテキストマイニング入門 〜形態素解析からワードカウントまで〜 http://antibayesian.hateblo.jp/entry/2013/09/10/231334素のKuromojiを使って形態素解析をし…
以前、こんなエントリを書きました。Clojure/lucene-kuromojiでテキストマイニング入門 〜形態素解析からワードカウントまで〜 http://d.hatena.ne.jp/Kazuhira/20130911/1378914422なんですけど、ぶっちゃけこの時は元の参照エントリで使っていたIncanterの…
かなり久々のClojureネタです。以前から、試してみたいと思いつつ放っておいた、ClojureのReducersについて。http://clojure.org/reducersAPIドキュメントは、このあたりから。http://clojure.github.io/clojure/clojure.core-api.html#clojure.core.reducer…
こちらで紹介された、Undertowが面白そうだったので、久々にClojureで書くことを兼ねて遊んでみました。WildFly の Web 基盤、Undertow の紹介 http://emamotor.blogspot.jp/2013/12/introduction-undertow.htmlUndertow http://undertow.io/紹介されていた…
Clojure単独ネタ。Namespaceに定義されたvarをスキャンして、そのaddedメタデータからClojureに追加されたバージョンとvarの一覧みたいなものが作れないかなぁということを、ちょっと試してみたくなりまして。結論からいくと、こんな感じのソースでできまし…
Clojure 1.5から、「some->」、「some->>」というマクロが追加されているみたいです。Clojureを使うのを再開してから、1.5の情報とかをチェックしていたわけではなかったので、知らなかったのがちょっともったいなかったですかね。で、どういうマクロかとい…
いよいよ、マルチキャストを使ったネットワークプログラミングに。これまで、DatagramSocketクラスを使ったプログラムは、相手がひとりしかいない、ユニキャストでしたが、今度は複数の相手に送信するマルチキャストです。 *DatagramSocketクラスで、マルチ…
前回はReliable UDPを書くのにClojureをすっ飛ばしてしまいましたが、今回はClojureから始めます。お題は、NIOを使ったUDP Echoクライアント/サーバ。外見上の動作は、前と変わらないので省略…。最初はClojure版から入ったわけですが、まーてこずりました。…
前回の続きで、今回は書籍に習って前回のUDPサーバ/クライアントの改良型を書きます。Javaネットワークプログラミングの真髄作者: エズモンド・ピット,岩谷宏出版社/メーカー: ソフトバンク クリエイティブ発売日: 2007/04/28メディア: 大型本購入: 9人 ク…
前回、突然TCPソケットを使ったEcho Serverを書きましたが、冒頭にちょこっと述べていましたがホントはUDPソケットを使ってみたかったのでした。なにかと言いますと、最近Infinispan(JGroups)みたいなマルチキャストを使ったノードディスカバリを行うミド…
少し、ネットワークプログラミングの勉強をしようと思いまして。ホントはUDPを中心にやりたいのですが、まずは以前TCPで復習をしてみようかなということで。1年ちょっと前に、こんなエントリを書きました。Clojure(とScalaとGroovy)でEcho Serverを書く ht…
Clojureでプログラムを書くと、当然のように使うrequire、use、importの各関数/マクロですが、なんかよく忘れるのでメモっておこうかと。 require関数 Clojureのライブラリをロードするための関数。こういう感じで使います。 (require 'clojure.string) 単…
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…
以前、JavaVM系の言語、Java、Groovy、Scalaを使って簡単なMongoDBクライアントプログラミングをまとめました。Java/Groovy/ScalaでMongoDBクライアントプログラミング http://d.hatena.ne.jp/Kazuhira/20130615/1371303505Clojureも書いてみたので、別エ…
Java系のミドルウェアとかで遊ぶ時に、ちょっとずつClojureに移っていこうと思っているのですが、フレームワークとかを使う場合につまづきそうな気がしたのがアノテーション。これ、ClojureでJavaのクラスを作る時に付与できるの?ってことで、試してみまし…
ちょっと試してみただけの、小ネタです。ClojureとJavaのコレクションの相互運用的な。List、Set、Mapについてですね。まずは、ClojureでJavaのコレクションを作成して、普通に使えるのかという話から。 (ns java-collections (:import (java.util ArrayList…
Mavenなどを使うと、プロジェクトを用意して…とけっこう面倒な感じがするのですが、スクリプトとして実行が可能な言語なら、依存関係とかを解決しつつ使えると嬉しい!というのがあると思います。Groovy、Scalaでは、一応そういう仕組みがあります。Groovy(…
続いて、Leiningenへ。Leiningenの位置付け自体はあまり詳しくは書きませんが、JavaにおけるMaven、Scalaにおけるsbt、Groovy(だけじゃないけど)におけるGradleみたいなものと思っていただければ。Leiningen http://leiningen.org/Githubでのプロジェクト…
久々にClojureを使ってみようと思いまして、基本的なことからやり直したいと思います。まずは、インストールからですかね。Clojure http://clojure.org/ダウンロードページから、バイナリを取得。ダウンロードページ http://clojure.org/downloads現時点での…
前のエントリで、Groovy/Scalaでプロセス起動に関するコードをちょこちょこと書いていたのですが、ちょっと自分が割と使う言語でまとめてみることにしました。ほんの、サンプルです。サンプルのお題は、 外部プロセスの実行結果(戻り値)を取得し、変数ret…
Clojureで、Javaクラスのフィールドから値を読み出すことはよくありましたが、そういえば値の設定はやったことがありませんでした。メソッド呼び出しのように (.field-name instance-name value) みたいな感じで書くのかな?と思いきや、ちょっと違う模様。S…
Clojureについては、普段はClojureDocsとかGoogleを使って調べていますが、REPLで使えるマクロ/関数を使ってもよさそう。まー、ClojureDocsだとサンプルとかも載っているので、それなりに効果はあるのですが。 docマクロ 指定した関数のdoc-stringを表示す…
これまで、だいぶ目を背けていたのですが、ClojureとJavaを使うにあたり、そろそろClojureでJavaのクラスを作成したり継承したりというのを覚えてみようと思います。う〜ん、遅いネタですねぇ…。ま、気にせずいってみましょう。 まずは Clojureでソースを書…
続いて、今度は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で並列・並行処理といえばSTMやエージェントが有名だと思いますが、お手軽な関数も用意されているみたいなので、調べてみました。 pmap map関数の並列版です。与えたシーケンスに対して、関数を並列に適用してくれます。 (time (println (let [sleep-…
だいぶ遅れているのですが、こちらのお題に参加してみることにしました。 http://npnl.hatenablog.jp/entry/2012/08/17/014930もうちょっと、早く見つけておけばよかった…なんか、Groovyが人気っぽいので、ScalaとClojureでいってみます。ターゲットのディレ…
GroovyのGParsとかを見ていて、そういえばClojureって並列コレクションとか持ってないのかなぁと思って見てみたら、なんか少しはありそうな感じです。とりあえず、map関数の並列版である、pmap関数を見つけたのでちょっと試してみました。ClojureDocsでの例…
インストールに続いて、Leiningenでモジュールの依存関係の管理をしたいと思います。今回も、Commons Langにスケープゴートになっていただきましょう。というわけで、project.cljを修正します。 (defproject hello-lein "0.1.0-SNAPSHOT" :description "FIXM…