2011-01-01から1年間の記事一覧

mikutterのアーカイブでxz圧縮の効果を検証する

3日連続でコードの解説を書いた反動でブログスイッチが切れてました。しかも今回はClojureとまったく関係ありません。ごめんなさい。 mikutterとは mikutterは「シンプルでパワフルで萌え萌えなTwitterクライアント*1」です。詳しくはmikutter、README、また…

よりClojureらしく線形合同法を使った乱数列を計算する

Clojure入門がてらに「初心者用課題」を解いてみる - 蟲!虫!蟲! - #!/usr/bin/bugrammerの第四問を解いて、解説を加えたものです。前回(よりClojureらしく閏年を探す - OGINO Masanori@はてな)を踏まえた説明なので、前回を読んでいない方はそちらを先…

よりClojureらしく閏年を探す

Clojure入門がてらに「初心者用課題」を解いてみる - 蟲!虫!蟲! - #!/usr/bin/bugrammerの第二問を解いて、解説を加えたものです。前回(よりClojureらしい素数列 - OGINO Masanori@はてな)を踏まえた説明なので、前回を読んでいない方はそちらを先に読…

よりClojureらしい素数列

私は一昨日から2011-09-24 - 蟲!虫!蟲! - #!/usr/bin/bugrammerの補足を書いていましたが、分量が多すぎるので後日分割することにしました。そこで、代わりに2011-09-27 - 蟲!虫!蟲! - #!/usr/bin/bugrammerの問題を解いて解説をつけたものを先に公開…

メタデータのこれまでとこれから

最初に謝らなければならないことがあります。ごめんなさい。私が間違っていました。耳当てつきのvarはダイナミックスコープを持つと自動的にみなされない - OGINO Masanori@はてなで、:dynamicメタデータの値をtrueにするために、このように書きました。 (de…

耳当てつきのvarはダイナミックスコープを持つと自動的にみなされない

これはClojure 1.3.0のchanges.txtの1.1の日本語訳と解説です。 日本語訳 (def *fred*) => Warning: *fred* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *fred* or c…

関心の分離

これはMeikel Brandmeyer([twitter:@kotarak])の文章、"Separation of Concerns"の日本語訳です。「最近の知恵」曰わく、プロトコル*1関数は低レベルのインターフェースにするべし。無論、僕は無知ゆえにこの言葉に従わなかった。幸いにもChristophe*2はい…

最適化の第二法則(要約版)

これはThe Second Law of Optimization (Abridged) – the Voidの日本語訳です。原文と同じく、Creative Commons 表示 - 非営利 - 継承 3.0ライセンスの下で自由に利用できます。僕は同じ題名の元の記事(英文)がみんなが読みたいと思うよりも長いと気付いた…

NullPointerExceptionに遭うコード

最近悩んでる問題。 (import '[javax.media.opengl GLCapabilities GLProfile] '[com.jogamp.newt.event WindowAdapter] '[com.jogamp.newt.opengl GLWindow] '[com.jogamp.opengl.util FPSAnimator]) (def window (-> (GLProfile/getDefault) (GLCapabiliti…

rand-strを添削してみる

オリジナル:https://bitbucket.org/fgtrjhyu/misc/src/5d4fa9455ed0/randomstring/clj (use '[clojure.string :only (join)]) (defn- char-range [& more] (letfn [(crange [[^Character start ^Character end]] (join (map char (range (int start) (inc (…

char-range

(defn- char-range* [start end] (map char (range (int start) (inc (int end))))) (defn char-range [& more] (if (and (= (count more) 2) (every? char? more)) (apply char-range* more) (apply concat (map #(apply char-range* %) more)))) (comment …