понедельник, 15 ноября 2010 г.

Not an active object

Недавно пообщался с Dean Michael Berris в boost users mailing list.
Так вот, он полагает, что asio-samples - это не active object.
Однако, я остался при своем мнении и в качестве основы для доказательства предлагаю вот этот документ.
Еще я обратил внимание на Theron. Действительно похоже. Конечно Theron "мощнее" и "богаче" - но зато asio-samples позволяют использовать разные thread pools и эффективно работать с памятью аля per-message-passing-allocator.

понедельник, 8 ноября 2010 г.

Первая документация на asio samples

Сегодня выложил первые диаграммы, отражающие основные идеи, которые я хотел реализовать в asio samples. Получилось вполне сносно. По крайней мере, теперь не надо держать это в голове. На очереди эти же диаграммы, но в UML.

четверг, 4 ноября 2010 г.

Видео с BoostCon 2010

Материалы (слайды) с BoostCon 2010 уже давно есть на оф. сайте. А вот видео появилось недавно.

Больше всего понравился автор блога C++ Soup! Dean Michael Berris ("I'm really the C++ enthusiast") с его рассказом про
(header only) C++ net-lib.

А вот видео про Boost && Qt неприятно удивило - мало того что в зале не нашлось ни одного человека, кто бы использовал в одном проекте и Boost и Qt (!), так еще и:

  1. Докладчик всего год как "в команде Qt".
  2. Довольно подробный рассказ про Qt - зачем это Boost-профи? Разве они не должны знать Qt (хотя бы на том уровне, что был изложен докладчиком) чуть ли не "с пеленок"? Для кого этот доклад?

суббота, 3 июля 2010 г.

Ошибка Chris-а или странная логика

Нашел баг в Boost.Asio (Boost 1.42 и 1.43 - другие просто не проверял).
Самое неприятное заключается в том, что в первых версиях Boost.Asio такого не было и в том, что это скорее довольно грубая логическая ошибка, чем опечатка.

Упрощаем (и ускоряем?) код за счет избавления от шаблонов

Добавил проект echo_server2 и echo_server3.

1) echo_server2 - почти калька с echo_server, но за счет forward-declarations решена проблема с использованием шаблонов (есть шаблоны - нет разделения интерфейса от реализации, точнее нет раздельной компиляции - а без нее нет и "серьезного тяжеловесного" проекта)

2) echo_server3 - новый подход (заброшеный по глупой причине после ухода с первого места работы), позволяющий использовать традиционную (открываем книжки по ACE - да-да те самые 2 единственные) архитектуру с интерфейсами в качестве обработчиков завершения операций. Однако в отличие от ACE, тут все удобнее + есть поддержка asio custom memory allocation (которую можно использовать и как "удерживатель operation-lifetime-bounded ресурсов - т.е. для того же, для чего в echo_server дополнительно служил параметр шаблона handler). Малого того, что мне удалось полностью выбросить мой же "костыль" handler_storage (видимо не зря Chris его до сих пор игнорировал), так еще и код стал эффективнее, проще, быстрее + появились новые возможности (будут представлены позже) для построения "внутренних" очередей активного объекта с применением asio custom memory allocation.

Кроме того, теперь asio-samples собираются как в Visual Studio 2010 (мне в ней интересны по большей части только меньший объем получаемого кода и поддержка lvalue references - очень важной "фичи" для boost::shared_ptr), так и с иcпользованием Intel C++ Compiler 11.1 (спасибо Intel за evaluation-версию). Для Visual Studio 2010 пришлось покопаться в boost/config, чтобы включить поддержку lvalue references в Boost 1.43 (странно, что ее нет "из коробки"). А вот для Intel-а -
больше. Но это трудно назвать виной Intel - скорее это мое недопонимание каких-то параметров компиляции и некоторая "отсталость" (наверное неслучайная) поддержки C++0x в Boost 1.43 "under Intel C++ Compiler 11.1".

P.S. Думаю написать статью для Хабра - не ради инвайта (не откажусь конечно), но ради того, чтобы получить хоть какую-то критику, коей у меня нет вот уже 2 года.