← All posts tagged Erlang

datacompboy

EGTM в продакшена кто-нибудь уже щупал?
Ищу замену мнезии, чтоб легко мигрировать — то есть не менять логику работы транзакционных функций, поменять только обертку.
По сути, требований не много: хранить в памяти реалтайм объекты и немного логов.
Но желательно грузить в память не все сразу, а то вава — одна таблица не может быть disk only, но и в память лезет уже плохо — потому и хочу уйти от мнезии...

datacompboy

А чего оно только одно ядро нагружает, простите? Я могу взять 48ядерную машину, а оно всё равно кушает только 100% и только одного ядра. Это (вырезано цензурой) как называется?

datacompboy

Нихрена не понимаю, чо за фигня? Первое basic.deliver я ловлю, в ответ ack отсылаю, а дальше начинается лажа —
=INFO REPORT==== 8-Aug-2014::12:30:42 ===
Dropping frame {content_body,<<"{\"function\": \"lines.list\"}">>} for invalid or closed channel number 1

на все последующие сообщения O_O

datacompboy

Так, что за фигня? Есть большая куча рекордов, мне надо их однозначно в JSON и обратно конвертить. И я ничего найти не могу O_O
github.com — требует чтоб имя рекорда было равно названию модуля (у меня 300 рекордов, я что, 300 модулей генерить буду?)
github.com — требует вручную создать функцию new(<<имярекорда>>); да вы упрлс
github.com — даёт только макрос, посему не может обрабатывать вложенные записи
Кто знает, чем по-человечески можно решить проблмеу?

datacompboy

Ну привет. Только разрулил bundle'вские конфликты, теперь rebar выкаблучивается:
ERROR: Conflicting dependencies for ibrowse: [{"From: oauth",
{".*",
{git,
"git://github.com/flycodepl/ibrowse.git",
{branch,"master"}}}},
{"From: oortle_client",
{".*",
{git,
"http://github.com/cmullaparthi/ibrowse.git",
{branch,"master"}}}},
{"From: erltweet_stream",
{".*",
{git,
"https://github.com/cmullaparthi/ibrowse.git",
{branch,"master"}}}},
{"From: twitter-follower",
{".*",
{git,
"https://github.com/flycodepl/ibrowse.git",
{branch,"master"}}}}]

datacompboy

Местами let it fail ломает всё-таки ожидаемое поведение "после рестарта настройки сохранились". Ну как ломает. Ничерта ж не сохраняется. И начинает в лучшем случае сыпаться как домино, в худшем — просто всё не работает, непонятно почему.

datacompboy

Вопрос красоты кода.
Есть код, который одновременно на ура работает и через gen_tcp и через ssl.
Соответственно, приходится хранить модуль, через который общаться.
Вот только для gen_tcp надо вызывать inets:setopts а для ssl надо ssl:setopts.
Короче, куча оберток для нужных функций родилась, чтоб вместо gen_tcp:send(Socket, Data) теперь do_send(Module, Socket, Data).
И я думаю, может, начать хранить {Module,Socket} тупл, вместо отдельно в #state{module=Module,socket=Socket} ?
Или вообще обнаглеть и положиться на структуру Socket'а? Делать is_port() — gen_tcp/inets, is_tuple — ssl:XXX ?

datacompboy

Вот что мне не нравится в дефолтном логгере — это форматирование в ширину окна.
Приведу пример лога:
52,
49,
55,
98,
45,
52,
97,
53,
102,
45,
52,
100,
49,
49,
45,
56,
48,
99,
50,
45,
100,
99,
101,
и вот такого — 50к строк. каждые 10 секунд. Например :D