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

Erlang/OTP *

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

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

Riak и Riak Search Yokozuna: Первое знакомство

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


В статье в ознакомительных целях рассматривается процесс создания простого хранилища простых текстовых документов на базе Riak версии 2.1.1 и организация поиска по ним с помощью Riak Search (Yokozuna). В качестве клиентской библиотеки используется официальный клиент для Erlang.

Для начала представим, что у нас есть огромное количество таких документов:
  • title — заголовок;
  • body — содержимое;
  • tags — тэги;
  • created_at — время создания;
  • smiles — количество смайликов (плюсиков, лайков, как хотите)

и огромное количество пользователей, желающих их изменять. Кому интересно, начнём.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Пишем на JS в функционально-декларативном стиле

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


Введение


Я люблю функциональные языки за их простоту, ясность и предсказуемость. Пишу в основном на Elixir / Erlang / OTP, пробовал другие языки, но Erlang с его акторами пока мне гораздо ближе чем например Lisp или Haskell. Как известно Erlang == web, а у чего-либо написанного для веба порой бывает клиентский веб-интерфейс: html, css, js — содержимое. Увы js это стандарт современного веба, для него есть библиотеки почти под любую задачу почти на все случаи жизни, да и это более-менее единственное доступное средство что-то выполнить в браузере на стороне клиента. Поэтому нам всё-таки нужен js. Сперва мне подумалось «Лямбды и функции высшего порядка есть, значит писать на js будет просто. Выучу синтаксис и буду писать так же как пишу в Erlang/Lisp/Haskell». Как же я ошибался.
Читать дальше →
Всего голосов 32: ↑22 и ↓10+12
Комментарии31

Немного о синтаксисе Erlang

Время на прочтение4 мин
Количество просмотров17K
Изначально я планировал выпустить этот опус как дополнение к книге “Learn You Some Erlang”, однако его содержание больше соответствует редакционному материалу, нежели хорошему справочному документу, поэтому я решил просто написать об этом в блоге.

Многие новички в мире Erlang успешно изучают его и начинают играться, не вступая с ним в тесное знакомство. Я прочитал много жалоб именно на синтаксис и эти “козьи шарики” (ant turds — ориг.) — «веселый» способ называть символы ,, ;, .. Например, «Как же они бесят», а также многое другое.

Я упоминал в книге, что Erlang берет свое начало из Prolog. Это дает нам понять, откуда берутся все эти знаки препинания, но это, увы, не заставляет людей проникнуться любовью к подобной пунктуации. И правда, почему-то никто не говорит мне: «А-а! Prolog! Что ж ты раньше не сказал!» Ввиду этого я предлагаю три возможных способа человеческого чтения кода на Erlang, дабы сделать мир добрее.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии17

Наш доклад на «Стачке»: «Как избавиться от persistent database зависимости»

Время на прочтение5 мин
Количество просмотров11K
10-11 апреля наша команда приняла участие в крупнейшей в регионах России ИТ-конференции «Стачка», которая прошла в четвертый раз в Ульяновске. ИТ-компании представили свои стенды, где можно было познакомиться с их продуктами, узнать про вакансии, принять участие в конкурсах.

В этом году XIMAD также решил представить стенд со своими продуктами на конференции в связи с развитием мобильной секции. Это профильное для нас направление. Мы прослушали доклады, обменялись опытом с коллегами и ответили на множество вопросов о технологиях, используемых в наших играх.

За два дня на 8 площадках выступили 130 экспертов и в общей сложности прозвучало 150 актуальных докладов по различным направлениям. Наш разработчик Алексей Ключников представил свой доклад на тему “Делаем интерактив в мобильных играх или как избавиться от persistent database зависимости” на примере нашего флагмана Magic Jigsaw Puzzles (2M MAU, 600K DAU и до 50K онлайн-игроков c интерактивным взаимодействием).

Ниже приведен текст его выступления:

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

Истории

Боевой арсенал Erlang разработчика

Время на прочтение4 мин
Количество просмотров22K
Доброе время суток, уважаемая аудитория хабра.

В данной публикации я хотел описать свой опыт перехода с корпоративного Java на Erlang.

Погружения в Erlang в первом приближении

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

После довольно продолжительного времени Java/Python разработки, я решил кардинально изменить сферу деятельность и открыл для себя Erlang.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии19

Система облачной телефонии 2600hz KAZOO

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

Введение


Телекоммуникационный проект KAZOO молодой компании под названием 2600hz (США) уже успел собрать несколько отраслевых наград и используется многими крупными операторами связи.

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

KAZOO — быстро развивающаяся открытая (open-source) платформа виртуальной облачной телефонии, на основе которой можно строить сервисы виртуальных АТС, виртуальные мобильные сети и другие масштабные облачные телекоммуникационные решения операторского класса.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии15

Параллельное программирование для начинающих на ЯП Elixir / Erlang VM на примере задачи «конь Эйлера»

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


Вступление


Чуть больше года назад я сделал очень важный в своей жизни поступок — скачал с сайта Microsoft IDE Visual Studio и написал на языке C++ свою первую в жизни программу, как это ни странно — «Hello, World!». За следующие полгода я прочитал небезызвестную книжку Страуструпа, устроился на работу джуниор С++ разработчиком, попробовал писать на Lua, Python, но каких-либо значительных успехов не добился — мои библиотеки не работали, программы с трудом компилировались и падали в runtime, указатели указывали не на те участки памяти (которая, кстати, всегда куда-то утекала), а попытки использовать больше одного потока (С++11 же!) приводили к порче памяти и дедлокам. О том, как выглядел код, лучше просто промолчать.

К чему это я? К тому, что по моему личному мнению/опыту императивные языки в силу своих особенностей совершенно не подходят начинающим разработчикам. Без знаний промышленных паттернов программирования, каких-то сведений о работе операционной системы и элементарной культуры кода написать что-то сносное на них очень тяжело. Они дают слишком много свободы и пространства для костылей и велосипедов, в то время как функциональные языки жёстко ограничивая разработчика в некоторых вещах оставляют ему не так много возможностей писать плохой код, заставляя думать и развиваться.

Примерно полгода назад я понял, что пора что-то менять, и после получаса поиска в интернете нашёл спецификации ЯП Erlang. В статье автор представлял Erlang как «чудесную таблетку» от всех вышеописанных мою проблем, и в общем-то по большей части он оказался прав. Так я начал программировать на Erlang, а затем и на Elixir.

Elixir Language


Elixir — язык, построенный поверх Erlang, результат компиляции — байткод Erlang VM. От Erlang он выгодно отличается простотой синтаксиса и мощным инструментарием для мета-программирования (люди, знакомые с Lisp сразу узнают quote-unquote конструкции). Соответственно, для использования доступен весь функционал Erlang, любые его модули и, что самое главное — фреймворк OTP.

Типы данных — те же самые, что и в Erlang. Данные — неизменяемые, результат действий с ними — новые данные. В Elixir как и во многих функциональных языках работает принцип «Всё — выражение». Любое выражение вернёт значение.

У ЯП Elixir есть отличный интерпретатор, который устанавливается вместе с языком, в нём можно опробовать примеры.
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии25

Erlang для самых маленьких. Глава 4: Система типов

Время на прочтение4 мин
Количество просмотров13K
imageХороший понедельник, Хабр! Мы продолжаем изучение Erlang для самых маленьких.

В прошлой главе мы разобрались с синтаксисом функций. В этой главе мы познакомимся с системой типов языка.


Узнать больше...
Всего голосов 23: ↑21 и ↓2+19
Комментарии12

Кластерный сервис на Эрланге: от идеи до deb-пакета

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

Задача


Нужно написать настоящий сервис на эрланге, который будет работать в кластере. Кроме того, нужно максимально упростить жизнь тем, кто будет обслуживать сервис.
Требования:
  • У сервиса будет RESTful интерфейс (это модно и современно)
  • основные настройки сервиса должны быть вынесены в маленький файл с понятным синтаксисом
  • сервис должен писать опциональный access-лог
  • сервис должен запускаться через upstart

Для простоты сервис будет представлять собой счетчик, который каждому клиенту выдает увеличивающееся с каждым запросом на 1 целое число (уникальное до перезапуска счетчика).

Технологии


Выберем все самое модное и современное:

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

Программирование Древа Времен

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


Введение


Прочитав статьи TimeCoder — «Путешествия во времени и программирование» [1, 2] я вспомнил свои скромные практические исследования в программировании, связанные с реализацией разветвляющихся миров. Однажды товарищ по работе подкинул мне интересную задачу, но решить я ее до сих пор не смог. Задача о том, как нагрузить станки на производстве. Даже не программисту было понятно, что нужен простой перебор, но я так и не смог придумать подходящую структуру данных для обеспечения вычисляющего алгоритма. Задача из реального мира, поэтому я решил попробовать реализовать в программе реальный мир в той части, который требуется для вычисления задачи. Каждый раз, когда в дальнейших вычислениях стоял выбор между двумя действиями — происходило «создание двух новых миров» с разным решением в каждом. Дальше каждый мир развивался своим путем.

Под катом я расскажу, как развивалась идея, и чем мне помог ерланг. Практика — критерий истины!
Читать дальше →
Всего голосов 55: ↑38 и ↓17+21
Комментарии18

N2O: Erlang Web-фреймворк на WebSockets

Время на прочтение8 мин
Количество просмотров32K
N2O Erlang Framework

ВВЕДЕНИЕ


Данный пост подразумевает хорошее интро в N2O на русском.

Что такое Erlang/OTP Web Framework N2O и в чём его фишка для веб-разработки, можно узнать на странице в github и официальном сайте SynRC. Там всё как вы любите с графиками и презентациями.

А здесь рассмотрим принципы работы фреймворка и поговорим о вечном.
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии24

Erlang. Параметры TCP/IP сокета

Время на прочтение3 мин
Количество просмотров13K
Небольшая шпаргалка по параметрам TCP/IP сокетов в Erlang по-русски. Все взято от сюда:

1) erlang.org/doc/man/gen_tcp.html
2) www.erlang.org/doc/man/inet.html#setopts-2
3) learnyousomeerlang.com/buckets-of-sockets#tcp-and-udp-brotocols
Подглядеть...
Всего голосов 25: ↑24 и ↓1+23
Комментарии0

Вышел Erlang/OTP 17.0

Время на прочтение2 мин
Количество просмотров8.8K
9 апреля вышел мажорный релиз платформы Erlang/OTP 17.0.

Erlang — функциональный язык программирования со строгой динамической типизацией, предназначенный для создания распределённых вычислительных систем.

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии5

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

2048 на Erlang

Время на прочтение15 мин
Количество просмотров22K
imageНаверное на неделю игры 2048 на хабре уже не успеваю, но статья не столько о игре сколько о websocket сервере на Erlang. Небольшая предыстория. Когда начал играть в 2048, то просто не мог прекратить. В ущерб работе и семье. Поэтому принял решение, что играть за меня должен бот. Но загвоздка в том, что игра клиентская, из-за чего не ведется глобальный рейтинг и не так удобно играть без браузера. Поэтому я и решил сделать серверную часть, где был бы рейтинг. И где мог бы играть мой бот без браузера.
Читать дальше →
Всего голосов 40: ↑35 и ↓5+30
Комментарии19

YAWNDB — time series база данных

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


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

Наиболее простым и наглядным способом представления статистических данных является построение графиков. Существует много специализированных программных решений, предназначенных для анализа статистических данных с последующей визуализацией.Мы стали искать подходящий инструмент; основным требованием при этом была высокая производительность. В результате этих поисков… Впрочем, обо всем по порядку. Начнем с небольшого теоретического вступления.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии8

Facebook покупает WhatsApp за $16 млрд

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


Корпорация Facebook известила Комиссию по ценным бумагам о покупке мобильного сервиса передачи сообщений WhatsApp за $16 млрд.

Сделка предусматривает выплату $4 млрд деньгами, $12 млрд акциями и дополнительно $3 млрд опционов на протяжении четырёх лет для удержания немногочисленных сотрудников WhatsApp, среди которых 32 программиста и 0 специалистов по PR и маркетингу. Выделенный пакет — это примерно 7,9% всех акций Facebook и 35% имеющихся денег.
Читать дальше →
Всего голосов 82: ↑66 и ↓16+50
Комментарии123

Erlang для самых маленьких. Глава 3: Базовый синтаксис функций

Время на прочтение6 мин
Количество просмотров22K
imageДоброй ночи, Хабр! Мы продолжаем изучение Erlang для самых маленьких.

В прошлой главе мы рассмотрели как объявлять функции и как объединять их в модули. В этой главе мы рассмотрим синтаксис функций более подробно.


Хм, это интересно...
Всего голосов 31: ↑30 и ↓1+29
Комментарии4

Хекслет: Erlang, логика, операционные системы, Java 2

Время на прочтение3 мин
Количество просмотров18K
Привет, Хабр!

Прошло уже больше полугода с момента старта проекта Хекслет. Напомню: мы проводим бесплатные онлайн-курсы по программированию и смежным дисциплинам. По традиции сегодня мы расскажем про новые курсы.

Статистика


  • Завершено четыре курса (всего – больше 100 уроков)
  • Сейчас в процессе – еще три курса, + запланирован старт двух курсов
  • 19 000 студентов зарегистрировано
  • Они сдали более 450 000 тестов
  • Просмотров лекций – больше 277 000 (не считая подкастов в iTunes и раздачи через битторрент)
  • 444 000 посетителей и 1.6M просмотров страниц


Новые курсы


Erlang / OTP


Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии8

Тестирование Amazon SQS

Время на прочтение8 мин
Количество просмотров6.3K
В сети уже есть несколько обзоров производительности этого решения от Amazon, в этой статье я не преследовал цели проверки уже полученных результатов, меня интересовали некоторые особенности, не рассматриваемые в других источниках, а именно:
  1. в документации сказано, что Amazon старается сохранять порядок сообщений, на сколько хорошо он сохраняется?
  2. как быстро происходит получение сообщения при использовании Long Polling?
  3. насколько ускоряет процесс пакетная обработка?


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

Highly Available кластер RabbitMQ

Время на прочтение6 мин
Количество просмотров72K
Знакомимся с RabbitMQ

Переводы на хабре:
RabbitMQ tutorial 1 — Hello World
RabbitMQ tutorial 2 — Очередь задач
RabbitMQ tutorial 3 — Публикация/Подписка

Сразу дополню некоторые недочеты. И кратко повторю основные термины.

Принцип работы архитектуры использующей rabbitMq

image

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии25

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