Skip to content

Instantly share code, notes, and snippets.

@kurogelee
kurogelee / init.cljs
Created August 31, 2016 17:20
AtomでClojureの開発環境を構築する ref: http://qiita.com/kurogelee/items/cc8f76cec0718646077a
(def workspace global.atom.workspace)
(def commands global.atom.commands)
(def views global.atom.views)
(defn get-editor [] (.getActiveTextEditor workspace))
(defn get-editor-view [] (.getView views (get-editor)))
(defn get-cursor [] (.getLastCursor (get-editor)))
(defn get-cursors [] (.getCursors (get-editor)))
(defn add-command [name & fs]
@kurogelee
kurogelee / init.cljs
Last active August 30, 2016 12:55
Atomのinit.coffeeをinit.cljs(ClojureScript)で置き換える方法 ref: http://qiita.com/kurogelee/items/b198733771ae1c7e35ac
(.log js/console global.atom)
(.log js/console global.atom.commands)
(.. global.atom.commands
(add "atom-text-editor" "cljs:sample-linefirst"
#(.. global.atom.workspace
getActiveTextEditor
getLastCursor
moveToFirstCharacterOfLine)))
@kurogelee
kurogelee / body.clj
Last active October 19, 2017 01:27
パケットキャプチャファイルを簡単にいじれる何かがほしかった ref: http://qiita.com/kurogelee/items/1d934e08048c6fca1ae3
(def-frame :Ipv4Frame
:Ipv4Header :header
"IcmpFrame:(= Protocol 1)" :icmp
"TcpFrame:(= Protocol 6)" :tcp
"bytes:(if (not-any? #(= Protocol %) [1 6]) (- incl_len 14 (* 4 IHL)) false)" :unknown)
(def-frame :ArpFrame
:uint16 :HTYPE
:uint16 :PTYPE
:uint8 :HLEN
@kurogelee
kurogelee / user.cljs
Created November 18, 2015 17:15
Light TableにUndo selectionとGo back to bracketコマンドを作る ref: http://qiita.com/kurogelee/items/8c813f75b385635e0c3f
(defn delete-to-bracket [cm command]
(.setExtending cm true)
(cmd/exec! command)
(.replaceSelection cm "")
(.setExtending cm false))
(cmd/command {:command :user.delete-to-bracket
:desc "User: Delete to bracket"
:exec #(delete-to-bracket (get-cm) :editor.sublime.goToBracket)})
@kurogelee
kurogelee / sample.clj
Created November 15, 2015 06:14
Clojureでバイト配列を整数に変換する ref: http://qiita.com/kurogelee/items/919cd0df8b59d7bcf65a
(def << bit-shift-left)
(def >> bit-shift-right)
(defn unsigned [^bytes bytea]
{:pre [(<= 1 (alength bytea) 7)]}
(areduce bytea i ret 0
(bit-or (<< ret 8) (bit-and 0xff (aget bytea i)))))
(defn signed [^bytes bytea]
{:pre [(<= 1 (alength bytea) 8)]}
@kurogelee
kurogelee / volatile-sample.clj
Created November 13, 2015 12:33
Clojure1.7から入ったvolatile!とは? ref: http://qiita.com/kurogelee/items/056c2501fcc9ca1fcc93
(def v (volatile! {:a 1}))
(vswap! v assoc :b 2)
(vreset! v {:c 3})
@kurogelee
kurogelee / robot.clj
Last active October 19, 2017 01:27
Clojureでキーボード操作をエミュレートする ref: http://qiita.com/kurogelee/items/0be411023e5e95dadbad
(ns robot.sample
(:import [java.awt Robot]
[java.awt.event KeyEvent]
[javax.swing KeyStroke]))
(defn static-fields [^Class class fields]
(map #(load-string (str (.getName class) "/" %)) fields))
(defn modifiers->vks [modifiers]
(->> (map #(when (pos? (bit-and modifiers %1)) %2)
@kurogelee
kurogelee / hotkey.clj
Created April 11, 2015 00:00
Clojure/Javaでショートカットキー(Global Hotkey)を作る ref: http://qiita.com/kurogelee/items/70bfe97d8141e07905d9
(ns hotkey.sample
(:import [com.tulskiy.keymaster.common Provider HotKeyListener]
[javax.swing KeyStroke]))
(def provider (atom nil))
(defn- get-arity [f]
(let [^java.lang.reflect.Method m (-> f class .getDeclaredMethods first)]
(count (.getParameterTypes m))))
@kurogelee
kurogelee / file0.cljs
Created February 28, 2015 14:48
Clojureの標準にないけど欲しい関数 ref: http://qiita.com/kurogelee/items/7811fdb6c760bdb2de7d
(defn third [coll] (second (next coll)))
@kurogelee
kurogelee / clipboard.clj
Created February 27, 2015 15:05
Clojureでクリップボードを使ってみる ref: http://qiita.com/kurogelee/items/d6dacf64a0b0fe575bb6
(ns use-clipboard.core
(:import [java.awt Toolkit]
[java.awt.datatransfer Clipboard DataFlavor StringSelection]))
(def ^Clipboard clip (.getSystemClipboard (Toolkit/getDefaultToolkit)))
(defn get-string []
(when (.isDataFlavorAvailable clip DataFlavor/stringFlavor)
(.getData clip DataFlavor/stringFlavor)))