Skip to content

Instantly share code, notes, and snippets.

View nitsanavni's full-sized avatar
🤔
Learning

Nitsan Avni nitsanavni

🤔
Learning
  • Málaga, Spain
  • 01:26 (UTC +02:00)
View GitHub Profile
@nitsanavni
nitsanavni / shebang.jq
Created November 2, 2023 09:39
jq shebang
#!/usr/bin/env -S jq -nrf
"Hello world!"
@nitsanavni
nitsanavni / .bash_aliases
Last active December 1, 2022 19:13
run code from README.md
alias runmd="<README.md marked -t | jaq -r '.[]|select(.type==\"code\")|.text' | fzf | rush {}"
@nitsanavni
nitsanavni / sync-exercise.mjs
Created September 10, 2021 11:00
synchronization exercise
// helpers
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const rand = (max) => Math.floor(Math.random() * max);
const times = (n, cb) => {
const ret = [];
for (let i = 0; i < n; i++) {
ret.push(cb());
}
@nitsanavni
nitsanavni / subgroups.spec.js
Last active May 21, 2019 19:27
subgroups exercise using bit ops
const _ = require("lodash");
function subgroups(elements) {
const bits = _.range(32);
const indices = (i) =>
_(bits)
.map((b) => (1 + b) * (0x1 & (i >> b)))
.compact() // only leave the `1`s
.map((b) => b - 1)
@nitsanavni
nitsanavni / subgroups.spec.js
Last active May 21, 2019 19:32
subgroups exercise using recursion
const _ = require("lodash");
function subgroups(elements) {
if (elements.length == 1) {
return [elements];
}
const drop = subgroups(_.drop(elements));
const first = _.take(elements);
const combined = [..._.map(drop, (i) => [...i, ...first]), ...[...drop, first]];
@nitsanavni
nitsanavni / StringUtil.groovy
Last active May 12, 2019 21:07
groovy String.isJson()
String.metaClass.isJson << { ->
def normalize = { it.replaceAll("\\s", "") }
try {
normalize(delegate) == normalize(JsonOutput.toJson(new JsonSlurper().parseText(delegate)))
} catch (e) {
false
}
}