Skip to content

Instantly share code, notes, and snippets.

View martintrojer's full-sized avatar
🕺
My hovercraft is full of eels

Martin Trojer martintrojer

🕺
My hovercraft is full of eels
View GitHub Profile
@martintrojer
martintrojer / connect.sh
Created February 12, 2014 15:58
remote jmx
$ ssh -C -L 9010:localhost:9010 user@host
@martintrojer
martintrojer / clear-buffers.el
Last active August 29, 2015 13:57
clear buffers
(defun current-nrepl-server-buffer ()
(let ((nrepl-server-buf (replace-regexp-in-string "connection" "server" (nrepl-current-connection-buffer))))
(when nrepl-server-buf
(get-buffer nrepl-server-buf))))
(defun clear-buffers ()
(interactive)
(cider-find-and-clear-nrepl-buffer)
@martintrojer
martintrojer / all-vars.clj
Last active August 29, 2015 13:57
all vars
(defn- log-time [{:keys [ns name line]} f & args]
(let [start (System/nanoTime)
res (apply f args)
elapsed (quot (- (System/nanoTime) start) 1000)]
(log/debug (format "%s/%s:%s %dus" ns name line elapsed))
res))
(defn enable-timing [var]
(log/debug "enabling timings" var)
(add-hook var (partial log-time (meta var))))
@martintrojer
martintrojer / kebab.clj
Last active August 29, 2015 14:07
kebab-case keywords in nested data-structures
(ns kebab
(:require [camel-snake-kebab :as kebab]
[schema.coerce :as c]
[schema.core :as s]))
(def Data (s/either s/Keyword
{(s/recursive #'Data) (s/recursive #'Data)}
[(s/recursive #'Data)]
#{(s/recursive #'Data)}
s/Any))
@martintrojer
martintrojer / saveme.sh
Created March 17, 2015 07:35
git reflog
for ref in `git fsck --unreachable | grep commit | cut -d' ' -f3`; do git show --summary $ref; done | less
@martintrojer
martintrojer / bt
Last active August 29, 2015 14:17
debugging emacs blog
(gdb) bt
#0 cmgoto (tty=0x126bbc0, row=45, col=0) at cm.c:320
#1 0x000000000040a642 in update_frame_line (f=f@entry=0xb06300, vpos=45) at dispnew.c:5031
#2 0x000000000040bcfb in update_frame_1 (f=f@entry=0xb06300, force_p=force_p@entry=true, inhibit_id_p=inhibit_id_p@entry=true, set_cursor_p=set_cursor_p@entry=true) at dispnew.c:4512
#3 0x000000000040d770 in update_frame (f=f@entry=0xb06300, force_p=<optimized out>, force_p@entry=true, inhibit_hairy_id_p=inhibit_hairy_id_p@entry=true) at dispnew.c:3113
#4 0x0000000000432c12 in echo_area_display (update_frame_p=update_frame_p@entry=1) at xdisp.c:11310
#5 0x0000000000432d5e in message3_nolog (m=m@entry=19444193) at xdisp.c:10271
#6 0x0000000000432f1a in message3 (m=m@entry=19444193) at xdisp.c:10213
#7 0x00000000004f4ddb in Fmessage (nargs=<optimized out>, args=<optimized out>) at editfns.c:3452
#8 0x00000000004fc891 in Ffuncall (nargs=<optimized out>, args=<optimized out>) at eval.c:2793
@martintrojer
martintrojer / gist:2c981adeac9b7fd4af51
Created April 27, 2015 10:56
Clojure compiler bug
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
10:51:33.171 [main] INFO am.resize-images.main - Starting...
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f8ef94542a1, pid=8307, tid=140252449363712
#
# JRE version: Java(TM) SE Runtime Environment (8.0_45-b14) (build 1.8.0_45-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
(function() {
var Ap = Array.prototype;
var slice = Ap.slice;
var Fp = Function.prototype;
if (!Fp.bind) {
// PhantomJS doesn't support Function.prototype.bind natively, so
// polyfill it whenever this module is required.
Fp.bind = function(context) {
@martintrojer
martintrojer / destruct.clj
Created January 28, 2012 13:13
scheme-clojure
(let [[fst & rst] (parse "(+ 1 1)")]
[fst rst])
--> [:+ (1.0 1.0)]
@martintrojer
martintrojer / aleph-async.clj
Created January 28, 2012 16:41
async-clojure
(async
(for [i (range 10 80)]
(http-request
{:method :get
:url (format "http://fssnip.net/%d" i)}))))