Skip to content

Instantly share code, notes, and snippets.

@kurogelee
kurogelee / file0.txt
Created April 13, 2014 12:44
Mac版のLightTableで@(アットマーク)を入力する方法 ref: http://qiita.com/kurogelee/items/44384950fe1b277c4021
"@" [(:eval.custom "\"@\"" {:result-type :replace :verbatim true})]
@kurogelee
kurogelee / file1.cljs
Created April 16, 2014 10:07
Clojureでwrite-lines関数を作ってみる ref: http://qiita.com/kurogelee/items/49de0428180675b505f7
(write-lines "sample.txt" ["あいう"] :encoding "Windows-31J")
(write-lines "sample2.txt" (range 10) :add-bom true :separator "x")
@kurogelee
kurogelee / ExtendSample.java
Created April 16, 2014 11:21
Javassistを使ってJavaのfinalクラスの拡張は・・・ ref: http://qiita.com/kurogelee/items/79ab9393c061153dd8ea
package javassist.test;
import javassist.ClassPool;
import javassist.CtClass;
public class ExtendSample {
public static void main(String[] args) throws Exception{
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.makeClass("dynamic.clazz.Sample");
cc.setSuperclass(pool.get("java.lang.String"));
@kurogelee
kurogelee / file1.txt
Created April 17, 2014 12:31
Clojureでglobでのファイル検索 ref: http://qiita.com/kurogelee/items/97bccacf69e95a338e6d
(files-glob "." "**/*.clj")
@kurogelee
kurogelee / file0.cljs
Created April 17, 2014 14:49
Clojureでtransientをmutableなオブジェクトとして扱ってはいけない ref: http://qiita.com/kurogelee/items/56694bbce1e374145e5a
(let [v (transient {})]
(dotimes [n 5] (assoc! v (keyword (str n)) n))
(persistent! v))
@kurogelee
kurogelee / file0.cljs
Created April 18, 2014 23:51
clojure.walkでシーケンスを再帰的に変更する ref: http://qiita.com/kurogelee/items/938a01c374062b157dc3
user=> (require '[clojure.walk :as w])
user=> (w/postwalk vector '(1 (2)))
[([1] [([2])])]
user=> (w/postwalk #(if (number? %) (- %) %) [2 [3] 4])
[-2 [-3] -4]
@kurogelee
kurogelee / camel_sample.clj
Created April 20, 2014 12:00
ClojureからApache Camelを使ってみる ref: http://qiita.com/kurogelee/items/301b69f77ac63f80e69f
(ns camel-sample.core
(:import [org.apache.camel.impl DefaultCamelContext]
[org.apache.camel.builder RouteBuilder])
(:gen-class))
(let [context (DefaultCamelContext.)]
(.addRoutes context (proxy [RouteBuilder] []
(configure [] (.. this
(from "file:src/camel_sample?noop=true")
(to "file:.?fileName=out.txt")))))
@kurogelee
kurogelee / file0.cljs
Created April 20, 2014 23:03
Clojureでproxyオブジェクトにメタ情報を付与する ref: http://qiita.com/kurogelee/items/ef22826be3577292526f
(def v (proxy [Object] []
(toString [] (str :abc))))
(with-meta v {:A 111})
@kurogelee
kurogelee / sequential-zip.clj
Created April 21, 2014 04:30
clojure.zipはzipファイルを扱うものじゃないよ ref: http://qiita.com/kurogelee/items/d5aa7f58cb84b5eb3c71
(defn sequential-zip
[root]
(zipper sequential?
identity
(fn [node children] (with-meta children (meta node)))
root))
@kurogelee
kurogelee / another_indent.cljs
Created April 23, 2014 11:23
LightTableで固定インデントを提供するプラグインを作成する ref: http://qiita.com/kurogelee/items/7f0477704fa8f05870d9
(ns lt.plugins.another-indent
(:require [clojure.string :as s]
[lt.objs.editor :as editor]
[lt.objs.editor.pool :as pool]
[lt.objs.command :as cmd])
(:require-macros [lt.macros :refer [behavior]]))
;; 指定した行(文字列)のインデント数(スペース換算)を返す
(defn indent [line tab-size]
(let [size (- (count line) (count (s/triml line)))]