Skip to content

Instantly share code, notes, and snippets.

@w495
w495 / rpn.erl
Created June 16, 2012 23:44 — forked from amtal/rpn.erl
Simple interpreter using a monad for a "mutable" environment.
-module(rpn).
-export([eval/1, hypotenuse/2]).
-compile({parse_transform,do}).
-spec eval([Op]) -> stack_m(ok).
%% Interpreter for a simple stack-based language.
%%
%% Uses a custom stack_m monad, which is a trivial wrapper around state_m[1].
%% It exports:
%% -spec pop() -> stack_m(A).
@w495
w495 / gen_bserver.erl
Created June 25, 2012 15:46
Шаблон блокирующего сервера-таймера.
%%% @file gen_bserver.erl
%%%
%%% Шаблон блокирующего сервера-таймера.
%%% Используется для долгих функций, которые
%%% не могут быть выполнены параллельно,
%%% но должны запускаться регулярно.
%%% События происходят по истечению
%%% GEN_BSERVER_TIMEOUT.
%%% timeout сервера и функцию обработки occupate
%%% можно менять в процессе выполнения.
@w495
w495 / smr.erl
Created July 16, 2012 13:24
Еще одна простая обобщенная реализация параллельного, но не распределенного mapreduce
%%% @file smr.erl
%%%
%%% Еще одна простая обобщенная реализация параллельного, но не распределенного
%%% mapreduce.
%%%
%%% При вызове одной из функций mapreduce создается корневой поток.
%%% Внутри корневого потока создаются рабочие потоки по одному
%%% для каждого элемента данных. Элементы данных обрабатываются
%%% функцией отображения заданной в клиентском коде.
%%% Результаты обработки пересылается корневому потоку.
@w495
w495 / psqlcp.app.src
Created July 24, 2012 00:39
Postgresql connection pool with poolboy
{application, psqlcp, [
{description, "Postgresql connection pool with poolboy"},
{vsn, "0.1"},
{applications, [kernel, stdlib]},
{modules, [psqlcp, psqlcp_worker]},
{registered, [psqlcp]},
{mod, {psqlcp, []}},
{env, [
{pools, [
{fk, [
@w495
w495 / pgConPool.erl
Created July 24, 2012 00:44
Old one-module postgresql connection pool
-compile(export_all).
-module(pgConPool).
-behaviour(gen_server).
%% --------------------------------------------------------------------
%% Include files
%% --------------------------------------------------------------------
-include("../include/common.hrl").
@w495
w495 / lager_app.erl
Created August 2, 2012 15:43
lager_app improvement
%%
%% ...
%%
start(_StartType, _StartArgs) ->
%% until lager is completely started, allow all messages to go through
lager_mochiglobal:put(loglevel, {?DEBUG, []}),
{ok, Pid} = lager_sup:start_link(),
Handlers = case application:get_env(lager, handlers) of
undefined ->
@w495
w495 / ssql.hrl
Created August 13, 2012 09:14
SSQL, обертка для генерации sql
-ifndef(__SSQL_SSQL__).
-define(__SSQL_SSQL__, true).
-define(SVAR, "$").
-define(SDOT, ".").
-define(SCOMMA, ",").
-define(SWC, " ").
-define(SLBR, "(").
-define(SRBR, ")").
@w495
w495 / handler_jsonapi_test.erl
Created August 24, 2012 10:30
handler jsonapi test
-module(handler_jsonapi_test).
-behaviour(cowboy_http_handler).
-export([init/3, handle/2, terminate/2]).
-define(AUTH_COOKIE_NAME, <<"auth_mceed0btegt1xa">>).
init(_, Req, _Opts) ->
{ok, Req, undefined}.
handle(Req, State) ->
@w495
w495 / lgps.erl
Created August 27, 2012 12:09
Генератор запоминающихся случайных последовательностей символов, например, капчи или паролей
%%
%% @file lgps.erl Генератор запоминающихся случайных
%% последовательностей символов, например, капчи или паролей
%%
-module(lgps).
-export([
new/0, %% Создает последовательность символов по умолчанию.
new/1, %% Создает последовательность символов, по описанию (см ниже).
@w495
w495 / main.erl
Created October 8, 2012 15:25
Динамические record c recbird.
%% Черная магия parse_transform http://bit.ly/recbird
%%
%% ----------------------------------------------------------------------------
%% 1> main:main().
%% record_info(fields, pers), = ['__dict__','__fields__',head,body,uid,id,func,
%% blog,name,'__extends__']
%% Pers = {pers,[{head,<<"head">>},
%% {body,<<"body">>},
%% {uid,232323},
%% {id,1},