Skip to content

Instantly share code, notes, and snippets.

View essen's full-sized avatar

Loïc Hoguin essen

View GitHub Profile
@essen
essen / Makefile
Last active August 27, 2015 09:36
Including .mk files from deps
PROJECT = ttt
DEPS = stuff
dep_stuff = git https://github.com/essen/stuff master
include erlang.mk
-include $(DEPS_DIR)/stuff/dist.mk
$(DEPS_DIR)/stuff/dist.mk: $(DEPS_DIR)/stuff ;
== .erl .core
module.erl: header.hrl behavior.erl parse_transform.erl
module.core:
ebin/$(PROJECT).app:: $(ERL_FILES) $(CORE_FILES)
erlc ... $?
== .xrl .yrl
% CI_OTP="OTP-17.4.1 OTP-17.5.3" make ci
/home/essen/ninenines/gun/kerl build git https://github.com/erlang/otp OTP-17.4.1 OTP-17.4.1
Checking Erlang/OTP git repository from https://github.com/erlang/otp...
Building Erlang/OTP OTP-17.4.1 from git, please wait...
Erlang/OTP OTP-17.4.1 from git has been successfully built
/home/essen/ninenines/gun/kerl install OTP-17.4.1 /home/essen/erlang/OTP-17.4.1
Installing Erlang/OTP git (OTP-17.4.1) in /home/essen/erlang/OTP-17.4.1...
You can activate this installation running the following command:
. /home/essen/erlang/OTP-17.4.1/activate
Later on, you can leave the installation typing:
@essen
essen / epcap.mk
Created May 21, 2015 19:08
Example Makefile generated by erlang.mk when autopatching rebar projects
ERL_CFLAGS = -fPIC -I /usr/lib/erlang/erts-6.4/include -I /usr/lib/erlang/lib/erl_interface-3.7.20/include
ERL_LDFLAGS = -L /usr/lib/erlang/lib/erl_interface-3.7.20/lib -lerl_interface -lei
EPCAP_CFLAGS= -DHAVE_PCAP_CREATE
EXE_LDFLAGS = -lpcap $(ERL_LDFLAGS)
EXE_CFLAGS = $(EPCAP_CFLAGS)
EXE_CFLAGS = $(EPCAP_CFLAGS) -DEPCAP_RLIMIT_NOFILES=1
all:: ../priv/epcap

You need a schedule, man

Overview

Have three kinds of projects/work:

  • money making (gotta buy bread)

  • first class (generally involves a large number of users and/or me having a lot of fun)

  • second class (satellite and toy projects)

@essen
essen / gist:1520860
Created December 26, 2011 10:18
goldrush API
-module(goldrush).
application:start(goldrush)
%% Start daemons under goldrush supervision tree.
start_daemon(Name, Module, Options)
stop_daemon(Name)
%% Daemons started this way must define:
start_link(Name, Options)

List of databases we may be looking to support

  • MariaDB
  • Microsoft SQL Server
  • MySQL
  • Oracle Database
  • PostgreSQL
  • SQLite
  • VoltDB
-module(map_req).
-export([init/2]).
init(#{method := <<"GET">>} = Req, State) ->
cowboy_req:reply(204, Req),
{ok, Req, State}.

A common concern with REST APIs is how do you version them? The answer is often something like put the version in the beginning of the URI path. But that’s a terrible advice. This prevents you to make small updates to your API, because you need to duplicate everything every time you increase the version.

A good way to version an API is to not do it. Instead, you can version the media types.

include erlang.mk
ifdef SKIP_DEPS
deps::
$(verbose) for dep in $(ALL_APPS_DIRS) ; do \
mkdir -p $$dep/ebin; \
done
$(verbose) for dep in $(ALL_APPS_DIRS) ; do \
$(MAKE) -C $$dep IS_APP=1 || exit $$?; \
done