Skip to content

Instantly share code, notes, and snippets.

Lukas Larsson garazdawi

Block or report user

Report or block garazdawi

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@garazdawi
garazdawi / gcount.erl
Created Sep 6, 2019
Global Counters in Erlang
View gcount.erl
-module(gcount).
-export([bench/0,bench/1]).
-export([ets_init/0,ets_new/1,ets_incr/1,ets_read/1]).
-export([cnt_init/0,cnt_new/1,cnt_incr/1,cnt_read/1]).
-export([cnt_pt_init/0,cnt_pt_new/1,cnt_pt_incr/1,cnt_pt_read/1]).
ets_init() ->
ets:new(?MODULE, [{write_concurrency,true},named_table,public]).
ets_new(Counter) ->
View funmatch.erl
%% Introducing the new `apply` pattern match operand.
%% `apply` is used to delegate the handling of a match
%% to some other function including the action to be taken
%% when a successful match happens. The `apply` statement
%% replaces the "-> body" part of a function/case/receive.
%%
%% Simple example:
%% example() ->
%% Pat = fun(A) when is_atom(A) ->
%% {ok, A}
@garazdawi
garazdawi / bit_vector.erl
Last active Aug 24, 2019
A shared mutable bit-vector in Erlang
View bit_vector.erl
-module(bit_vector).
-export([new/1, get/2, set/2, clear/2, flip/2, print/1]).
new(Size) ->
Words = (Size + 63) div 64,
{?MODULE, Size, atomics:new(Words, [{signed, false}])}.
get({?MODULE, _Size, Aref}, Bix) ->
View gen_tcp2.erl
-module(gen_tcp2).
-export([listen/2, accept/1, accept/2,
connect/3, connect/4,
send/2, recv/1, recv/2, recv/3,
close/1]).
-export([run/0, run/2]).
%% Naive gen_tcp shim over the socket API
@garazdawi
garazdawi / tlsv1.3.sh
Created May 10, 2019
How to compile openssl and Erlang/OTP with TLSv1.3
View tlsv1.3.sh
#!/bin/bash
git clone https://github.com/openssl/openssl
cd openssl
git checkout OpenSSL_1_1_1b
./Configure shared --prefix=$HOME/apps/openssl/1.1.1b --openssldir=$HOME/apps/openssl/1.1.1b linux-x86_64
make
make install
cd ..
@garazdawi
garazdawi / decode.erl
Created Aug 3, 2018
Decode of partial erlang external term format
View decode.erl
-module(decode).
-export([term/1]).
term(<<131,Rest/binary>>) ->
element(1,term(Rest));
%% List
term(<<108,Sz:32,Rest/binary>>) ->
{Lst, R} = lists:foldl(
fun(_, {Acc, B}) ->
@garazdawi
garazdawi / trace_issue.escript
Created Aug 1, 2018 — forked from devonestes/trace_issue.escript
Reproduction escript for trace/3 wierdness
View trace_issue.escript
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname wtf
main(_) ->
process_flag(trap_exit, true),
ToMap = lists:seq(1, 50),
MapFun = fun() ->
lists:map(fun(N) -> N end, ToMap)
end,
start_runner(MapFun),
View gist:1875718
## Initial assembly
lbl_sum0: i_func_info_IaaI 0 sum sum 2
i_is_eq_exact_immed_frc f(lbl_sum1) x(0) 0
move_return_xr x(1) x(0)
lbl_sum1: is_tuple_of_arity_fxA f(lbl_sum0) x(1) 2
extract_next_element2_x x(2)
i_is_eq_exact_immed_fxc f(lbl_sum0) x(2) s
i_fetch_rc x(0) 1
i_minus_jId j(0000000000000000) 4 x(1)
i_fetch_xr x(3) x(0)
View gist:1037856
module(test).
-export([get_data/1]).
get_data([T|Rest]) ->
case T of
test ->
do_error([T|Rest]);
_Else ->
do_error([])
View infocmp.sh
> infocmp xterm
# Reconstructed via infocmp from file: /lib/terminfo/x/xterm
xterm|xterm-debian|X11 terminal emulator,
am, bce, km, mc5i, mir, msgr, npc, xenl,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
You can’t perform that action at this time.