
Anatoliy Kovalchuk
15.12.2017
15:02:56
http://i.kr00lix.com/XWrtw2Ij.png

Evgeny
15.12.2017
15:02:57
скачал HTTPotion
ха
короче в жопу этот яд

Google

Evgeny
15.12.2017
15:04:02
HTTPotion работает хоть со слешем, хоть без него

Alexey
15.12.2017
15:04:04
Норм библиотека, проблема была с hackney

Evgeny
15.12.2017
15:04:39
ага, и чем же hakney лучше ibrowse?
и она была?
пофиксили?
короче, в mix.lock понижал весию hackney аж до 1.8.6 (последняя 1.10.1)
нихера не работает, с той же ошибкой
а нужно ли добавлять :httpoison в :extra_applications:?
В доках написано:
Add :httpoison to your applications list if your Elixir version is 1.3 or lower:
И вообще, чем вот это
def application do
[
extra_applications: [:logger, :httpoison]
]
end
отличается от
def application do
[
applications: [:logger, :httpoison]
]
end
?

Alexey
15.12.2017
15:35:22
applications явно указывает список приложений, по умолчанию он генерируется из зависимостей
extra_applications указывает список приложений которые необходимы до старта

Evgeny
15.12.2017
15:36:54
то есть для эликсира 1.4 можно выкинуть HTTPoison? Или даже нужно выкинуть?

Google

Alexey
15.12.2017
15:38:35
для Elixir ~> 1.4 можно не указывать applications вообще, они будут браться из зависимостей

Evgeny
15.12.2017
15:38:46
и если логгер есть в зависимостях, то и его надо выкинуть из extra_applications?
ок, спасибо ща попробую все выкинуть, включая логгер

Alexey
15.12.2017
15:40:13
Если логгер нужен до старта основного приложения, то его надо оставить в extra_applications.

Evgeny
15.12.2017
15:40:48
а зачем он может там понадобиться?
вот феникс еще геттекст вставляет по умолчанию в extra_applications
это для того чтобы всякие mix gettext.extract могли работать?
точнее не феникс, а микс при генерации проекта
логгер он же вставляет, лучше оставлю как есть

Alexey
15.12.2017
15:47:42


Никита
15.12.2017
17:35:23
Жесть. mix.gen.json Генерирует, в числе прочего, fallback_controller который должен перехватывать ошибки и выдвать соответсвующие view - новая фишка феникса 1.3 от которой все балдеют)) только вот после генератора этот фолбэк контроллер не работает, ибо если, например, пользователь в базе не найден, выбрасывается исключение.
Вот тут https://github.com/phoenixframework/phoenix/issues/2379 chrismccord поясняет - "ну мы вам типа показали, что такая возможность есть, чтобы она работала надо самим пилить".
Но хоть фолбэк контрллер не работает, при запросе возвращается статус 404. А где же он устанавливается? Еще через 20 минут гугления ответ находится. Они там в недрах сделали протокол Plug.Extension который трансформирует исключения в статус коды ответа. Ну и подписали - можете сами расширять, если хотите.
Только про этот Plug.Extension не написано ни на офсайте, в коде сгенерированного приложения тоже молчок. Об этом написано на гитхабе в одном из md файлов, е-мое.
Все больше и больше прусь от Феникса)))


Alexey
15.12.2017
18:11:41
Жесть. mix.gen.json Генерирует, в числе прочего, fallback_controller который должен перехватывать ошибки и выдвать соответсвующие view - новая фишка феникса 1.3 от которой все балдеют)) только вот после генератора этот фолбэк контроллер не работает, ибо если, например, пользователь в базе не найден, выбрасывается исключение.
Вот тут https://github.com/phoenixframework/phoenix/issues/2379 chrismccord поясняет - "ну мы вам типа показали, что такая возможность есть, чтобы она работала надо самим пилить".
Но хоть фолбэк контрллер не работает, при запросе возвращается статус 404. А где же он устанавливается? Еще через 20 минут гугления ответ находится. Они там в недрах сделали протокол Plug.Extension который трансформирует исключения в статус коды ответа. Ну и подписали - можете сами расширять, если хотите.
Только про этот Plug.Extension не написано ни на офсайте, в коде сгенерированного приложения тоже молчок. Об этом написано на гитхабе в одном из md файлов, е-мое.
Все больше и больше прусь от Феникса)))
Так можно не выкидывать исключение и обрабатывать nil в fallback controller


Никита
15.12.2017
18:15:58
Можно и так и так) Только вот phx.gen.json генерирует функции типа Repo.get! по дефолту. Они, видать, сделали имплементацию эксепшн протокола, им понравилось, и генератор jsonа поправили, чтобы исключения валились.
Я прост к тому, что очень до хрена неочевидного. Спрятанного где-то в дебрях.
Они ж под исключения запилили и тесты в том числе) В итоге мне нужно делать свою функцию get_user, которая не будет валить исключения, чтобы ее обрабатывать фолбэк контроллером. И писать под нее тесты. Получится что половина запилено под исключения, половина под фолбэки. Единообразия не будет)
Кроме того, генераторы ж юзаются новичками, типа меня, чтобы поглядеть - а как там все это работает и где-то скопировать подходы. А здесь они подход не продемонстрировали.

Alexey
15.12.2017
18:25:44
Генераторы можно кастомизировать
Но подход с исключениями по дефолту не очень хорошо конечно

Никита
15.12.2017
18:31:04
Ну тут получается, они такие "Мы запилили классную шутку - Фолбэк контроллер, чтобы перехватывать ошибки в одном месте, а не размазывать по всему коду. Вот вам генератор, он его сгенерирует, чтолько работать эта штука не будет, потому что мы в дебрях фреймворка имплементрировали Плаг.Экстеншн протокол, и он исключения превращает в статус коды, вот он у нас ошибки и ловит. Но вы пилите фолбэк контроллер самостоятельно, ведь это так круто ловить ошибки в одном месте")))
Ну и рассказали они обо всем этом в трех разных местах, ко всему прочему)
О чо нашел) Они такую схему в дев режиме только врубили, чтобы отладку упростить. В config/dev.exs можно выключить. И тогда фолбэк контроллер заработает)

Nikolay
15.12.2017
18:45:07
чет странно, у меня фоллбек работал сразу и без шаманства, и согласен, что для стандартизации API под ошибки очень удобная штука
ну лично мне зашло)

Никита
15.12.2017
18:46:23
Да классная штука. Только они ее в дев режиме отключили, чтобы была классная отладочная страница. NOTE: In the development environment, this behavior will be overridden. Instead, we will get a really great debugging page. In order to see the ErrorView in action, we’ll need to set debug_errors: to false in config/dev.exs. The server must be restarted for the changes to become effective.

Google

Nikolay
15.12.2017
18:47:37
аа, вон оно что…ну да, спорное решение
хотя я генерил приложуху в api моде и, кажется, оно из коробки встало включено и в дев
но я могу ошибаться, пол года уже прошло)

Никита
15.12.2017
18:49:20
Только я теперь совсем запутался)) Они и в тестах ловят исключения. Только вот когда делаю debug_errors: to false - и начинает работать фолбэк контроллер - тесты все равно проходят. чо та вынос мозга какой-то
в апи моде это как? я генерил -no-html —no-brunch

Nikolay
15.12.2017
18:53:41
у меня debug_errors: true стоит в dev.exs, а в остальных энвах не оверрайдится эта настройка

Никита
15.12.2017
18:57:00
ну так ты делаешь Repo.get или Repo.get!

Nikolay
15.12.2017
19:03:49
у меня нет такий кейсов, api мобильный, везде коллекциями выборки(
но я везде без бэнга юзаю

Никита
15.12.2017
19:04:46
А генератор везде бэнги понаставил)

Nikolay
15.12.2017
19:04:53
хотя эти кейсы отсутствия чего-то проверяются бизнеслогикой и тут ручная проверка получается

Nikolay
15.12.2017
19:05:21

Никита
15.12.2017
19:06:14
Ну дык я в обучающих целях)))) Без генераторов я бы совсем другие вопросы тут задавал))))

Den
15.12.2017
19:38:35
кто-то использует функторы, монады в elixir?
это ведь структуры со стэйтом, которые еще мапаются, чейнятся.. с помощью мапы %{} не сэмулировать никак

Alex
15.12.2017
19:59:04
Кстати, про монады
Никто не пробовал написать свой do как в хаскеле?

Ilja
15.12.2017
20:05:15
Там есть with. Которая работает примерно как for в Скале с option-ом, try-ем, future, который в Эликсире не нужен.
Насчёт всяких фри-монад не думал, честно говоря.

Google

Evgeny
16.12.2017
08:06:56
А монады нужны?
Я тут столкнулся с такой ошибкой
a binary field without size is only allowed at the end of a binary pattern and never allowed in binary generators
и у меня возник вопрос: что такое binary generators?

Alexey
16.12.2017
11:43:05

Admin
ERROR: S client not available

Evgeny
16.12.2017
11:44:05
понятно, спасибо

Aldar
17.12.2017
10:15:08
Что нынче модно для автоматической проверки code style в эликсире?
Слышал что в 1.6 будет автоформаттер

Alexey
17.12.2017
10:15:45
credo

Le
17.12.2017
10:15:50
Кредо + автоформаттер

Slava
17.12.2017
10:55:48
А кому-нибудь приходилось узкие по производительности места затыкать портами? Если да, то на чем было написано приложение, с которым общался эликсир/эрланг? Как разворачивали приложение, бинарник просто лежал в проекте с эликсировским приложением или отдельный сервис совсем?

ichi4Ø4
17.12.2017
11:22:35
Не понимаю роль view в фениксе. Во всех остальных MVC, что я использовал, вью и темплейт были одним и тем же и контроллер рендерил темплейт (== вью). А в фениксе это явно выделено в отдельный слой с непонятными задачами. Где можно почитать об этом?

Alexey
17.12.2017
11:25:00
кстати да, после рельсы непонятно что с ними делать, презентеры приходилось использовать оооочень редко

Le
17.12.2017
11:25:03
если почитать, то первые на ум из руби мира приходят hanami и trailblazer
но вряд ли это даст лучшее понимание
дока феникса по view вроде достаточно подробна для понимания

Alexey
17.12.2017
11:33:36
не, абсолютно ясно что такое презентеры и зачем они нужны, но они не нужны при каждом запросе, как например, controller, model и template
то есть они насильно добавили еще один слой абстракции, тогда как в рельсе при необходимости это все было бы в папке app/presenters или что-то в этом роде

Le
17.12.2017
11:41:13
на сколько я в курсе, не заставляют насильно их использовать.
подключи нужные модули и рендерь напрямую. то что поумолчанию, это просто общая конвенция.
Если у тебя json api, то вообще можешь имплиментировать свои протоколы и пойзоном декодировать сразу в json и отдавать.

Google

Ilja
17.12.2017
14:12:30
А монады нужны?
Полезная вещь. Если нужно отделить конструирование вычислений от их выполнения. Или логику от эффектов. Тогда чистую часть можно удобно протестировать, например. Чаще всего нужны Option, Try и Future, но этот кейс, как я говорил, закрывает with. Остальные нужны реже, но могут пригодится.
В продолжение темы линтеров: существует ли в экосистеме Эликсира такой инструмент, которому можно сказать, какие модули от каких модулей могут зависеть (с wildcard-ами), для каких это нежелательно, и чтобы он проверял выполнение этих условий?
И использовать с MIX-ом на этапе сборки.

ichi4Ø4
17.12.2017
14:35:35
Почему
elixir --sname xxx --detached -S mix phx.server съедает 25% CPU, а
elixir --sname xxx -S mix phx.server - <1%?
да, еще память утекает

Alexey
17.12.2017
15:39:14

Sergey
17.12.2017
18:19:20
https://youtu.be/Uzu53nnv1cw

Alexey
17.12.2017
18:20:13
о. там я в вопросах )
книжку выиграл
в этот раз быстро выложили. классно. поугорайте, кстати, на CARDANO ))) это был последний доклад на конфе
еще был классный доклад про кложу
там автор набрасывал на хаскель. ожидая холивар. но в ответ тишина. пришлось мне встать и сказать, что у нас в эликсире всё так же хорошо, как в кложе )
https://www.youtube.com/watch?v=b-Eq4YV4uwc

Sergey
17.12.2017
18:25:41
Про кложу, просто офигителен . Он там набрасывает на типы в общем и говорит что можно мыслить по другому

abc
17.12.2017
18:27:54
иммутабельность и динамика или просто динамика ?

Alexey
17.12.2017
18:29:32
я еще спросил, мол а че кложу на ерланг машину не хотят