
Dmitriy
31.08.2016
18:51:17
я понимаю что в 11к функций довольно сложно перенести сразу. Но работа над списками по-моему основа

Dmitry
31.08.2016
18:51:21
А является ли c# 3.0 дсл для c# 2.0 потому что там есть linq?
То есть ты хочешь сказать что elixir просто dsl для erlang?

Andrey
31.08.2016
18:51:56
А зачем их переносить, байткод эликсира эквивалетнтен байткоду эрланга

Google

Dmitriy
31.08.2016
18:53:09
Я не особо критикую, просто вот такая неудобность возникла.

Andrey
31.08.2016
18:54:45
Ну тат :erlang и сразу понятно, что вызывается код из написанный на эрланге

Can
31.08.2016
18:55:53
Это вроде как везде написано нормально

Dmitriy
31.08.2016
18:56:13
Ок, я дурак, не посмотрел везде

Can
31.08.2016
18:56:36
Тут человек только начал учить и столкнулся с тем, что вызывается эрланг и внезапно подумал, что изменений то и не так много и что используется код на эрланг
И типа подумал зачем вообще тогда эликсир
Посмотри просто исходники какого-нибудь проекта и убедись, что все ок и не так часто это и используется) А где используется, там все ок
Чаще всего вызов эрланг кода это либы, которые написаны для эрланга

Andrey
31.08.2016
18:59:43
Вот пример обёртки над эрланговской библиотекой https://github.com/manukall/feeder_ex

Can
31.08.2016
19:00:34
Ага
Оберток много
пишется

Google

Dmitriy
31.08.2016
19:02:28
Ну почему то filter сделали в elixir, а prefix нет. Какой смысл в этом

Dmitry
31.08.2016
19:03:49
Потому что в filter субъект был не первым аргументом
Ну и есть)
А в elixir субъект всегда первым элементом
Потому что есть пайп

Andrey
31.08.2016
19:04:20
Да и реализации различаются я думаю

Dmitry
31.08.2016
19:04:20
Которого нету в эрланг
Только где ты нашёл filter?

Dmitriy
31.08.2016
19:06:22

Dmitry
31.08.2016
19:06:38
эт не тот filter

Andrey
31.08.2016
19:06:46
Я не знаю как там в эрланге, но в эликсире не обзятельно должен быть список, а любой объект, который реализует протокол enumerable
* любой тип
Так будет вернее

Dmitry ?
31.08.2016
19:25:59
Блин, на мой взгляд наоборот это вообще замечательно, что все ерланговские штуки можно вот так просто использовать. Многим другим языкам о таком только мечтать
В Java (особенно в Kotlin) и .Net мире схожий уровень интероперабельности, но и там часто не так лаконично выглядит
Кстати, а есть еще какие-то более-менее популярные языки поверх ерланг машины?

Andrey
31.08.2016
19:52:32
Какой-то диалект лиспа был

Serhij
31.08.2016
20:03:59

Dmitry
31.08.2016
20:34:15
Всё я разобрался в либе, протестил, действительно никаких аппов запускать не надо, и так работает.
Для тех кто хотел чтобы я "причесал"
https://github.com/Virviil/screamer/
Да, кстати код с crontab интервалами уже работает, надо чуть допилить тесты/доки и залить на хекс. Но поиграть можно тут:
https://github.com/Virviil/cronider

Google

Eugene
31.08.2016
23:32:41

Константин
01.09.2016
01:47:26
Они засунули это все в 13 пункт офф документации, естественно новички этого не видят и не понимают

Andrey ?
01.09.2016
09:44:54
Про это же на главной написано
В самом низу

Dmitry
01.09.2016
11:39:57
На самом деле на сколько оверхед от враперинга методов? Потому что если нету - то все методы надо врапнуть хотя бы для человеческой документации
Потому что iex>h :lists выдаёт что эрланговская документация не совместима

Serhij
01.09.2016
13:26:33
За счет макросов можно избавится от оверхеда вложенного вызова функции (если инлайнить)

Alex
01.09.2016
13:35:54
Привет!
Мы тут записали пробный выпуск подкаста про Elixir/Erlang. Хотелось бы услышать ваши отзывы :slightly_smiling_face:
https://soundcloud.com/alex-troush/lucheedstvo

Dmitry
01.09.2016
13:41:20
В elixir stdlib врапперы не через макросы

Dmitry
01.09.2016
13:41:39
Я не знаю почему, но возможно Жозе что-то знает...

Evgen
01.09.2016
14:24:00
https://twitter.com/subhashthehack/status/771341864746229760
https://twitter.com/dorian_escplan/status/771346500978876417

Alexey
01.09.2016
16:26:04

Taras ?
01.09.2016
16:54:09
https://tkowal.wordpress.com/2016/04/23/nested-preload-in-ecto/
круто)

Andrey
01.09.2016
17:33:01
Может он и не задумывался об этом
Жду с нетерпением записи этих докладов, судя по твиттеру там есть много интересного

Google

Evgen
01.09.2016
19:37:13

Yusup
01.09.2016
20:24:20
кто подскажет, можно ли в эликсире/эрланге работать с выводом команды, которая еще не завершилась? к примеру, System.cmd запускает команду и возвращает вывод и код ошибки. но дело в том, что System.cmd дожидается окончания команды и только после этого возвращает результат. есть ли способ работать с выводом команды, которая еще не завершилась? может быть можно использовать параметр into, указав какую-нибудь стриму?
в общем, ищу аналог https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_child_process_spawn_command_args_options

Andrey
01.09.2016
20:25:26
Очевидно же, что да

Yusup
01.09.2016
20:28:31
Что да? С помощью into?

Andrey
01.09.2016
20:47:49
" есть ли способ работать с выводом команды, которая еще не завершилась? " - что ты под этим имеешь в виду?
Твой пример на nodejs всего лишь стартует новый процесс и вешает на него коллбеки, если ты хочешь того же, то можешь использовать Task.async

Dmitry ?
01.09.2016
20:54:28
Так? http://stackoverflow.com/questions/15831137/how-to-continuously-show-os-command-output-in-erlang

Andrey
01.09.2016
21:37:10
Да и к тому же Stream всего-лишь применяет накопленные функции разом к каждому элементу

Dmitry
01.09.2016
21:45:57
Помоему для этого есть порты

Admin
ERROR: S client not available

Dmitry
01.09.2016
21:45:59
Ports

Dmitriy
01.09.2016
22:11:02
Подкскажите.
А вот такой апи в коде это норм?
`
iex(56)> Integer.parse("22", 2)
:error
iex(57)> Integer.parse("11", 2)
{3, ""}
`
Как с этим лучше работать? Есть что-то лучшее чем if statement пихать?

Aldar
01.09.2016
22:12:07
pattern matching?

Andrey
01.09.2016
22:12:09
{:error, "причина"} и {:ok, 3}

Dmitriy
01.09.2016
22:13:19
отдает он не tuple

Andrey
01.09.2016
22:14:17
@Virviil ты же слушал подкаст, там говорилось про обработку ошибок и что кортежи - это лучшее решение, я по поводу твоего модуля скримера)

Dmitry
01.09.2016
22:14:49
Не, это не я)
Аа, ты про модуль, ну да
Я думал ты перепутал Дмитриев))

Google

Dmitry
01.09.2016
22:16:02
Кортежи в коде лучшее, но в макросах всё не так
В макросах наоборот очень часто испольхуются raise, throw и catch

Dmitriy
01.09.2016
22:17:51
`
iex(64)> {:error, "lol"} = Integer.parse("s10s", 2)
** (MatchError) no match of right hand side value: :error
`
Может я не догоняю что-то. И паттерн матчинг не понимаю. Все таки по типу матчится то. А тип просто атом

Dmitry
01.09.2016
22:18:16
{:error, lol} = Integer.parse("s10s", 2)
Вот так надо

Dmitriy
01.09.2016
22:18:48
Да все равно тоже самое

Andrey
01.09.2016
22:18:48
Я открыл исходники и там какая-то дичь
:error -> todo
num -> todo

Dmitry
01.09.2016
22:19:36
Да всё верно, там через жопу
:error -> todo
num -> todo

Andrey
01.09.2016
22:20:00
{num, string} -> вот так даже для успешного случая

Dmitry
01.09.2016
22:20:11
надо так
case Integer.parse(...) do
:error -> косяк
num -> num
end

Andrey
01.09.2016
22:21:06
Ещё и в try обернуть хД

Dmitry
01.09.2016
22:21:40
да, верно
Через жопку какую то сделано
Хотя хз
Может эта строчка и нужна, но ошибка по идее должна быть норм

Dmitriy
01.09.2016
22:23:44
Спасибо

Dmitry
01.09.2016
22:24:20
Так не сработает

Dmitriy
01.09.2016
22:24:26
Я еще с bitwise макросов прифигел. Почему-то не через функции сделали.

Dmitry
01.09.2016
22:24:45
case Integer.parse(...) do
:error -> косяк
{num, _} -> num
end
вот так

Dmitriy
01.09.2016
22:25:52