Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Stream;
public class App {
public static void main(String[] args) {
@nbardiuk
nbardiuk / core.clj
Created October 6, 2021 20:17
Concat JSON
(ns core
(:require
[clj-http.client :as http]
[cheshire.core :as json]
[ring.adapter.jetty :refer [run-jetty]]))
;; Clojure sequences can be chunked in batches of 32 items
;; for the test I want to emit items one at a time
;; https://stackoverflow.com/a/3409568/187261
(defn unchunk [s]
@nbardiuk
nbardiuk / aoc-stats-tree.user.js
Last active December 20, 2020 19:12
Render AoC stats as christmass tree
// ==UserScript==
// @name AoC stats tree
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Render AoC stats as christmass tree
// @author nbardiuk
// @match https://adventofcode.com/*/stats
// @license MIT License
// @copyright Copyright (C) 2020, by Nazarii Bardiuk
// @grant none
@nbardiuk
nbardiuk / script.clj
Last active November 28, 2020 19:29
Clojure shebang wtih arguments
#!/usr/bin/env -S clj -Sdeps '{:deps {clj-http/clj-http {:mvn/version "3.11.0"} cheshire/cheshire {:mvn/version "5.10.0"}}}'
(require '[clj-http.client :as http])
(require '[cheshire.core :as json])
(require '[clojure.pprint :refer [pprint]])
(let [url (or (first *command-line-args*) "https://httpbin.org/get?q=a")
{:keys [body headers]} (http/get url)]
(pprint headers)
(pprint (json/decode body)))
@nbardiuk
nbardiuk / Makefile
Last active October 14, 2020 20:58
Clojure tdd (test watch) using headless lein and rep
.PHONY: tdd
tdd: .nrepl-port
watchexec --clear --no-shell rep '(repl/refresh)(doto "$(only)" (run-tests))'
.PHONY: kill-repl
kill-repl:
@if [ -f .nrepl-port ];\
then\
kill $$(lsof -ti ":$$(cat .nrepl-port)" -sTCP:LISTEN) ;\
fi
@nbardiuk
nbardiuk / moving-avarage.clj
Last active February 3, 2020 17:18
Moving avarage
(defn- slide [window x]
(-> window (subvec 1) (conj x)))
(defn- windows [n xs]
(let [first-window (vec (take n xs))
the-rest (drop n xs)]
(when (and (< 0 n) (= n (count first-window)))
(reductions slide first-window the-rest))))
(defn- avarage [xs]
@nbardiuk
nbardiuk / escape.vim
Last active January 30, 2020 21:09
Vim escape javascript string
" paste escaped java/javascript string
nmap <leader>jp :call setreg('e', json_encode(@+))\| normal "ep<CR>
xmap <leader>jp :<C-U>call setreg('e', json_encode(@+))\| normal gv"ep<CR>
nmap <leader>jP :call setreg('e', json_encode(@+))\| normal "eP<CR>
" yank unescaped java/javascript string
xmap <leader>jy :<C-U>execute 'normal! gv"ey'\| :call setreg('+', json_decode(@e))<CR>
@nbardiuk
nbardiuk / .vimrc
Created January 25, 2020 11:39
sexp element pair
" emulate text object for pair of elements
" i.e. key/value binding/expr test/expr
"
" pair forward
xmap <buffer> ip <Plug>(sexp_inner_element)<Plug>(sexp_move_to_next_element_tail)
omap <buffer> ip :<C-U>normal vip<CR>
" pair backward
xmap <buffer> iP <Plug>(sexp_inner_element)o<Plug>(sexp_move_to_prev_element_head)
omap <buffer> iP :<C-U>normal viP<CR>
import java.util.Arrays;
import java.util.function.BiFunction;
import java.util.function.Function;
class Scratch {
public static void main(String[] args) {
Monoid<Integer> sum = Monoid.of(0, Integer::sum);
Fold<String, Integer> sumStrings = Fold.of(Integer::parseInt, sum);
Integer result = sumStrings.fold(Arrays.asList("1", "2", "3"));
System.out.println(result);
@nbardiuk
nbardiuk / .cvimrc
Last active March 21, 2018 12:01
cvim options
let defaultengine="duckduckgo"
let smoothscroll="true"
let scrollduration="200"
map J nextTab
map K previousTab