пятница, 23 октября 2015 г.

Raft - алгоритм решения консенсуса в кластере надежных вычислений

Сегодня знакомимся с очень интересным алгоритмом решения консенсуса в сети надежных вычислений - Raft.

Основы алгоритма

Raft реализуется поверх кластера однообразных слабо связных нод, на каждой из которой работает машина состояний. Raft обеспечивает надёжную доставку сигналов на все ноды в заданном порядке. Таким образом обеспечивается переход всех машин состояний по одним и тем же последовательностям состояний. Таким образом, каждая нода гарантированно приходит в согласие с другими нодами.
Каждая нода может находиться в одном из 3-х состояний:

вторник, 20 октября 2015 г.

"Eat your own dog food" - стань клиентом самого себя

Сегодня познакомимся с фразеологизмом: "Eat your own dog food", который давно используется в IT индустрии.

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

воскресенье, 18 октября 2015 г.

Высокотехнологичное производство в России



В статье разбираются отличия "высокотехнологичного" от "низкотехнологичного" производства. И почему второе преобладает над первым. Автор объясняет почему Китай так крут. И что нужно делать России =) И многое другое.
Спасибо за ссылку одному моему коллеге.

среда, 30 сентября 2015 г.

e-maxx.ru хороший сборник алгоритмов на русском языке

Сегодня наткнулся на замечательный сайт e-maxx.ru. На сайте описано множество алгоритмов с реализацией на C++. А самое главное - это задачи, в которых применяются алгоритмы.

суббота, 19 сентября 2015 г.

Крымский военно-исторический фестиваль 2015

Сегодня с семьей были на завершающем дне крымского военно-исторического фестиваля (КВИФ). Проходил он на федюхиных высотах в балаклавском районе Севастополя. Официальный сайт мероприятия http://kvif.ru/. Организатором фестиваля стало Российское военно-историческое общество, а по факту различные исторические клубы России.
Узнали мы о нем только в пятницу - и очень жаль. Проходил фестиваль 8 дней с 12-19 сентября.

понедельник, 1 июня 2015 г.

GUAVA Striped - гибкий инструмент для связывания блокировок с объектами в java

Сегодня познакомимся с полезной утилитой  Striped  в GUAVA.

Засекаем время в java

Предистория

Как-то раз я занимался оптимизацией сложной операции, выполняемой на сервере, которая включала в себя несколько запросов к базе данных с последующей группировкой и сортировкой по определенным параметрам полученных данных. К сожалению, средствами SQL запросов обойтись не получилось, так как в конечной выборке участвовали данные полученные по веб-сервисам из внешних систем. Поэтому приходилось выполнять группировку и сортировку данных с помощью кода приложения.
Когда я запустил первый раз этот код на реальных данных, очевидно, все работало неприемлемо медленно и требовало оптимизации. С чего начинать оптимизацию? Правило Парето никто не отменял и оно гласит, что нужно начинать оптимизацию тех участков кода, выполнение которых занимает львиную долю времени выполнения операции. Возникла задача выяснить, какой из этапов крупной операции выполняется дольше остальных, и насколько дольше. Для этого необходимо "стоять с секундомером" и засекать начало и конец каждого этапа и результат выводить в лог. На момент решения данной задачи я обошелся собственным решением, в котором я запоминал System.currentTimeMillis() в промежуточные значения в локальных переменных. Затем происходил подсчет разниц времени вывод в лог описаний. У данного подхода я обнаружил существенные недостатки:
  1. Код сильно загрязнился. Локальные переменные заполонили код, и его стало читать очень сложно.
  2. Сложно исправлять/добавлять новую операцию, так как логика о подсчету времени размазана.
Но есть и плюс, только он на мой взгляд один: это гибкость и возможность написать то, что тебе нужно.
Мне такое решение не давало покоя и я решил сделать небольшой обзор инструментов подсчета времени в java.

четверг, 28 мая 2015 г.

Rootconf: DevOps, мониторинг, метрики, алерты!




В некотором царстве в некотором государстве под названием Москва 21-22 мая 2015 года прошёл фестиваль Российские интернет технологии, на котором мне посчастливилось побывать. Проходил фестиваль в Крокус сити холле. В этом году Олег Бунин и его команда сделали из ежегодной конференции РИТ целый фестиваль. В рамках фестиваля было организовано 5 секций с различной тематикой.


  1. RootConf. Конференция по эксплуатации.
  2. FronfendConf. Конференция фронтэнд разработчиков.
  3. Highload++ Junior. Обучающая конференция разработчиков высоконагруженых систем.
  4. WhileRider. Профессиональная конференция по управлению и предпринимательству.
  5. Intersystems CacheConf. Конференция по различным типам доступа данных и быстрой разработке.
Подробнее можно ознакомиться с фестивалем на сайте. Я же посещал секцию rootconf, посмотрел на админов и попытался прочувствовать их проблемы посмотреть на эксплуатацию глазами разработчика.

DevOps, мониторинг, метрики, алерты!


Все выступления были пронизаны этими терминами. Основные направления докладов конференции - это хорошие практики использования систем мониторинга, улучшение процесса эксплуатации разработанного ПО. 

Конференция расширила мой кругозор, и я пополнил багаж знаний.
  • Открыл для себя пару новых терминов типа devops, гистерезис триггеров. 
  • Получил ссылки на незнакомые ранее для меня системы мониторинга: okmeter, graphite.
  • Познакомился с интересными людьми.
  • Понял, что разработчики и служба эксплуатации должны стать лучшими друзьями для более эффективной работы.
  • И многое другое.

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

среда, 13 мая 2015 г.

Севастополь - Челябинск - Севастополь

На прошедших майских праздниках я совершил путешествие за своим автомобилем и проделал путь Севастополь - Челябинск - Севастополь.


Маршрут

30 апреля вечером я на самолете отправился из Крыма в Челябинск. Была пересадка в Москве и к 4 утра 1 мая я был уже в Челябинске. За день я обслужил автомобиль: переобулся, заменил колодки, проверил ходовую. Собрал все вещи и отправился в Трехгорный на автомобиле. К вечеру 1 мая я был уже в Трехгорном. Я погостил у родителей и 4 мая утром отправился в дальний путь на авто в Севастополь.

вторник, 28 апреля 2015 г.

www.baeldung.com - ресурс с tutorial'ами про java, Spring и web разработку


Сегодня наткнулся на интересный ресурс с гайдами по java, Spring и веб разработке:

Очень интересные вводные статьи по многим технологиям из мира java + Spring. Лично для себя нашел интересные материалы по построению и тестированию REST-api.

Судя по учетной записи в twitter: @baeldung, автор из Бухареста написал курс обучения по Spring Security, и проповедует REST, Security и TDD.

Подпишусь на этого парня.


P.S.

А еще baeldung делает классные шрифты: