Skip to content

Instantly share code, notes, and snippets.

View sherpc's full-sized avatar

Alexander Sher sherpc

View GitHub Profile
Dir.foreach('.') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
r = /IMG_(.*?)_(.*?)[_\.].*/
date_part = filename[r, 1]
time_part = filename[r, 2]
next unless date_part and time_part
d = date_part + time_part
d = d[0...-2]
v = `touch -mt #{d} '#{filename}'`
@sherpc
sherpc / aop.clj
Created June 2, 2018 10:08
AOP like in Clojure
(defn- add-call-log
[s]
(when-let [v (resolve s)]
(when-not (-> v meta :macro)
(let [current @v
patched (fn [& args]
(prn {:called-fn v :args args})
(.applyTo ^clojure.lang.IFn current args))]
(alter-var-root v (constantly patched))))))
@sherpc
sherpc / mustache.clj
Created November 27, 2017 13:48
Mustache-like templating in Clojure
(ns mustache
(:require [clojure.string :as str]))
(defn mustache
[s args]
(reduce
(fn [result [k v]]
(str/replace result
(re-pattern (format "([^\\{])\\{%s\\}([^\\}])" (name k)))
(format "$1%s$2" v)))
@sherpc
sherpc / kafka.clj
Last active April 24, 2017 07:12
Kafka streams proof of concept
(ns flock-staff.kafka
(:require [cheshire.core :as json])
(:import [flock_staff.kafka StringProcessor StringForeachAction]
[org.apache.kafka.common.serialization Serdes]
[org.apache.kafka.streams.processor TopologyBuilder ProcessorSupplier]
[org.apache.kafka.streams KafkaStreams StreamsConfig]
[org.apache.kafka.clients.consumer ConsumerConfig]
[java.util Properties]))
(defn processor
@sherpc
sherpc / memory.clj
Last active April 30, 2019 22:05
Clojure simple memory usage log
(defn total-memory
[]
(.totalMemory (Runtime/getRuntime)))
(defn free-memory
[]
(.freeMemory (Runtime/getRuntime)))
(def steps
(->> ["B" "KB" "MB" "GB" "TB"]
var xs = _.chain(results)
.sortBy(function (x) { return x.pos; })
.groupBy("level")
.map(function (value, key) { return { depth: key, hits: value }; })
.value();
class rock{}
class paper{}
class scissors{}
public static class game{
public static object rps(rock r, paper p){return p;}
public static object rps(rock r, scissors s){return r;}
public static object rps(paper p, scissors s){return s;}
}
@sherpc
sherpc / JsonErrorViewModel.cs
Last active August 29, 2015 14:01
Обработка исключений в API-контроллерах
public class JsonErrorViewModel
{
private JsonErrorViewModel(string error, dynamic parameters = null)
{
Error = error;
Parameters = parameters;
}
public string Error { get; private set; }
public dynamic Parameters { get; private set; }
@sherpc
sherpc / d-op.clj
Last active August 29, 2015 14:00
Clojure's every?
(defn d-op [op d1 d2]
(if (every? #(instance? org.joda.time.DateTime %) [d1 d2])
(op (c/to-long d1) (c/to-long d2))
(op d1 d2)))