Skip to content

Instantly share code, notes, and snippets.

@splinterofchaos
splinterofchaos / cargs.hs
Created March 20, 2014 15:31
Comand line arguments as a StateT.
{-# LANGUAGE TemplateHaskell, Rank2Types, NoMonomorphismRestriction #-}
import Data.List
import Data.Maybe
import Data.Monoid
import Control.Monad.State
import Control.Monad.Trans.State (state)
import Control.Monad.Identity
import Control.Monad
import Control.Monad.Writer
import Control.Applicative
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
set(CMAKE_EXE_LINKER_FLAGS "${SMAKE_EXE_LINKER_FLAGS} --coverage")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
add_library(Alloc alloc.c)
add_executable(Main, main.c)
target_link_libraries(Main, Alloc)
@splinterofchaos
splinterofchaos / nvim -c ':cd .. | :fin vim.h | :cd tmp | :q!'
Created August 8, 2014 00:02
Profiling of :find from the /tmp directory.
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
83.86 66.13 66.13 42180 0.00 0.00 ff_check_visited
7.16 71.78 5.65 776266823 0.00 0.00 os_file_id_equal
2.05 73.40 1.62 6152021 0.00 0.00 addstate
1.22 74.36 0.96 421636 0.00 0.00 nfa_regmatch
0.82 75.01 0.65 42291 0.00 0.00 os_get_file_id
@splinterofchaos
splinterofchaos / clang.s
Last active August 29, 2015 14:05
concat_fnames assembly
movl %edx, %r15d
movq %rsi, %r14
movq %rdi, %rbp
# kill: RDI<def> RBP<kill>
callq strlen
movq %rax, %rbx
movq %r14, %rdi
callq strlen
leaq 3(%rbx,%rax), %rdi
callq xmalloc
@splinterofchaos
splinterofchaos / log
Created August 30, 2014 04:54
neovim log on segfault
2014/08/30 00:51:15 [debug @ requeue_deferred_events:209] 7437 - Number of deferred events: 0
2014/08/30 00:51:15 [debug @ requeue_deferred_events:219] 7437 - Number of deferred events: 0
2014/08/30 00:51:15 [debug @ process_from:185] 7437 - Processed 0 events
2014/08/30 00:51:15 [debug @ loop:237] 7437 - Enter event loop
2014/08/30 00:51:15 [debug @ read_cb:271] 7437 - Received 1 bytes from RStream(address: 0x277dc10, source: 0x277dc10)
2014/08/30 00:51:15 [debug @ loop:239] 7437 - Exit event loop
2014/08/30 00:51:15 [debug @ process_from:185] 7437 - Processed 0 events
2014/08/30 00:51:15 [debug @ requeue_deferred_events:209] 7437 - Number of deferred events: 1
2014/08/30 00:51:15 [debug @ requeue_deferred_events:216] 7437 - Re-queueing event
2014/08/30 00:51:15 [debug @ requeue_deferred_events:219] 7437 - Number of deferred events: 1
@splinterofchaos
splinterofchaos / Makefile
Created October 6, 2014 21:13
Uv stdout and stderr
a.out : err.c
gcc err.c
let s:buf = 0 " The buffer we use to write/send data.
let s:job = 0 " The job that runs the commands.
let s:inbuf = '' " Data pending, sending to s:job.
command! Proc call s:new()
command! -nargs=* ProcDoLine call s:do_cmd(<f-args>)
command! ProcStop call jobstop(s:job)
command! ProcPressEnter call s:on_enter()
==18492== Memcheck, a memory error detector
==18492== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==18492== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
==18492== Command: nvim
==18492== Parent PID: 21288
==18492==
==18492== Invalid read of size 4
==18492== at 0x4B2ED1: copy_tv (eval.c:16794)
==18492== by 0x4B15BE: get_var_tv (eval.c:15965)
==18492== by 0x499294: eval7 (eval.c:4114)
@splinterofchaos
splinterofchaos / Py.h
Last active August 29, 2015 14:10
Python API in C++
#ifndef PY_H
#define PY_H
#include <Python.h>
#include <type_traits>
#include <utility>
#include <string>
template<typename R, typename...X>
@splinterofchaos
splinterofchaos / proj.cpp
Created February 17, 2015 18:35
Projection
#include <algorithm>
#include <cassert>
#include <functional>
#include <iostream>
#include <vector>
#include <fu/fu.h>
struct Person {