Size: a a a

2019 November 11

СИ

Сергей Иванов in ErlangRus
Evgeny M.
ну да, или так. Можно кстати сгенерировать модуль не через erl_syntax а просто обычный erl файл, и собрать его модулем compile
такой вопрос - есть ли возможность развернуть макрос в binary или list без объявления другого макроса ?
ну типа Value  = <<??MACRO>>
источник

EM

Evgeny M. in ErlangRus
Сергей Иванов
такой вопрос - есть ли возможность развернуть макрос в binary или list без объявления другого макроса ?
ну типа Value  = <<??MACRO>>
вот такое работает
-module(test).
-define(TEST, "abcdef").
-export([test/0]).

test() -> <<?TEST>>.
источник

СИ

Сергей Иванов in ErlangRus
Evgeny M.
вот такое работает
-module(test).
-define(TEST, "abcdef").
-export([test/0]).

test() -> <<?TEST>>.
не, тогда я не смогу ?TEST использовать как атом. у меня не получилось в общем. даже predefined у них MODULE, MODULE_STRING
пришлось тоже делать
-define(MACRO, macro).
-define(MACRO_STRING, ??MACRO).
источник

СИ

Сергей Иванов in ErlangRus
Evgeny M.
вот такое работает
-module(test).
-define(TEST, "abcdef").
-export([test/0]).

test() -> <<?TEST>>.
прикольная штука parse_tranform вообще - если прозрачно что-то менять. но незнаю насколько это эффективно для большого числа файлов делать. + это имеет смысл если нельзя - ненужно исходную кодовую базу менять
источник

EM

Evgeny M. in ErlangRus
parse_transform работает в момент компиляции, так что это эффективно. Неэффективно потом разбираться  в ошибках в дампах, если сложный трансформ
источник

TH

Taras Halturin in ErlangRus
Evgeny M.
причем бывает что настрйока это не просто целое число, а какой-нибудь длинный список. добавляется нагрузка на копирование между процессами
это конечно контекстно зависимо, но я бы в таком случае пушил конфиг до супервизора, который продьюсит воркеры, коим бы на входе давал нужные данные из конфига
источник

ML

Maksim Lapshin in ErlangRus
Taras Halturin
это конечно контекстно зависимо, но я бы в таком случае пушил конфиг до супервизора, который продьюсит воркеры, коим бы на входе давал нужные данные из конфига
Мы как-то раз долго и с интересом отлаживали производительность флюссоника у кастомера на сервере.

Потом с трудом обнаружили, что в ковбое был такой конфиг под пол-мегабайта и он копировался в каждого воркера.

Больше так не делаем.
источник

PK

Petr Kozorezov in ErlangRus
Maksim Lapshin
Мы как-то раз долго и с интересом отлаживали производительность флюссоника у кастомера на сервере.

Потом с трудом обнаружили, что в ковбое был такой конфиг под пол-мегабайта и он копировался в каждого воркера.

Больше так не делаем.
ну это не самый частый случай, схема-то в общем случае удобная
источник

ML

Maksim Lapshin in ErlangRus
Этот подход опасен на маложивущих воркерах и не помогает долгоживущим всасывать апдейт конфига на лету
источник

TH

Taras Halturin in ErlangRus
потому и говорю, контекстно зависимо то, что предложил. полагаю случай с ковбоем - это вырожденый случай
источник

СИ

Сергей Иванов in ErlangRus
Всегда найдется человек который объяснит что ваш случай - выродок
источник

ML

Maksim Lapshin in ErlangRus
Эрланг вообще весь про вырожденные специфичные случаи :)
источник

TH

Taras Halturin in ErlangRus
если учесть, что ковбой - весьма популярный веб-движок и что его пилят явно не дураки, то кейс про полметра конфига в каждый воркер - что-то не совсем обычное. ибо это весьма трудоемко быть быстрым и одновременно продьюсить воркеры с копипастой в полметра.
источник

TH

Taras Halturin in ErlangRus
я не знаю деталей юзкейса, могу только догадываться )
источник

СИ

Сергей Иванов in ErlangRus
Evgeny M.
parse_transform работает в момент компиляции, так что это эффективно. Неэффективно потом разбираться  в ошибках в дампах, если сложный трансформ
Ну а почему бы тогда вместо генерации модуля конфига не делать parse transform. Чуть сложнее но зато zero cost )
источник

ML

Maksim Lapshin in ErlangRus
Taras Halturin
если учесть, что ковбой - весьма популярный веб-движок и что его пилят явно не дураки, то кейс про полметра конфига в каждый воркер - что-то не совсем обычное. ибо это весьма трудоемко быть быстрым и одновременно продьюсить воркеры с копипастой в полметра.
Вот у нас и была идея: сгенерить конфиг для ковбоевских воркеров, чтобы они после старта никуда больше не ходили.

Не сработало
источник

СИ

Сергей Иванов in ErlangRus
Taras Halturin
если учесть, что ковбой - весьма популярный веб-движок и что его пилят явно не дураки, то кейс про полметра конфига в каждый воркер - что-то не совсем обычное. ибо это весьма трудоемко быть быстрым и одновременно продьюсить воркеры с копипастой в полметра.
Он не популярный а единственный может?
источник

TH

Taras Halturin in ErlangRus
мне кажется именно модель с хранением данных на уровне супервизора для порождаемых воркеров, должна быть весьма эффективна для очень частых и небольших запросах. просто твой юзкейс с большим конфигом не вписывается в такой дизайн.
источник

TH

Taras Halturin in ErlangRus
Сергей Иванов
Он не популярный а единственный может?
mochiweb?
источник

TH

Taras Halturin in ErlangRus
ах да, yaws же еще. не знаю, жив ли он
источник