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

О блоге

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

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

четверг, 23 октября 2014 г.

[prog.c++] Состоялся релиз SObjectizer-5.5.2

Версия 5.5.2 добавляет экспериментальную поддержку CMake для сборки библиотеки и примеров. Так что теперь можно собирать SObjectizer без Ruby и MxxRu, а так же можно генерировать проектные файлы для наиболее распространенных IDE (вроде Visual Studio и Code Blocks). Немного о том, как использовать CMake с SObjectizer написано вот здесь.

Поддержку CMake добавил ув.тов.Alex Syrnikov, за что ему огромнейшее спасибо!

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

Версия 5.5.2 может быть загружена из раздела Files или получена из Subversion-репозитория.

В Files для загрузки доступны следующие архивы:

  • so-5.5.2.7z -- исходный текст ядра SObjectizer (включая тесты и примеры);
  • so-5.5.2--doc-html.7z -- сгенерированный посредством Doxygen API Reference Manual;
  • so-5.5.2--bin-msvs2013-x86.7z -- исходные тексты и 32-битовые бинарники для Windows (скомпилированы посредством MS Visual Studio 2013 Express);
  • so-5.5.2--bin-msvs2013-x86_amd64.7z -- исходные тексты и 64-битовые бинарники для Windows (скомпилированы посредством MS Visual Studio 2013 Express).

Примечание. Этот релиз содержит только ядро SObjectizer (т.е. проект so_5). Никакие другие подпроекты (вроде so_log или so_sysconf) в релиз не включены. Возможно, сборка SObjectizer Assembly со всеми подпроектами будет сформирована и опубликована позже (если она действительно кому-то потребуется).

среда, 22 октября 2014 г.

[prog.c++] А как принято пользоваться CMake?

Благодаря ув.тов.Alex Syrnikov в SO-5.5 появился набор CMakeLists.txt-файлов для сборки смой библиотеки so-5.5 и примеров. Сейчас все это дело находится в рабочей ветке репозитория и готовится к релизу в виде версии 5.5.2. Но, поскольку сам я никогда с CMake дела не имел, то не очень понимаю, как должна выглядеть нормальная поддержка CMake в C++ном проекте.

Есть ли какие-то общепринятые или наиболее распространенные способы использования CMake?

Или же разработчики проекта просто кидают внутрь своих исходников CMakeLists.txt, а пользователь сам уже бабахается с генерацией нужного ему хозяйства из CMakeLists.txt?

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

PS. Повторюсь, с CMake дел не имел от слова совсем. Штудировать тонны документации или покупать книжки по этому уродскому инструменту желания нет от слова вовсе :) Посему прошу ткнуть пальцев в хорошие примеры того, как это сделано у нормальных людей :)

PPS. Холивара ради ;) Нормальные инструменты - это, в первую очередь, SCons и MxxRu, как же иначе ;) Даже Jam-ы разных оттенков (Perforce, FT или Boost) нормальнее CMake будут :)

[blog] Похоже, Google опять готовит какую подляну вокруг Blogger-а и G+

Upd. Вроде бы G+ очухался, профиль Blogger-а удалось связать с профилем G+. Посмотрим, чем все это закончится.

Сегодня утром при входе в Blogger Google потребовал выбрать один из аккаунтов для работы с Blogger-ом: либо G+, либо Blogger-а. Хотя раньше его устраивало то, что обоими сервисами я пользовался под одним и тем же аккаунтом.

Выбрал аккаунт Blogger-а. Затем попробовал переключиться в настройках на использование аккаунта G+. Получил прекрасное сообщение:

Ошибка! Система все еще выполняет переход на профиль Google+. Подождите немного и обновите страницу в вашем браузере.

Обновление страницы не помогает. Так что жду дальше. Зайти на G+ так же не представляется возможным.

В общем, терзают меня смутные сомнения, что в скором времени придется выбирать -- писать ли только в Blogger-е или только в G+. Неприятный выбор. Очень надеюсь, что Google разберется со своими проблемами и все наладится.

PS. Думаю, что после всех траблов с G+, пропаданиями и задержками с доставкой тамошних комментариев, тему качества разрабатываемого "корпорацией добра" софта можно закрывать.

вторник, 21 октября 2014 г.

[management] Наткнулся на прекрасное в ЖЖ seva-riga

Две небольшие, но интересные заметки. Ну очень сильно совпадает с тем, что мне довелось увидеть и испытать на себе. Небольшая цитата для затравки интереса:

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

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

Кстати, в этом и заключается принципиальная разница между российским и… ну например немецким стилем управления. Руководитель - немец, при несовпадении своего представления о том, как работает предприятия, с описанием - как оно работает на самом дела, пытается застрелиться. Руководитель - россиянин (независимо от национальности) - пытается застрелить.

понедельник, 20 октября 2014 г.

[prog.c++] Пример решения проблемы Producer-Consumer в SO-5.5.1

В версии 5.5.1 состав штатных примеров SObjectizer-а был расширен несколькими новыми. Среди них пример под названием work_generation, который демонстрирует один из возможных вариантов решения проблемы Producer-Consumer средствами SObjectizer.

пятница, 17 октября 2014 г.

[prog.flame] Асинхронность без порталов и телепортации :)

Вчера вечером в G+ увидел ссылку на статью с Хабра "Асинхронность 2: телепортация сквозь порталы." Просмотрел мельком, понял только то, что на этой полянке можно попробовать потоптаться и с SObjectizer-ом. Сегодня с утра перечитал повнимательнее. Решил посмотреть, как эта же самая задача может быть решена средствами SO-5.5.1. После 2.5 часов работы получилось вот так. Кода много. Но, думается, он не сложнее представленного на Хабре.

Под катом находится более подробное описание того, что и как работает в SObjectizer-овском варианте. Прежде чем заглядывать под кат очень рекомендую посмотреть на Хабровскую статью. Хотя бы на вводную ее часть, дабы условия задачи были понятны, т.к. для экономии места я их не повторяю у себя. Но вообще мне бы хотелось, чтобы читатели проштудировали хабровскую статью более внимательно, чтобы разобраться как работает тамошнее решение. Мне интересно, насколько будут различаться усилия для понимания этих двух вариантов. Лично у меня остались некоторые белые пятна после знакомства с кодом Григория Демченко (в частности, я не понял, кто и что получит в результате, если операция будет отменена из-за истечения тайм-аута). Но, возможно, это из-за того, что очень глубоко в код автора статьи я не погружался.

Итак, поехали смотреть, как же это будет выглядеть на SObjectizer-е.