サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
tnoda-clojure.tumblr.com
遅い遅いと言われる 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
文字列を Clojure の数値型に変換したい. 方法long, double に変換したいときには, 対応する Java クラスの static メソッドを使います. user> (Long/parseLong "10") 10 user> (Double/parseDouble "10") 10.0 BigInt, BigDecimal に変換したいときには, bigint 関数,bigdec 関数を使います. user> (bigint "10") 10N user> (bigdec "10") 10M セキュリティと速度とを気にする必要が無い場合は, read-string を使うこともできます.long も double も全部 read-string で変換できます. user> (read-string "1/2") 1/2 user> (read-string "10")
この記事は しょぼちむ Advent Calendar 2014 3 日目の記事です. はじめにしょぼちむとは,夜間休日には Kotlin アイドル(10 月から Clojure アイドル兼任)として活動する関東在住の SE だそうです.「だそうです」というのも,本名,年齢,誕生日,メールアドレス,勤務先,出身地,出身大学,女子力,など,その多くが謎に包まれており,Twitter のタイムラインから得られる情報以上のことが分からないからです.近影についても同様で,顔が映りこまないようにわざわざ手で隠すことが多いようです. そこで,Clojure アイドルとして活動する SE が顔を隠す作業を自動化できるように,この記事では OpenCV でこの作業を自動化することを考えます. OpenCV のインストールと Clojure からの利用今回は,OpenCV の Java バインディングをロー
Java で書かれた Java FX の Hello World を Clojure で書き直します.読者に Java FX 2 の知識があることを前提としています. 準備: jfxrt.jar を Maven 管理下にコピーJava FX の実行には $JAVA_HOME/jre/lib/jfxrt.jar が必要なのですが,残念ながらこの JAR ファイルは java コマンドのデフォルトのクラスパスには含まれていません.これでは,Leiningen を使うときに不便なので,Maven 管理下にして project.clj で追加できるようにします.いろいろ方法はあるようですが,私は,https://github.com/chrix75/clj-javafx#maven-configuration を参考にしました.コマンドを実行したときの Java FX のバージョンは 2.2.21
この記事は 2/21 (土) に大阪で開催される Clojurians の meetup, ATC Clojure の予習資料を兼ねています. はじめにこのシリーズでは 2 回に分けて Clojure を始めるための準備を解説します. シリーズ構成(予定) (1) Clojure と Leiningen のインストール(2) Emacs/CIDER のインストールと設定対象 今まで Clojure を触ったことの無い人環境 Mac OS X 10.8.5 (Mac OS X 10.8.5 以外の方は適宜お使いの環境に読み替えてください)Emacs 24.4Zsh 4.3.11 または Eshell忙しい人のための Clojure 動作環境構築Mac OS X で Homebrew を使ってインストールします。多分これが一番速いと思います。 $ brew install leiningen
最近お問い合せの多い Clojure についての無料相談を個人事業として実施します.みなさまこの機会にぜひ Clojure をご検討ください. 実施要領初回限定 1 時間の Clojure 導入相談を承ります.ご相談の結果,Clojure を導入する,見送る,引き続きご相談いただくなどのご判断は全てお客さまのご意向にお任せします.サービスの売り込みはいたしませんので,安心してご利用ください. 対象Clojure の新規導入をご検討中の企業様(恐れ入りますが Clojure を既に導入済の企業様はご遠慮ください)相談内容プロジェクトにおける開発言語選定社内標準技術への採用検討Clojure に関する研究開発日程無料相談受付期間 2015年8月17日 (月) – 2015年8月26日 (水)無料相談実施期間 2015年8月20日 (木) 2015年8月24日(月) 2015年8月27日(木)–
Java 8 便利というはなしからはじめます。 Java 8 のメソッド参照とインタフェースを実装した無名クラスのインスタンスJava 8 を書いていて 8 になって良かったと思うことはたくさんあるのですが,中でも メソッド参照 を書くときの爽快感は格別です。ただでさえ短かく書けるラムダ式よりもさらに短くなるのは当然のことながら,ラムダ式と同じ特徴,すなわち,メソッドのシグニチャさえ一致していれば,パラメータに要求されるインタフェース明示的にを実装する必要が無いというのも気持ちいいです。 これが Clojure だとどうなるでしょう? 例として java.util.Comparator のインスタンスをパラメータに要求する java.util.Arrays.sort() メソッドを Clojure を使うことを考えてみましょう。 Java の昔の書き方だと Comparator インタフェ
お話ししてきた内容は、 Rashinban Clojure から R の豊富な機能を利用するライブラリRserve ベースのクライアント/サーバその際に利用する Clojure の機能 ProtocolsMultimethodsMetadataです。 Shibuya.lisp 当日は紹介しなかったのですが、Rashinban の GitHub リポジトリを公開しました。 https://github.com/tnoda/rashinbanお話しした内容に沿って、これからぼちぼちと実装していく予定です。
Apache Lucene についてくる日本語形態素解析器 (org.apache.lucene.analysis.ja)をつかって、形態素解析してみます。 org.apache.lucene.analysis.ja は Javadoc がついてくるものの、自動生成されたドキュメントのスケルトンだけで説明が無い部分が多いので、ぱっと見てどう使ってよいのか分かりません。ここで説明する方法は、他の形態素解析器を使った経験からの類推なので開発者が想定している方法ではないかもしれませんが、とりあえずは動いています。 DependenciesApache Lucene をまるごとダウンロードしなくても、日本語形態素解析器だけを Maven リポジトリから取得することできます。 project.clj の :dependencies に [org.apache.lucene/lucene-analyz
この記事は Clojure Advent Caldendar 2014 8 日目の記事です. はじめに毎年世界各地で開催される Clojure ユーザーカンファレンスの中でも最大のものといえば, 11 月に米国東海岸で開催されている Clojure/conj です.今年は 11 月の 22 日から 24 日にかけてワシントン D.C. のワーナーシアターに 500 人 [1] を集めて開催されました.Rich Hickey をはじめ Clojure 界のスターが一同に会する最高の舞台です. そんな Clojure/conj なのですが,残念ながら今年も私は参加できませんでした. 現地に行って,いろいろな人とお会いできなかったのが残念なのですが,幸いにして, Clojure/conj の発表については,動画が YouTube に全て公開されています. そこで,発表動画を全て見て Clojur
昨日の Clojure 夜会で @athos0220 さんが「REPL ライフをもっと快適に」という LT を披露されました.お役立ち情報満載なので,これから Clojure を始めるという人は是非一読しましょう.と,おすすめします. Emacs/CIDER 流リロードさて,その発表の中で clojure.tools.namespace.repl/refresh 関数の紹介がありました. この関数を簡単に説明すると, 名前空間の依存関係を解決してリロードを実行してくれるという便利関数ということになります. この関数を含む namespace.repl ライブラリは,標準の clojure.jar には含まれないため, Leiningen などで別に調達する必要があります. そこで,発表では tools.namespace を Leiningen の依存関係に追加する方法をスライド 12 で
「Clojure は商用サービス採用事例が少ない」というのは過去の話です. Puppet が Ruby から Clojure に移行DevOps 自動化ツールで有名な Puppet は Ruby 製でしたが, その一部は既に Clojure で書かれていました. で,今回の発表は,「一部だけでなく Puppet master を置き換える Pupper Server をリリースするけど,それは Clojure で書きました」 という発表です.ちょっと驚きました.とはいえ, Puppet Labs で Clojure 用のアプリケーションフレームワーク, TrapperKeeper を作っていたので, ある程度は予想できていたのですが. これから,「Clojure で書かれた製品は?」と聞かれたら Puppet Server と答えましょう. 赤い Ruby より 3 倍速い緑の Cloju
Java 8 から JavaFX がクラスパスの指定無しに使えるようになりました.これにより,Clojure から JavaFX を使うときに,Java 7 の頃にやっていた面倒なこと をする必要がなくなります.Maven や Leiningen dependencies に頼ることなく JavaFX を使えるようになったので便利になりました.では,早速試してみましょう. user> (import javafx.application.Application) javafx.application.Application 素晴らしいです.事前の設定なしに JavaFX のアプリケーションクラスをインポートできました.この調子で, user> (import (javafx.event ActionEvent EventHandler) (javafx.scene Scene) (java
Clojure で Web アプリ開発する方法を調べようとして,ググり疲れた人向けです. Web Development with Clojure: Build Bulletproof Web Apps with Less Code, Dmitri Sotnikov 紹介文Clojure には Rails のような全てが揃っている Web アプリケーション開発フレームワークがありません. その代わり, 巨大なフレームワークではなく小回りの効く軽快なライブラリを組み合わせて開発することになります. もちろん,個別のライブラリのドキュメントは充実しています. ただし,それらをどのように組み合わせてフレームワークのように使うのか, については個別のライブラリのドキュメントを読んだだけでは理解が難しいときもあります. そう感じたらこの本の出番です. 本書では Compojure/Ring の組み合
この本はおすすめなので,絶賛します. Shantanu Kumar, Clojure High Performance Programming この本はタイトルでかなり損をしています. タイトルに “High Performance” が入っているため, それだけを見れば, HPC (high performance computing) か, そうでなくても性能を要求されるプログラムを書く方法が, この本の主題だと想像してしまいます. しかし,この本の大部分は 普通の Clojure プログラムの書き方 の説明に費されています. そこで,この本は次のような人におすすめです. 初級〜中級レベルの Clojure プログラマをこれから目指す入門者Clojure プログラマを採用したい企業の採用担当者遅いのを理由に Clojure を dis りたい他言語のプログラマ以下,この記事では本書の構
Ruby の Module#define_method みたいなことを Clojure でしてみます. 似たような関数を DRY でたくさんつくりたいまずは,こちらをご覧ください: (defn add2 [x] (+ x 2)) (defn add3 [x] (+ x 3)) (defn add4 [x] (+ x 4)) (defn add5 [x] (+ x 5)) ; ... このあと add23 まで続く add2 から add23 までで異なるのは足される数字だけで, ほとんど同じです.こんなときにはマクロの出番,...ではありません. def/defn を使わずに任意の名前空間に var を定義するClojure には var をつくる関数 intern があります. defn で定義される関数も var なので intern で関数を定義できることになります. 早速,さきほど
この記事では Clojure における Hello World を読者のレベル別に解説します. 最終的には,Java のチュートリアル にある, class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); // Display the string. } } 相当のものを Clojure で書くことを目標とします. Clojure おためし Hello World! (レベル -3 〜 -1)このレベルでは,Clojure の開発環境をインストールせずに Hello World! します.まだ,本格的に Clojure を使うと決めたわけではないが, とりあえず試してみたいという人向けの方法です. レベル -3: Try Clojureブラウザで実行でき
前回の Java と比べて Clojure が 3 倍以上遅いというのは何かの間違いではないかと思って確かめたら,やっぱり間違いだった件 の続きです. 今回は,前回普通に書いた並列化なし Clojure プログラムを並列化させます. 普通に書いた並列化なし Clojure プログラムのコードは前の記事を参照してください. 「普通に書いた Clojure プログラム」の並列化この記事では, pmapReducersの 2 つの方法を使って「普通に書いた Clojure プログラム」を並列化し, 並列化前と並列化後の実行時間を比較し,どちらが速いかを確認します. また,コードの変更点を確認することで,並列化によりどれだけコードが複雑化するかを議論します. pmap による並列化「普通に書いた Clojure プログラム」からの変更点は次の 2 つです: map を pmap に置き換えた(1
マルチコアプログラミングの概念と Java 8/Scala/Clojure での書き方,および,各プログラミング言語間での比較記事がはてなブックマークで 93 ブクマ(執筆時点)を集めており,人気となっています. マルチコア時代のプログラマは関数脳になろう〜Scala・Clojure〜 - Tech-Sketch 記事を読んでみるとなるほど分かりやすく,各プログラミング言語の違いも比較的すっと頭に入ってくる良い記事でした.この記事を書いた作者に敬意を表します. しかし,まとめのところに書かれている実行時間比較を見てみると,何かがおかしいのです. (元記事,まとめの表からの引用) Java7 Java8 Scala Clojure 非並列処理実時間 0m32.304s 0m32.511s 0m50.478s 1m38.138s CPU時間 0m33.730s 0m35.842s 2m12.2
CodeIQ で出題されていた Clojure の問題が良問という噂だったので解いてみました. 解いてみるとなるほど良問と思わせる問題設定でした. 改めて Clojure は 怠惰は美徳 を実践するのに良い言語だということを確認できます. この記事には, 遅延シーケンス,delay, レコード,マルチメソッド,といった 怠惰なプログラムを書くための Clojure の便利機能が登場します. CodeIQ の Clojure にチャレンジ先月 CodeIQ に Clojure 問題が出題されていて, 一部の Clojurian の間で話題になっていました. 挑戦者求む!【ウチに来ない?】Clojureにチャレンジ! by ウルシステムズ株式会社 近棟 稔│CodeIQしかし, この問題に挑戦していただいた方の中で、優秀回答者の方には、ぜひ弊社の「二次面接」にお越しいただきたいと思っています。
Clojure すごい Haskell たのしく学ぼう! (3) 関数の構文 に続く第4回, “Higher order functions” の章です. 第5章 高階関数高階関数を扱えるのは Haskell でも Clojure でも同じですが, 関数がカリー化されているのは Haskell だけです. 5.1 カリー化関数-- Haskell ghci> max 4 5 5 ghci> (max 4) 5 5 Haskell では関数がカリー化されています. ;;; Clojure user> (max 4 5) 5 user> ((partial max 4) 5) 5 Clojure の関数はカリー化されていないので, 部分適用の際には partial を使います. partial はよく使う割には名前が長いので, 短い部分適用の場合には,partial せずに, #( ... )
Clojure の型ヒント (type hinting) とプリミティブヒント (primitive hinting) との違いを整理し,これら 2 つを同時に扱うヒントを紹介します. Clojure では Java メソッド呼び出しの際にパラメータに対して型ヒントをつけることができます.そして,メソッドのレシーバに型ヒントをつけたり,オーバーロードされたメソッドの引数に型ヒントをつけたりすることで,コンパイル時に実装を決定でき実行時のリフクレクションを避けることができます.これは,Clojure で Java と同等の実行速度を得るために必須の作業になります. たとえば,Long/getType は, getType(char ch)getType(int codePoint)の 2 つのシグニチャをもつので,型ヒント無しではコンパイル時に実装を決定できません. user=> (defn
うごメモはてなのユーザ情報を API から取得します. 残念なことに, うごメモはてなが今年の 5 月 31 日でサービスを終了するそうです. しかし,そこははてなで,サービスが終了する前にバックアップできるようにと, 「うごメモはてなの情報取得APIを公開しました」 してくれました.しかも, 某政府機関 とは違って,エクセルではなく JSON で返ってきます.素晴らしいの一言です. 「うごメモはてなの情報取得APIを公開しました」のページには Perl と Common Lisp のサンプルコードはあるものの, なぜか Clojure のサンプルコードが無かったので書いてみました. (ns ugomemo-hatena.example (:require [clojure.data.json :as json])) (defn- api-request [url] (-> url slu
できればマクロもモナドも使いたくないのですが,いつ使うかということについて個人的に決めているルールを言語化してみると,どちらのルールも似ているということに気づきました. マクロクラブとモナドクラブたしか「プログラミング Clojure」という本に「マクロ・クラブ」と題したマクロ利用に関するルールが書かれており,それと同じことをモナドについても考えているのだということに気づいて,書き出してみました. マクロ・クラブマクロクラブのルールは次のようなものでした. マクロを書くな (言い換えると定義済みのマクロを使う分には構わない)それが,パターンをカプセル化する唯一の方法ならば,マクロを書けただし,同等の関数呼び出しと比較して簡単に書けるのならマクロを書いても構わないモナド・クラブ「モナド・クラブ」というのは今私が勝手につけた名前ですが,ルールはマクロ・クラブに似通っています. 新しいモナドを作
開催日時 2012/12/06 00:00 〜 2013/01/22 00:00 定員12人 受付期間 2012/12/03 12:00 〜 2012/12/07 17:00 最少催行人数5人 参加費無料 場所どこかの会場に集まるのではなく,ネット上で非同期に開催します.Gist からでも参加者のブログからでもどこでも ok. 住所 参考URL 主催者 tnoda_ 詳細情報 みんなで Clojure を勉強していきましょう. Clojure は産まれて 5 年の新しいプログラミング言語で,周りを探してみても使っている人を見つけるのは難しいです.そこで,住んでいる場所に関係なくゆっくりまったり一緒に Clojure を勉強していければと思います. ハッシュタグ #mitori_clj すすめかた Project Euler (http://projecteuler.net/) の Prob
apply と reduce と交換可能な場合にどちらを使うかは,直感で決めればいいと思います. #mitori_clj での議論Clojure 入門者向け勉強会 #mitori_clj で分担して Project Euler の問題を題材にしているのですが, 最初の Problem 1 から参加者コメントが多数寄せられ, 期待していたより面白い勉強会になっています. そんなコメントの中に, 可変長引数を取ることのできる関数に reduce と apply のどちらを使うかは悩みますね。 とか, apply + か reduce + かは, 宗教戦争になりかねないので, とか, …敢えて宗教戦争に参加すると :-), この場合は apply + の方が抽象的で良いと思います. とかといった議論がありました. Project Euler Problem 1さて,どうしてこのような議論になった
どの本を買えばよいかが分かるフローチャートつき. (以下,書きかけ) 私が今年買った Clojure 本を紹介します. pragprog.com / Programming Clojure, 2nd EditionAmazon.co.jp で買うより pragprog.com から直接 ebook を買うのをおすすめします.丁寧に書かれていて非常によくできている本ですが,私には難しかったです.おそらく Hasklell なり Erlang なり他の Lisp なり何らかの関数型言語を一つでも習得できていれば,より簡単に読めたと思います.買っておいて損はしませんが,最初に読む本として万人におすすめできるわけではありません. oreilly.com / Clojure ProgrammingAmazon.co.jp で買うより O'Reilly Ebooks store から直接 ebook
次のページ
このページを最初にブックマークしてみませんか?
『tnoda-clojure』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く