среда, 2 августа 2017 г.

[prog.flame] Не нужно отождествлять и увязывать друг с другом Actor Model и Reactive Manifesto

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

Еще более усугубляет дело наличие материально заинтересованных "евангелистов", которым кровно необходимо продать свой продукт и/или услуги, построеные вокруг модели акторов. В частности, таковыми являются товарищи из небезызвестной в узких кругах конторы Lightbend. Эти товарищи стоят, в частности, за разработкой фреймворка Akka. Они же приложили руку и к небезызвестному в тех же кругах Reactive Manifesto. И все бы ничего, но продавцы услуг из Lightbend-а очень плотно увязывают Actor Model и Reactive Manifesto в своих маркетинговых материалах.

В частности, недавно они выпустили white-paper под названием "Modernization: The End Of The Heavyweight Era. Why Actor Model Matters for Could Infrastructure". В котором повествование идет приблизительно в таком ключе: разработка больших монолитных приложений на Java EE -- это отстой, прошлый век и в приличных домах Ландона и Парижу вспоминать о таком уже не комильфо. Сейчас, как-никак, XXI-ый век на дворе, поэтому есть Reactive Manifesto, а значит ваши волосы будут мягкими и пушистыми приложения должны быть отзывчивыми, эластичными и устойчивыми. Для чего вам всего лишь нужно использовать не просто модель акторов вообще, а конкретно Akka от Lightbend-а.

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

вторник, 1 августа 2017 г.

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

Подошло время очередного кинообзора. В начале списка идут фильмы, которые понравились мне больше, в конце -- которые понравились меньше. Список на этот раз небольшой, т.к. в этом месяце возможностей смотреть кино в силу объективных причин было гораздо меньше, чем обычно.


Дюнкерк (Dunkirk, 2017). Снято, конечно, мастерски. Однако, сама история не цепляет. И к основным персонажам не проникаешься ни симпатией, ни сочувствием. Может разве что за исключением героя Тома Харди.


Большой (2017). Не могу сказать, что сюжет меня зацепил. Но снято прилично, интересно смотреть, как развиваются события на экране.


Четверо против банка (Vier gegen die Bank, 2016). Немецкая криминальная комедия. Немного примитивная, немного укуренная, немного пошлая, но в целом мне понравилось.


Уйти красиво (Going in Style, 2017). Старички подсобрались и выдали пусть и средненькую, но добротную криминальную почти что комедию. Посмотрел с удовольствием.


Взрывная блондинка (Atomic Blonde, 2017). Фильм должен понравиться фанатам Шарлиз Терон. Но т.к. я не фанат, то в паузах между экшен-сценами мне было откровенно скучно. В самих экшен-сценах, как по мне, было заметно, что несмотря на проделанную работу, Шарлиз Терон -- это не Джина Карано и не Синтия Ротрок (если кто помнит). Правда, ситуацию отчасти спасал саунд-трек из хитовых композиций конца 1980-х. Например, на фрагменте из Depeche Mode я был готов простить фильму все, но и Depeche Mode оказалось слишком мало :)


Выстрел в пустоту (Shot Caller, 2017). Сильно подзатянутая криминальна драма. Мне смотреть было интересно, поскольку от трейлера у меня сложились совсем другие ожидания от сюжета. Но в самом фильме все пошло совсем по-другому, поэтому хотелось досмотреть до финала. Тем не менее некоторую неспешность и затянутость нельзя не отметить.


2:22 (2017). Фильм красивый и снятый хорошо. Но не цепляющий.


Орбита 9 (Orbita 9, 2017). Ожидал большего. Посмотреть можно хотя бы потому, что европейцы снимают кино не так, как американцы, тем более фантастику. Но не шедевр, к сожалению.

Охранник (Security, 2016). Фильм откровенно разочаровал. Как туда вписались Антонио Бандерас и Бен Кингсли -- не понятно.

понедельник, 31 июля 2017 г.

[life.sport.darts] Послесловие к World Matchplay 2017

Ну и послесловие к завершившемуся вчера PDC-шному World Matchplay. Который, как мне кажется, войдет в историю. Ибо то, что сотворил там Фил "Power" Тейлор, -- это просто спорт как он есть.

воскресенье, 30 июля 2017 г.

[life.photo] Мысли на тему хорошей (для меня) travel-камеры

Перед поездкой в Питер был вынужден решать архиважный и архисложный для себя вопрос: с какой камерой и оптикой ехать? В наличии была большая, чОрная и тяжелая зеркалка от Nikon-а (куча мегапикселей, широченный динамический диапазон, рабочие ISO вплоть до 6400) и разнообразной оптикой (в основном большой, чОрной и тяжелой). И маленькая беззеркалка Fujifilm x30 с 12-тью мегапикселями, рабочими ISO не выше 400, никаким динамическим диапазоном, кроп-фактором x7 и встроенным зум-объективом 28-112mm в эквиваленте со светосилой 2.2-2.8 (которую так же нужно пересчитывать с учетом кроп-фактора).

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

четверг, 27 июля 2017 г.

[prog.c++] Принимаются заказы на тему следующей статьи для Хабра

Отпуск закончился и пришло время возвращаться к работе. В планах подготовка очередных релизов SObjectizer-5.5 и so_5_extra, а так же подготовка доклада для C++ CoreHard Autumn 2017. При этом есть возможность выделить 1.5-2 недели для написания очередной статьи для Хабра на тему акторов (вообще) и SObjectizer-а (в частности).

Посему принимаются заявки: о чем бы вам хотелось прочитать?

Сразу хочу предупредить, что статьи получаются не самые маленькие и довольно-таки скучные, хотя на их качество вроде пока никто не жаловался (примеры можно посмотреть здесь).

На данный момент есть одна тема, которая может считаться актуальной, т.к. она всплыла в комментариях к одной из предыдущих статей на Хабре. Речь о том, как же делать stage agents для того, чтобы использовать SEDA way. Немного на эту тему говорилось здесь, но напомню суть. Допустим, нам нужно выполнить операцию, которая состоит из шагов 1, 2 и 3. Мы можем создать актора для выполнения этой операции, который сам, последовательно, будет делать шаги 1, 2 и 3. Если нам нужно одновременно обслуживать 100500 таких операций, то и акторов в программе одновременно будет жить 100500. Что имеет свои негативные последствия. Либо мы можем сделать всего трех акторов: первый будет делать шаг 1, второй -- шаг 2, третий -- шаг 3. При этом каждый актор может одновременно выполнять свой шаг для 100500 параллельных операций. Как оказалось, такая краткая формулировка оставляет у читателей белые пятна в понимании, поэтому более подробный рассказ об особенностях реализации SEDA way на акторах в виде статьи может быть интересен кому-нибудь.

Но, если кто-то из читателей озвучит более интересную тему или задаст интересный/сложный вопрос, то тему можно будет и поменять.

Поэтому прошу оставлять свои соображения в комментариях, или же можно прислать их мне на почту: eao197 на stiffstream com.

среда, 26 июля 2017 г.

[life] Братская могила №142

Этот пост будет о личном, о части истории моей семьи. Хотя подобные истории совсем не уникальны для бывшего СССР.

Мой дед по отцовской линии погиб в Ленинграде зимой 1941-го года. Когда он ушел на фронт, моему отцу не было и трех лет. Соответственно, мой отец своего отца даже не помнил. А могилу смог посетить только в 1988-ом году.

В похоронке на деда было указано, что он захоронен на Пискаревском кладбище в траншее с таким-то номером. Когда отец в начале 60-х годов служил в Ленинграде, он пытался найти эту траншею, но тогда шла реконструкция кладбища и узнать где же именно находится захоронение не удалось. А в следующий раз отец смог приехать в Ленинград лишь 25 лет спустя, взяв с собой свою семью.

Тогда в архиве кладбища нашли информацию и сказали номер братской могилы. Мы нашли эту могилу. До недавних пор я думал, что помню этот номер.

Прошло еще 29 лет и вот уже я сам привез свою семью в Ленинград. И пришли на Пискаревское кладбище, на могилу к моему деду, которого даже мой отец совсем не помнил, ну а я родился через 32 года после его смерти.

И тут выяснилось, что я помню не тот номер. Приблизительное место помню, а точный номер -- нет.

Обратился в архив. И по мере ответов на вопросы архивариуса поймал себя вот на чем: дед призывался из под Твери, погиб он в Ленинграде, разыскивает его могилу внук из Гомеля. Воевала вся страна -- так нам рассказывали в детстве. Воевала вся страна, осознал я в тот момент, когда отвечал на вопросы архивариуса.

Информацию подняли достаточно быстро. Охотников Иван Андреевич 1909-го года рождения, умер 25-го декабря 1941-го года, захоронен в братской могиле №142.

На самом деле на написание этого поста подтолкнуло вот что: в обычной жизни может казаться, что Великая Отечественная Война -- это уже далекая история, больше 70 лет после Победы прошло. Но вот на Пискаревском кладбище понимаешь, что нет, не далекая. Что есть практически осязаемая ниточка от моего деда к моему отцу, от моего отца ко мне, от меня... На Пискаревке ты это ощущаешь. Там таких ниточек с полмиллиона.

Полмиллиона. И часть из них оборванны навсегда.

И было это совсем, совсем недавно.

пятница, 14 июля 2017 г.

[prog.c++14] so_5_extra-1.0.1 и so-5.5.19.3

Сегодня мы выкатили очередную версию so_5_extra -- 1.0.1, а накануне обновили SObjectizer до версии 5.5.19.3. Доступно все, как обычно, на SourceForge: здесь so_5_extra, здесь SObjectizer.

В so_5_extra-1.0.1 добавлена всего одна фича: это collecting_mbox.

Смысл collecting_mbox в том, что иногда агенту X нужно получить строго N сообщений типа M от других агентов. Ну вот, например, стартует родительский агент-менеджер и создает пять нужных ему дочерних коопераций. Каждая дочерняя кооперация тратит какое-то время на свои начальные действия (например, загружается конфигурация, устанавливается подключение к БД, инициализируется внешнее устройство и т.д.), после чего отсылает родителю сигнал о том, что дочерняя кооперация готова. Соответственно, родительскому агенту нужно получить все пять сигналов о готовности дочерних коопераций, лишь после этого родительский агент сможет продолжать работать.