Как стать автором
Поиск
Написать публикацию
Обновить
0.2

Erlang/OTP *

Функциональный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Up the pool

Время на прочтение1 мин
Количество просмотров1.9K
Я программист. Поэтому, меня всегда потрясают вещи, которые «просто работают». Это чувство у меня было и когда я знакомился с Erlang Pool. Настройка требует некоторого внимания, но после, механизм оказывается «оскорбительно» простым.
Читать дальше →

Разработка видеохостинга на Erlang

Время на прочтение12 мин
Количество просмотров19K
Представляем вашему вниманию доклад Максима Лапшина, сделанный им на конференции Application Developer Days. Мы собрали воедино видео и аудио, слайды презентации, а также стенограмму доклада. Последнее потребовало огромных усилий, но оно явно того стоит. Сорокаминутный доклад можно «услышать» в несколько раз быстрее.

Свел видео и презентацию в единый ролик, а также записал стенограмму Стас Фомин (человек и пароход локомотив :)).
Читать дальше →

Слежение за процессами и обработка ошибок, часть 1

Время на прочтение6 мин
Количество просмотров4.1K

0 Преамбула


Согласитесь приятно, когда в хозяйстве все под контролем и все в порядке, каждая вещь стоит на своем месте и четко выполняет свое вселенское предназначение. Сегодня мы рассмотрим вопросы организации порядка в огромном множестве процессов эрланга. Базовые понятия о процессах эрланга можно прочитать в этом посте.
Читать дальше →

Erlang и его процессы

Время на прочтение7 мин
Количество просмотров19K

0 Преамбула


Модель – это ещё не мир. Являясь людьми, мы не можем в полной мере познать реальность. Мы можем лишь построить её модель и через неё изучать и использовать реальный мир. От того, какую модель мы выберем, зависит полнота, успешность, живучесть части реальности в информационном пространстве (или в нашей голове).

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

В данной статье автор осветит функциональный язык программирования Erlang, парадигма которого может звучать так: «все является процессами». В первой части данной стати будет дана вводная информация по созданию и коммуникации процессов между собой, во второй мы остановимся на планировании процессов внутри виртуальной машины Erlang и спецификации процессов. Статья адресована для новичков, кто хочет начать создавать сложные, многопоточные и отказоустойчивые приложения на языке Эрланг.
Читать дальше →

Использование Rebar и GProc

Время на прочтение8 мин
Количество просмотров13K

Использование Rebar



Этот туториал может содержать устаревшие сведения, так как Rebar очень активно развивается без сохранения совместимости с предыдущими версиями.

При разработке на Erlang часто приходится собирать зависимости из разных источников, следить за их нужными версиями, создавать OTP-релизы для распространения проектов. Дела достаточно рутинные и неприятные. Для того, чтобы разработка меньше доставляла неприятных моментов, компанией Basho был создан очень удобный инструмент — Rebar. В этой статье я постараюсь раскрыть преимущества от его использования на реальном примере с использованием сторонних зависимостей и созданием конфигурируемых OTP-релизов.
Читать дальше →

Comet–приложение для Mochiweb c нагрузкой в 1 000 000 пользователей. Часть 3/3

Время на прочтение21 мин
Количество просмотров4.8K
Часть 1 и Часть 2 в этом цикле статей показали, как создать приложение, используя mochiweb, и как передавать сообщения подключенным пользователям. Мы уменьшили постребление памяти до 8 Кб для каждого подключения. Мы повторили c10k тест. Мы сделали графики. Это была забава, но теперь пора повторить все для 1 миллиона соединений.

Это статья покрывает следующее:
• Использование базы данных Mnesia;
• Генерация правдоподобного набора данных вида «friends» для миллиона пользователей;
• Настройка Mnesia и ввод наших данных;
• Открытие миллиона соединений с одной машины;
• Сравнительный тест с 1 миллионом пользователей;
• Libevent + Си для обработки соединений;
• Финальные выводы.
Читать дальше →

Comet–приложение для Mochiweb c нагрузкой в 1 000 000 пользователей. Часть 2/3

Время на прочтение13 мин
Количество просмотров3.3K
Часть 1
Часть 3

В части 1 мы создали (немного бесполезное) mochiweb приложение, которое отправяет клиентам сообщение каждые 10 секунд. Мы настроили ядро Linux, и создали инструмент, чтобы установить много соединений для проверки использования памяти. Мы выяснили, что требуется приблизительно 45 Кб для каждого подключения.

В части 2 мы превратим наше приложение во что-то полезное, и уменьшим потребление памяти:
• Реализация маршрутизатора сообщения с login/logout/send API;
• Обновление mochiweb приложения для работы с маршрутизатором;
• Установка распределенной erlang системы, таким образом, мы можем запустить маршрутизатор на различных узлах;
• Создание инструмента тестирования маршрутизатора большим количеством сообщений;
• График использование памяти в течении 24 часов, оптимизация mochiweb приложение для экономии памяти.

Это означает, что мы разделим логику доставки сообщений и mochiweb приложение. В тандеме с утилитой floodtest из части 1 мы можем протестировать работу приложения в условиях, близких к промышленным.
Реализация маршрутизатора сообщения
Читать дальше →

Создание неблокирующего TCP сервера с использованием принципов OTP

Время на прочтение15 мин
Количество просмотров7.7K

Вступление


Предполагается, что читатель этого руководства, уже знаком с gen_server и gen_fsm поведениями, взаимодействиям посредством TCP сокетов с использованием модуля gen_tcp, активным и пассивным режимами сокетов, и принципом «OTP Supervisor».

OTP предоставляет удобный инструментарий для создания надежных приложений. Отчасти, это осуществляется путем абстрагирования общей функциональности в поведения, такие как gen_server и gen_fsm, которые связаны иерархией cупервизоров OTP.

Существует несколько известных шаблонов TCP сервера. Тот, который мы собираемся рассмотреть включает в себя один слушающий процесс и процесс создания нового FSM процесса на каждого подключившегося клиента. Хотя существует поддержка TCP соединений в OTP через gen_tcp модуль, не существует стандартного поведение для создания неблокирующего TCP сервера опираясь на принципы OTP. Под неблокирующим сервером мы подразумеваем, что слушающий процесс и FSM-процесс не должны делать каких-либо блокирующих вызовов и быстро реагировать на входящие сообщения (например, изменения в конфигурации, перезапуск и т.д.), не вызывая таймауты. Обратите внимание, что блокировка в контексте Erlang означает блокировку процесса Erlang, а не процесса операционой системы.

В этом руководстве мы покажем, как создать неблокирующий TCP сервер, используя gen_server и gen_fsm, которые предоставляют контроль над поведением приложения и полностью удовлетворяют принципам OTP.

Читателю, который не знаком с OTP, рекомендуется обратить внимание на руководство Джо Армстронга о том, как построить отказоустойчивые сервера с использованием блокирующих вызовов gen_tcp:connect/3 и gen_tcp:acceept/1 без использования OTP.
Читать дальше →

Comet–приложение для Mochiweb c нагрузкой в 1 000 000 пользователей. Часть 1/3

Время на прочтение6 мин
Количество просмотров7.6K
Часть 2
Часть 3

В этом цикле статей я поделюсь тем, что я узнал опытным путем о том, как Mochiweb обрабатывает большое количество открытых соединений, и покажу, как создать Comet-приложение, используя Mochiweb, где каждое соединение зарегистрировано в маршрутизаторе. Мы закончим рабочим приложением, которое в состоянии справиться с 1000 000 параллельных соединенией, и узнаем, как много памяти нам для этого потребуется.

В части первой:
• Создание простого Comet — приложение, которое посылает клиентам сообщение каждые 10 секунд.
• Настройка ядра Linux для поддержки большого количества соединений.
• Создание тестирующей утилиты для создания большого количества соединений.
• Определение необходимого количества памяти.

Следующие части этого цикла расскажут, как построить реальную систему, покажут дополнительные уловки, чтобы уменьшить использование памяти, и содержат тесты с 100 000 и 1 000 000 параллельных соединений.

Предполагается, что Вы знакомы с bash, и немного с Erlang.
Читать дальше →

Hackday в Москве

Время на прочтение1 мин
Количество просмотров677
Макс Лапшин, мейнтейнер erlyvideo (http://erlyvideo.org/), предлагает провести hackday в Москве в эту субботу, 13 марта.

Всем привет. У меня есть желание в эту субботу (13 марта 2010)
провести в Москве т.н. hackday.

По erlyvideo.org есть задача на несколько часов работы:
github.com/erlyvideo/erlyvideo/issues/issue/33

Задачка ограниченная и изолированная от erlyvideo, поэтому может быть
интересная как образовательная по эрлангу для
тех, кто не имеет опыта, а со стороны тех, кто уже давно пишет было бы
хорошо услышать замечания.

Формат предполагается такой, что я могу заняться этой задачей где-то в
публичном месте, у остальных участников
мероприятия будет возможность оперативно задать вопрос или
присоединиться в чём-то.

Вопросы такие:
1) есть ли интерес к этой теме?
2) есть ли интерес к такому формату?
3) где такое проводить? Несмотря на лучшую хреновуху в городе, Гоголь
плохо подходит из-за шума и конфигурации столов, больше пригодной для
хреновухи.

Пока из группы ror2ru 2-3 желающих прийти, зато много желающих
присоединиться онлайн, поэтому я наверное организую
трансляцию рабочего стола с чатиком


Подробности здесь

Встречайте, http://erlanger.ru/

Время на прочтение1 мин
Количество просмотров1.3K
Встречайте, erlanger.ru

Почти три года тому назад у Кирилла Заборского (Qrilka) и Олега Тайкало (mirrorer) появилась мысль, что неплохо было бы начать перевод документации по Эрлангу на русский язык. У меня тогда как раз намечались свободные вычислительные мощности и я легко поддался на уговоры разместить вики с переводами у себя на сервере.

Время шло. Перевод шел с разной скоростью, обрастал такими вещами, как например, переводами man-страниц, и я на свою беду решил снабдить сайт еще и новостями из мира Erlanga. Это было два с половиной года тому назад.

За два с половиной года набралось ни много ни мало 500 новостей (а если бы я не был ленивым, то их было бы в полтора раза больше :) ). Организовалось достаточно активное русскоязычное сообщество в Google Groups (в первую очередь благодаря «хозяину» группы Максиму Трешкину(zerthurd)) и в Jabber'е (тоже спасибо Максиму)

В общем, жизнь у русскоязычных Эрлангистов бьет ключом.

Я посчитал, что негоже нам всем ютиться на erlanger.dmitriid.com и решил еще в январе 2009-го перенести сайт на подобающий домен. Всего год спустя необходимость поборола лень и вот — встречайте, erlanger.ru

misultin — легкий встраиваемый веб-сервер на Erlang

Время на прочтение1 мин
Количество просмотров4.2K
image Этим летом в полку легких веб-серверов на Эрланге прибыло. Roberto Ostinelli опубликовал свою разработку — misultin. Это библиотека для создания легких быстродействующих HTTP-серверов. В этом плане проект напоминает mochiweb, но акцент еще больше сделан на скорость. По тестам автора misultin обгоняет mochiweb примерно на 50-60% при одновременной работе с 100-200 клиентами.
Функциональность пока беднее, но присутствуют базовые вещи для создания сервисов: отправка простых ответов, файлов, поддержка RESTful, удобная отправка ответов по частям (стриминг). Автор планирует далее развивать проект добавлять новые возможности.

Коллеги, возмножно, кто имел дело с данной библиотекой? Какие отзывы?

>-|-|-(°>

Ближайшие события

Ускоряем работу Erlang системы без замедления разработки

Время на прочтение2 мин
Количество просмотров2.3K
Недавно появилась возможность использовать С для написания модулей Erlang систем (это по-моему удобнее любого из предложенных здесь методов). Возможно вы не знали о возможности использовать Haskell в связке с Erlang. Haskell очевидно не панацея и действительно критические участки кода вероятно всё равно придётся переписывать на С, но Haskell предлагает строгую типизацию и сокращение обьёма кода по сравнению с С. Я думаю что проще переписывать код с Erlang на Haskell чем на С, потому что оба языка функциоанльные. Haskell быстрее Erlang благодаря статической типизации и умной системе выведения типов. Предлагаю вашему вниманию вольный перевод статьи о Haskell/Erlang-FFI.
Читать дальше →

Erlang/OTP R13B03

Время на прочтение1 мин
Количество просмотров946
Вышел долгожданный релиз Erlang/OTP R13B03

Главное в релизе:
Native Implemented Functions (NIFS) (см. новость, пример использования)
— основная ветка исходников Эрланга будет дублироваться на GitHub'е

А так же:
— Изменился формат документации (исчезли фреймы, содержимое теперь должно нормально индексироваться поисковиками)



via erlang.dmitriid.com

Erlang User Conference 2009 in Stockholm, Sweden

Время на прочтение1 мин
Количество просмотров945
12 ноября 2009 года состоялась 15 Международная Конференция разработчиков Erlang.
Место проведения — «Астория», Nybrogatan 15, 114 39 Стокгольм (Швеция).
Вашему вниманию хотелось бы представить фото и презентации.

Erlang User Conference 2009 in Stockholm

All Photos
All Talks

Далее под хабракат-ом представлены список выступлений и ссылки на презентации.
Читать дальше →

RabbitMQ: Введение в AMQP

Время на прочтение2 мин
Количество просмотров57K
Построение больших и сложных систем всегда связано с решением проблем обмена данными между различными их узлами. Дополнительные трудности вносят такие факторы, как требования к отказоустойчивости, географическое разнесение подсистем, наличие узлов, взаимодействующих сразу с несколькими другими. Не всегда удобно использовать пресловутую систему клиент-сервер, да и архитектура точка-точка может оказаться не самым подходящим представлением связей.

Читать дальше →

ASN.1 и Erlang

Время на прочтение2 мин
Количество просмотров6.1K
В давние-предавние времёна, когда компьютеры были большими, а инженеры дальновидными, когда дух маркетологов был неведом рыцарям битов и терминалов, в одном царстве-государстве, у Калинового моста, собрались эти бравые мужи и решили придумать способ представления прозвольных структур данных для передачи их по сети, чтобы их прекрасные дамы могли общаться между собою по телефону и не отвлекали их от решения проблем насущных. Так как маркетологов в тех краях было мало, способ получился изящным и потребляющим мало ресурсов на кодирование/декодирование. И нарекли они его ASN.1, или коротко — X.208.
Что же случилось дальше?

Введение в gen_fsm: Банкомат Erlybank

Время на прочтение9 мин
Количество просмотров5.1K
Предыстория
Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)
Введение в gen_server: «Erlybank»

Это вторая статья из серии «Введение в OTP». Рекомендую вам прочитать первую статью, в которой говорится о gen_server и закладываются основы нашей банковской системы перед тем, как читать эту. Если вы быстро схватываете, можете посмотреть завершенную версию сервера и двигаться дальше.

Сценарий: Мы поставили ErlyBank сервер заказчикам, и они остались очень довольны. Но на дворе 21 век, и они хотят также безопасный и простой в использовании банкомат, поэтому они попросили нас расширить наш сервер и создать программное обеспечение для банкомата. Пользовательские аккаунты должны быть защищены 4-цифровым ПИН-кодом. В банкомате можно залогиниться с помощью ранее созданного аккаунта, сделать депозит или снять деньги со счета. Делать красивый интерфейс не требуется, этим занимаются другие люди.

Цель: Сначала мы расширим сервер, добавив поддержку ПИН-кода для аккаунтов и авторизации через ПИН-код. Потом мы будем использовать gen_fsm чтобы создать бэкенд банкомата. Проверка данных будет проводиться на стороне сервера.
Читать дальше →

Введение в gen_server: «Erlybank»

Время на прочтение8 мин
Количество просмотров13K
Предыстория
Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

Это первая статья из цикла статей, описывающих все концепции, которые относятся к Erlang/OTP. Чтобы вы могли найти все эти статьи в дальнейшем, они маркируются специальным тегом: Otp introduction(здесь я сделал ссылку на теги хабра). Как обещано во введении в OTP, мы будем создавать сервер, обслуживающий фейковые банковские аккаунты людей в «Erlybank» (да, я люблю глупые имена).

Сценарий: ErlyBank начинает свою деятельность, и руководителям необходимо встать с правильной ноги, создав масштабируемую систему для управления банковскими аккаунтами их важной базы покупателей. Услышав про мощь Erlang, они наняли нас сделать это! Но чтобы посмотреть, на что мы годны, они сначала хотят увидеть простенький сервер, умеющий создавать и удалять аккаунты, делать депозит и изъятие денег. Заказчики хотят только прототип, а не что-то, что они смогут запустить в производство.

Цель: мы создадим простой сервер и клиент, используя gen_server. Так как это просто прототип, аккаунты будут храниться в памяти и идентифицироваться по имени. Никакой другой информации для создания аккаунта будет не нужно. И конечно же, мы сделаем проверку для операций депозита и изъятия денег.

Примечание: я полагаю, что у вас уже есть начальные знания синтаксиса Erlang. Если нет, то рекомендую прочитать краткое резюме по ресурсам для начинающих, чтобы найти тот ресурс, где вы сможете изучить Erlang.

Если вы готовы, жмите «Читать дальше», чтобы начать! (Если вы уже не читаете всю статью целиком:) )

Читать дальше →

Вклад авторов