Skip to content

Instantly share code, notes, and snippets.

@grav
grav / dropshadow.html
Last active April 2, 2020 12:07
Slow printing issue in Chromium
<html><head>
<style>
img {
filter: drop-shadow(0.1em 0.2em 0.3em)
}
</style>
</head>
<body><img src="https://www.w3schools.com/html/pic_trulli.jpg">
<img src="https://www.w3schools.com/html/img_girl.jpg">
<img src="https://www.w3schools.com/html/img_chania.jpg">
@grav
grav / totalIndexedDbSize.js
Created January 7, 2020 14:05
Measure total size of all indexeddb objects
// forked from
// https://github.com/jonnysmith1981/getIndexedDbSize
function showIndexedDbSize(dbname) {
"use strict";
var db;
var totalSize = 0
function openDatabase(dbname) {
return new Promise(function(resolve, reject) {
@grav
grav / reagent-inspect.clj
Last active November 26, 2019 06:42
Wrapper component that allows you to inspect the properties of its child component, when hovered+ctrl
(defn inspect []
(let [state (r/atom nil)]
(fn [[c & args]]
(let [{:keys [hover]} @state]
[:div {:on-mouse-over #(do
(swap! state assoc :hover (.getModifierState % "Control")))
:on-mouse-out #(swap! state assoc :hover false)
:style {:display :inline-block
:width "100%"
:height "100%"
#!/bin/bash
shopt -s nullglob
for g in /sys/kernel/iommu_groups/*; do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;
@grav
grav / socket_repl.clj
Created April 28, 2019 11:28
Lumo plumbing
;; to use in cursive:
;; 1. create a project.clj, deps.edn or pom.xml with tubular dependency and open in Cursive
;; 2. create new run-config
;; 3. select clojure.main as repl type
;; 4. specify socket_repl.clj (this file) in `Parameters`
;; 5. run lumo with socket repl:
;; lumo --socket-repl 5555 --classpath src-dir1:src-dir2 --dependencies some/dep:0.1.0-SNAPSHOT,other-dep:1.0.1
;; 6. run run-config from cursive
//Parameter is the type of parameter passed in the selector
public class ClosureSelector<Parameter> {
public let selector : Selector
private let closure : ( Parameter ) -> ()
init(withClosure closure : @escaping ( Parameter ) -> ()){
self.selector = #selector(ClosureSelector.target)
self.closure = closure
}
@grav
grav / runloop.cljs
Last active December 16, 2018 14:07
(defn sleep [s]
(js/Promise. (fn [res rej]
(js/setTimeout res (* 1000 s)))))
(defn start []
(println "while start")
(-> (sleep 2)
(.then start)))
(start)
function sleep(s){
return new Promise(function(resolve,reject) {
setTimeout(_ => {
resolve();
}, 1000 * s);
});
}
async function start(){
while(true){
@grav
grav / ordered-keys-from-edn-map.clj
Last active September 8, 2018 10:21
Retrieve order of keys in an edn-map
;; Retrieve order of keys in an edn-map
(defn ordered-keys-from-edn-map [edn]
(assert (map? (read-string edn)))
(let [list-of-symbols (-> edn
(clojure.string/replace-first "{" "[")
(clojure.string/replace #"}(\s+)$" "]")
read-string)]
(->> list-of-symbols
(partition 2)
(ns xhr-client
(:refer-clojure :exclude [get])
(:require [httpurr.protocols]
[clojure.string :as str]
[httpurr.protocols :as p]
[httpurr.client :as c]))
(defn normalize-headers
[headers]
(reduce-kv (fn [acc k v]