Skip to content

Instantly share code, notes, and snippets.

Roberto Aloi robertoaloi

Block or report user

Report or block robertoaloi

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
View atom_table.erl
count() ->
Info = erlang:system_info(info),
Chunks = binary:split(Info, <<"=">>, [global]),
[TabInfo] = [X || <<"index_table:atom_tab", X/binary>> <- Chunks],
Lines = binary:split(TabInfo, <<"\n">>, [global]),
Chunks2 = [binary:split(L, <<": ">>) || L <- Lines, L =/= <<>>],
View Dockerfile
FROM centos:centos6
RUN yum update -y && yum install -y


Example of OTP deadlock via the application controller.

In OTP, the application environment is handled via a ETS table, which is accessed via the application_controller process. Whilst reading an environment variable is implemented as a mere lookup operation, writes are serialized through the application controller. In other words, it is not possible to set an environment variable from a terminate/1 callback in a gen_server which traps exits,

robertoaloi /
Created Feb 8, 2014
Kill an Erlang process by node name
#!/usr/bin/env bash
# Kill an Erlang process by node name
# e.g.: kill-erlang-node kred
# Check usage
if [ -z "$1" ]; then
echo "Usage: `basename $0` NODE_NAME"
exit 1
robertoaloi /
Last active Aug 29, 2015
[Erlang] - ssh and ssh_sftp bugs and misleading messages

Misleading error message on ssh_sftp:start_channel/1 in case user does not have a shell

When starting a SFTP channel towards a system where user does not have a shell (i.e. it has /bin/false or equilvalent assigned in the /etc/passwd a misleading error message is returned to the user:

1> test:go(). 
** exception exit: {normal,{gen_server,call,
robertoaloi / ekill
Created Nov 26, 2013
Kill an Erlang process by node name
View ekill
# Kill an Erlang process by node name
# e.g.: ekill my_node
# Check usage
if [ -z "$1" ]; then
echo "Usage: `basename $0` NODE_NAME"
exit 1
robertoaloi /
Last active Dec 28, 2015
Demo session used for "Introduction to Erlang" talks and courses.

Start an instance of the Erlang run-time system

$ erl

Show information about processes

> i().

Spawn a new process which sleeps for 10 seconds

robertoaloi / unescriptize
Created Aug 27, 2013
Unescriptize Erlang files
View unescriptize
tail -n +2 $1 > $1.tmp
unzip -d $1.unescriptized $1.tmp
rm $1.tmp
View this_is_fun.erl
have_fun() ->
table = ets:new(table, [named_table]),
F = fun(X) -> X + 1 end,
ets:insert(table, {function, F}),
register(funny, spawn(?MODULE, loop, [])).
View debugging-notes
(<0.80.0>) call ct_logs:tc_print(info,50,"...")
(<0.80.0>) call ct_util:get_testdata({verbosity,info})
(<0.80.0>) call ct_util:call({get_testdata,{verbosity,info}})
(<0.80.0>) call ct_util:call({get_testdata,{verbosity,info}},infinity)
(<0.80.0>) call erlang:whereis(ct_util_server)
You can’t perform that action at this time.