@proelixir

Страница 961 из 1045
Dmitry
22.05.2018
13:00:55
Мы используем conform

Там для изменения конфигурации ничего не нужно перекомпилировать

Dmitry
22.05.2018
15:02:07
На сколько быстро работает process alive?

Дешевле каждый раз проверять это, или отлавливать исключения при пихании в умерший пид?

Google
Dmitry
22.05.2018
15:04:29
Или это вообще несущественно

Anatoliy Kovalchuk
22.05.2018
15:04:57
я думаю что не существенно, но с Process.alive? код будет более читаемый

Dmitry
22.05.2018
15:05:28
А там нету этих фишек, что если мэилбокс заполнен - то process alive ждет?

Как с обзервером и стейтом

Anatoliy Kovalchuk
22.05.2018
15:13:26
сам метод в эрланге https://github.com/erlang/otp/blob/759af43a8213f6c0b39a76ae062a89b726cd4c25/erts/emulator/test/nif_SUITE_data/nif_SUITE.c#L2361

и enif_is_process_alive https://github.com/erlang/otp/blob/759af43a8213f6c0b39a76ae062a89b726cd4c25/erts/emulator/beam/erl_nif.c#L1866

вроде ничего страшного не происходит

Dmitry
22.05.2018
15:16:59
Может так случится, что проверил что пид жив, пихнул в него сообщение, а он к тому времени умер уже все равно.

is_process_alive - выглядит как костыль для оптимизации в данном случае.

Yuri
23.05.2018
08:58:04
как в distillery одной командой сделать 2 релиза

Dmitry
23.05.2018
09:00:37
Зачем?

Yuri
23.05.2018
09:01:31
другой вопрос

distillery должен быть в сборке?

Google
Yuri
23.05.2018
09:01:55
чтобы потом использовать hot upgrade?

Dmitry
23.05.2018
09:09:00
Нет

Есть здесь кто-нибудь, кто скучает по типизации в Elixir-е?

Anatoliy Kovalchuk
23.05.2018
14:52:16
было бы не плохо в некоторых случаях

Alexander
23.05.2018
14:52:23
я скучаю по типизации везде

вот только сегодня занимался grep-oriented refactoring, потратил пару часов на то, на что в хаскеле ушла бы одна минута

(рефакторил ерланг, но одна фигня)

Dmitry
23.05.2018
15:01:13
https://github.com/skirino/croma Есть интересная библиотека

https://github.com/skirino/croma#cromadefun--typespec-oriented-function-definition

Dmitry
23.05.2018
15:01:49
Да вроде диализер норм торабатывает

Dmitry
23.05.2018
15:03:09
Которая добавляет сахара typespec-ам и добавляет, что очень удобно еще runtime проверку на входящие, выходящие данные из функции, что удобно вовремя разработки. Может, кому-то понравится ?

Alex
23.05.2018
15:11:05
Alexey
23.05.2018
15:19:01
https://github.com/expede/algae

Alex
23.05.2018
15:21:33
а кто-нибудь эрланговым diameter в эликсире пользовался?

Yury
23.05.2018
15:31:03
Я пробовал немного diameter+elixir

даже вот такую штуку делал чтобы словари собирать https://github.com/xerions/mix_dia_compiler но это было два года назад

Alex
23.05.2018
15:44:29
вот в нее я и смотрю, да

она ничего не делает

Yury
23.05.2018
15:46:19
https://github.com/surik/elixir_diameter_example

Google
Yury
23.05.2018
15:46:48
2 года назад было может и поломалось что

Artem
23.05.2018
16:29:50
готовят)) https://pragprog.com/book/phoenix14/programming-phoenix-1-4

Yuri
24.05.2018
11:30:37
кто может подсказать как писать кастомные таски в рут директории в umbrella проекте

Никита
24.05.2018
11:34:02
также как и в обычном

Yuri
24.05.2018
12:09:19
** (Mix) The task "deploy" could not be found

def project do [ app: :app, apps_path: "apps", elixir: "~> 1.6", elixirc_paths: ["lib"], start_permanent: Mix.env() == :prod, aliases: aliases(), deps: deps() ] end

у меня не видит таски которые лежат в lib/mix/tasks

если определен ключ :apps_path

Никита
24.05.2018
12:19:13
а ниже чо в алиасах

"test.reset": &reset_test/1 ] end defp reset_test(_) do Mix.Tasks.Cmd.run([ "MIX_ENV=test mix do ecto.drop, ecto.create, ecto.migrate;" ]) end

у нас вот так - последний алиас и функция

Yuri
24.05.2018
12:36:02
ну а как свою таску новую создать

общую

Anatoliy Kovalchuk
24.05.2018
12:36:15
а как создаешь,

пример ./lib/mix/tasks/ssl.ex defmodule Mix.Tasks.Ssl do use Mix.Task @doc """ Create SSL certificates before starting Phoenix server. """ def run(domain) do IO.puts "running for #{domain} domain" end end

mix ssl domain - запускается так

Yuri
24.05.2018
12:44:40
если я создаю в папке lib в рутовом mix проекте он не видит файлы с тасками, если убрать :apps_path видит, но тогда не видит приложения

Anatoliy Kovalchuk
24.05.2018
12:48:02
тогда придется выбрать umbrella приложение или нет

Yuri
24.05.2018
12:48:26
я придумал, сделал папку с тасками в папке apps

так видит

Google
Dmitry
24.05.2018
17:31:22
Так, ребята. Все осилили статью про конфиги?

Артем
24.05.2018
17:31:41
я нет

но хотел бы

Dmitry
24.05.2018
17:31:47
Что насчёт запилить таки библиотеку для нормальной конфигурации всего и вся

Что-то скрученное между viper и conform

И попробовать пропихнуть в эликсир

Потому что конфиг по идее запускается раньше чем либы компилируются и надо подменять собой Mix config

Dmitry
24.05.2018
17:35:11
Зачем до компиляции?

Vladimir
24.05.2018
17:35:26
Забавно, но я для эрланга что-то похожее пишу, в процессе работы над другим проектом. Оно как-то само немного похоже на то, что в статье, получилось. :)

Но статья занятная, учту.

Dmitry
24.05.2018
17:39:27
Надо все кейсы учитывать

Некоторые конфиги идут в ход во время компиляции

Dmitry
24.05.2018
17:40:42
Их можно оставить mix config-гурации.

Администраторы получают обычно(точнее всегда, не видел пока исключений) уже скомпилированный продукт и там нужна конфигурация.

Которую могут не только эликсироводы читать и которая нужно собственно в runtime.

Ни viper, ни conform не решают задачу конфигурации до компиляции, потому что не для этого они применяются.

Marsel
24.05.2018
17:52:05
А что за статья?

Эта?

@artem_pankov @Virviil а вот и решения для elixir по env http://www.theerlangelist.com/article/rethinking_app_env

Yuri
24.05.2018
18:05:26
мне нравится идея шифровать файл конфига с ключами как в рельсе последней, чтобы можно было в гите ключики хранить

Google
Yury
24.05.2018
18:50:57
а кроме conform ничего больше нет в elixir?

Артем
24.05.2018
19:07:36
посоны

странный вопрос

допустим, я использую jwt токены и по некоторым соображениям храню их в базе с https://github.com/ueberauth/guardian_db/blob/master/lib/guardian/db/token.ex

какой оптимальный способ вы бы выбрали для добавления к этой таблице ещё нескольких полей?

Никита
24.05.2018
19:08:49
ну вот морочился с похожей историей

у меня оптимальный вариант был - создать другую таблицу

и связать ее с этой гардиандбшной

ибо поправить схему гардиан_дб тогда я чо та так и ниасилил)

Артем
24.05.2018
19:10:12
геморно, не? тут праймари кей jti+aud надо следить за вставкой в эту таблицу, за её очисткой

Никита
24.05.2018
19:10:52
геморойно было схему ее править, ибо она нестандартная и глубоко запрятана

пусть работает лучше как работает

я сделал другую и внешний ключ набросил на токен

если токен удаляется то и моя запись удаляется из моей таблицы

просто при создании нового токена в колбэках гардиана создавай запись в своей таблице

а внешний ключ поможет тебе вовремя из твоей таблицы данные удалять

Артем
24.05.2018
19:12:05
да я понимаю. наверно это самый "правильный вариант"

чистить-то можно и на хуке ревока, в принципе, надеюсь, свипер его вызывает =)

Dmitry
24.05.2018
19:12:51
Не надо лезть во внутренности гуардиана, потом обновляться замучаешься

Артем
24.05.2018
19:14:01
def purge_expired_tokens do timestamp = Guardian.timestamp() query_schema() |> where([token], token.exp < ^timestamp) |> Guardian.DB.repo().delete_all(prefix: prefix()) end

Никита
24.05.2018
19:14:03
поддерживаю

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