Рубрика «Erlang/OTP» - 12

В этой статье я расскажу о том, как мы подружили Cache + Erlang, и зачем нам это нужно. СУБД Cache была выбрана в качестве хранилища данных. Также мы создали и эксплуатируем MCA(Middleware for Cache Applications) — промежуточное программное обеспечение, обеспечивающее конкурентную модель взаимодействия Erlang и Cache.

Для взаимодействия Erlang и Intersystems Cache реализованы возможности:

  • Обрабатывать в Cache сообщения из Erlang, транслируя Erlang tuples (внутренний древовидный формат данных Erlang) в глобалы Cache.
  • Посылать из Cache сообщения процессам Erlang, транслируя глобалы Cache в Erlang tuples.

Разработанное MCA состоит из трёх основных компонент:

  • Message Dispatcher(MD) — управляет обменом сообщениями в конкурентных условиях между различными Erlang-node(EN) и Cache-процессами, обеспечивает кэширование сообщений по определенным правилам. Запускается в соответствующем EN.
  • C-node — обеспечивает подгрузку С/C++ библиотек и обмен сообщениями между ними, взаимодействие системы с shared-memory, EN, CallIn/CallOut (функциональностью, реализованной в Cache на языке С) и т.д. На данный момент к С-node, для веб-приложений, c использованием Cache, нами подключены библиотеки для поддержки XSLT преобразования, обработки регулярных выражений.
  • Porte – шлюз обмена сообщениями (Messaging Gateway) c MD для Cache. Запускается как отдельный background job, который будем называть Porte-job(PJ).

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

Представьте, есть две комманды разработчиков: одни пишут на C#, другие — на Эрланге.
Первые хотят использовать функции из продуктов вторых.
Отлично, надо договориться об API, реализовать его и выдать документацию Шарповым ребятам.
На основе чего будет реализован этот API?
Подумав, пришли к выбору между SOAP и REST.

Поговорим о поддержке данных технологий нашими платформами.

C REST всё понятно: нужны инструменты для работы с HTTP и XML/JSON.
Читать полностью »

Статья для людей, только начинающих знакомиться с эрлангом: как написать простой comet сервер.

Готовый код здесь: github.com/maxlapshin/comet

Описание

Комет-сервер будет написан с использованием cowboy, tinymq, и куска жабаскрипта.

Код выложен на гитхабе с тегами. Основные этапы помечены тегами, можно откатиться, чтобы посмотреть, что именно было сделано в тот или иной момент.

Сама статья пишется параллельно с кодом, что заметно из истории в гите.

Логика такая: по http постим сообщение на сервер, оно попадает в очередь сообщений, откуда его выгребает клиент через long-poll запрос.

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

Сегодня вышел Erlang плагин для IntelliJ IDEA.
Он бесплатен, доступен как в Community Edition, так и в родственных продуктах: RubyMine, PyCharm, WebStorm и т.д.

Основные возможности

  • Подсветка синтаксиса
  • Автодополнение имен функций, переменных, записей и ключевых слов
  • Поиск по коду для функций, модулей, переменных и записей
  • Базовые рефакторинги: rename и safe delete
  • Навигация по коду: structure view и go to declaration
  • Просмотр докумендации для функций и модулей (edoc формат)
  • Базовый форматтер
  • Подсветка unresoved переменных и записей

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

Когда я первый раз услышал об объектно-ориентированном программировании — сразу отнёсся к нему скептически. Честно говоря, даже не знаю, почему. Просто оно показалось мне каким-то неправильным. Но ООП очень быстро стало популярным (почему — я объясню ниже) и критика в его адрес превратилась в этакую «ругань в церкви». А объектно-ориентированность стала обязательной составляющей любого уважаемого языка программирования.

С ростом популярности Erlang часто стали задавать вопрос «— А Erlang — объектно-ориентированный?». Правильный ответ был бы «— Да что вы, нет!». Но мы не могли так заявлять в полный голос, поэтому пришлось выкручиваться. Мы придумали несколько достаточно нетривиальных ответов, которые бы представляли Erlang типа-объектно-ориентированным языком (для тех, кто больше всего тянет руку с этим вопросом), но при этом и не объектно-ориентированным для тех, кто на самом деле в теме.
Читать полностью »

Вступление

В статье мы попробуем написать игру крестики-нолики на поле размером 10x10, игрока (человека) с ботом (компьютер) с возможностью игры через браузерЧитать полностью »

в 13:23, , рубрики: erlang, Erlang/OTP, метки:

Иногда не хватает в Erlang этой интересной особенности, вот и захотелось мне в заиметь эту фичу.
Читать полностью »

Не так давно наткнулся на одну интересную возможность в Erlang. Если вместо названия модуля при вызове функции передать кортеж, где первый элемент — название модуля, то будет вызвана функция
арностью на единицу больше вызываемой и последним аргументом будет тот самый кортеж.

Пример:

-module(my_module).

-export([test/2]).

test(Arg1,{?MODULE,Arg2}) ->
  io:format("Arg1:~p~nArg2:~p~n",[Arg1,Arg2]).

Можно вызвать как:

my_module:test(1,{my_module,2}).

или так

{my_module,2}:test(1).

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

Не так давно наткнулся на одну интересную возможность в Erlang. Если вместо названия модуля при вызове функции передать кортеж, где первый элемент — название модуля, то будет вызвана функция
арностью на единицу больше вызываемой и последним аргументом будет тот самый кортеж.

Пример:

-module(my_module).

-export([test/2]).

test(Arg1,{?MODULE,Arg2}) ->
  io:format("Arg1:~p~nArg2:~p~n",[Arg1,Arg2]).

Можно вызвать как:

my_module:test(1,{my_module,2}).

или так

{my_module,2}:test(1).

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

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

Подробнее о проблеме 1000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений

Как с проблемой 1000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Pythin (ws4py)?

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


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