Блог Makeomatic: разработка сайтов и мобильных приложений

RabbitMQ: Простая и эффективная очередь сообщений

что такое RabbitMQ и его применение

| Категории: Node.js, RabbitMQ
Дмитрий Горбунов

В этой статье рассмотрим, как работает RabbitMQ, а также как и для чего её можно использовать в проектах на Node.js

Очереди сообщений

Что такое очередь сообщений (message queue)? Это некая структура данных, которая обеспечивает хранение и передачу двоичных данных (blobs) между различными участниками системы. Очереди сообщений практически всегда используются в крупных системах, благодаря важным преимуществам.

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

Учитывая огромную важность очередей для надёжных и гибких систем обработки данных, была даже разработана спецификация протокола — AMQP, на основе которой разрабатывается несколько приложений, выполняющих функцию очереди — так называемых «брокеров». Аналогия с биржевыми процессами будет прослеживаться и в дальнейшем. Мы рассмотрим брокер RabbitMQ, авторами которого и создан протокол AMQP.

Стилистические требования к написанию программного кода

пишите поддерживаемый код

| Категории: Javascript, FAQ, Coffee-script
Дмитрий Горбунов

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

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

Angular.JS: основы создания директив

концепции и практическое применение

| Категории: AngularJS
Дмитрий Горбунов

Подготовка

Модульная структура

Как я уже писал ранее, AngularJS является достаточно структурированной библиотекой. Практически каждый элемент функциональности выделен в свой модуль: $http, $resource, $route, $location и так далее. Фактически сама библиотека сконцентрирована в модуле Core. Подключать его не нужно (как и многие другие модули, вроде $http), поскольку он входит в основу библиотеки.

Начиная с версии 1.1.6 модуль $route нужно подключать отдельно, поскольку было принято решение исключить его из ядра и впоследствии объединить с модулем ui.state от команды AngularUI.

Расширение функциональности

Следует заметить, что вызов angular.module может работать по-разному в зависимости от переданных ему параметров. Если переданное первым параметром имя модуля соответствует уже существующему модулю, то вызов вернёт ссылку на этот модуль, если же такого модуля нет, то он предварительно будет создан.

Это позволяет держать код в разных файлах и не заботиться о последовательности их подключения/склейки. Достаточно лишь в начале каждого файла написать

1
var myModule = angular.module("MyModule")

Блог джуниора. CRUD операции, Mongoose ODM

небольшие инсайты и техники для SPA

| Категории: Для новичков, jQuery, Mongoose
Горшунов Владимир

Задачи

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

Итак, задачи на сегодня:

  1. Добавить API endpoint для модели User, используя конвенцию RESTful
  2. Добавить суперюзера для работы в админке
  3. Добавить админку
  4. Добавить листинг зарегистрированных пользователей и возможность их удаления

Angular.JS: введение и основные концепции

разбираем Angular.JS на пальцах

| Категории: AngularJS, Для новичков
Дмитрий Горбунов

Подготовка

Различия версий

На момент написания (начало июля 2013) готовится к выходу AngularJS 2.0, который будет фактически представлять собой 1.1.5 с минимальными изменениями.

Отличия между 1.1.5 и 1.0.7 уже достаточно велики, и рассматривать технически устаревшую 1.0.7 нет смысла.

Установка

Google рекомендует использовать версию AngularJS, поставляемую через CDN, для рабочих окружений. Для разработки следует скачать архив, включающий в себя полноценные отладочные версии библиотеки, поскольку только они предлагают досточно подробные сообщения об ошибках. Впрочем, в 2.0 планируется серьёзно улучшить этот вопрос, так как сейчас сообщения об ошибках практически не дают понимания происходящего.

Блог джуниора. Веб-программирование с нуля

Идея курса и первый шаг

| Категории: Node.js, Для новичков
Горшунов Владимир

Что такое блог джуниора?

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

Виталий Аминев

Практика обучения

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

Первой практической задачей будет ознакомление со стеком Node.js, MongoDB, Express.js, Less, MVC архитектурой.
Потребуется реализовать следующий простенький функционал: регистрация пользователя, работа с MongoDB через ODM Mongoose,
хранение пароля в зашифрованном виде, используя blowfish как метод шифрования.

Матрица карьерного продвижения персонала

как залог прозрачной и справедливой системы оплаты труда в IT компании

| Категории: Бизнес модель
Виталий Аминев

Предисловие

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

К чему стремится программист?

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

Сервис "AddThis" замедляет вас?

| Категории: Javascript
Анна Аминева

Иллюстрация блокнота

Плагин “AddThis”

Если вы используете плагин “AddThis” на вашем сайте, то есть риск того, что он будет замедлять загрузку всех страниц. В частности, это случается, если вы выкладываете много статьей и у каждой из них есть кнопка “поделиться”. Причина тому - плагин, который делает несколько запросов к разным сайтам в сети, чтобы получить количество «лайков» в сетях. Их количество отображается рядом с кнопкой (кнопка должна размещаться локально на вашем сайте, иначе все будет грузиться еще дольше). Все это занимает время.