Pull to refresh

Введение в 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 6.4K
Comments 13

Настройка сервера для django-проектов с нуля

Django *
Хочу поделиться опытом настройки сервера для django-проектов. Так вышло, что мне часто приходится настраивать с нуля VPS-сервера для запуска на них django-сайтов. Как-то мне в голову пришла идея записать пошагово процесс настройки. Оказалось, что “по бумажке” выполнять эти рутинные операции гораздо проще и быстрее — все нюансы записаны, трудно что-то упустить. Дальше больше — я превратил инструкцию в самостоятельный shell-скрипт — запустил и сервер готов. Я думаю, некоторым python-разработчикам, особенно начинающим, будет полезно ознакомиться с содержимым скрипта. С некоторыми доработками вы, возможно, захотите использовать его в своей практике.
Читать дальше →
Total votes 111: ↑100 and ↓11 +89
Views 40K
Comments 56

Использование контролёров для того, чтобы удержать ErlyBank на плаву

Erlang/OTP *
Translation
Это четвертая статья в серии «Введение в ОТП». Если вы только что присоединились к нам, рекомендую начать с первой части, в которой говорится о gen_server и закладывается фундамент нашей банковской системы. Если же вы способный ученик, можете взглянуть на готовые к настоящему моменту модули: eb_server.erl, eb_event_manager.erl, eb_withdrawal_handler.erl и eb_atm.erl.

Сценарий: Момент, который нам нравится в банках и банкоматах, заключается в том, что они всегда на том же месте. Используя банкомат, мы можем снять или положить деньги когда захотим, 24 часа в сутки. Или пойти в любое отделение банка, когда оно открыто, зная, что будем иметь полный доступ к нашим финансам. Чтобы гарантировать это, необходимо быть уверенным в том, что наша система автоматизации ErlyBank всегда остается рабочей: процессы должны быть запущены постоянно. ErlyBank поручил нам реализовать эту цель. Стопроцентный uptime! (Или настолько близкий, насколько мы сможем обеспечить)

Результат: Используя контролёр (supervisor) OTP, мы создадим процесс, чья обязанность — следить за запущенными процессами и удостовериться, что они активны.
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Views 2.2K
Comments 19

Хостинг mercurial репозиториев с помощью nginx, gunicorn и supervisor

Version control systems *
imageСпособов хостинга mercurial репозиториев достаточно, но я сочинил именно такой вариант по следующим причинам:
  1. nginx: мало кушает, быстро работает — скорость
  2. supervisor: мониторит процесс, перезапускает если что — надёжность
  3. gunicorn: wsgi, большие возможности по настройке — эффективность
Кроме того, т.к. я разрабатываю на django, и сайты запускаю под этой же связкой, есть и четвёртая причина — унификация, а она очень полезная вещь.

Если вас заинтересовала тема, то конкретные инструкции и конфиги — под катом.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 3.8K
Comments 18

Укращение Демонов или инфраструктура для Gearman

Website development *
Tutorial
image

Gearman — фреймворк для распределения задач. Подробней о нем можно почитать: Здесь или Здесь. Этот инструмент — находка для решения целого ряда задач. Но при его эксплуатации на боевых серверах мы столкнулись с некоторыми проблемами, решением которых я хочу поделится:
— Как автоматически запускать демонов и следить за их здоровьем?
— Как запустить несколько инстансов воркеров?
— Куда демоны будут писать сообщения, предназначенные для вывода на экран?
— А как следить, чтобы демоны не отвлекались на грудастых гаргулий, а работали. словом следить за нагрузкой.
Для этого есть довольно удобные инструменты:

Читать дальше →
Rating 0
Views 13K
Comments 2

Сделай сам веб-сервис с асинхронными очередями и параллельным исполнением

Website development *Open source *Python *Machine learning *Development for Linux *
Tutorial

rq Каждый должен делать свою работу качественно и в срок. Допустим, вам нужно сделать веб-сервис классификации картинок на базе обученной нейронной сети с помощью библиотеки caffe. В наши дни качество — это асинхронные неблокирующие вызовы, возможность параллельного исполнения нескольких заданий при наличии свободных процессорных ядер, мониторинг очередей заданий… Библиотека RQ позволяет реализовать все это в сжатые сроки без изучения тонны документации.


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

Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 26K
Comments 20

Использование Node.js технологии как платформу для оптимизации серверных мощностей

Node.JS *
Sandbox
image

Web-программирование стремительно развивается и появляется необходимость выбора между сформировавшимися языками такими как PERL, C++ и Java и современными веб-ориентированными или прототипно-ориентироваными языками как например Ruby или Go. Один из таких языков является JavaScript. Много лет присутствовало мнение что JavaScript это клиентоориентированный язык программирования и будущего у него нет, но после того как компания Google выпустила стабильную версию JavaScript-движка V8 появился Node.js и его стали использовать как совершенно новой идеи, серверного JavaScript.

Node.js продолжает развиваться динамически и амбициозно. Так например, в течении нескольких последних лет разработчиками было добавлено около 200 000 модулей для Node.js, это превышает в несколько раз темпы развития уже устоявшихся серверных языков, таких как Perl у которого количество модулей в репозитории меньше. Так же нужно подчеркнуть что технология Node.js набирает обороты и используется такими компаниями, как Yahoo, Microsoft, PayPal и LinkedIn не говоря уже про гугл.
Читать дальше →
Total votes 32: ↑19 and ↓13 +6
Views 12K
Comments 29

Подробное руководство по созданию и развертыванию чата на Tornado + Telegram

Python *
Sandbox
Данное решение подойдет для небольших проектов, так как возможность параллельно вести диалог с несколькими пользователями реализована с помощью создания нового чат-бота, то есть чем больше ботов будет, тем больше людей смогут с вами связаться в один момент времени.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 12K
Comments 4

Мега-Учебник Flask, Часть XVII: Развертывание под Linux

Website development *Python *Flask *
Tutorial

(издание 2018)


Miguel Grinberg




Туда Сюда


Это семнадцатая часть серии Мега-учебников Flask, в которой я собираюсь развернуть микроблог на сервере Linux.

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

Супервайзинг или аутсорс? Вот в чем вопрос

Plarium corporate blog Personnel Management *IT career IT-companies
Уже больше двух лет удаленные сотрудники Support Division краснодарской студии Plarium работают под руководством супервайзеров. По каким причинам мы выбрали этот способ управления и как организовали супервайзинг в отделе поддержки — рассказываем под катом.

Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 3.6K
Comments 14