今日はtokyoclj#3なので、前回に引き続きclojureでの平行性実装についてみています。 前回もjavaの実装はチラ見していたのですが、clojure側の実装をみていなかったので、機能の復習もかねて整理しておきます。 clojureはjavaでSTMを実装しています。java.util.concurrent.*が大活躍です。なので、clojure側の実装はあまりみても重要ではないのですが、機能を整理しておきたいのでちゃんと読んでみました。 refというのはSTMで扱うことができるオブジェクトです。STMというのはsoftware transactional memoryのことです。ロックフリーなセマンティクスで、複数の処理をatomicにできる、便利なものです。平行処理がロックフリーであるということは、複数のロックを使用して平行性を高めるとか、難しいアルゴリズムをつかうとかしなくて
Compojure is an open source web framework for the Clojure programming language. It emphasizes a thin I/O layer and a functional approach to web development.
URLの扱い ルートの定義 ;; (http-method route-path bindings & body) (GET "/" [] "index page") これは、ローカルで起動した時にはhttp://locahost:8080/にアクセスした際に"index page"をステータス200で返します。 で、ルートのパターンにはパラメータを含むことができます。 (GET "/page/:name" [name] (str "You reached page/" name)) リクエストされたURIが"/page/**"にマッチすると、"**"の値が引数としてnameに格納されます。この場合、http://localhost:8080/page/testにアクセスすれば"You reached page/test"と表示されるようになります。 ルートパスの部分にはワイルドカード、正
昨夜、女房殿のWindows機を使っていると、目の前のモデムが突然チカチカし始めた。 自分はネットにアクセスしてないし、おかしいなあ。悪性ウィルスにでもやられて 勝手にネットにつながれちゃったの? すわ、一大事と思っていると、、、 javaのアップデート準備が整いました、だとさ。脅かすなよ。 Sunも最近、IBMに買収とかの話があるので、いい所を見せようと、言い寄って きたのかな? それにしても、アップデートのご案内が遅いよ。>Sun殿。 さて、今日のタイトルについてだが、結論を先に書こう。 クロージャは、手続きと手続きが定義された時の環境で出来ています。 以上、説明終わり、、 じゃ、余りにも *aあれ* なので、Javaアプリのclojure を、真面目に分解してみます。 分解するには、あらかじめ内部構造が分かっていた方がいいだろう。 clojureのページの左側メニューにあるAPIのリ
clojureでいろいろとコードを書き始めると、多種のjavaのライブラリを使うことになると思うが、いちいち.emacsにライブラリを追加するのは面倒だ。 Emacs Lispのdirectory-files関数を使うと指定したディレクトリにあるjarファイルをリストとして取得できるので、swank-clojure-extra-classpathsを以下のように記述すると、 ~/opt/compojure/deps ~/opt/libs にあるjarライブラリをまとめて追加できる。 .emacsのクラスパス設定部分 (setq swank-clojure-jar-path "~/opt/clojure/clojure.jar" swank-clojure-extra-classpaths (append (list "~/opt/swank-clojure/src/main/clojure
One of the great things about Clojure is the Java toolbox that it brings to the table. Socket programming has never been one of Lisp's strong points, and although it has always been possible to write network applications in Lisp, platform specific details and portability are generally a concern. Luckily, the JVM provides one of the most tested networking stacks on the planet, so we can cast any of
Dismiss Join GitHub today GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together. Sign up Overview Getting started with Clojure Getting started with Incanter Documentation and examples Building Incanter Dependencies Overview and motivation Incanter is a Clojure-based, R-like statistical computing and graphics environment
2011/12/29更新 時代遅れの手順になってしまいました。 Clojure+Emacsな開発環境を作る(late 2011) - λab's Blogを参照してください。 ネットブックにUbuntu 10.04 を入れたので emacs から Clojure を使う手順を最初の最初から書いてみる。2ヶ月ぐらい前にやったインストール方法だとだめでした。 環境 Ubuntu Netbook Edition 10.04 GNU Emacs 23.1.50.1 機種 HP mini 2140 emacs をインストールする emacs23とか22とかいろいろあるみたいですがよく分からないので最新っぽいのをインストール $ sudo apt-get install emacs-snapshot $ sudo apt-get install emacs-snapshot-el $ sudo apt
Fun with Clojure, OpenCV and Face Detection I have been meaning to play with OpenCV for a while now, the other night, I had some time to kill so I decided to play with it. OpenCV is a computer vision library originally developed by Intel. It focuses mainly on real-time image processing. I assumed by now there are a lot of Java libraries for OpenCV but as it turns out there is only one, and it is a
前回はRDBMSの使用が引き起こすモジュール性の低下について議論したが、その根拠を具体的に示さなかった。その補足ということで今回は小さな例を1つ示したい。 また、関数プログラミングが副作用の多い状況に対して弱みを持つ、と書いたのは乱暴であったのでお詫びして訂正したい。 正しくは、副作用を含むロジックに対しては、注意深く抽象化を行う必要があり、副作用・外部入出力の種類が違えば、そのたびごとに抽象化のモデル・実装について熟慮して抽象化を行う必要があるということである。 これはうまい抽象化が不可能だということではないので、それを弱みと呼んだのは間違った一般化であった。 しかし、ありがちな抽象化の方法では、クエリーの発行がモジュール性の低下を引き起こしかねないということを小さな例を使って示したいと思う。この例は手続き的な擬似コードによるものだが、RDBMSを抽象化するfunctionalなDSLで
People come to Clojure from a variety of backgrounds. The purpose of this book is to help everyone get the most out of the Clojure language. It is not meant as a replacement for the documentation, found at the Clojure site. Please do not copy material from there to here! Feel free to post your own code, written in the Clojure language, here. However, please do not post excerpts, patches or other m
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
話題の Clojure(http://clojure.org/)。 id:g000001 さん(http://cadr.g.hatena.ne.jp/g000001/)がとても詳しい。 Clojure って JVM で動くんだよなぁ、ってことは Java のライブラリも呼べるよなぁ、そうすると Proce55ing も呼べるなぁ、そうするとhttp://d.hatena.ne.jp/cranebird/20080906 で書いた、 Common Lisp + jython + PApplet の環境 が作れるかもなぁ、とやってみたら、あっさりできた。Clojure は Common Lisp でもないし Scheme でもないのでまだ全然慣れていないけど。 以下では、 CLASSPATH に processing の pde.jar, core.jar を追加して clojure の Re
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く