Pull to refresh
  • by relevance
  • by date
  • by rating

Открыта регистрация участников на Международную конференцию по функциональному программированию

Lisp *Erlang/OTP *Haskell *Functional Programming *Conferences


ICFP 2020 — двадцать пятая конференция под эгидой ACM SIGPLAN. В этом году конференция будет проводиться онлайн, и все события, проходящие в её рамках, будут онлайн.


Соревнование ICFP по программированию будет проводиться с 17 июля по 20 июля 2020 года (то есть, уже через два дня).


Сама конференция будет проходить с 24 по 26 августа 2020, и укладываться в два тайм-слота. Первый слот будет проходить с 9:00 до 17:30 по времени Нью-Йорка, и будет включать как технические, так и социальные мероприятия. Второй тайм-слот будет проходить с 9:00 до 17:30 по Пекинскому времени, на следующий день, и будет с незначительными вариациями повторять содержимое предыдущего дня, включая технические и социальные мероприятия.

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 972
Comments 2

Исследование экосистемы Elixir в СНГ 2020 и анонс очередного Elixir Meetup Online

Functional Programming *Conferences Elixir/Phoenix *

Первая хорошая новость: мы анонсируем третий онлайн митап по Elixir!

Митап пройдет уже в этот четверг, 5 ноября, в 19:00 по московскому времени. Цель — как и всегда: обьединить все международное (но русскоязычное) сообщество программистов на Elixir/Erlang/OTP на одном мероприятии, послушать про тренды и конечно же нетворкинг (в этот раз приготовили для нетворкинга кое-что новенькое!).

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 1.2K
Comments 0

Интервью с программистами Twitter (видео)

Instant Messaging *
Роберт Скобл встретился с разработчиками IM-системы нового поколения и основательно с ними потолковал (видео MP4, 137 МБ; 37 мин).

В компании Twitter работает меньше десяти человек, включая офис-менеджера Крисси. Разговор происходит на фоне празднования дня рождения веб-мастера проекта. Несмотря на праздничную атмосферу, сооснователь и креативный директор компании Биз Стоун (Biz Stone), а также программисты Бритт Сельвителль и Алекс Пейн рассказали много интересного о том, для чего создан Twitter и кто именно его придумал, на каких технологиях спроектирована и работает система (MySQL, Jabber, Ruby on Rails и Erlang), о проблемах масштабирования, о роли твиттера во время стихийных бедствий, о твиттере на маках (программа Spaz) и т.д.

Бритт Сельвителль, разработчик бэкенда Twitter
Краткое содержание подкаста
Total votes 24: ↑21 and ↓3 +18
Views 1.2K
Comments 22

Amazon SimpleDB: новый сервис для веб-стартапов

Lumber room
Компания Amazon планомерно расширяет линейку веб-сервисов Amazon Web Services, которые позиционируются в качестве технической инфраструктуры для веб-стартапов. Хорошо известны хостинг S3 (Simple Storage Service) и система распределенных вычислений EC2 (Elastic Compute Cloud). Теперь в этом ряду появился ещё один сервис — СУБД Amazon SimpleDB. После длительного периода разработки она открылась, наконец, для ограниченного бета-тестирования (по приглашениям).

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

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

Стоимость SimpleDB составит 14 центов за один час машинного времени (средняя производительность сервера на базе Intel Xeon 1,7 ГГц). Гигайбайт трафика стоит 10 центов, хранение каждого гигабайта — $1,5 в месяц.
Total votes 22: ↑21 and ↓1 +20
Views 846
Comments 5

Map/Reduce своими руками — Apache CouchDb

Website development *
Логотип CouchDb Предупреждаю — мой взгляд совершенно не претендует на какую бы то ни было объективность. Но реляционные базы данных меня никогда, мягко говоря, не вдохновляли.

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

С другой стороны, в большинстве случаев, когда речь идет о десктопных (или веб-) приложениях, где не нужно ворочать миллионами примитивных записей,  а приложение работает с относительно высокоуровневыми, сложными объектами, суть «дизайна и проектирования баз данных» заключается в повторении двух действий:

Читать дальше →
Total votes 71: ↑69 and ↓2 +67
Views 5.3K
Comments 61

What's all this fuss about Erlang?

Erlang/OTP *
Translation
by Joe Armstrong

Никто не в состоянии предсказывать будущее — но я сделаю несколько обоснованных предположений.

Предположим, что Intel правы, что их проект Keifer выстрелит. Если это случится, то 32-х ядерные процессоры появятся на рынке не позже 2009-2010.

Ничего удивительного здесь нет. Sun уже продает восьмиядерные Niagara с 4-мя «hyperthreads» на каждом ядре, что эквивалентно 32-ум ядрам.

Это разработка, которая осчастливит программистов на Erlang. Они 20 лет ждали этого события, и теперь настало время расплаты.

Хорошие новости для Erlang-программистов:

На N-ядерном процессоре ваша программа будет работать в N раз быстрее.

Читать дальше →
Total votes 77: ↑73 and ↓4 +69
Views 2.8K
Comments 271

Всё, что вы хотели знать о Singularity, но боялись спросить

Programming *
Translation


Мне бы хотелось написать что-нибудь про Microsoft Singularity. Это очень клёвая штука, и в IT сегодня все говорят про это. Вот обзор Singularity для тех, кто не хочет читать официальные публикации.


читать дальше про микроядерность, виртуальную память и глючные драйверы
Total votes 149: ↑146 and ↓3 +143
Views 6.5K
Comments 197

Экстренная реанимация epmd

Erlang/OTP *
(Проблема, по всей видимости, чрезвычайно экзотическая, но в плане «как оно внутри устроено» достаточно познавательная.)

Вот, допустим, работает у вас приложение, написанное на Эрланге (ну, скажем, тот же ejabberd). Давно работает, хорошо работает, но в один прекрасный день вы пытаетесь запустить управляющий скрипт (ejabberdctl, соответственно), а он вам выдает «nodedown» или еще что-нибудь страшное в этом духе, мол, не отзывается никто. При этом само приложение прекрасно отзывается на все клиентские запросы и слыхом не слыхивало о том, что оно down. По внезапному наитию вы запускаете epmd -names и — о, ужас! — получаете пустой список.

Программы на Эрланге используют для связи между собой нотацию node@host, физически же каждый узел (читай — системный процесс) открывает для этого случайный высокий порт. Задача сервиса epmd — связать между собой логическую адресацию по имени и физическую адресацию по номеру порта. Своего рода аналог DNS, с той разницей, что без реестра epmd кластер на Эрланге разваливается на кучку отдельных глухонемых узлов — что у нас только что по какой-то загадочной причине и произошло. Можно, конечно, начать искать виновных, но сначала все-таки неплохо бы поднять систему на место.

Что в такой ситуации делать? Можно, конечно, просто насильно перезапустить приложение, но, с одной стороны, клиенты отвалятся, с другой, такой красивый uptime жалко… Вот если б можно было как-нибудь восстановить реестр на живой системе, а?..

Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 7K
Comments 12

Erlang. Что это, зачем, как и для кого.

Erlang/OTP *
Статья короткая, если понравиться, попробую осветить этот язык программирования подробнее.

Что



Erlang, это функциональный язык программирования с динамической типизацией, главной особенностью которого является программирование на уровне отдельных процессов(почти аналог threads в других ЯП), коммуникация между которыми реализуется с помощью MPI(Message Passing Interface).

Читать дальше →
Total votes 81: ↑70 and ↓11 +59
Views 59K
Comments 95

На передовой дизайна виртуальных машин

Erlang/OTP *
Translation
Пока готовится первая статья в обучающей серии об языке Эрланг, решил сделать перевод одного интересного блог-поста. Пост об развитии виртуальной машины Эрланг и целях, которые пытаются достичь его авторы.

Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Views 3.9K
Comments 51

Erlang в Рисоваське, часть 1 — обзор языка

Erlang/OTP *
В этой и последующих статьях (часть 2) я хочу рассказать про язык программирования Erlang/Эрланг, его использование в нашем проекте Рисоваська, а также какие приложения и готовые модули (большинство которых тоже написаны на Эрланге) мы использовали в серверной части.

Поискав на Хабре по теме Erlang/Эрланг, понял, что тема освещена мало, есть всего пара действительно хороших статей на тему языка (например, отличная статья от создателя языка в переводе alex_blank What's all this fuss about Erlang? написанная понятным, доходчивым языком). Именно поэтому хочется остановиться сначала на самом языке и его отличиях от традиционных языков.
Читать дальше →
Total votes 75: ↑71 and ↓4 +67
Views 9.6K
Comments 68

Erlang в Рисоваське, часть 2 — ответы на вопросы

Erlang/OTP *
Данная статья является продолжением цикла статей про язык программирования Эрланг/Erlang и его использование в нашем проекте Рисоваська. В первую очередь я хочу ответить на вопросы заданные в комментариях к первой статье, а вопросов было задано много. Итак продолжим:

Установка Erlang под Windows


Установить Erlang достаточно просто. Сначала скачиваем дистрибутив с официального сайта. Нам нужна последняя на данный момент версия R12B-5, колонка Windows binary (incl. documentation). После инсталляции в меня «Пуск» — «Все программы» появится пункт Erlang OTP R12B и в нем подпункт «Erlang». Если его выбрать, то запуститься безымянная нода вместе с оболочкой (shell) в которой уже можно выполнять эрланговский код, в том числе из моих примеров. Я буду придерживаться названия «нода», так как официального названия в русском языке пока не устоялось, хотя слово «node» и переводиться как «узел».

Вот ссылки про установку Эрланга под Mac OS X и Линукс (на английском).
Читать дальше →
Total votes 47: ↑43 and ↓4 +39
Views 13K
Comments 41

Элементарные типы и операции над ними. Часть I: типы данных, размер, ограничение.

Erlang/OTP *
Строительными кирпичиками любого языка является элементарные типы данных с которыми мы можем работать. Зная их, мы всегда понимаем, что у нас хранится в той или иной переменной, что возвращает та или иная функция. Какие действия мы можем совершить над нашими данными. Это база. Поэтому именно этому я и хотел уделить внимание в данной статье в общем, а так же примерам работы с бинарными данными в частности.

Материал в первую очередь адресую тем кто только начал или хочет начать писать на Erlang-e. Но я постарался максимально полно охватить данный аспект языка и поэтому надеюсь, что написанное будет полезно и более продвинутой аудитории.

Первоначальный материал пришлось разделить на три части, в данной будут рассмотрены базовые типы языка, способы создания базовых типов и потребляемые ресурсы на каждый из типов.
Читать дальше →
Total votes 45: ↑43 and ↓2 +41
Views 10K
Comments 69

Обслуживание тысяч запросов в секунду на примере XBT Tracker

Server optimization *
Недавно проводили тест, результаты которого показали, что одно приложение обрабатывает 2000 запросов в секунду на скромном сервере, где это было не единственной нагрузкой. При этом результат каждого запроса записывается в 3-5 таблиц в MySQL. Честно говоря, меня такой результат удивил, поэтому решил поделиться с хабрасообществом описанием архитектуры этого приложения. Подобный подход применим от баннерных показов до чатов и микроблогов, надеюсь кому-нибудь покажется интересным.

Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.

Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
Читать дальше →
Total votes 69: ↑67 and ↓2 +65
Views 7K
Comments 41

Перевод цикла статей об Erlang автора Mitchell Hashimoto с сайта http://spawnlink.com

Erlang/OTP *
В этом блоге я буду публиковать перевод занимательных статей о написании с нуля приложения на Erlang.
В число рассматриваемых тем будут входить: gen_* behaviors, Supervisor Behavior, Application Behavior и другие.

Оригиналы статей лежат по адресу: http://spawnlink.com

Начало: Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

UPD. Теперь все статьи находятся в Erlang/OTP
Total votes 5: ↑5 and ↓0 +5
Views 2.4K
Comments 2

Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

Erlang/OTP *
Translation
Предыстория

Множество людей ссылается на Erlang как «Erlang/OTP». OTP значает Открытую Телекомуникационную Платформу и представляет из себя не больше, не меньше, набор библиотек, которые поставляются вместе с Erlang. Они состоят из Erlang-интерфейсов(или поведений, behaviours англ.), которые необходимы при написании серверов, конечных автоматов, менеджеров(или диспетчеров) событий. Но это еще не все, OTP также включает интерфейс Application, который позволяет программистам запаковывать их код в одно «приложение». А Supervisor интерфейс дает программистам возможность создавать иерархическое дерево процессов, где в случае, если процесс умрет, то он будет перезапущен.

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

Почему мне следует узнать об Erlang/OTP?


Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 5.7K
Comments 13

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

Erlang/OTP *
Translation
Предыстория
Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

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

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

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

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

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

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 11K
Comments 28

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

Erlang/OTP *
Translation
Предыстория
Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)
Введение в gen_server: «Erlybank»

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

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

Цель: Сначала мы расширим сервер, добавив поддержку ПИН-кода для аккаунтов и авторизации через ПИН-код. Потом мы будем использовать gen_fsm чтобы создать бэкенд банкомата. Проверка данных будет проводиться на стороне сервера.
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Views 4.4K
Comments 4

ASN.1 и Erlang

Erlang/OTP *
В давние-предавние времёна, когда компьютеры были большими, а инженеры дальновидными, когда дух маркетологов был неведом рыцарям битов и терминалов, в одном царстве-государстве, у Калинового моста, собрались эти бравые мужи и решили придумать способ представления прозвольных структур данных для передачи их по сети, чтобы их прекрасные дамы могли общаться между собою по телефону и не отвлекали их от решения проблем насущных. Так как маркетологов в тех краях было мало, способ получился изящным и потребляющим мало ресурсов на кодирование/декодирование. И нарекли они его ASN.1, или коротко — X.208.
Что же случилось дальше?
Total votes 30: ↑29 and ↓1 +28
Views 4.9K
Comments 66