Skip to content

Instantly share code, notes, and snippets.

View mortenpi's full-sized avatar

Morten Piibeleht mortenpi

View GitHub Profile
@mortenpi
mortenpi / read_urandom.cc
Created March 24, 2014 17:30
Short generic C++ function to read random data of any type from /dev/urandom.
#include <fstream>
#include <cstdlib>
template<class T>
T read_urandom()
{
union {
T value;
char cs[sizeof(T)];
} u;
@mortenpi
mortenpi / handle_segfault.c
Last active March 2, 2023 01:41
Recover gracefully from a segmentation fault (SIGSEGV) in C due to invalid pointer.
/*
Credits to:
- https://linux.die.net/man/2/setcontext
- https://stackoverflow.com/questions/8456085/why-cant-i-ignore-sigsegv-signal
*/
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <signal.h>
@mortenpi
mortenpi / pcniter.py
Created March 17, 2014 17:41
Previous / current / next iterator in Python
def previous_current_next(iterable):
"""Make an iterator that yields an (previous, current, next) tuple per element.
Returns None if the value does not make sense (i.e. previous before
first and next after last).
"""
iterable=iter(iterable)
prv = None
cur = iterable.next()
try:
@mortenpi
mortenpi / range.cc
Created August 28, 2015 18:35
Function to create a vector of evenly spaced numbers in C++.
// Create a vector of evenly spaced numbers.
vector<double> range(double min, double max, size_t N) {
vector<double> range;
double delta = (max-min)/double(N-1);
for(int i=0; i<N; i++) {
range.push_back(min + i*delta);
}
return range;
}
@mortenpi
mortenpi / capture-streams.jl
Last active November 22, 2020 10:59
Example code to capture STDOUT and STDERR in Julia.
# A wrapper function to capture STDOUT and STDERR into strings.
#
# Heavily inspired by
# https://github.com/JuliaStats/RCall.jl/blob/c1ff136864964cf2ac04b679f0c1b3b243df7e37/src/iface.jl#L35-L46
# referred to by the issue comment
# https://github.com/JuliaLang/julia/issues/12711#issuecomment-133045787
#
# The Base.start_reading(stream, cb) requires fixes in Base.
#
@mortenpi
mortenpi / git-remote-github-add.sh
Last active July 26, 2020 06:22
A bash function to quickly add a GitHub fork as a remote to your git repository.
#!/bin/bash
#
# git-remote-github-add: A bash function to quickly add a GitHub fork as a remote to your
# git repository.
#
# Copyright 2020 Morten Piibeleht
#
# License: MIT
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
*.css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KaTeX rendering bug example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.css" integrity="sha384-yFRtMMDnQtDRO8rLpMIKrtPCD5jdktao2TV19YiZYWMDkUR5GQZR/NOVTdquEx1j" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.js" integrity="sha384-9Nhn55MVVN0/4OFx7EE5kpFBPsEMZxKTCnA+4fqDmg12eCTqGi6+BB2LjY8brQxJ" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
@mortenpi
mortenpi / partition.jl
Created June 4, 2019 05:14
Function to partition a set according to a predicate.
"""
partition(f, xs)
Partitions a collection according to a predicate `f`. Similar to `filter`, but returns
the both the elements for which `f` is `true` and for which it is `false`, in two different
collections.
Returns a tuple of vectors, where the first vector contains the elements for which `f` is true
and the second the elements for which `f` is false.
"""
@mortenpi
mortenpi / sasscwatcher.jl
Last active May 30, 2019 08:24
A short program to watch changes in Sass files and recompile them automatically
# Copyright 2019 Morten Piibeleht
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
# to whom the Software is furnished to do so, subject to the following conditions:
#
#The above copyright notice and this permission notice shall be included in all copies or
#substantial portions of the Software.