Size: a a a

2019 November 15

a

arikai in pro.elixir
Каждый велосипед с нуля
источник

a

arikai in pro.elixir
А если “прикрутим библиотеку”, так извините
источник

a

arikai in pro.elixir
OTP по сути библиотека и есть
источник

a

arikai in pro.elixir
Просто в Эрланг встроенная
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Понимание ОТП и процессов нахуй не нужно чтобы клепать апишечки на фениксе
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А приходит понимание ОТП и процессов за 30 страниц в книжке Elixir in Action
источник

P

Pavel in pro.elixir
Źmićer Rubinštejn
В эликсире ты пишешь ИСКЛЮЧИТЕЛЬНО синхронный код. Как что может быть проще этого? ))
Давай сравним, в Golang, чтобы эффективно использовать асинхронщину (на достойном уровне) тебе надо знать mutex, channels, goroutines(че тут знать я правдо не понимаю). Они все кроме каналов супер простые, каналы понимаются за 1.5 страницы документации у них есть 1.5 органичения на запись в закрытый канал и запись в канал из которого никто не читает. Теперь ты берешь Elixir, там вроде тебе надо только GenServer и тут начинается веселье, а как сообщения ходят? а какое ограничение на рестарт? А как супервизоры работают? А какой там хендлинг шатдауна процессов? А что оказывается если кидать cast то ты тормозишь обработку call? Охнихуя себе! И это я только GenServer / Supervisor описал.
источник

a

arikai in pro.elixir
spawn(fn -> receive do :hello -> IO.puts("World!") end end)

So?
Будем количеством строчек меряться? Или имеющимся инструментарием и легкостью работы с ним и его кастомизации?
источник

P

Pavel in pro.elixir
А потом ты хуячишь на днище в receive/loop и все становится понятнее. В этот же самый момент твой макака-визави на Golang хуярит уже вторую апишку 🙂
источник

P

Pavel in pro.elixir
arikai
spawn(fn -> receive do :hello -> IO.puts("World!") end end)

So?
Будем количеством строчек меряться? Или имеющимся инструментарием и легкостью работы с ним и его кастомизации?
Вы коллега где-то между строк нить потеряли? Там очень простая реализация, и очень просто это использовать. В чем я не прав?
источник

AB

Alexey Bolshakov in pro.elixir
arikai
Вот именно
на хайлоаде был доклад про 1М вебсокетов. там даже взяв готовую библиотеку практически начинается закат солнца в ручную. ну или в мейле есть внутренние видео с интервью от начальников отделов. есть приверженец голанг. вот он давал пример решения, которое он дает в качестве тестового. грасефул шутдаун приложения с каналом. и пол экрана текста на то, как канал закрывают, чего-то там отправляют, получают. останавливают горутину. причем в емаксе сидит и бистро так строчит тонны - кружева кода. у меня как-то сразу внутреннее отторжение начинается, сравнивая с ерлангом, что там такой задачи, как gracefull остановки процесса даже вообще не ставится
источник

a

arikai in pro.elixir
В том, что тебе не нужно знать ни про какие примитивы синхронизации, чтобы дать другому процессу воспользоваться данными
источник

a

arikai in pro.elixir
Pavel
Вы коллега где-то между строк нить потеряли? Там очень простая реализация, и очень просто это использовать. В чем я не прав?
Возможно, я не до конца ясно выразился
источник

P

Pavel in pro.elixir
Aleksandr Fomin
а с го нужно вообще еще найти нормальный сервер, потому что все ппц низкоуровневое и чтобы просто хотя бы отрендерить json нужно ппц сколько бойлерплейта. Если апишечки клепать - elixir/phoenix самое оно
echo/sjson если вам уж так структуры не хотят подходить, чтобы без бойлерплейта. хоть бы за дженерики взялись, вот там бойлерплейт, а то ваш аргумент ивалид получается.
источник

a

arikai in pro.elixir
Да, мьютекс просто использовать
источник

a

arikai in pro.elixir
Но строить системы поверх него?
источник

a

arikai in pro.elixir
Или всё же лучше иметь более высокоуровневые абстракции, польза которых очевидна всем?
источник

AB

Alexey Bolshakov in pro.elixir
Pavel
Давай сравним, в Golang, чтобы эффективно использовать асинхронщину (на достойном уровне) тебе надо знать mutex, channels, goroutines(че тут знать я правдо не понимаю). Они все кроме каналов супер простые, каналы понимаются за 1.5 страницы документации у них есть 1.5 органичения на запись в закрытый канал и запись в канал из которого никто не читает. Теперь ты берешь Elixir, там вроде тебе надо только GenServer и тут начинается веселье, а как сообщения ходят? а какое ограничение на рестарт? А как супервизоры работают? А какой там хендлинг шатдауна процессов? А что оказывается если кидать cast то ты тормозишь обработку call? Охнихуя себе! И это я только GenServer / Supervisor описал.
просто зная, что оно все основано на обмене сообщений - это все проще понять. а если тебе понимать не надо, то ты можешь воспринимать код ерланга, как синхронный
источник

P

Pavel in pro.elixir
тоесть вы для ерланга просто kill -9 и поехали? 🙂 А джобы в беке - ну и еж с ними? 🙂
источник

a

arikai in pro.elixir
Pavel
тоесть вы для ерланга просто kill -9 и поехали? 🙂 А джобы в беке - ну и еж с ними? 🙂
Что?
источник