Skip to content

Instantly share code, notes, and snippets.

@jason-carter
jason-carter / gf.erl
Last active May 4, 2017 12:33
FutureLearn Concurrent Programming In Erlang 3.11: The frequency server as a gen_server
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(gf).
-behaviour(gen_server).
@jason-carter
jason-carter / Results.log
Created April 28, 2017 15:17
FutureLearn Concurrent Programming In Erlang 3.4: Scaling the frequency server
Eshell V8.2 (abort with ^G)
1> c(f7).
{ok,f7}
2> f7:start_sim().
[<0.62.0>] Router starting servers...
[<0.62.0>] Router forwarding message to server server1
[<0.63.0>] Server allocating frequency to <0.55.0>
[<0.62.0>] Router forwarding message to server server2
[<0.64.0>] Server allocating frequency to <0.55.0>
[<0.62.0>] Router forwarding message to server server1
@jason-carter
jason-carter / Testing.txt
Created April 25, 2017 15:19
FutureLearn Concurrent Programming In Erlang 2.22: Upgrading the frequency server
Eshell V8.2 (abort with ^G)
1> cd("f6_original").
C:/Git/FLErlangConcurrency/f6_original
ok
2> c(f6).
{ok,f6}
3> f6:start().
true
4> f6:allocate().
{ok,10}
@jason-carter
jason-carter / f5.erl
Created April 22, 2017 16:57
FutureLearn Concurrent Programming In Erlang 2.16: Exceptions in the frequency server
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(f5).
-export([start_sim/0]).
@jason-carter
jason-carter / freqsupervisor.erl
Created April 20, 2017 21:14
FutureLearn Concurrent Programming In Erlang 2.10: Supervision in the frequency server
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(freqsupervisor).
-export([start_simulation/0]).
@jason-carter
jason-carter / f3.erl
Created April 17, 2017 16:33
FutureLearn Concurrent Programming In Erlang 2.7: Hardening the frequency server - trying it for yourself
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(f3).
-export([start_simulation/0,start_server/0,start_client/2,allocate/0,deallocate/1,stop/0]).
@jason-carter
jason-carter / frequency2.erl
Created April 11, 2017 18:40
FutureLearn Concurrent Programming In Erlang 1.15: Enhancing the frequency server
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(frequency2).
-export([start/0,allocate/0,deallocate/1,stop/0,clear/0]).
@jason-carter
jason-carter / frequency.erl
Created April 10, 2017 21:30
FutureLearn Concurrent Programming In Erlang 1.13: Modifying the frequency server
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(frequency).
-export([init/0]).
@jason-carter
jason-carter / mailbox.erl
Created April 8, 2017 17:33
FutureLearn Concurrent Programming In Erlang 1.8: Working with the mailbox
-module(mailbox).
-export([receiver/0, receiver2/0, receiver_order/0]).
% receiver mailbox test
%
% Pid = spawn(mailbox, receiver, []).
% or
% Pid = spawn(mailbox, receiver2, []).
%
% Test with:
@jason-carter
jason-carter / palin.erl
Created April 4, 2017 22:06
FutureLearn Concurrent Programming In Erlang 1.5: Trying it for yourself
-module(palin).
-export([palin/1,nopunct/1,palindrome/1]).
-export([server/1]).
% palindrome server
%
% To Call:
%
% IsPalin = spawn(palin, server, [self()]).