суббота, 31 октября 2015 г.
[life.cinema] Очередной кинообзор (2015/10)
[prog.c++11] Автоматический возврат объекта в пул за счет кастомного deleter-а и стандартных умных указателей
Никогда раньше с таким применением умных указателей не сталкивался, но забавная тема на LOR-е показала, что стандартные умные указатели легко могут использоваться не только для уничтожения объекта, но и для возврата объекта в тот пул объектов, из которого объект был взят.
Суть проблемы: есть пул объектов типа T, объект берется на какое-то время из пула, а когда объект становится больше не нужен, он должен вернуться обратно в пул. Причем пулов в программе может быть много. А код, который использует взятый из пула объект, ничего про пул не знает, но объект должен вернуться в тот пул, которому принадлежит. При этом гарантируется, что пулы живут долго, так что о той проблеме, что пул будет разрушен раньше, чем в него вернут все взятые ранее объекты, можно не беспокоится.
четверг, 29 октября 2015 г.
[prog.c++11] SObjectizer v.5.5.9 Released!
A version 5.5.9 of SObjectizer core is released!
In short the changes in 5.5.9 are:
[prog.sobjectizer] Sixth and seventh parts of "Dive into SObjectizer-5.5". Synchronous interaction. Message limits
The sixth part of "Dive into SObjectizer-5.5" describes synchronous interaction between agents:
This presentation is also on SlideShare.
The seventh part of "Dive into SObjectizer-5.5" describes message limits:
This presentation is also on SlideShare.
All parts of "Dive into SObjectizer-5.5" can be found here.
среда, 28 октября 2015 г.
[prog.c++.bugs] Как я одну серьезную ошибку профукал
Вчера вечером, когда подготовка к релизу очередной версии SObjectizer-а не просто вышла на финишную прямую, а уже почти подошла к самой финишной черте, всплыла серьезная ошибка. Суть в том, что у каждого агента есть свой собственный direct_mbox. Этот direct_mbox представляет из себя что-то вроде хитрого прокси через который сообщения доставляются агенту напрямую. Важнейшим свойством direct_mbox-а должна была быть возможность корректно обрабатывать ситуацию, когда сообщение отсылается агенту, а агента уже и нет, он закончил свою работу и был уничтожен ранее. Так вот внезапно оказалось, что это свойство не работает! Т.е. в direct_mbox-е остается повисший указатель, при обращении к которому может происходить все, что угодно: от зависаний до крахов приложения.
Очевидно, что в процессе переделок реализации direct_mbox-ов и агентов, коих было не так уж и мало, вышеозначенное важнейшее свойство было утеряно. Но почему это не было отловлено ни одним из тестов (коих сейчас уже больше 170)? И вот тут-то выяснилась интересная история :)
вторник, 27 октября 2015 г.
[comp] Обсуждением Intel Stick навеяло...
Глянул краем глаза RSDN-овское обсуждение такой прикольной штуки, как Intel Stick. Почему-то вспомнились две вещи.
Когда-то давным давно, лет 15 назад, был опыт защиты программы от копирования посредством хардварного ключа Aladdin, цеплявшегося к одному из портов компьютера. Сейчас штуки вроде Intel Stick-а могут существенно упростить поставку программно-аппаратных комплексов заказчику, что называется, "под ключ". Какое-нибудь специализированное ПО для кассовых терминалов или рабочих мест банковских РКЦ. Особенно если в Stick-ах будет какое-нибудь встроенное хранилище криптографических ключей (какой-то аналог HSM-ов), то вообще круто.
Так же давно, лет 12 назад, а может и больше, сильное впечатление на меня произвела статья о том, как Google подходил к выбору компьютеров для своих дата-центров. Вместо ТОП-овых серверов они закупали дешевые морально устаревшие персоналки (помнится тогда писали о Pentium III, хотя у всех уже были машины с процессорами следующего поколения). Производительности Google достигал за счет распараллеливания вычислений на большое количество узлов, а не за счет мощности отдельных узлов кластера. Если попытаться сейчас представить Intel Stick-и в роли тогдашних Pentium III в Google, то рынок серверного хозяйства может ждать больших перемен. И, может быть, что-то интересно ждет и системы виртуализации, вокруг которых было много движухи в последние время...
воскресенье, 25 октября 2015 г.
[prog.d.flame] Куда может завести отсутствие чувства меры и чувства стиля
К счастью, очень давно не смотрел на язык программирования D. А тут в рамках LOR-овского флейма потребовалось выяснить, какие аналоги C++ных умных указателей есть в D. И увидел прекрасный прототип метода refCountedPayload() в шаблоне std.typecons.RefCounted:
inout nothrow @property ref @safe inout(T) refCountedPayload() return;
Внимание, вопрос: при чем здесь тот самый Александреску? ;)