IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
この記事はRich HickeyのClojureのコンセプトを示したリソースへのリンク集です。 このリンクを追っていけば、LISPであることやBetter Javaであることなんてものは表面的な特長に過ぎず、イミュータビリティ(とシンプルさ)こそが最大の特長であるということに気付かされます。 ClojureはOut of the Tar Pit (PDF) という論文に基づいて、状態とふるまいを分離するように言語設計されています。レースコンディションのような偶発的におこりうる問題は、状態とふるまいが一体となった混沌から生まれるのであって、これを分離してどうしても避けることの出来ない状態の管理だけ特別に扱うという考え方です。 オブジェクト指向が状態を安易に変更できてしまうのは、「状態」と「アイデンティティ」が密結合しているためです。ある2つのオブジェクトが同一かどうかは、問題領域に依存してい
なんとなく、時々ちょっとしたテストとかで使っているダミーのHTTPサーバ用のスクリプトをまとめたくなりまして。 で、せっかくなのでプラスアルファも入れて。 ホントに簡単なものなので、以下のスペックで。 リクエストの内容を解析することは、必須としない 起動時にはポート番号を指定できる。しなかった場合は、8080で起動 ヘッダ、ボディに何か出力する サーバの終了は、Ctrl-cなどで できれば並行処理可能に ターゲットは、GroovyとClojureでJDK付属のものを使った版、Undertowを使った版を、あとはPerlで1本書きました。 実行結果は、いずれもこんな感じになります。 $ curl -i http://localhost:8080/test HTTP/1.1 200 OK Date: Sat, 12 Apr 2014 08:46:39 GMT Content-type: tex
Puppetユーザーをより便利にするためのフレームワークをPuppet Labsが提供。いわく、「新時代のアプリケーションサービス」だという。 Puppet Labsは2014年4月11日、新しいオープンソースプロジェクトとして、長期運用アプリケーションやサービスをホスティングするためのClojureをベースにしたフレームワーク「Trapperkeeper」を発表した。ClojureはJava VM上で動作するLISP系言語。 Trapperkeeperの開発に当たっては、高性能サーバーサイドアーキテクチャに関してここ数年で学んだ教訓を、モジュール式の再利用可能コードを最大限に活用するためのパターンと組み合わせたとPuppet Labsは説明する。 同社は2012年にリリースしたPuppetDBの成功を受け、同プロジェクトの技術をPuppetエコシステムの別の部分で活用する方法について検討
Hazelcastの開発者の方と、Java上の多言語の話をしていて、なんとなくHazelcastのGetting Startedを他の言語で書き直してみたくなりまして。 Getting Started Tutorial http://www.hazelcast.org/getting-started/ Java版 ほぼ、オフィシャルと同じ。クラス名とimportを変えたくらい。 *クラス名は、結果として変わっただけですが。 pom.xmlの定義は、省略しています。 src/main/java/HazelcastGettingStarted.java // Execution Command: $ mvn compile exec:java -Dexec.mainClass=HazelcastGettingStarted import java.util.Map; import java.u
ご挨拶 ご無沙汰しとります,大学生になってからLinux一筋で生きていこうと決めておりましたが,遂にWindowsに折れてしまったBOXPです.Officeの壁は想像以上に厚かったです… それはさておき,Twitterで私が時々ぼやいておりますが,のんびり作っていた自作のTwitterクライアントがある程度形になって来たので,ここらで一度公開したいと思います. 「Grimoire」について Grimoireは,コンソールライクに操作しやすいように設計されているTwitterクライアントです. マウス操作を使用してツイートをお気に入りにしたり,リツイートして拡散する事は出来ますが,それらはあくまでもコマンドをボタンが呼び出しているに過ぎません. そのため,操作の殆どはS式をタイプして実行する事になりますが,S式を学習していなくても必要なコマンドを幾つか覚えているだけで十分使用可能です. 以下
遅い遅いと言われる Clojure の起動ですが,JVM のオプションを正しく設定すれば少しは速くなります. 以前,TieredCompilation オプションで起動をちょっとだけ高速化. というメモを書いたのですが,このメモで紹介したオプションを,-XX:TieredStopAtLevel=1 と組み合わせることで,Clojure の起動をオプション無しのときと比較して,30% 高速化できました. まずはベースラインから, ~ % /usr/bin/time java -client -cp ~/clojure.jar clojure.main -e nil 1.10 real 1.60 user 0.11 sys 私の環境では 1.1 秒かかっています.次に,-XX:TieredCompilation を追加します. ~ % /usr/bin/time java -XX:+Tiere
あまり使ったことがないので、メモを兼ねて試してみます。 Groovy Groovyの場合は、Closureクラスのインスタンスを合成します。使用するメソッドは、leftShift(<<)とrightShift(>>)です。 def add2 = { x -> x + 2 } def multiply3 = { x -> x * 3 } def multiply3AndAdd2 = add2 << multiply3 // f << g は f(g(x)) def add2AndMultiply3 = add2 >> multiply3 // f >> g は g(f(x)) println(multiply3AndAdd2(2)) // (3 * 2) + 2 => 8 println(add2AndMultiply3(2)) // (2 + 2) * 3 => 12 f << g でf(
ちまたには、複数の実装があってこその成熟した言語、と言う見方もありますが、その意味ではGroovyにも別実装があってもいいのかもしれません。でもあまり聞きませんね。この理由はたとえば「Mavenの別実装」「antの別実装」が無いのと同様に、groovyはツールやライブラリに近いものだからかもしれません。それか言語としては進化が速すぎるからかも知れません。あるいはちゃんとした仕様書がないことが影響しているのかもしれません。 と、思いきや、Groovyにも、あまり知られてないと思いますが別実装に向けての"試み"があるんです。 以下は、Clojureで実装開始されたGroovy別実装のページです。 http://groovy.codeplex.com/ http://groovy.codeplex.com/wikipage?title=Blog02 まだパーサの一部が実装されているだけ式の評価が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く