@proelixir

Страница 753 из 1045
Buckler
06.10.2017
14:10:55
Hello, Alex! Please, calculate: 94+57=... If you don't answer - you'll get banned from the channel... Good luck!

Максим
06.10.2017
14:28:55
151

Sergey
06.10.2017
14:29:26
не посказывай

Alexander
06.10.2017
14:48:17
Надо ещё иногда логарифм давать, и инвертировать логику: если ответил - то бот

Google
Vildulv
06.10.2017
14:51:03
вот кстати да

Vladimir
06.10.2017
14:55:27
интеграл посчитать =)

Vildulv
06.10.2017
14:57:40
Please, calculate: log2004tan45° +log[ 1/2]cos45°. If you don't answer - you'll get banned from the channel... Good luck!

Vladimir
06.10.2017
14:58:49
если решит за 5 секунд - бот :)

Vita
06.10.2017
15:00:36
ответ на «главный вопрос Жизни, Вселенной и Всего Остального».

Igor
06.10.2017
15:00:58
боты долговато считать будут

Nikolay
06.10.2017
15:08:59


Nikolay
06.10.2017
15:09:50
насколько я знаю это уже пофикшена, но еще не задеплоено

Vildulv
06.10.2017
15:23:58
лучше бы он спрашивал чё-нить по языку, как на одном из сайтов такое видел , типа дописать функцию или чёт в таком роде

Igor
06.10.2017
15:33:19
Такой антиспам - зло. Лучше б ничего не писал вообще. А то по несколько раз на дню открываешь чат ради того, чтоб увидеть очередную капчу. И ведь даже не пишет интересные факты из мира эликсира.

Антон
06.10.2017
15:33:26
лучше бы он спрашивал чё-нить по языку, как на одном из сайтов такое видел , типа дописать функцию или чёт в таком роде
еще запускал и проверял потребляемые ресурсы и время выполнения, и если первышает банил

Yuri
07.10.2017
10:11:30
подскажите админку для феникса, типо активадмина

Google
Yuri
07.10.2017
10:12:06
ex_admin - очень много надо танцев с бубнами для 1.3

альтернатив не много )

почему через HTTPoison так долго скачивать файлы ?

рельсовый open скачивает в десятки раз быстре, что я делаю не так?

Dmitry
07.10.2017
18:47:08
А какого размера файлы?

Yuri
07.10.2017
18:56:28
20 мегов )

мой браузер скачивает быстрее )

хотя может я ошибаюсь

Buckler
07.10.2017
21:07:32
Hello, Вася! Please, calculate: 53+1=... If you don't answer - you'll get banned from the channel... Good luck!

Ruslan
07.10.2017
22:34:56
Как можно лучше написать этот метод? def find_or_create_user(attrs \\ %{}) do if String.ends_with?(attrs.email, "@10сlouds.com") do user = Repo.get_by(User, %{email: attrs.email}) if user do {:ok, user} else create_user(attrs) end else {:error, :invalid_email_domain} end end

чет через case не пойму как написать ?

The mirror
07.10.2017
22:48:06
Ruslan
07.10.2017
22:48:39
ну вот и я с руби перехожу и для меня норм, но подобного кода в гайдах не видел ?

там всегда через case делают

Alexander
07.10.2017
22:56:32
if String.ends_with?(attrs.email, "@10сlouds.com") do case Repo.get_by(User, %{email: attrs.email}) do {:ok, user} -> user, nil -> create_user(attrs), _ -> {:error, :invalid_email_domain} end end

так?

я правда не помню, возвращает ли get_by - nil, чтобы сматчить

Alexey
07.10.2017
22:59:29
{:error, :invalid_email_domain} относится к первому условию

Alexander
07.10.2017
23:00:39
ну тогда просто выкинуть последную _

Alexey
07.10.2017
23:02:13
жалко, в эликсире нельзя матчить по окончаниям строк, так было бы проще всего разбить функцию на 2 клозы..

Google
Alex
08.10.2017
09:16:35
там всегда через case делают
if, как пишут в документации, позволяет проверить только одно условие: { if true, do: "sfsfsfd" }, те else не надо писать. Но я где-то читал совет, чтобы код был менее глючным в нем должно быть меньше неявностей и поэтому там советуют у любого if всегда писать else. вплоть до того: { if true do operation else IO.puts "unreachable!" }. Поэтому если всегда обрабатывать неявности и неважности, то без разницы что использовать if или case. Но if это макрос. Если не изменяет память он реализован через case. Тогда к чему писать макрос if если сразу можно заюзать case? Case вынуждает продумывать все варианты, а главное, писать какой-никакой код, который явно их обработает. На мой взгляд if - это дань другим языкам, уменьшает порог входа в Elixir.

Dmitry
08.10.2017
09:22:40
@midster Вместо if можно использовать cond тоже

Alex
08.10.2017
09:26:39
@midster Вместо if можно использовать cond тоже
ага, тоже хорошая штука тк в нем не может быть неявностей и одно из условий всегда должно выполняться

Dmitry
08.10.2017
09:34:22
Нужно все через with обернуть

И сразу все становиться пронятое

with true <- String.ends_with..., {:ok, user} <- Repo.get.... do .... else {:error...} end

Ruslan
08.10.2017
10:16:12
with true <- String.ends_with..., {:ok, user} <- Repo.get.... do .... else {:error...} end
а как через with обернуть Repo.get_by(User, %{email: attrs.email}) + create_user create_user делает Repo.insert()

файл - https://github.com/ruslansavenok/lib_ten/blob/master/lib/lib_ten/accounts/accounts.ex тесты - https://github.com/ruslansavenok/lib_ten/blob/master/test/lib_ten/accounts/accounts_test.exs#L25-L43

Dmitry
08.10.2017
10:19:24
Я с мобилы

Тяжело набрать код

Но для Repo.one или get_by пишется так user when not is_nil(user) <- ...

И в else для with

nil -> no_user_in_bd_error

Alex
08.10.2017
10:46:47
можно и так

with true <- String.ends_with?(attrs.email, "@10сlouds.com"), user <- Repo.get_by(User, %{email: attrs.email}) do user && {:ok, user} || create_user(attrs) else false-> {:error, :invalid_email_domain} end

или

case String.ends_with?(attrs.email, "@10сlouds.com") do true -> user = Repo.get_by(User, %{email: attrs.email}) user && {:ok, user} || create_user(attrs) false -> {:error, :invalid_email_domain} end

ну и желательно чтобы create_user(attrs) возвращало {:ok, user} или {:error, reason}

Google
Dmitry
09.10.2017
09:47:49
Знаю парочку JS товарищей, считающих что это круто, но нет...

Именно поэтому в большинстве методов stdlib в эликсире, которые фетчат данные, которые могут быть nil есть опциональный третий параметр с дефолтным значением

Alex
09.10.2017
10:20:12
Так лучше не делать в любых языках программирования
почему? вродеж ends_with?(t, t | [t]) :: boolean boolean или true или false и без вариантов, или я мож не понял чего?

Dmitry
09.10.2017
10:23:27
Дейкстра считает Short-circuit evaluation проблемной

А в эрланге вообще && и || не работают

Там and и or

Так что полагаться на то, что эликсир их правильно обернёт в этой и последующих своих версиях

И без скрытых багов

Очень рискованно

И не оправдано при использовании функциональной парадигмы программирования

Alex
09.10.2017
10:29:46
а вон оно че, ну может быть хотя сами они использують behaviour = options[:for] || raise ArgumentError, ":for option is required on defmock" https://github.com/plataformatec/mox/blob/master/lib/mox.ex

Dmitry
09.10.2017
10:30:24
Ну в код мэинтейнеров эликсира лучше не смотреть

Также как и в код любых мэинтейнеров любых языков и библиотек

Dmitry
09.10.2017
16:35:03
"options[:for] || raise ArgumentError, ":for option is required on defmock""

Не знаю, как другие, но одиночный || использую очень часто.

Alex
09.10.2017
16:39:30
As a rule of thumb, use and, or and not when you are expecting booleans. If any of the arguments are non-boolean, use &&, || and !.

Dmitry
09.10.2017
16:49:49
Ну, вот остальные как-то не используются вне условий if, обычно вот так: if user && password, do: а вот || действительно хорошо использовать, в основном под raise.

Хорошо использовать сам по себе.

Ivan
09.10.2017
19:11:28
Товарищи

Всем приветы

Google
Ivan
09.10.2017
19:11:38
а ex_admin нормес, живет?

а то последние коммиты 4 месяца назад и 100+ ишшу

Buckler
09.10.2017
21:16:28
Hello, Aleksei! Please, calculate: 74+98=... If you don't answer - you'll get banned from the channel... Good luck!

عاصم بن حارث
09.10.2017
21:18:01
ATTENTION, UNAUTHORIZED ACCESS DETECTED!

74+98=...

Alexander
09.10.2017
22:09:25
а ex_admin нормес, живет?
я когда-то пытался раскатать, но забил

в эликсире репа где год никто ничего коммитил - ок

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