вторник, 1 января 2030 г.

О блоге

Более двадцати лет я занимался разработкой ПО, в основном как программист и тим-лид, а в 2012-2014гг как руководитель департамента разработки и внедрения ПО в компании Интервэйл (подробнее на LinkedIn). В настоящее время занимаюсь развитием компании по разработке ПО stiffstream, в которой являюсь одним из соучредителей. Поэтому в моем блоге много заметок о работе, в частности о программировании и компьютерах, а так же об управлении.

Так же я пишу о жизни вообще и о нескольких своих увлечениях: о фотографии (включая публикацию своих фотографий, некоторые есть и на ZeissImages), о спорте, особенно о дартсе, и, совсем коротко, о кино.

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

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

Предлагаю сделать портрет в обстановке, связанной с вашей работой или увлечением. Абсолютно бесплатно. Очень уж мне нравится фотографировать людей в их естественной среде. Происходить это может так...

четверг, 14 декабря 2017 г.

[prog.c++] Попытка упростить работу с отложенными сообщениями в SO-5

Удобная и простая работа с таймерами -- это одна из важных причин использования акторов вообще и SObjectizer-а в частности. Вот, скажем, в примере для вчерашней статьи на Хабре, мне потребовалось сгенерировать цепочку событий, происходящих спустя определенное время. Что элементарно выполняется посредством простого использования функции send_delayed:

std::vector<milliseconds> delays{ 125ms, 250ms, 400ms, 500ms, 700ms, 750ms, 800ms };

for(const auto d : delays) {
   const std::string msg = std::to_string(d.count()) + "ms";
   so_5::send_delayed<std::string>(env, ordinary_mbox, d, msg);
   so_5::send_delayed<std::string>(env, anti_jitter_mbox, d, msg);
}

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

Однако, при работе с отложенными сообщениями в SObjectizer-5 есть очень важный нюанс: не так-то просто отказаться от отосланного отложенного сообщения. Допустим, вы начали операцию, взвели отложенное сообщение, а результат операции пришел раньше. Вроде как отложенное сообщение вам больше не нужно. И тут вы можете оказаться в одной из двух ситуаций:

среда, 13 декабря 2017 г.

[prog.c++] SObjectizer-5.5.20 и so_5_extra-1.0.3

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

Загрузить новую версию можно либо в виде архива с SourceForge, либо из svn-репозитория проекта, либо из зеркала на GitHub.

Уже пару месяцев SObjectizer доступен через систему управления зависимостями vcpkg. Так что сейчас последнюю версию SO-5 можно установить себе посредством команды vcpkg install sobjectizer

so_5_extra обновился до версии 1.0.3, в которой был добавлен еще один тип mbox-а: retained_msg mbox.

Взять so_5_extra можно либо в виде архива с SourceForge, либо из svn-репозитория.

Так же кого-то может заинтересовать свежая статья на Хабре, рассказывающая о такой важной штуке SObjectizer-а, как концепция mbox-ов.

понедельник, 11 декабря 2017 г.

[prog.c++] Хотелось бы побывать на C++Russia 2018

Стали известны даты и место проведения C++ Russia 2018: эта крупнейшая в СНГ конференция, посвященная языку C++, пройдет 20-21 апреля 2018-го года в Санкт-Петербурге (19-го апреля будет день мастерклассов).

Понятное дело, что хочется в ней поучаствовать. А дешевле всего это сделать в качестве докладчика ;) Посему нужно придумать тему для доклада.

В связи с этим я хочу спросить у своих читателей: а что бы вы услышать на C++ Russia 2018 в моем изложении?

Может быть что-то про SObjectizer? Может быть что-то про то, как C++ помогал/мешал нам в разработке SObjectizer-а? Может что-то еще?

В общем, есть возможность оставить свою заявку. А я ее внимательно рассмотрю :)

PS. Если кто не видел, вот мое выступление на С++ Russia 2017вот и слайды доклада).

понедельник, 4 декабря 2017 г.

[prog] А какие в Сети есть ресурсы, посвященные разработке middleware?

Поймал себя на том, что мониторинг русскоязычных профильных ресурсов, вроде Habrhabr, LOR, RSDN, opennet ведет к весьма низкому проценту полезного сухого остатка. Потому, что изрядная доля тамошних материалов касается прикладных задач. Яркий пример -- вот эта статья, которую я просмотрел из-за наличия тега Go (ну интересно, как и где используется Go).

Как по мне, так ниша прикладных задач для C++ (да и для Rust-а, полагаю), закрылась давным-давно. Может уже лет двадцать назад. Хотя я вообще придерживаюсь мнения, что для прикладных задач C++ вообще никогда не предназначался. Сейчас для применения C++ есть несколько ниш, в которых C++ может быть вполне разумным выбором. Ниши эти специфические, хотя и не такие уж маленькие.

Одна из таких ниш -- это разработка разнообразного middleware. Ну, например, это могут быть СУБД. Могут быть MQ-шные брокеры. Могут быть какие-то шлюзы, вроде SMTP-шлюзов. И т.д.

В связи с этим у меня вопрос к читателям: есть ли какие-то ресурсы, на которых вопросы разработки middleware представлены в концентрированном виде?

Ну вот, есть, скажем, ресурс highscalability.com. Интересный дайджест-ресурс для материалов из области высоконагруженных систем. Хотелось бы найти что-то похожее, но для направления middleware. Может кто-то что-то подскажет?

пятница, 1 декабря 2017 г.

[life.cinema] Очередной кинообзор (2017/11)

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

Тор: Рагнарек (Thor: Ragnarok, 2017). Безусловно, главный фильм месяца. Смешной. Отличный видеоряд и бодренькое, местами, музыкальное сопровождение. Но вот там, где плотность шуток снижалась, мне было скучновато. А так отличное кино, чтобы отключить мозги и получить удовольствие.

Удача Логана (Logan Lucky, 2017). Отличное кино, но по-началу неспешное и нудное. Это нужно перетерпеть, развязка, как по мне, все оправдывает.

Иностранец (The Foreigner, 2017). В принципе, мне понравился фильм. И Джекки Чан в некоммедийной роли был вполне себе. Хотя от своих фирменных трюков в рукопашных схватках все равно не ушел, что как раз и портило впечатление от фильма. Если бы не это, то фильм был бы гораздо лучше, как по мне.

Погром (Mayhem, 2017). Я любитель такого рода фильмов, главный смысл которых -- это "мочи их всех!". Поэтому и данную картину посмотрел с удовольствием. Но, если бы в него вложили чуть-чуть побольше денег, то получилось бы еще круче и убойнее.

Механика теней (La mécanique de l'ombre, 2016). Европейцы снимают кино не так, как американцы. Иногда получаешь удовольствие просто от того, что кино выглядит и воспринимается совсем не так, как голливудская продукция. Здесь именно такой случай. Вроде бы не динамично, вроде бы нет захватывающей истории, а смотреть все равно интересно. И герою сопереживаешь.

Жизнь впереди (2017). Смотреть было интересно. Но когда фильм закончился, то возник вопрос: "И это все?" Как по мне, так авторы только-только раскрыли своих персонажей, познакомили с ними зрителей, подготовили к неминуемой кульминации... Которой как раз и не случилось.

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

Смерть на Аляске (Sweet Virginia, 2017). Так себе. Все время ждешь, что вот-вот что-то такое произойдет, что оправдает потраченное время. А оно не происходит и не происходит. Хотя к актерам, например, претензий нет. Это скорее сама история такая, не цепляющая.

Наемник/Американций убийца (American Assassin, 2017). Первая половина или даже первые 2/3 фильма вполне себе OK. Но вот то, что происходит в финале, особенно с ядрёной бомбой... Это какой-то сплошной facepalm.jpg.

Геошторм (Geostorm, 2017). Жалкое поделие из категории "Что это, блин, было?" Наверное, фильм рассчитан на категорию детей младшего школьного возраста. Но даже и в этом случае спецэффекты хотелось бы более качественные, не оставляющие впечатление мультика.