понедельник, 30 сентября 2013 г.

Erlang. Gproc просмотреть все значения

Как посмотреть что хранится в gproc, не зная ключей:
Просмотреть все локальные записи:
gproc:select({global,all},[{'_',[],['$$']}]).       
[[{p,g,foo},<0 .37.0="">,bar]] 

Просмотреть все глобальные записи:
gproc:select({local,all},[{'_',[],['$$']}]). 
[[{p,l,foo},<0 .37.0="">,bar]] 

Просмотреть все записи:
gproc:select({all,all},[{'_',[],['$$']}]).   
[[{p,g,foo},<0 .37.0="">,bar],[{p,l,foo},<0 .37.0="">,bar]] 

понедельник, 15 июля 2013 г.

Erlang. Ротация логов для aloger. Log rotation for alogger

Пример конфигурации приложения на Erlang c alogger
Нужно разбивать логи по размеру 1 гигабайт, хранить 10 файлов.

my-app.config:
...
,{alog, [
     {enabled_loggers, [alog_tty, alog_disk_log]},
     {install_error_logger_handler, true},
     {flows, [
              {{mod, ['_']}, {'=<', debug}, [alog_tty, alog_disk_log]}
             ]},
     {alog_tty, []},
     {alog_disk_log, [{name, alog_disk_log},
                        {file, "filename.log"},
                        {format, external},
                        {type, wrap}, 
                        {size, {1073741824, 10}}
                      ]}
]}

...

{type, wrap} - включает ротацию логов
{size, {FileSize, FileCount}} - тут понятно: размер и количество файлов

пятница, 5 апреля 2013 г.

Документация по Ejabberd

В этом посте, я поделюсь ссылками на документацию по Ejabberd, нужными спецификациями по протоколу XMPP и ссылками на всевозможные примеры реализации логики (список будет расти).  Основная цель - собрать вместе разрозненные данные по Ejabberd.

Документация:
Список событий и хуков: Events and hooks
IQ обработчики: IQ handlers
Основные модули: Core modules

Спецификации:
XMPP спецификация переписки и получения статусов пользователей: Instant Messaging and Presence (RFC3921)

Разное:
Пишем модуль для Ejabberd: http://habrahabr.ru/post/130396/

вторник, 26 февраля 2013 г.

Js. Как разбить длинную строку на куски заданного размера

Задача: есть длинная строка, ее нужно разбить на куски по N символов.

Решение:
str.match(/.{1,N}/g);

Пример 1:
str = 'qwertyuiopasdfghjklzxc';
str.match(/.{1,10}/g);
Результат: ["qwertyuiop", "asdfghjklz", "xc"]

Пример 2:
str = 'qwertyuiopasdfghjklzxc';
str = '1234567890';
n = 5;
re = new RegExp(".{1,"+n+"}", "g");
str.match(re);
Результат: ["12345", "67890"]

четверг, 24 января 2013 г.

Ubuntu. Убить процессы по имени.

Для того чтобы убить все процессы по части имени нужно сделать так:
ps aux | grep -e 'somename' | grep -v grep | awk '{print $2}' | xargs -i kill {}