
Dmitry
25.04.2017
06:34:59
А рэльсах

Maxim
25.04.2017
06:35:04
ага
в рельсах вообще все вызовы из шаблонов

Dmitry
25.04.2017
06:36:12
Ну, если сделать to_list - то моно до шаблона

Google

Евгений
25.04.2017
06:36:13
там вызовы хоть от куда)

Maxim
25.04.2017
06:36:26

Max
25.04.2017
07:28:34
доказать
охуеть
у кого-то синдром вахтёра
и тесты ещё

Maxim
25.04.2017
07:35:48
ужасная идея для канала, лол

Dmitry
25.04.2017
07:37:25
Можно считать это спамом?

Maxim
25.04.2017
07:39:06
разумеется
вообще, конечно, стремно выглядит
как будто ты себе проститутку снимаешь
не в обиду чувакам, которые там есть

Dmitry
25.04.2017
07:39:38

Google

Dmitry
25.04.2017
07:40:26
К вашим услугам профессиональные девочки. Для публикации необходимо доказать портфолио и пройти тесты с админом канала

Max
25.04.2017
07:40:41
глубокие тесты
широкое покрытие

Maxim
25.04.2017
07:41:07

Rumata
25.04.2017
07:49:49
Индивидуальный подход
Салам пацанам

Ilnur
25.04.2017
08:14:54
на неудачную попытку логина каким кодом отвечать, 401 ии 422?
вроде 422 подходит, т.к. идет пост запрос на ресурс sessions, можно считать, что просто была передана невалидная сущность

Mark
25.04.2017
08:19:03
401 тоже подходит

Dmitry
25.04.2017
08:20:14
422 не подходит
422 вообще нету в спецификации
Если рассматривать сессию как ресурс - подходит 404
Но его никто не использует
401 обычно

Ilnur
25.04.2017
08:24:52
м, 401 тогда поставлю
https://www.youtube.com/watch?v=4_DPaLm0ddU

Dmitry
25.04.2017
08:27:27
Bad request
422 это WebDAV на сколько я знаю

Google

Dmitry
25.04.2017
08:29:32
Я обычно делаю очень просто
Пишу with на все
А потом nil, [] - это 404
Changeset это 400
Если все норм 200
А 401 у меня естественно падает на плаге ещё до контроллера
А почему на логин можно отдавать 404 - ты как бы ищешь ресурс пользователя с такими логин и паролем и не находишь

Max
25.04.2017
08:31:45
я с with особо не привык пока писать
так-то понимаю, для чего он, пару раз использовал

Marat
25.04.2017
08:33:09

Dmitry
25.04.2017
08:34:51
def generate_login_otp(conn, _params) do
with [user_mob] <- Plug.Conn.get_req_header(conn, "mobile"),
%User{uid: uid} <- Repo.one(User.by_username(user_mob)),
otp <- generate_totp(uid),
{:ok, _} <- SMS.Plivo.login_totp_message(user_mob, otp)
do
IO.inspect otp
render(conn, "success.json", success: "OTP sent.")
else
e -> Errors.UserAPI.generate_login_otp(conn, e)
end
end

Ilnur
25.04.2017
08:36:28
м, 400 мне кажется лучше на ошибки парсинга оставить
больше статус кодов богу кодов

Dmitry
25.04.2017
08:38:26
А какая разница?) Надо тогда сделать отдельные коды для валидации параметров, для валидации констрэйнтов, для валидации валидации

Maxim
25.04.2017
08:39:14
смотрел кто-нибудь доклад "Make ruby great again"?
там был момент
чувак про рспек шутил
в конце он произнес такую фразу

Google

Maxim
25.04.2017
08:41:28
always spec spec your spec specs

abc
25.04.2017
08:44:10
парни. а как вернее делать foreach на Elixir ? через Enum.map или в 2 функции расписывать ?

Maxim
25.04.2017
08:44:42

Dmitry
25.04.2017
08:44:52
Enum.each
А зачем foreach?
Это индикатор плохой архитектуры
Мне не разу ещё не понадобился foreach

Admin
ERROR: S client not available

abc
25.04.2017
08:45:39
По списку пробежать сообщений от Facebook

Maxim
25.04.2017
08:45:58

abc
25.04.2017
08:46:13
просто 2 фукнции писать как то...

Dmitry
25.04.2017
08:47:12
А для этого есть map
Или filter
Или любая другая high order function

Maxim
25.04.2017
08:48:34

Dmitry
25.04.2017
08:49:45
Если не нужен результат, то значит потом ты ничего не будешь делать. В этом случае опять же подходит map

Maxim
25.04.2017
08:50:53
map вернет новый массив, зачем тебе возвращать новый, если ты с ним ничего не будешь делать?

Dmitry
25.04.2017
08:51:12
У меня один раз надо было обработать все сообщения и из последнего забрать его tomestamp. Я тогда написал рекурсивную функцию.

Google

Dmitry
25.04.2017
08:51:28

Maxim
25.04.2017
08:51:40
О - оптимизация

Dmitry
25.04.2017
08:54:14
Тут нету массивов. И старый не вернётся. Причём все то что запишется в список мапа все равно сгенерируется так что ты потеряешь только место, которое сразу почистится
Но конечно если принципиально можно each

Maxim
25.04.2017
09:05:01
кстати, да, в эликсире все равно вернется

Alexander
25.04.2017
10:29:13
https://i.imgur.com/Iprl2il.png
Вот что-то мне подсказывает, что этот говнокод можно выпрямить, но я не могу сообразить как
cond ?

Dmitry
25.04.2017
10:30:35
with

Alexander
25.04.2017
10:34:08
всё равно не могу сообразить.
Эта штука возвращает :no_file, :removed, :checksum_ok или false. Как это оформить с with?

Dmitry
25.04.2017
10:34:51
Какой то плохой апи

Alexander
25.04.2017
10:34:55
замысел — иметь true-ish значение, по которому можно при надобности понять что именно в порядке, либо false

Dmitry
25.04.2017
10:34:57
Не логичный

Maxim
25.04.2017
10:35:46

Alexander
25.04.2017
10:36:02
а он умеет в гарде работать??!? ок. тогда уже легче.

Maxim
25.04.2017
10:36:11
не знаю, умеет ли
но можно сделать функцию внутри модуля

Dmitry
25.04.2017
10:36:22
Все делают по другому - имеешь {:error, reason} и true

Maxim
25.04.2017
10:36:26
file_exists?

Dmitry
25.04.2017
10:36:35
Вернее ок
А у тебя все наоборот

Maxim
25.04.2017
10:36:59
не по эликсирному написано как-то