понедельник, 30 мая 2011 г.

Неудачное сочинение

Вот тут лежит неудачная статья для Хабра.

Неудачная, потом что:
1) какая-то "скомканная" получилась - особенно конец.
2) дальше песочницы не ушла.

Чтож, после доработки проекта echo_server возьмусь за нее с новыми силами. Писать документацию/описание для меня всегда было мучением.

Если кто-то (русскоговорящий) заинтересуется asio samples, то краткое пояснение он уже сможет почерпнуть по указанной выше ссылке.

среда, 13 апреля 2011 г.

Пример работы с таймером (реализация таймаута)

Сегодня в проекты "echo_server" и "qt_echo_server" (т.к. у них общая кодовая база касаемо самого сервера) введена возможность указывать для сессий (на стороне сервера, конечно) таймаут чтения, по истечении которого сессия считается неактивной (по вине клиента - мол "упал он там что ли?").

При этом оставлена возможность не задавать величину подобного таймаута. В этом случае таймаут не будет использоваться вообще (это похоже на таймаут, равный +∞).

Отличительная возможность реализации таймаута - это использование custom memory allocation для обработчика, используемого совместно с deadline_timer-ом. Эта "фишка" потребовала особого дизайна (правда, не столь уж и "мудреного") и показала то, о чем не сказано ни в одном примере Boost.Asio. - см. комментарии - там есть ссылка на пост автора Asio, где очень подробно описано более простое (и понятное) решение. Кстати, это решение уже есть в офиц. документации Asio.

Код пока только в SVN-репозитории (trunk).
После проверки всеми компиляторами появится dev-release.

Updated 14.09.2011: см. улучшенный/исправленный вариант.

пятница, 1 апреля 2011 г.

Qt Echo Server released

Всем, кому интересно, как связать многопоточный код с functor-based callbacks (например, Boost.Asio) и Qt signal/slot, смотреть проект qt_echo_server.
Решение простое и не использует никаких "хаков" - все по официальной документации Qt.
И так, Boost.Asio (+ Boost.Bind + Boost.Thread) + Qt (4.x) = qt_echo_server

среда, 23 марта 2011 г.

Boostcon 2011

Посмотрел программу boostcon 2011.

Впечатлило, что наконец-то появились темы по Boost.Asio - да еще какие!
Только от автора Boost.Asio Christopher Kohlhoff сразу несколько "вкусностей":
  • Thinking Asynchronously: Designing Applications with Boost.Asio;
  • Why C++0x is the Awesomest Language for Network Programming.

А еще:
  • Cliff Green: Design Journeys with Skoot, a Peer Oriented Generic Networking Library
  • Boris Schaeling: Creating Boost.Asio extensions

И наконец "просто отличные" темы:
  • Joel Falcou, Khaled Hamidouche: Automatic Hybrid MPI+OpenMP Code Generation
  • Justin Gottschlich: Intel's C++ Software Transactional Memory Compiler and the Draft Specification of Transactional Language Constructs for C++
  • Joel Falcou, Lionel Lacassagne, Sebastian Schaetz: Mastering the Cell Broadband Engine architecture through a Boost based parallel communication library
  • Hans Boehm: Threads and Shared Variables in C++0x
Итак, ждем мая.

вторник, 22 марта 2011 г.

WTF: Adobe or Microsoft?

Сегодня обновил Adobe Flash for IE.
Т.е. сначала удалил предыдущую версию, потом перезагрузился, потом установил новую версию и снова перезагрузился.

Вуаля - на большинстве сайтов в IE9 перестали работать вставки с видео 8(
Не впервой проблемы с IE. Youtube в IE9 работает, все неработающие в IE9 видео-вставки, отлично показываются в FF4. Что ж, посмотрел исходный код проблемных сайтов - выявил закономерность: везде ссылка на объект идет не через GUID, а через MIME (application/x-shockwave-flash).
Ага! Запускаем regedit и ищем текст application/x-shockwave-flash.
И вот оно - найден раздел на чтение которого у меня нет прав! Да, я работаю под ограниченной учетной записью. Но чтение-то должно быть доступно! Сравнил права с аналогичными разделами (например, для Silverlight) - действительно - права не те.

Решение: запускаем regedit от имени администратора, удаляем раздел (где-то в HKLM\...MIME\Database\... - искать по application/x-shockwave-flash), переустанавливаем Adobe Flash ActiveX.

Кто виноват? Думаю, кривой инсталлятор от Adobe. Хотя вполне возможно (это же ActiveX), что проблема кроется в регистраторе ActiveX, т.е. "виновата" Microsoft. В общем, FF4 я уже поставил. И так на многих сайтах сижу только через него. Похоже вскоре полностью пересяду на "лису".

Спасибо, Christopher Kohlhoff!

УРРА! (второй раз за день)
Вышедший сегодня Boost.Asio 1.5.3 (dev-ветка) обновил поддержку SSL - теперь асинхронные SSL-операции поддерживают asio custom memory allocation.

Я как раз собирался на днях попробовать изменить существующую реализацию, для поддержки asio custom memory allocation - уже отчаялся и решил, что это неинтересно не только пользователям Boost.Asio (что-то вяло они используют этот поистине великолепный отличительный механизм Boost.Asio), но и самому автору.

И тут такой подарок... Спешу "порыться" в коде - все дружно ищем тяжелые глобальные lock-и и недостаток поддержки move semantic.