Size: a a a

2020 September 21

IK

Ihor Katkov in pro.elixir
Alex Bubnov
чтобы быстро переобуваться - не учи языки, учи вещи, для всех общие.
коммуникации(от tcp до кафки), базы данных(какие зачем нужны и когда их использовать), ci/cd/прочий лайфсайкл, логи/деплой/управление конфигурацией. вм/компиляторы/интерпретаторы, просто чтобы быстро усваивать новые языки.  
это всё общие абсолютно вещи, которые дадут гораздо больше, чем отдельные языки(и в итоге приведут к печальному осознанию, что всё вокруг - говно и палки).
+
источник

AB

Alex Bubnov in pro.elixir
Egor Slamihin
Я хотел услышать как быстро въехать
И где посмотреть на особенности архитектур приложений
тут всё не так просто, на мой взгляд.
вот например, взять дефолтный фениксовый проект, с него можно собрать какие-то общие знания о beam-специфике применительно к вебне, но - имхо, в фениксе далеко не всё сделано по уму, например в плане supervision tree. типа - почему пул коннектов к бд не под основным приложением?.. где описано, как будет правильнее и какие там трейдофы - я вообще хз. в общем и целом, про otp, которая является основой для этого слоя архитектуры, есть книжка чезарини и томпсона "проектирование масштабируемых систем с erlang/otp", тут в файлах есть скан, но на какие вопросы она ответит - не знаю даже.

феникс - это вебня, по большей части стейтлесс, и не весь спектр возможных кейсов покрывает. есть, например, стейтфул вещи с process per entity как точка синхронизации и in-memory кэш, тут приходится уже находить трейдофы между производительностью и консистентностью данных, и я вообще не уверен, что где-то про такое читал(ну кроме life beyond distributed transactions хелланда, которое вообще больше про философию).

в сети много материалов по riak/riak core, особенно интересные от Mariano Guerra(https://marianoguerra.github.io/), но это очень специфичная штука и границы применимости ее нужно понимать самому.

про beam-специфику можно поискать посты и рассказы Макса Лапшина, у него много интересного про отзывчивость, производительность, наблюдаемость системы и интроспекцию. я, собственно эрланг учил по ходу написания плагинов в его старый erlyvideo, и это мне довольно много дало.  

какие-то философские вещи можно почерпнуть из продуктов clojure-комьюнити, там водятся правильные идеи и философия, но их нужно адаптировать, потому что beam сильно отличается от jvm.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
тут всё не так просто, на мой взгляд.
вот например, взять дефолтный фениксовый проект, с него можно собрать какие-то общие знания о beam-специфике применительно к вебне, но - имхо, в фениксе далеко не всё сделано по уму, например в плане supervision tree. типа - почему пул коннектов к бд не под основным приложением?.. где описано, как будет правильнее и какие там трейдофы - я вообще хз. в общем и целом, про otp, которая является основой для этого слоя архитектуры, есть книжка чезарини и томпсона "проектирование масштабируемых систем с erlang/otp", тут в файлах есть скан, но на какие вопросы она ответит - не знаю даже.

феникс - это вебня, по большей части стейтлесс, и не весь спектр возможных кейсов покрывает. есть, например, стейтфул вещи с process per entity как точка синхронизации и in-memory кэш, тут приходится уже находить трейдофы между производительностью и консистентностью данных, и я вообще не уверен, что где-то про такое читал(ну кроме life beyond distributed transactions хелланда, которое вообще больше про философию).

в сети много материалов по riak/riak core, особенно интересные от Mariano Guerra(https://marianoguerra.github.io/), но это очень специфичная штука и границы применимости ее нужно понимать самому.

про beam-специфику можно поискать посты и рассказы Макса Лапшина, у него много интересного про отзывчивость, производительность, наблюдаемость системы и интроспекцию. я, собственно эрланг учил по ходу написания плагинов в его старый erlyvideo, и это мне довольно много дало.  

какие-то философские вещи можно почерпнуть из продуктов clojure-комьюнити, там водятся правильные идеи и философия, но их нужно адаптировать, потому что beam сильно отличается от jvm.
Спасибо за чтиво на вечер, если есть что-то ещё классное почитать, то кидай, пожалуйста!
источник

AN

Alexey Novoselov in pro.elixir
Да, Чезарини с Томпсоном огонь чтиво!)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
тут всё не так просто, на мой взгляд.
вот например, взять дефолтный фениксовый проект, с него можно собрать какие-то общие знания о beam-специфике применительно к вебне, но - имхо, в фениксе далеко не всё сделано по уму, например в плане supervision tree. типа - почему пул коннектов к бд не под основным приложением?.. где описано, как будет правильнее и какие там трейдофы - я вообще хз. в общем и целом, про otp, которая является основой для этого слоя архитектуры, есть книжка чезарини и томпсона "проектирование масштабируемых систем с erlang/otp", тут в файлах есть скан, но на какие вопросы она ответит - не знаю даже.

феникс - это вебня, по большей части стейтлесс, и не весь спектр возможных кейсов покрывает. есть, например, стейтфул вещи с process per entity как точка синхронизации и in-memory кэш, тут приходится уже находить трейдофы между производительностью и консистентностью данных, и я вообще не уверен, что где-то про такое читал(ну кроме life beyond distributed transactions хелланда, которое вообще больше про философию).

в сети много материалов по riak/riak core, особенно интересные от Mariano Guerra(https://marianoguerra.github.io/), но это очень специфичная штука и границы применимости ее нужно понимать самому.

про beam-специфику можно поискать посты и рассказы Макса Лапшина, у него много интересного про отзывчивость, производительность, наблюдаемость системы и интроспекцию. я, собственно эрланг учил по ходу написания плагинов в его старый erlyvideo, и это мне довольно много дало.  

какие-то философские вещи можно почерпнуть из продуктов clojure-комьюнити, там водятся правильные идеи и философия, но их нужно адаптировать, потому что beam сильно отличается от jvm.
А почему cowboy не под основным приложением?
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
А почему cowboy не под основным приложением?
я хз, честно говоря.
наверное, Лоик считает это приемлемым дефолтом, с учетом того, что в ranch есть embedded mode, на который можно переключиться минимальными усилиями.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
я хз, честно говоря.
наверное, Лоик считает это приемлемым дефолтом, с учетом того, что в ranch есть embedded mode, на который можно переключиться минимальными усилиями.
Я думаю пацаны брали познания в основном из ковбоя, потому что с ним они в общем-то работали
источник

AB

Alex Bubnov in pro.elixir
в принципе, всё сказанное мной - не абсолютная истина, а только личное мнение.
и я его высказывал не чтобы в очередной раз сказать, что феникс ну такое, а как указание на очередной возможный трейдофф - простота использования vs гибкость.
источник

B

Bogdan in pro.elixir
Lama Lover
Удваиваю, правда технологии меняются достаточно часто. При этом, чтобы нормально разбираться в той же кафке, нужно с ней работать в проде — а такое без позиции синьора практически невозможно устроить
Наверное многие вещи можно будет проработать, без позиции сеньора, если сделать кравлер где данные приходят из множества разных потоков и подцепить к нему кавку. Как думаешь?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
я хз, честно говоря.
наверное, Лоик считает это приемлемым дефолтом, с учетом того, что в ranch есть embedded mode, на который можно переключиться минимальными усилиями.
Есть пример hello world с запуском под своим supervision tree?
источник

С

Саша in pro.elixir
Źmićer Rubinštejn
Есть пример hello world с запуском под своим supervision tree?
init([]) ->
   RanchSupSpec = {
       ranch_sup,
       {ranch_sup, start_link, []},
       permanent,
       5000,
       supervisor,
       [ranch_sup]
   },
   ListenerSpec = ranch:child_spec(
       echo,
       100,
       ranch_tcp,
       [{port, 5555}],
       echo_protocol,
       []
   ),
   {ok, {{one_for_one, 10, 10}, [RanchSupSpec, ListenerSpec]}}.


не оно?
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
Есть пример hello world с запуском под своим supervision tree?
С ковбоем вроде нет, но там не сложнее, чем с echo.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
тут всё не так просто, на мой взгляд.
вот например, взять дефолтный фениксовый проект, с него можно собрать какие-то общие знания о beam-специфике применительно к вебне, но - имхо, в фениксе далеко не всё сделано по уму, например в плане supervision tree. типа - почему пул коннектов к бд не под основным приложением?.. где описано, как будет правильнее и какие там трейдофы - я вообще хз. в общем и целом, про otp, которая является основой для этого слоя архитектуры, есть книжка чезарини и томпсона "проектирование масштабируемых систем с erlang/otp", тут в файлах есть скан, но на какие вопросы она ответит - не знаю даже.

феникс - это вебня, по большей части стейтлесс, и не весь спектр возможных кейсов покрывает. есть, например, стейтфул вещи с process per entity как точка синхронизации и in-memory кэш, тут приходится уже находить трейдофы между производительностью и консистентностью данных, и я вообще не уверен, что где-то про такое читал(ну кроме life beyond distributed transactions хелланда, которое вообще больше про философию).

в сети много материалов по riak/riak core, особенно интересные от Mariano Guerra(https://marianoguerra.github.io/), но это очень специфичная штука и границы применимости ее нужно понимать самому.

про beam-специфику можно поискать посты и рассказы Макса Лапшина, у него много интересного про отзывчивость, производительность, наблюдаемость системы и интроспекцию. я, собственно эрланг учил по ходу написания плагинов в его старый erlyvideo, и это мне довольно много дало.  

какие-то философские вещи можно почерпнуть из продуктов clojure-комьюнити, там водятся правильные идеи и философия, но их нужно адаптировать, потому что beam сильно отличается от jvm.
А почему коннектам к базе нужно быть под основным аппом?
источник

LL

Lama Lover in pro.elixir
Bogdan
Наверное многие вещи можно будет проработать, без позиции сеньора, если сделать кравлер где данные приходят из множества разных потоков и подцепить к нему кавку. Как думаешь?
Всё равно эти знания будут на уровне пользователя. Надо же знать тонкости конфигурации, деплоя, починки сбоев — всё вот это вот
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
А почему коннектам к базе нужно быть под основным аппом?
больше стратегий обработки ошибок, более точный контроль над процессом инициализации у приложения.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
больше стратегий обработки ошибок, более точный контроль над процессом инициализации у приложения.
Так разве Repo не запускается в основном аппе? Вроде он там запускается
А в ecto запускается только Registry реп, зачем он нужен с основной аппе?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Так разве Repo не запускается в основном аппе? Вроде он там запускается
А в ecto запускается только Registry реп, зачем он нужен с основной аппе?
я точно не знаю, какую задачу выполняет Repo, но реально пул запускается под db_connection.
источник

LL

Lama Lover in pro.elixir
Попробовал прочитать что же всё-таки запускает этот Repo и там столько вызовов, что просто ужас
источник

LL

Lama Lover in pro.elixir
Но, как я понял, Repo (в случае с постгрёй) запускает процесс, который падает, когда падает пулл из db_connection
Так что связь есть
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Но, как я понял, Repo (в случае с постгрёй) запускает процесс, который падает, когда падает пулл из db_connection
Так что связь есть
Связь типа: поставим камеру, которая будет смотреть на соседнее дерево, и когда оно упадем - включим бензопилу и спилим наше
источник