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

О блоге

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

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

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

Вы художник? Бармен или музыкант? Или, может быть, коллекционер? Плотник или столяр? Кузнец или слесарь? Владеете маленьким магазинчиком или управляете большим производством? Реставрируете старинные часы или просто починяете примус? Всю жизнь занимаетесь своим любимым делом и хотели бы иметь фото на память?

Предлагаю сделать портрет в обстановке, связанной с вашей работой или увлечением. Абсолютно бесплатно. Очень уж мне нравится фотографировать людей в их естественной среде. Происходить это может так...

вторник, 11 декабря 2018 г.

[life.memories] К 25-летию DOOM-а

Говорят, что давеча стукнуло 25 лет знаменитому DOOM-у: Reflections on DOOM's Development. Ну а раз так, то невозможно не вспомнить это знаковое явление давно минувшего прошлого.

Сам я с DOOM-ом познакомился или в конце 1994-го или уже в 1995-ом. Причем, как мне помнится, сперва я прошел DOOM2. А затем уже, из спортивного интереса, и первый DOOM. А потом и все add-on-ы к ним, которые попадали мне в руки. До рисования собственных уровней дело не дошло, хотя какой-то редактор уровней мы раздобыли.

В соревнованиях по DOOM-у я не участвовал. Да и их в нашей местности в 1995-96, наверное, и не было еще. Потом про соревнования слышал и кто-то из моих коллег по аспирантуре даже пытался в них участвовать, но мне это уже было не интересно. Так что на каком уровне я сам играл не могу сказать. Но когда несколько раз прошел DOOM-у, то развлекался следующим образом: запускал DOOM, затем с помощью чит-кодов переходил на нужный мне уровень и начинал проходить его начиная с одним пистолетом, поднимая остальное оружие уже на самом уровне. Первый DOOM я так прошел полностью. Во втором DOOM-е добрался до 17-го, что ли уровня, и все. Там уже с одним пистолетом против толпы монстров не попрешь.

Еще, помнится, развлекался тем, что проходил уровни не сохраняясь. Т.е. сохраняешься только в начале уровня, а дальше -- нет, пока не перейдешь на следующий.

Играл на уровне сложности ultra-violence, без чит-кодов.

Вообще, в то время я был большим фанатом стрелялок от первого лица. Но вот другие игры на движке DOOM-а, вроде Hexen или Heretic, мне не зашли.

Зато потом появился Duke Nukem. А еще чуть позже сделанный на его движке Redneck Rampage. Правда, Duke Nukem был не первой стрелялкой, в которой можно было поднимать ствол вверх или опускать вниз. Первой такой стрелялкой был Jedi Knight по мотивам вселенной Звездных Войн. Вроде как Jedi Knight прошел совсем незаметно на фоне DOOM-ов и Duke Nukem, но это была очень хорошо сделанная игра, атмосферная, в которой даже световым мечом можно было противников рубать (и не только рубать, но и отражать выстрелы врагов).

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

А жирную точку в увлечениях шутерами поставила такая малоизвестная стрелялка, как NAM. Написана она была на движке Duke Nukem-а и в конце 1990-х это выглядело уже архаично, конечно же. Но атмосфера, которая возникала в игре была просто какой-то невероятной. Такого я больше нигде не видел. Какой-то уровень начинался вообще с того, что открывалась дверь приземлившегося на опушке джунглей вертолета и по тебе начинали палить со всех сторон. Не успеваешь моргнуть глазом, как ты уже труп. Нужно было сходу брать ноги в руки и бежать со всех сил, да еще по ковбойски стреляя в возникающих то тут, то там врагов. Ну а хождение по ночным джунглям -- это вообще отдельная история. Только вот пройти полностью NAM не удалось. Застрял на каком-то уровне и все. Несколько дней тыкался, тыкался. А потом раз, и отвернуло от шутеров. Навсегда :)

Самое любопытное -- это то, что сейчас вспоминаешь все это совершенно равнодушно. Даже ностальгии никакой нет почему-то. Не смотря на то, что времени на DOOM и прочие компьютерные игры убито было немерено. Ощущение, что все это происходило с каким-то другим человеком, не со мной.

четверг, 6 декабря 2018 г.

[prog.c++] Fast formatted input в C++: есть ли и нужен ли кому-нибудь?

Внезапная, что называется, тема. В обсуждении нового стандарта Фортрана на LOR-е всплыло такое интересное достоинство языка Фортран, как высокая скорость его стандартного форматированного ввода/вывода (из-за адекватности некоторых персонажей хоть сколько-нибудь конкретные цифры удалось получить только на шестой странице обсуждения).

Собственно, невысокая скорость штатных C++ных iostreams -- это ни для кого не новость. Но вот что интересно: а для C++ существуют живые и поддерживаемые библиотеки для работы с форматированным вводом? Ну т.е. чтобы читать данные из текстовых файлов (или stdin) не вот так:

int x, y;
char comma;
std::cin >> x >> comma >> y;

а, например, вот так:

fastinput::read(std::cin, "{},{}", x, y);

Или, если нужно прочитать значения в шестнадцатиричном формате:

fastinput::read(std::cin, "{:x},{:x}", x, y);

И, если таких библиотек нет (либо нужно разыскивать их днем с огнем), то нужен ли вообще кому-нибудь подобный инструмент?

Причем акцент здесь на том, чтобы быстро разбирать большие объемы информации в текстовом виде, без учета локалей и пр., включая, возможно и UTF-8.

Или в мире C++ с такими задачами мало кто сталкивается? А когда сталкиваются, то просто делают свои велосипеды, которые на публике никогда не показываются?

суббота, 1 декабря 2018 г.

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

Пришло время публиковать очередной список просмотренных за минувший месяц фильмов. Как обычно, в начале списка перечислены фильмы, которые понравились мне больше.

Мотылек (Papillon, 2017). Не ожидал. Начал просмотр со скепсисом, но был очень сильно и приятно удивлен. И история хорошая, и рассказана мастерски, и никаких перегибов в розовые сопли или чернушный жесткач не было. Определенно лучший из просмотренных за месяц.

Король вне закона (Outlaw King, 2018). Уж не знаю, как там с историзмом обстоит, но мне понравилось. А качественно сделанные батальные сцены по нынешним временам так вообще приятно удивили.

Фантастические твари: Преступления Грин-де-Вальда (Fantastic Beasts: The Crimes of Grindelwald, 2018). В принципе, очень достойное продолжение и первых "Фантастических тварей", и всей киновселенной Гарри Поттера в целом. Визуальная составляющая выше всяких похвал. Но, как мне показалось, немного скучновато и нудновато, первые "Фантастические твари" были динамичнее.

Поиск (Searching, 2018). Очень даже неплохо. Нужно только набраться терпения пока последняя треть фильма не начнется.

Багровая мята (Peppermint, 2018). Двойственные ощущения. С одной стороны, вроде бы и экшен есть. Но, с другой стороны, этого экшена не так много, как хотелось бы. Да и хрупкая женщина в роли супер-пупер ниндзя -- это так себе идея.

Веном (Venom, 2018). Отличная картинка и, местами, динамичный экшен. Но мозги при просмотре включать категорически не рекомендуется. Смотреть можно разве что ради видеоряда.

Кин (Kin, 2018). Не понятно, что это было. Для детского кино слишком взрослый. Для взрослого -- слишком детский. Местами вполне себе ничего, местами занудно и не интересно. Ни то, ни се.

Истории призраков (Ghost Stories, 2017). Начало обещало качественный ужастик. В конце все скатилось в какую-то фигню. Да, в финале фильма все объяснили, но от фильма ужасов ждешь вовсе не логичного объяснения происходящего.

Придержи тьму (Hold the Dark, 2018). Снято, конечно, классно. Но ведь ни черта не понятно!

среда, 28 ноября 2018 г.

[prog.c++] Первый набросок инструментов unit-тестирования агентов в SObjectizer

В результате первой попытки выкуривания бамбука на тему того, как можно писать unit-тесты для агентов, появился нижеследующий пример кода. Который, как мне думается, удовлетворяет двум важным критериям. Во-первых, он выглядит реализуемым. И, во-вторых, он позволяет достаточно декларативно записывать тесты для отдельных агентов.

Кому интересно посмотреть и пообсуждать -- милости прошу под кат.