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

О блоге

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

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

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

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

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

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

понедельник, 8 февраля 2016 г.

[life.history] "...унесли и его личную карточку с секретным кодом..."

Шикарный фрагмент встретился в книге "Признание шефа разведки". Речь идет про период лечения президента США Рональда Рейгана после покушения на него в марте 1981-го года. Лечение и восстановление, как оказывается, происходило не быстро и чем-то напоминало ситуацию с Борисом Ельциным, который часто "работал на даче с документами". Так вот, один из наглядных штришков того, что творилось на верхушке власти в США:

В госпитале дежурный офицер при президенте, который носил с собой коды и приказы президента для запуска ракет с ядерным оружием в случае войны, вел бесплодную борьбу с ФБР. Забрав с собой личные вещи и одежду президента как возможные доказательства в ходе расследования покушения, сотрудники ФБР унесли и его личную карточку с секретным кодом, который подтверждал подлинность президентских приказов о нанесении ядерного удара в чрезвычайных обстоятельствах. Официальные лица утверждали, что контроль над ядерными силами США не утерян, но упомянутая путаница указывала на слабость в системе управления ядерным оружием, которая характеризовалась как абсолютно надежная. Состояние президента еще больше усилило чувство потери ориентации в правительстве.

Книга "Признание шефа разведки" написан американцем, Бобом Вудвордом, одним из "отцов" "Уотергейтского скандала".

Так что бюрократия, идиотизм и неразбериха -- это интернациональное явление.

пятница, 5 февраля 2016 г.

[life] Вопрос про Москву

Может так случится, что на следующей неделе пару дней буду в Москве. С кучей свободного, как пока представляется, времени. Которое не понятно, как убить :)

В связи с этим пара вопросов к москвичам и понаехавшим:

В какой сети ресторанчиков с европейской кухней можно нормально поесть? Что-нибудь повыше McDonald's-а и Subway, но и не рестораны высокой кухни :)

Есть ли в Москве какие-то места, где можно спокойно посидеть 3-4 часа в тепле, а если и с WiFi, то вообще здорово? Что-то мне кажется, что если я в какой-нибудь кафейне на такое время зависну с двумя чашечками чая, то на меня будут очень косо смотреть :)

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

[prog.c++] Чуток подробнее про сравнение производительности SObjectizer-5.5 и CAF

Продолжение старой темы о том, что мы проводим сравнение производительности SObjectizer-5.5 и CAF. Можно сказать, что портирование бенчмарков закончено и результаты получены. Теперь их нужно представить в удобочитаемом и наглядном виде. Чем и занимаемся. Есть надежда, что опубликуем их на следующей неделе в блоге проекта. Пока подтверждается то, о чем мы говорили ранее: на операциях создания/уничтожения акторов мы значительно, в разы проигрываем CAF, но на операциях обмена сообщениями обычно быстрее, местами ощутимо быстрее.

На обмене сообшениями мы медленнее только в одном вырожденном случае, когда запускается тест agent_ring на thread_pool-диспетчере. По сути это однопоточный бенчмарк, наиболее эффективно он работает, когда все акторы привязаны к одной нити. Но в случае работы на пуле потоков наша схема диспетчеризации проигрывает work-stealing схеме CAF-а.

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

четверг, 4 февраля 2016 г.

[prog.flame] Конкурентный HelloWorld на Go и на C++

Поиск в Google по ключевым словам "actor model C++" привел вот к этой записи в чьем-то блоге: Concurrent Hello World in Go, Erlang and C++. Go-шный вариант там выглядит весьма симпатично. Отличный показатель того, для чего затачивался язык (а так же показатель того, за пределами какой области язык не нужен). Подумалось, что и на C++ можно сделать не совсем 1-в-1, но очень близкое по стилю.

Попробовал. Кое-что получилось :)

среда, 3 февраля 2016 г.

[prog.flame] Глава про CSP в "Seven Concurrency Model In Seven Week" еще хуже...

После главы про акторов попробовал прочитать главу про CSP. Это вообще лютый звиздец. Вместо рассказа про CSP идет демонстрация каких-то мутных примеров на Clojure и ClojureScript.

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

Но вот если ты не фанат Lisp-а, и если тебе кажется, что инициирование двух операций с очень разными эффектами посредством <! и <!!, это не есть хорошо и элементарная опечатка может привести к серьезному изменению поведения программы, то ничего полезного про CSP ты не узнаешь.

Единственным положительным остатком лично для меня стало понимание того, что недавнее добавление mchain-ов в SO-5 было правильной вещью. Фактически, для C++ сделаны каналы, аналогичные Clojure-овским (буфферизированные и небуфферизированные, с выбрасыванием самого нового или самого старого сообщения, с тайм-аутами, включая отсчет общего тайм-аута для всей операции receive). Единственное, чего в SO-5 пока нет, как это возможности запустить receive сразу для нескольких mchain-ов. Но это просто из-за того, что в стандартной библиотеке C++ нет чего-то вроде WaitForMultipleObjects из WinAPI. Впрочем, хорошая тема для версии 5.5.16, с некоторой потерей эффективности такой мультканальный receive можно сделать.

Ну и еще одна штука, которая подтверждает правильность использованного в SObjectizer подхода:

The primary strength of CSP compared to actors is flexibility. In an actor program, the medium of communication is tightly coupled to the unit of execution — each actor has precisely one mailbox. In a CSP program, by contrast, channels are first class and can be independently created, written to, read from, and passed between tasks.

Что в моем вольном переводе звучит как:

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

Как раз этого в SO-5 мы и достигли введя mbox-ы, которые можно создавать, в которые можно отсылать сообщения, из которых можно получать сообщения, и которые могут использоваться совместно разными агентами. Т.е. мы получили такую же гибкость, которую дает CSP, но объединив Actor Model и Publish/Subscribe. И добавив к ней недавно еще и полноценные CSP.