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

О блоге

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

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

вторник, 30 сентября 2014 г.

[life.cinema] Очередной кинообзор (2014/09)

Подошло время очередного кинообзора. На этот раз подборка получается ну очень слабенькая. Посмотреть можно разве что первые 3-4 фильма :(

Большая афера. Милый, добрый, местами смешной, местами трогательный фильм.

Про жену, мечту и еще одну… Любопытный и приятный фильм из той редкой категории фильмов, где все держится на мастерской игре двух-трех актеров и хорошо прописанных диалогах. Смотрел, кстати говоря, на YouTube.

Шальные деньги 2: Стокгольмский нуар. Хорошая криминальная драма и достойное продолжение первой части. Причем, как мне показалось, снятой более уверенно и профессионально.

Миллион способов потерять голову. В общем-то смешно. Но уровень пошлости и сортирного юмора даже для меня выглядит несколько через чур…

Плохие слова. Начало было многообещающим, финал оказался немного предсказуем. В целом же довольно неплохо, о просмотре не пожалел.

Два лика января. Жаль авторам не удалось сделать более интересный финал. А так получилось, что первые 3/4 фильма нормальные, а последняя как бы в нагрузку идет.

Укради мою жену. Не смотря на хороших актеров и их хорошую игру, мне показалось, что фильм “недокрутили”, могло бы быть гораздо лучше.

Шальные деньги 3: Роскошная жизнь. Третий фильм из шведской серии “Шальные деньги”. По сравнению с двумя первыми частями, эту можно было бы и не снимать, и не смотреть. Глянуть разве что можно из-за того, что авторы фильма расставляют таки точки в судьбе большинства героев серии.

Город грехов 2: Женщина, ради которой стоит убивать. Если от первого фильма остались хорошие впечатления, то от просмотра второго лучше воздержаться. Снимать его было вовсе не обязательно.

Человек ноября. Редкая ерунда. Лучше не смотреть, чтобы не портить себе впечатление от Пита Броснана.

Посвященный. Либо это исключительно подростковый фильм, либо ерундистика, которую можно смело не смотреть.

Я солдат. Посредственно выполненная агитка элитного подразделения спецназа Великобритании.

Сигнал. Редкая муть и нудистика.

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

[prog.c++] Новое в SObjectizer-5.5

Весь сентябрь шла плотная и напряженная работа над следующей версией SObjectizer - 5.5.0. Вроде бы все очевидные вещи, которые хотелось сделать, сделаны. Некоторые не очевидные вещи отложены "до разъяснения". Фактически, версия 5.5.0 готова. И, если все будет нормально, в среду, 1-го октября, состоится релиз. В этом же посте попробую описать, чем новая версия будет отличаться от предыдущих.

[business.idiotic] What's next? F*ckUP!?

У группы креативных товарищей закончилась трава творческий кризис. Чем же еще можно объяснить появление названия "TranzUP!"?

Вероятно, следующим творением будет "FuckUP!".

вторник, 23 сентября 2014 г.

[prog.c++] timertt: обслужить миллиард таймеров? Да легко!

По следам обсуждения новости о библиотеке timertt на LOR-е. В обсуждении добрый человек предложил код теста, в котором запускается на обслуживание не много, ни мало, один миллиард таймеров (несколько раз нолики в числе пересчитывал, вроде девять):

#include <iostream>
#include <cstdlib>

#include "timertt/all.hpp"

using namespace std;
using namespace std::chrono;
using namespace timertt;


int main()
{
   timer_wheel_thread_t tt;

   // Timer thread must be started before activation of timers.
   tt.start();
   
   int counter = 0;
   forint i = 0 ; i < 1000000000 ; ++i )
   tt.activate( milliseconds( 100 ),
         [&counter](){ ++counter; } );

   while( counter != 1000000000 )
      this_thread::sleep_for( chrono::milliseconds( 100 ) );
   
   cout << counter << endl;
}

С некоторым предательским чувством в коленках скомпилировал и запустил (MSVC++2013 64-bit, Win 8.1 64-bit):

bash-3.1$ time ./many_single_shot_timers.exe
1000000000

real    4m59.429s
user    0m0.000s
sys     0m0.015s

Таки миллиард таймеров за 5 минут, т.е. по 200 миллионов в минуту, т.е. по 3.3(3) миллиона в секунду. С учетом того, что профилированием и оптимизацией я не занимался, то получается вполне себе достойно. Честно скажу, вообще на таких объемах не запускал, не был уверен, что... :)))

Upd. Этот же тест, но с механизмом timer_list -- 4m31s, расход памяти приблизительно такой же -- около 42Mb. А вот timer_heap подкачал: 28m56s при расходе памяти под гигабайт. Вполне ожидаемый вывод: timer_heap не подходит для очень большого количества таймеров. Только удивительно, насколько именно не подходит.

PS. ЛОР -- торт! ;)

[prog.c++] libcds обновился до версии 1.6.0

Состоялся релиз библиотеки CDS (Concurrent Data Structure) 1.6.0. Хорошая C++ная библиотека с большой кучей всякого разного для lock-free под вменяемой лицензией. Если нужно что-то C++ное из этой области, то имеет смысл начинать поиски именно отсюда. Тем более, что разработчик из России, с ним можно общаться на русском языке.

[prog.memories] Vim, Ruby, Mxx_ru -- десять лет в пути...

Проработать на одном месте или над одним проектом долгое время -- это, блин, уникальный опыт. Причем долгое -- это где-то около 10 лет. Такой срок позволяет разглядывать некоторые вещи в действительно исторической перспективе. То, что когда-то нравилось и казалось удачным решением, с течением времени оказалось выброшенной пустышкой или же стало непозволительно дорогим при сопровождении. И наоборот, какая-то мелочь, которая была придумана сходу и которой не придавали особого значения, выдержала проверку временем и стала одной из немногих вещей, за которые реально не стыдно. А потом все поменялось :) Происходит что-то, что переводит старую разработку из дорогой в сопровождении во вполне себе хороший инструмент, который востребован, уже адаптирован под текущие нужды и не так уж много времени и сил требует на поддержание своей работоспособности. Тогда как вещь, которая верой и правдой служила тебе 7-8 лет подряд, и которой ты долгое время гордился, потихонечку отправляется куда-то на задворки в ожидании очередного поворота истории :)