Skip to content

Instantly share code, notes, and snippets.

{
"global": {
"check_for_updates_on_startup": true,
"show_in_menu_bar": true,
"show_profile_name_in_menu_bar": false
},
"profiles": [
{
"complex_modifications": {
"parameters": {
@mikeananev
mikeananev / core.clj
Created October 22, 2019 18:56
secure delete file
(require '[clojure.java.io :as io])
(defn secure-delete-file
"fill file content with mask 0x55AA and then delete it.
return nil."
[^String fname]
(let [length (.length (io/file fname))
buf-len 4096
w (quot length buf-len)
r (rem length buf-len)
@mikeananev
mikeananev / user.clj
Created January 5, 2020 12:37
Programmatic configuration of log4j2
(ns user
(:import (org.apache.logging.log4j.core.config.builder.api ConfigurationBuilderFactory)
(org.apache.logging.log4j.core.config Configurator)
(org.apache.logging.log4j Level)))
(def builder (ConfigurationBuilderFactory/newConfigurationBuilder))
(def console (.newAppender builder "stdout" "console"))
(.add builder console)
(Configurator/setRootLevel Level/DEBUG)
(println "log4j2 is configured.")
@mikeananev
mikeananev / Vagrant
Created January 23, 2020 11:54
Simple Vagrant file adapted for MacOS
# -*- mode: ruby -*-
# vi: set ft=ruby :
# ********************************************************
# on Mac run:
# vagrant plugin install vagrant-vbguest
# ********************************************************
Vagrant.configure("2") do |config|
export GRAALVM_HOME="/Library/Java/JavaVirtualMachines/graalvm-ce-java11-19.3.1/Contents/Home/"
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
eval "$(direnv hook zsh)"
@mikeananev
mikeananev / core.clj
Last active February 12, 2020 20:05
merge-sort
(defn merge-sort
([v comp-fn]
(if (< (count v) 2) v
(let [[left right] (split-at (quot (count v) 2) v)]
(loop [result []
sorted-left (merge-sort left comp-fn)
sorted-right (merge-sort right comp-fn)]
(cond
(empty? sorted-left) (into result sorted-right)
(empty? sorted-right) (into result sorted-left)
@mikeananev
mikeananev / core.clj
Last active February 16, 2020 16:35
Clojure RLE encoder/decoder
(ns org.rssys.rle.core
(:gen-class)
(:require [org.rssys.rle.naive :as rle1]
[org.rssys.rle.lazy :as rle2]))
(defn -main
"entry point to program."
[& args]
(condp = (first args)
@mikeananev
mikeananev / coder.clj
Last active April 8, 2024 19:38
Adaptive LZW compression on Clojure
(ns coder ;; org.rssys.lzw
(:require [clojure.java.io :as io])
(:import (java.io InputStream OutputStream)
(com.github.jinahya.bit.io StreamByteInput StreamByteOutput DefaultBitOutput DefaultBitInput)))
(def MAX-BITS-LENGTH 18)
(def EOF 256)
(defn lzw-encode-stream
[^InputStream in-stream ^OutputStream out-stream]
@mikeananev
mikeananev / core.clj
Last active March 1, 2020 05:20
Calculate first N digits of PI using Clojure
(require '[clojure.core.reducers :as r])
(defn pi
"calculate accurately first k digits of PI"
[k]
(with-precision (+ 3 k)
(let [f-exp (fn [k] (let [power (fn [x n] (reduce * (repeat n x)))
k8 (* 8M k)
a (/ 1.0M (power 16M k))
b (/ 4.0M (inc k8))
@mikeananev
mikeananev / deps.edn
Last active March 21, 2021 13:11
Parse YAML with io.forward/yaml library
{:deps {org.clojure/clojure {:mvn/version "RELEASE"}
io.forward/yaml {:mvn/version "RELEASE"}
org.flatland/ordered {:mvn/version "1.5.9"}}}