Рубрика «erlang» - 3

Привет!

2 декабря ждем всех, кто любит делать это функционально на третьей конференции FPConf — конференции о Haskell, Scala, Clojure, Elixir, Kotlin, F# и функциональных подходах в программировании фронтендов, бэкендов и чего угодно на чем угодно. Больше монад, лямбд, замыканий! Всем иммутабельность, друзья :)

Традиционно, приглашаем как опытных функциональщиков, так и тех, кто только хочет получить вдохновение и расширить горизонты.
Цена билета сейчас — 5000 рублей. Регистрация тут.

Что в программе:

image Arnaud Spiwack, core-разработчик Coq Proof Assistant, старший архитектор в Tweag I/O
USING HASKELL TO GREAT EFFECT
It is beyond cliché, nowadays, to say that testing is really important. This is even more so in I/O intensive applications because so many things can go wrong. Unfortunately, testing I/O intensive applications is particularly hard. We have to mock all our files, data-bases, and so on. But even so, we're only scratching the surface: so many things can go wrong. How do we test for absence of deadlocks? Of races?
I came to the conclusion that Haskell's insistence on purity made it, paradoxically, one of the best languages to write I/O intensive programs. The reason for this is that Haskell makes it very easy to mock every single aspects of the I/O fabric, hence testing is more powerful. Up to checking for the absence of deadlocks and races. This talk will discuss the programming patterns which emerge from this point of view, and, of course, encourage you do use them in your programs.

Читать полностью »

Почти в самом начале создания платформы (некоего фундамента, фреймворка на котором базируются все прикладные решения) нашего облачного веб-приложения СБИС мы поняли, что без инструмента, позволяющего сообщить пользователю о каком-либо событии с сервера, жить будет довольно-таки трудно. Все мы хотим мгновенно видеть новое сообщение от коллеги (которому лень пройти 10 метров), поднимающую корпоративный дух новость от руководства, очень важную задачу от отдела тестирования или получение поощрения (особенно денежного). Но путь становления был тернист, поэтому расскажем немного про трудности, которые мы встретили при взрослении от 5.0e3 до 1.0e6 одновременных подключений от пользователей.

Сервис оповещения миллиона пользователей с помощью RabbitMQ - 1Читать полностью »

С самого начала Discord активно использовал Elixir. Виртуальная машина Erlang стала идеальным кандидатом для создания высокопараллельной системы реального времени, которую мы собирались создать. Первоначальный прототип Discord был разработан на Elixir; сейчас он лежит в основе нашей инфраструктуры. Задача и предназначение Elixir простые: доступ ко всей мощи Erlang VM через гораздо более современный и дружественный язык и набор инструментов.

Прошло два года. Сейчас у нас пять миллионов одновременных пользователей, а через систему проходят миллионы событий в секунду. Хотя мы абсолютно не сожалеем о выборе архитектуры, пришлось проделать массу исследований и экспериментов, чтобы добиться такого результата. Elixir — это новая экосистема, а экосистеме Erlang не хватает информации о её использовании в продакшне (хотя Erlang in Anger — это нечто). По итогу всего пути, пытаясь приспособить Elixir для работы в Discord, мы извлекли некоторые уроки и создали ряд библиотек.
Читать полностью »

logo

Эта статья является попыткой автора свести воедино в виде небольшого руководства несколько тем, с которыми, так или иначе, сталкиваются практически все разработчики веб-приложений, а именно – работа со статическими файлами, конфигурациями и доставкой приложений на сервер. На момент написания этого текста, последней стабильной веткой Phoenix Framework была ветка 1.2.х.

Кому интересно, почему не Brunch и как совместить миграции с Distillery – прошу под кат.

Читать полностью »

В нашей компании мы активно используем Erlang, но часто рассматриваем другие альтернативные языки и подходы для улучшения качества собственного кода.

Elixir – это функциональный язык программирования общего назначения, который работает на виртуальной машине BeamVM. От Erlang отличается синтаксисом, более похожим на Ruby, и расширенными возможностями метапрограммирования.

В Elixir также существует замечательный механизм для полиморфизма под названием Protocols, но в Erlang нет синтаксической конструкции для динамической диспетчеризации, которая необходима для их реализации.

Тогда как же они устроены внутри? Какой overhead дает код с использованием протоколов? Попробуем разобраться.

Как устроены протоколы в Elixir - 1

Читать полностью »

Некоторое время назад я активно взялся за изучение языка Erlang. В рамках обучения на практике я решил написать бота для Telegram. Фантазии выдумать оригинальную идею бота не хватило, поэтому всё, что получилось на выходе — это хорошая, честная заготовка, в которую можно добавить свои команды, свои обработчики и с этим можно будет жить. Этакий шаблон, который можно заточить под себя при минимальных временных затратах. Подробно — под катом.
Читать полностью »

Часть 1. Функциональная

Эта статья (если быть до конца честным — набор заметок) посвящена ошибкам, которые совершают новички, ступая на путь Scala: не только джуниоры, но и умудренные опытом программисты с сединами в бороде. Многие из них до этого всегда работали лишь с императивными языками такими как C, C++ или Java, поэтому идиомы Scala оказываются для них непонятными и, более того, неочевидными. Поэтому я взял на себя смелость предостеречь новообращённых и рассказать им об их типичных ошибках — как совсем невинных, так и тех, что в мире Scala караются смертью.

Читать полностью »

image

Если вы очарованы языком Elixir, то приходите 16 марта в 19:00 на Мансарду Rambler&Co. Мы поговорим про Elixir, Phoenix Framework, Erlang OTP и докажем превосходство наших buzzwords над любыми другими.
Читать полностью »

Использование rebar3 для управления проектами на Erlang - 1

Rebar3 — это инструмент для языка программирования Erlang, который позволяет легко и удобно управлять проектами, написанными на Erlang (иногда и на Elixir).

Люди уже давно знакомые с Erlang знают старый rebar и, возможно даже, до сих пор его используют. Многим (особенно тем, кто пришел из других языков с гораздо более развитой экосистемой) rebar не нравился и время от времени его там и тут называют "позорной подделкой", которую можно было бы заменить скриптом на Perl. К счастью много работать с rebar мне не приходилось (в отличие от автора, выше приведенных слов), но с базовыми вещами rebar справлялся довольно-таки неплохо. Но "неплохо" — это не "хорошо". Несогласных с таким положением дел (с "неплохо") оказалось немало и потому решили они дать арматуре вторую жизнь в виде проекта rebar3, который нынче активно развивается. Над проектом среди прочих работает небезызваестный сир Фред Хеберт, которого знают те, кто читал книгу "Изучай Erlang во имя добра!".

Читать полностью »

Несколько недель назад, я услышал о мутационном тестировании для Clojure, это способ проверки качества тестов, при котором в исходный код вносятся небольшие изменения и тесты либо замечают это, либо нет. К примеру, если в программе использовалось условие «a > 1», а замена на «a < 1» никак не меняет результатов тестирования значит тесты могли бы быть лучше.

Я подумал, что такой инструмент будет несложно написать для Erlang, потому что язык предоставляет богатый спектр функций обработки внутренних представлений, генерируемых компилятором. Но всё оказалось не так просто. Под катом я описал проблемы и решение, к которому я в итоге пришёл.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js