@proelixir

Страница 829 из 1045
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 могли работать?

точнее не феникс, а микс при генерации проекта логгер он же вставляет, лучше оставлю как есть

Никита
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
А монады нужны?

Никто не пробовал написать свой do как в хаскеле?
Я полагал, что оно уже встроено в эликсир. Разделяем выражения точкой с запятой или переводами строки и оно само будет выполняться друг за другом. Нет?

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

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%?

да, еще память утекает

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
я еще спросил, мол а че кложу на ерланг машину не хотят

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