Skip to content

Instantly share code, notes, and snippets.

@kurogelee
kurogelee / aes.clj
Created April 24, 2014 15:06
ClojureでAES暗号化をしてみる&AESのちょっと細かい話 ref: http://qiita.com/kurogelee/items/8f74caf44d4224e63dea
(import '[java.security SecureRandom Key]
'[javax.crypto KeyGenerator Cipher]
'[javax.crypto.spec IvParameterSpec]
'[java.security.spec AlgorithmParameterSpec])
(defn ^bytes rand-bytes [n]
(let [b (byte-array n)]
(.. (SecureRandom.) (nextBytes b))
b))
@kurogelee
kurogelee / Init.java
Created April 25, 2014 10:46
インスタンスイニシャライザ実行とフィールド初期化はどっちが先に? ref: http://qiita.com/kurogelee/items/09e5270385d14148f5e8
package basic;
import java.util.function.*;
public class Init {
Init(){
p("constructor");
}
int i = ((IntSupplier)(() -> { p("field1"); return 0; })).getAsInt();
{
@kurogelee
kurogelee / FizzBuzz.java
Created April 27, 2014 06:25
Javaでラムダを使用したFizzBuzz ref: http://qiita.com/kurogelee/items/3a0bfd4c9be043e59da0
package basic;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.IntStream;
public class FizzBuzz {
public static void main(String... args){
Map<Integer, String> map = new LinkedHashMap<>();
map.put(15, "FizzBuzz");
@kurogelee
kurogelee / file0.cljs
Last active August 29, 2015 14:00
Clojureで挿入順を維持するマップは? ref: http://qiita.com/kurogelee/items/5f1455d2846dbb8e005c
(type {})
(type {1 1})
(type {1 1 2 2 3 3 4 4 5 5 6 6 7 7})
(type {1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8})
(type {1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9})
(type (assoc {1 1 2 2 3 3 4 4 5 5 6 6 7 7} 8 8))
(type (assoc {1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8} 9 9))
(type (assoc {1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9} 10 10))
@kurogelee
kurogelee / deref_sample.clj
Created May 1, 2014 12:46
何個連続@をつなげられるか?@@@@@@@@@@@@ ref: http://qiita.com/kurogelee/items/7332137e1d2ff0f5070f
(with-local-vars [x (promise)
y (future-call (fn [] x))
z (reify clojure.lang.IDeref (deref [this] y))]
(deliver x (-> 9 ref atom agent delay future reduced))
(str @@@@@@@@@@@@z))
@kurogelee
kurogelee / anonymous.clj
Created May 2, 2014 04:59
Clojureの無名関数で%-1は何を表すか? ref: http://qiita.com/kurogelee/items/2807639f35cfdf945cac
(apply #(println %1 %-1 %2 %&) (range 10))
@kurogelee
kurogelee / core.clj
Created May 14, 2014 19:55
dorothyの魔法でクラス図を描く ref: http://qiita.com/kurogelee/items/aa5bb531ff87de0fe99e
(ns classzu.core
(:require [dorothy.core :refer :all]
[clojure.set :as set]
[clojure.walk :as walk]))
(defn show-diagram [& class-defs]
(->> (for [[class extends & implements] class-defs]
(concat [class]
(when extends [[class extends]])
(map (fn [i] [class i {:style :dashed}]) implements)))
@kurogelee
kurogelee / file0.cljs
Created May 17, 2014 04:15
LightTable"を"プログラミングする初歩 ref: http://qiita.com/kurogelee/items/7d3ac7a3fecae3279e1b
(ns sample.core
(:require [lt.object :as o])
(:require-macros [lt.macros :as m]))
@kurogelee
kurogelee / file1.txt
Created May 24, 2014 00:12
Clojureのvectorに対するlastは遅い ref: http://qiita.com/kurogelee/items/019d3be32ea34bfb22e1
Elapsed time: 0.007123 msecs
Elapsed time: 0.005308 msecs
Elapsed time: 0.003352 msecs
Elapsed time: 191.406869 msecs
Elapsed time: 129.120391 msecs
Elapsed time: 77.368283 msecs
Elapsed time: 243.091859 msecs
Elapsed time: 0.006216 msecs
Elapsed time: 29.659985 msecs
Elapsed time: 0.093308 msecs
@kurogelee
kurogelee / Cycle.java
Created May 27, 2014 14:47
Javaのラムダ使うAPIとClojureをちょこっと比較してみる ref: http://qiita.com/kurogelee/items/c032ae51c82a80cd7a97
static <T> Stream<T> cycle(T t0, T... ts){
return Stream.generate(new Supplier<T>() {
int index = -1;
@Override
public T get() {
index = (index + 1) % (ts.length + 1);
if(index == 0){
return t0;
}
return ts[index - 1];