@proelixir

Страница 1041 из 1045
Анастасия
18.10.2018
14:50:01
это либо макрос, и тогда нет проблем разделить compile/runtime через quote (https://thepugautomatic.com/2015/10/understanding-elixir-macros/), либо она выполнится только в runtime

попробовала в iex, действительно обычная функция в атрибуте выполняется в compile time, была не права сори)

Vladimir
18.10.2018
14:57:30
:) Это особенность module attribute - их значение вычисляется строго в compile time. За счёт чего можно получить ускорение работы кода, сделав работу заранее в компайл-тайм.

Так-то конечно можно сам Elixir чуток дописать, но вдруг есть какой-то штатный способ. :)

Google
Le
18.10.2018
15:01:54
Нельзя ли сделать другую функцию без пре/пост обработчиков? Ифы на компаил и рантайм прям новый круг ада

Vladimir
18.10.2018
15:03:20
Короч там такой кейс, что pre и post обработчики генерятся автоматически другой библиотекой. :) Cобсно обложить функции такими обработчиками и есть главная задача. =)

Т.е. решение в лоб - не использовать атрибуты модуля для таких функций.

Но это ж везде править код надо, ходить по файлам... а тут бы так, вжух - и нагенерил.

Dude
18.10.2018
15:04:35
запахло духом Александреску

Vladimir
18.10.2018
15:08:16
запахло духом Александреску
дада, шаблонные параметры шаблонов. =)

ладно, поколдую ещё. :)

Dmitry
18.10.2018
15:17:02
Вообще тут правильно говорят. Стоит переписать функцию которая вызывается в аттрибутах или создать другую без пост-пре обработчиков. Если проверять внутри это функции compile-time или нет, то налицо явно нарушение soliD-принципа

Le
18.10.2018
15:17:20
@VladPotap можно что-то типа такого попробовать https://thepugautomatic.com/2015/09/testing-compile-time-exceptions-in-elixir/

Александр
18.10.2018
15:20:25
а @on_definition + Module.put_attribute не поможет?

Vladimir
18.10.2018
15:20:33
а @on_definition + Module.put_attribute не поможет?
Не, это же только для функций, afaik.

Google
Александр
18.10.2018
15:24:02
а можешь дать минимальный код того что делаете? сложно нарезать?

Vladimir
18.10.2018
15:37:10
не, не смогу. =) нарезать будет сложновато и весь код под nda.

Но это такое... из серии "хочется странного". :) Как только компилятор даёт возможность трансформировать AST, сразу начинается вот это вот)

Александр
18.10.2018
15:46:07
а модуль с помощью которого навешиваете хуки вы сами написали или готовый чей-то?

Vladimir
18.10.2018
15:59:04
как раз пример навеса пре и пост функций

Fey
18.10.2018
16:14:48
если явсё правильно понял, можно в модуль, который использует либу засадить @before_compile хук, в котором засадить флажок в дикт процесса, типа Process.put(:compile_time, true), а затем уже в пре/пост-хуках его проверять

defmodule CompileTimeTrap do defmacro __before_compile__(_env) do quote do Process.put(:compile_time, true) end end end defmodule Test do @before_compile CompileTimeTrap use ExRay, pre: :pre_fun defp pre_fun(ctx) do if Process.get(:compile_time) do # ... end end end

Buckler
18.10.2018
17:28:25
Привет, Semyon! Пожалуйста, реши капчу: Вычисли: 67+47=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Alexander
18.10.2018
18:02:53
defmodule CompileTimeTrap do defmacro __before_compile__(_env) do quote do Process.put(:compile_time, true) end end end defmodule Test do @before_compile CompileTimeTrap use ExRay, pre: :pre_fun defp pre_fun(ctx) do if Process.get(:compile_time) do # ... end end end
немного не сработает, есть 2 модуля: elixir defmodule SomeModule do use Tracer @valid_types OtherModule.valid_types() def some_func(arg) when arg in @valid_types do end end второй: defmodule OtherModule do use Tracer def valid_types(arg), do: [1,2,3] end ну и вобщем когда первый компилируется - вызывается pre_func ? Я бы предложил пушить в рантайме в env tracer_started переменную, которую тянуть уже из pre_func и запускать трейсер в зависимости от неё, а в идеале просто обернуть это в контракт и если трейсер выключен - не использовать модуль трейсера, а использовать заглушку.

в конкретном кейсе, с чем столкнулся Вова, в компайл-тайме идет обращение к ets и вызов падает, из-за этого не компилится

Serge
18.10.2018
20:05:20
Привет всем! Народ, подскажите, что лучше использовать для сбора метрик?

Alexey
18.10.2018
20:59:04
new relic, sentry?

или в стиле yandex.metrika имеется в виду?

Serge
19.10.2018
07:24:41
я имею в виду сбор системных и кастомных метрик, который можно реализовать через Graphite, InfluxDB, Datadog и тд. Мне интересно, кто чем пользуется на продакшне

abc
19.10.2018
07:26:45
Привет всем! Народ, подскажите, что лучше использовать для сбора метрик?
ELK вроде бы без вариантов если у себя. А вообще с недавних пор если под себя Clickhouse

Жду что-то подобное ELK, но вместо Elastic чтобы Clickhouse. Одна компания пилит такое решенеие для куба вроде бы. А то Elastic уж больно жирный

Serge
19.10.2018
07:30:38
я смотрю в стороно Telegraf - InfluxDB - Grafana, что-то от яндекса точно не одобрят мне

смотрел DataDog но он сложный и дорогой

abc
19.10.2018
08:03:45
есть SaaS Timber ) Сервис на Elixir

Google
Serge
19.10.2018
08:14:07
Prometheus - да, как вариант self-hosted

в конце-концов можно в Cloudwatch метрики вести, но тогда нужно дописывать библиотеку для работы с Cloudwatch

Grafana подключается к Cloudwatch без проблем тоже

всё же интересно у кого и как уже работает, думаю что есть тут люди прошедшие эти этапы

по хорошему ещё бы от Sentry отказаться и перенести всё в одно место (метрики и репорты по ошибкам)

Stanislav
19.10.2018
08:18:12
Prometheus - да, как вариант self-hosted
У него, как мне кажется, главная фича в том что он пулит метрики а не в него пушишь. И да графаной можно строить из него графики

Serge
19.10.2018
08:18:58
в прометеусе "родная" библиотека для Elixir и это +, конечно

ну и там графана не нужна особо, всё уже есть

Stanislav
19.10.2018
08:20:01
по хорошему ещё бы от Sentry отказаться и перенести всё в одно место (метрики и репорты по ошибкам)
Сентри же совсем про другое, стек трейс посмотреть о регрессии узнать

Serge
19.10.2018
08:21:21
Сентри же совсем про другое, стек трейс посмотреть о регрессии узнать
конечно, кто же спорит. но я думаю что есть сервисы объединяющие всё что нужно - метрики и отчёты

Stanislav
19.10.2018
08:23:49
Может new relic если им заплатить

Alexey
19.10.2018
08:29:17
я не знаю, на сколько это в тему, но тут еще про riemann говорили раньше

http://riemann.io/

abc
19.10.2018
08:31:21
https://habr.com/company/pixonic/blog/426875/ обсуждали?

Kioshimafx
19.10.2018
09:14:50
парни из фланта пилят

отличное решение, использую у себя в проде уже месяца 4 https://github.com/flant/loghouse, правда накатывал не через helm как они предлагают.

правда это не совсем для метрик )) это для логов, а для метрик как уже сказали выще на данный момент почти все сидят на Prometheus

Тру олдфаги на zabbix

Google
Buckler
19.10.2018
09:23:02
Привет, Corny! Пожалуйста, реши капчу: Вычисли: 7+37=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

abc
19.10.2018
09:52:04
так есть же loghouse
Вот я про него и думал. Когда недавно смотрел он был ещё сырой. Надо попробовать поставить

Le
19.10.2018
09:55:05
Из бесплатных Prometheus норм, библиотеки у него кстати не очень. Из платных датадог прям топчик

Цена у датадога $15 за хост, что не дорого

Ну это если без апм

Serge
19.10.2018
09:59:07
Из бесплатных Prometheus норм, библиотеки у него кстати не очень. Из платных датадог прям топчик
на datadog разориться можно, особенно если из aws логи переключить на него. ценник там совсем не гуманный.

Le
19.10.2018
10:01:07
а что не гуманного? $1.27 за лям лог эвентов

У него, как мне кажется, главная фича в том что он пулит метрики а не в него пушишь. И да графаной можно строить из него графики
кстати это спорная фича. архитектурно звучит класно НО: приходится коллектить метрики на стороне пиложения, что может подожрать память. так же он ходит раз в 15 секунд (по умолчанию вроде) забирате метрики, соответственно если деплой произойдет в это время, то метрики за временной буфер теряются, что не всегда приятно

бывает гораздо проще пушить в локальный агент, который уже будет отсылать в нужный сервис и не переживать

Serge
19.10.2018
10:11:46
а что не гуманного? $1.27 за лям лог эвентов
у нас выходило $4k в мес, по скромным подсчётам на DataDog

abc
19.10.2018
13:52:48
да тоже есть опыт работы с датадог. суммы получались большие. ушли с него

Anatoliy Kovalchuk
19.10.2018
16:52:31
на что ушли?

abc
19.10.2018
17:09:39
ELK

Otto fon
19.10.2018
22:21:50
ELK
Выкидывание туда логов с анализом и сам filebeat вызвали очень много боли(без logstash-a)

Думаем над graylog-ом Кто-то юзал?

Anon
20.10.2018
02:48:08
Сможет ли чат хорошо работать если писать его на Java? Можете посоветовать что-то?

Alexey
20.10.2018
04:56:16
Отличный вопрос для чата джавистов

Anon
20.10.2018
05:12:23
Alexey
20.10.2018
05:13:10
В телеграме? Полагаю, есть, вы сейчас в чате эликсирщиков

Anon
20.10.2018
05:13:50
Я понимаю. Хочу знать мнение именно эликсирщиков

Google
Alexey
20.10.2018
05:14:36
Конечно можно, почему нет

И работать будет хорошо)

Anon
20.10.2018
05:17:42
Вот вопрос в этом ) собираемся чат писать, все разработчики говорят что владеют только Джавой, никто не знаком с Earlang/Elixir. А я вот переживаю на счёт скорости, эффективности и так далее

Думал услышать ваше мнение

Alexey
20.10.2018
05:18:49
А какая нагрузка ожидается?

Anon
20.10.2018
05:19:09
Имеете ввиду сколько пользователей ?

Страница 1041 из 1045