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

[prog.flame] Странные впечатление от знакомства со спецификацией AMQP

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

Так вот, вчера начал читать текст стандарта версии 1.0. Пока прошел всего половину, около 60 страниц. Впечатления странные. Если несколько моментов, мимо которых без сарказма пройти невозможно :)

[prog.tools] Вопросы к C++никам про AMQP

Коллеги, если кому-то нужно из C++кода общаться с MQ-шным сервером по протоколу AMQP, то какого клиента вы используете?

Если в качестве клиента используется Apache Qpid Proton (plain C или C++ вариант), то все ли вас в нем устраивает? Или же есть в Proton-е какой-то "фатальный недостаток" (c)?

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

[prog.c++] Презентация "Modern Template Metaprogramming: A Compendium" с CppCon2014

За наводку большое спасибо ув.тов.Sergey Sikorskiy.

Здесь лежит PDF-ка со слайдами. Для хорошо воспринимающих английский язык на слух видео в двух частях: первая и вторая.

Не знаю, как видео (а там почти 2 часа), но PDF-ка в меня заходила со скрипом. Для шустрого восприятия материала знания C++ нужны покруче моих.

Мощно, конечно, там все задвинуто, внушаить... Но теперь люто реквестирую что-то вроде "C++ Template Metaprogramming in Real World", дабы сирым и убогим инженеришкам/менеджеришкам вроде меня на простых и доступных примерах объяснить, где от всех этих шаблонных конструкций будет реальная польза, а где лучше обойтись копипастой более привычными средствами.

PS. Прошу прощения за последующую ассоциацию -- это все особенности моего больного воображения. Однако ж. Вот для чего вся эта крутизна в C++? Для того, чтобы выжимать больше из железа, и чтобы получившийся код был менее бажным и более-менее сопровождаемым. Ради этого программисты готовы идти на трехэтажные шаблоны, длительную компиляцию и периодические internal compiler errors компилятора, который афигевает от невообразимого полета фантазии некоторых особо одаренных программистов. Но блин, когда пропускная способность нагруженного сервиса вырастает в два раза благодаря колдовству с распределением обработчиков прерываний от железа по ядрам процессора, причем исключительно на уровне конфигов ОС... Возникает резонный вопрос: а в том ли направлении копают?

[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.