2010-03-01から1ヶ月間の記事一覧

ClojureのderefをいじくるPart2

2010-03-09 - 壊れた計算機のときはproxyを使ってclojure.lang.IDerefのderefをオーバーライドしていたが、今回はclojure.core/derefをそのままいじくった。derefをmultimethodに置きかえて、正規表現をderefしたらre-seqする関数を返すように変更してみた。…

Clojureからのxml・正規表現

camprojファイルから吹き出しのテキストを抽出するClojureのプログラムを書いた。 CamtasiaHukidashi/hukidashi.clj at master · Mozk0/CamtasiaHukidashi · GitHub clojure.xml, clojure.zip, clojure.contrib.zip-filter, clojure.contrib.zip-filter.xml …

今日のDBCLS

BioMartを使い倒す 比較ゲノミクス編 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作り終えた。 BioMartはシンプルなUIで分かりやすい。

Rの文字列が何バイトか確認するには

R

length(charToRaw("おはよう")) #=> 12 などとすればよい。これを使うように再定義すればwrite.socketで多バイト文字を問題なく送信できる。 forkしまくってたら こうなった

今日のDBCLS

Ensembl tips 配列の比較をする 2010 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作った。 Ensemblは一年に四回程アップデートがあり、インターフェースやデータそのもの(!!)が結構変化するそうだ。そのため、Ensembl archivesが用意されて…

ClojureからMeCabを使う

MeCabのJavaバインディングを利用する。replからいきなり使用してもエラーが出て動かないので、compileしたlib経由で使用する。コンパイルは以下のようにすると出来た。 classpathにMeCab.jar 環境変数LD_LIBRARY_PATHにlibMeCab.so(またはdylib) 下のような…

Clojureのderefをオーバーライド

Clojureはリーダマクロを自分で定義できないが、clojure.lang.IDerefのderefをオーバーライドしてやれば少し近いことができる。これはfuture-callでも使われている。 (def awkwardCounter (let [n (atom 0)] (proxy [clojure.lang.IDeref] [] (deref [] (swa…

ClojureでBasicAuth

java.net.Authenticatorをproxyでextendすれば良い。 user=> (import '(java.net Authenticator PasswordAuthentication)) java.net.PasswordAuthentication user=> (def *basicAuth* (proxy [Authenticator] [] (getPasswordAuthentication [] (PasswordAut…

多項のiterate(Clojure)

Clojureのiterateは2項間漸化式しか扱えないので、多項間漸化式を扱えるように拡張できないかと考えた。 (defn myIterate [f & arg] (map first (iterate (fn [%] `(~@(rest %) ~(apply f %))) arg))) (myIterate + 0 1) ;=> (0 1 1 2 3 5 8 13 21 34 55 89 …

Clojure

JavaVM上で動くLispのClojureが熱い Clojure Java資産の活用 (def a (into-array [2 3 1])) ;;;into-arrayはClojureの列をJavaの配列に変える (seq a) ;=> (2 3 1) ;;;seqは整列可能なObjectをClojureの列に変える (java.util.Arrays/sort a (proxy [java.ut…