Skip to content

Instantly share code, notes, and snippets.

View eskil's full-sized avatar

Eskil Heyn Olsen eskil

View GitHub Profile
@eskil
eskil / task_async_stream_supervisor.ex
Created February 17, 2021 22:36
Example of how to do retryable Task.Supervisor.async_stream since it doesn't do retries for you
require Integer
require Logger
defmodule Processor do
def process(state) do
:timer.sleep(1000)
result = :os.system_time(:millisecond)
Logger.info("process(#{state}) -> #{result}")
case Integer.is_even(result) do
true ->
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname bvi_group
%% escript ./bvi_group.erl
% Magic compiler directive to make reduce/1 be visible in main/1.
-mode(compile).
%% This is a variant of the debt reduce interview question that works
PROGRAM VPMDECO
C===============================================================================
C Varying Permeability Model (VPM) Decompression Program in FORTRAN
C
C Author: Erik C. Baker
C
C "DISTRIBUTE FREELY - CREDIT THE AUTHORS"
C
C This program extends the 1986 VPM algorithm (Yount & Hoffman) to include
C mixed gas, repetitive, and altitude diving. Developments to the algorithm
struct dive_table_grammar : boost::spirit::grammar<dive_table_grammar> {
dive_table_grammar (TablesCollection &t) : tablescollection (t) { }
template<typename Scanner>
struct definition {
definition (const dive_table_grammar &dt)
: si1 (minutes (0)), tablescollection (dt.tablescollection)
{
using namespace boost::spirit;
m_depth_rule
@eskil
eskil / gist:10614c61b9dd5823ed17da316f9cb834
Created May 13, 2016 21:12
.cfg parse in boost spirit
//#define BOOST_SPIRIT_DEBUG
#include <boost/spirit.hpp>
#include <boost/spirit/actor.hpp>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
using namespace boost::spirit;
#include "statemachines.h"
#include <fstream>
//*********************************************************************************************
namespace simple_test {
/*
#define TRY_CLASS_PTR_STATES 0
#define TRY_CLASS_STATES 0
/* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
//
// (C) Eskil Heyn Olsen 2009
//
#include <iostream>
#include <vector>
#include <utility>
#include <iterator>
#include <sstream>
#include <iostream>
#include <string>
#include <vector>
template<typename InIt, typename Tdelim, typename Tj>
Tj& join (InIt first, InIt last, const Tdelim &d, Tj &j) {
if (first == last)
return j;
InIt next = first;
//#define BOOST_SPIRIT_DEBUG
#include <boost/spirit.hpp>
#include <boost/spirit/actor.hpp>
#include <string>
#include <map>
#include <stdexcept>
#include <algorithm>
using namespace std;
using namespace boost::spirit;
@eskil
eskil / bvi_group.erl
Last active August 29, 2015 14:20
Debt reduce solution for 2015 BVI Trip
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname bvi_group
%% escript ./bvi_group.erl
% Magic compiler directive to make reduce/1 be visible in main/1.
-mode(compile).
%% This is a variant of the debt reduce interview question that works