Как стать автором
Обновить
0.67

Erlang/OTP *

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

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

erlanger.ru едет на Erlang Factory 2011 в Лондоне

Время на прочтение 1 мин
Количество просмотров 637
erlanger.ru едет на Erlang Factory 2011 в Лондоне.Так как программа конференции уже объявлена, планиурется посетить следующие презентации (из тех, что пересекаются по времени):
Читать дальше →
Всего голосов 7: ↑4 и ↓3 +1
Комментарии 13

Архитектура памяти: Erlang против Java

Время на прочтение 4 мин
Количество просмотров 12K
Я прочитал очень-очень интересную статью «Стратегии управления памятью для Erlang VM». Она была написана в качестве диссертации Джеспером Вильхельмсоном. Я подумал, что было бы неплохо обсудить различия между управлением памятью в Erlang и Java VM от Oracle.
Читать дальше →
Всего голосов 46: ↑42 и ↓4 +38
Комментарии 40

sasl:overload. Или — «не кладите в тарелку больше, чем она может вместить»

Время на прочтение 2 мин
Количество просмотров 1.5K
Эрланг отличная платформа для построения серверов, и в его стандартной библиотеке предусмотрены многие средства заметно облегчающие жизнь разработчика.

Одной из типовых задач разработчика серверов промышленного уровня -является контроль загрузки. То есть наш сервер должен вести себя адекватно даже если запросов приходит больше, чем может обработать сервер (на нашем железе).

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

Как это делается?
Читать дальше →
Всего голосов 37: ↑36 и ↓1 +35
Комментарии 20

Erlang Web

Время на прочтение 4 мин
Количество просмотров 6.7K
Erlang Web — платформа с открытым исходным кодом для приложений, основанных на протоколе HTTP. В настоящий момент поддерживаются веб-серверы INETS и Yaws. Erlang Web разрабатывался в Erlang Training & Consulting Ltd. в течение прошлых трех лет и используется во многих коммерческих и открытых проектах.

Применение


Проекты, использующие Erlang Web:

Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 19

Истории

Elixir

Время на прочтение 4 мин
Количество просмотров 40K
Erlang является уникальной по своим возможностям платформой, и не смотря на это, язык до сих пор является экзотикой. Причин существует несколько. Например, тугая арифметика, непривычность синтаксиса, функциональность. Это не недостатки. Это просто вещи, с которыми большинство программистов не могут или не хотят работать.

Несколько дней назад Jose Valim опубликовал в своем репозитории проект языка, построенного поверх Erlang. Этот язык обладает простой объектной моделью и Ruby-подобным синтаксисом. Под катом выжимки из документации и видео, демонстрирующее простой пример.

disclaimer: %username%, прежде чем делать выводы насчет того, что умеет, а что не умеет elixir, просьба глазами пройтись хотя бы по readme.

Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 81

Logging. «Из коробки»

Время на прочтение 8 мин
Количество просмотров 6.1K
Ведение логов применяется в каждом программном продукте, дожившем до стадии продакшена. Erlang предоставляет программистам целую экосистему, которая включает и механизмы слежения за приложением. В этой части я рассмотрю именно функционал «из коробки».
Читать дальше →
Всего голосов 30: ↑26 и ↓4 +22
Комментарии 5

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

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

Преамбула


В предыдущих частях (часть 1, часть 2) мы полностью рассмотрели механизм создания двунаправленных связей между процессами и процесс распространения ошибок. В данной статье будет разобран, достаточно простой, механизм мониторов и ещё несколько аспектов касающихся работы с процессами.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 5

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

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

Преамбула


В первой части данной статьи мы рассмотрели механизм связей между процессами и процесс распространения ошибок. Сегодя давайте рассмотрим один случай, который не был освещен в предыдущей части – постреляем по процессам сигналом kill.
Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 11

Up the pool

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

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

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

Свел видео и презентацию в единый ролик, а также записал стенограмму Стас Фомин (человек и пароход локомотив :)).
Читать дальше →
Всего голосов 77: ↑71 и ↓6 +65
Комментарии 82

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

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

0 Преамбула


Согласитесь приятно, когда в хозяйстве все под контролем и все в порядке, каждая вещь стоит на своем месте и четко выполняет свое вселенское предназначение. Сегодня мы рассмотрим вопросы организации порядка в огромном множестве процессов эрланга. Базовые понятия о процессах эрланга можно прочитать в этом посте.
Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 4

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

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

0 Преамбула


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

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

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

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

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

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



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

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

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн

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

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

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

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 мы можем протестировать работу приложения в условиях, близких к промышленным.
Реализация маршрутизатора сообщения
Читать дальше →
Всего голосов 39: ↑35 и ↓4 +31
Комментарии 12

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

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

Вступление


Предполагается, что читатель этого руководства, уже знаком с 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.
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 10

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

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

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

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

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

Предполагается, что Вы знакомы с bash, и немного с Erlang.
Читать дальше →
Всего голосов 50: ↑50 и ↓0 +50
Комментарии 67

Hackday в Москве

Время на прочтение 1 мин
Количество просмотров 641
Макс Лапшин, мейнтейнер 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 желающих прийти, зато много желающих
присоединиться онлайн, поэтому я наверное организую
трансляцию рабочего стола с чатиком


Подробности здесь
Всего голосов 17: ↑12 и ↓5 +7
Комментарии 2

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

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

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

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

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

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

Я посчитал, что негоже нам всем ютиться на erlanger.dmitriid.com и решил еще в январе 2009-го перенести сайт на подобающий домен. Всего год спустя необходимость поборола лень и вот — встречайте, erlanger.ru
Всего голосов 71: ↑55 и ↓16 +39
Комментарии 27

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

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

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

>-|-|-(°>
Всего голосов 37: ↑31 и ↓6 +25
Комментарии 32

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