Skip to content

Instantly share code, notes, and snippets.

@piranha
piranha / encrypt.clj
Last active Mar 11, 2020
Simple encryption/decryption in Clojure
View encrypt.clj
(ns encrypt
(:import [javax.crypto Cipher]
[javax.crypto.spec SecretKeySpec]
[java.security MessageDigest]
[java.util Base64 Base64$Encoder Base64$Decoder]))
(def SECRET (or (System/getenv "SECRET")
(binding [*out* *err*]
(print "\nWARNING: set 'SECRET' env variable to be secure\n\n")
@piranha
piranha / hex.clj
Created Mar 11, 2020
hex and unhex in clojure
View hex.clj
(defn hex [ba]
(->> (map #(format "%02x" %) ba)
(apply str)))
(defn unhex [s]
(->> (partition 2 s)
(map #(Integer/parseInt (apply str %) 16))
byte-array))
@piranha
piranha / async-profiler-mw.clj
Created Feb 5, 2019
Async Profile Middleware
View async-profiler-mw.clj
(defn make-profile-transform [^String thread-name]
(fn [^String s]
(when (> (.indexOf s thread-name) -1)
(-> s
(str/replace #"com.fasterxml.jackson.+" "JACKSON...")
(str/replace #"org.elasticsearch.client.RestClient.+" "ES request...")
(str/replace #"clojure.tools.logging/.+" "LOG...")))))
(defn profiler-mw [handler]
View cx.clj
(defmacro cx [& classes]
"This macro compiles this:
(cx :one true :two true :three false :four (pos? 1))
Into this:
[ \"one two\", 1 > 0 ? \"four\" : null ].join(\" \")
"
(let [class-map# (partition 2 classes)
groups# (group-by (fn [[k v]]
View why_update.cljs
(ns mk.fe.core.why-update
(:require [cljsjs.react]))
(defn comp-did-update [prev-props prev-state]
(this-as this
(let [name (or (aget this "displayName")
(aget this "constructor" "displayName")
(aget this "constructor" "name"))
prev-state (aget prev-state ":rum/state")
state (aget (.-state this) ":rum/state")]
@piranha
piranha / change-wallpaper.sh
Last active May 22, 2016
Set desktop wallpaper
View change-wallpaper.sh
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 <path-to-wallpaper>"
exit 1
fi
realpath() {
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
View honeysql-helpers.clj
;; extend honeysql
(defmethod honeyhelpers/build-clause :returning [ _ m cols]
(assoc m :returning (honeyhelpers/collify cols)))
(defmethod honeyfmt/format-clause :returning [[_ cols] _]
(str "RETURNING " (honeyfmt/comma-join (map honeyfmt/to-sql cols))))
(extend-protocol honeyfmt/ToSql
clojure.lang.Sequential
View podcast2wget.xsl
<?xml version="1.0"?>
<!--
Convert podcast RSS to commands for curl.
Originally from bashpodder, modified by Alexander Solovyov.
Usage:
xsltproc podcast2wget.xsl path/to/podcast.rss
OR
View main.clj
(ns mailers.main
(:gen-class)
(:require [com.stuartsierra.component :as c]
[aleph.http :as aleph]
[manifold.stream :as mani]
[ring.util.response :as response]
[ring.middleware.file-info :only [wrap-file-info]]
[ring.middleware.resource :refer [wrap-resource]]))
@piranha
piranha / keybase.md
Last active Aug 29, 2015
keybase.md
View keybase.md

Keybase proof

I hereby claim:

  • I am piranha on github.
  • I am asolovyov (https://keybase.io/asolovyov) on keybase.
  • I have a public key whose fingerprint is 1F63 22C2 2BAE B0D4 18C1 4477 AB09 CA13 33A4 4CB6

To claim this, I am signing this object:

You can’t perform that action at this time.