суббота, 16 августа 2014 г.

[prog.management] Интересное на счет себестоимости софта

Интересные и, как мне кажется, здравые мысли нашел вот в этой статье: The Dirty Little Secret of Software Pricing. По крайней мере очень сильно похоже на причины успешности того небольшого коллектива, которым я руководил в Интервэйле до 2012. И на причины проблем, с которыми пришлось бороться после перехода на более ответственную должность.

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

Итак:

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

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

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

[prog] Две интересные обзорные статьи на тему протоколов для Internet of Things

Статьи на английском, но читаются легко. Полагаю, что довольно поверхностные и, возможно, местами спорные. Но в качестве отправной точки для дальнейшего погружения в дебри вполне приличные. Их автор -- основатель компании RTI, которая является поставщиком одной из реализаций стандарта DDS, так что человек может не знать каких-то технических деталей, но представление о том, о чем говорит имеет хорошее.

Understanding The Protocols Behind The Internet Of Things. Очень кратко по поводу MQTT, XMPP, DDS и AMQP.

What’s The Difference Between DDS And AMQP? Более подробно на тему того, что такое DDS и что такое AMQP, назначение, различия между ними и, как следствие, предпочтительные области применения.

PS. К теме DDS я пока только слегка прикоснулся. Но, после того маразма, который в "корпоративных приложениях" выстраивают вокруг HTTP, все это воспринимается как глоток свежего воздуха :)

пятница, 15 августа 2014 г.

[prog] К чему можно подключиться посредством MQTT?

А не подскажут ли мне читатели: есть ли в Интернетах какой-нибудь забавный, но вполне себе реальный сервис, выставляющий наружу MQTT-интерфейс? Чтобы к нему можно было MQTT-клиентом подключиться и провзаимодействовать?

Для чего это нужно. Хочется сделать пример работы с MQTT в SObjectizer. Про то, что есть публичные тестовые сервера для MQTT я в курсе. Но хочется демонстрации не только простейших обменов ничего не значащими строчками с тестовым сервером, а чего-то более приближенного к реальности.

Есть ли что-нибудь подобное, а?

[life.sport.darts] Награды уже ждут своих героев

Всего-то и нужно: прийти в воскресенье, 17-го августа, к 11:30 в СШ №66 г.Гомеля, поучаствовать в личном турнире в 501 single-in/double-out. Приглашаются гомельчане и жители Гомельской области. Для тех, кто раньше не играл в наших турнирах в СШ №66 участие бесплатное.

PS. Вообще, большое дело должно свершиться. Хоть, скорее всего, будет не более 10 игроков. Тем не менее, это будет первый проведенный нами турнир по дартсу в Гомеле, где будут вручаться настоящие медали. Ждали мы этого чуть больше 4-х лет. И вот оно, на пороге :)

PPS. Про очепятку в тексте на оборотной стороне медали я знаю. Так получилось ;)

PPPS. Лично я буду очень удивлен, если попаду в призеры. Не та у меня форма, не то настроение. Давно уже пора перестать мешаться на пути амбициозных и способных игроков...

четверг, 14 августа 2014 г.

[life] И еще раз читая putnik1 про Украину

К сожалению, продолжение темы от 14 декабря 2013.

При чтении putnik1 иногда возникает ощущение, что добром дело не кончится. Так было когда я читал его материалы по Ливии. Так было когда я читал его материалы по Украине в конце 2013. Как раз тогда и были высказаны опасения по поводу гражданской войны. Как показало время, далеко не напрасные опасения.

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

PS. Чуть поясню свою позицию. Я родом из СССР. Для меня страна, в которой я хотел бы жить -- это СССР. Нравится это кому-то или нет -- мне пофиг. К сожалению, ни современная РФ, ни РБ -- это не СССР. Поэтому я не за Россию, и не за Украину. Однако, по-моему мнению, то, что происходит сейчас на Украине -- это часть большого передела мира, последствия которого сейчас сложно предсказать. Но, есть у меня подозрение (опасение, если хотите), что если в этом переделе Россия проиграет, то никому из бывшего Союза мало не покажется. Может во мне еще живы догмы, внушаемые советской пропагандой... Тем не менее, думаю, что ни в Европе, ни в США, ни в Китае никому белорусы с украинцами не нужны. Тогда как в составе или рядом с Российской Империей (как бы она не называлось), шансов на нормальную жизнь гораздо больше.

PPS. Не смотря на то, что в данном случае я оказываюсь пророссийски настроенным наблюдателем, я не радуюсь ни отчетам о победах ополченцев, ни успехам Вооруженных Сил Украины. В этих сводках я вижу только смерти и разрушения. Которых, по моему глубокому убеждению, быть не должно было.

[prog.c++] Состоялся релиз SObjectizer 5.4.0

SObjectizer -- это реализация модели акторов для C++, позволяющая программировать на C++ с использованием работающих на разных нитях агентов, общающихся между собой посредством сообщений. SObjectizer существенно упрощает разработку событийно-ориентированных приложений, для параллельной и независимой обработки событий в которых требуется многопоточность и/или распределенность. SObjectizer использовался для создания как для мелких утилит, так и серьезных распределенных приложений, работающих под большой нагрузкой в режиме 24x7.

Последние несколько лет SObjectizer развивается на SourceForge как OpenSource проект под BSD-лицензией. Версия 5.4.0 является результатом очередного этапа развития проекта.

Версия 5.4.0 содержит несколько изменений и улучшений, среди которых можно выделить следующие:

  • новый тип mbox-а: multi-producer/single-consumer (MPSC). Позволяет организовать эффективное peer-to-peer взаимодействие агентов (ранее такое взаимодействие было частным случаем использования модели publish/subscribe). Накладные расходы на общение двух агентов через MPSC заметно ниже, чем при работе через старые multi-producer/multi-consumer mbox-ы;
  • для обработчиков событий можно указывать признак thread safety. По умолчанию все обработчики событий рассматриваются как not_thread_safe и для одного агента обработчики его событий запускаются строго последовательно. Если же событие помечено как thread_safe, но новый диспетчер adv_thread_pool может параллельно запустить несколько thread_safe-обработчиков для одного агента на разных нитях;
  • новый диспетчер thread_pool, который использует пул рабочих потоков и распределяет обработчики событий между этими потоками (здесь чуть подробнее о принципах работы этого диспетчера);
  • новый диспетчер adv_thread_pool, который так же использует пул рабочих потоков и распределяет обработчики событий с учетом флага thread safety (здесь чуть подробнее об этой возможности);
  • режим autoshutdown -- SObjectizer Environment завершает свою работу после дерегистрации последней кооперации;
  • теперь диспетчеров можно добавлять и после запуска SObjectizer Environment (ранее это нужно было делать только до старта Environment-а);
  • серьезная реорганизация внутренней кухни, увеличение производительности и улучшение масштабируемости.

Более подобно список изменений в версии 5.4.0 на русском языке описывается здесь.

Версия распространяется в виде сборки so-201408-00, в которую кроме SObjectzer 5.4.0 входит еще несколько SObjectizer-библиотек, предназначенных для разработки больших, распределенных приложений на основе SObjectizer, а именно:

  • so_log, служащая оберткой над ACE Logging и упрощающая логирование для агентов;
  • so_sysconf, позволяющая собирать большое приложение из маленьких кусочков, оформленных в виде dll/so-библиотек;
  • so_5_transport, оформляющая работу с TCP/IP соединениями в виде транспортных SObjectizer-агентов;
  • mbapi, являющаяся высокоуровневой библиотекой для обмена сообщениями между агентами или между компонентами распределенного приложения.

Примечание. Компилятор Microsoft Visual C++ 11 (т.е. MSVS2012) больше не поддерживается. Для компиляции под Windows теперь нужно использовать Visual C++ 12 (т.е. MSVS2013).

Релизная сборка может быть загружена с SourceForge в виде архива или же взята из svn-репозитория.

Wiki-раздел SObjectizer-а на SourceForge содержит более подробную информацию как об особенностях версии 5.4.0, так и о самом SObjectizer и его основах.

[prog] Большая статья о SObjectizer на OpenQuality.ru

Сегодня на OpenQuality.ru опубликована большая статья: "SObjectizer: прошлое, настоящее, будущее". В ней я попытался рассказать о том, откуда и как возник SObjectizer, как он развивался, к чему пришел и что мы хотим сделать в ближайшем будущем.

Хочу поблагодарить Николая Гродзицкого, Бориса Сивко, Артура Суднеко, Николая Шмакова и редакцию OpenQuality за помощь в ее подготовке и публикации.

PS. Репост ссылки на эту заметку или саму статью всячески приветствуется.

вторник, 12 августа 2014 г.

[prog] Гоблин о тендере на разработку ПО

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

воскресенье, 10 августа 2014 г.

[life.idiotic] Русский язык слаб... Поэтому он очень хорош для писателей...

Феерический идиотизм вот отсюда. Сначала некто Е.Понасенков набрасывает:

Известный тезис о том, что "могуч русский язык" - категорически ложен: он слаб. Чтобы описать мое отношение (как историка и гражданина) к режиму, к рабскому агрессивно-послушному большинству - не хватает слов. Сказать, что я все это презираю, что мне это отвратительно, омерзительно, назвать это скотством, убожеством, гнилью, грязью и т.д., и т.д. - это НИЧЕГО не сказать. Мат – еще акварельнее. Слаб русский язык, чрезвычайно слаб и беден. По крайней мере, для описания самой России. Для какой-нибудь тургеневской Франции (где был придуман тезис) - может, он и богат, велик и могуч, а здесь беден.

Затем в камментах его начинают защищать (выделение жирным мое):

Вы попробуйте изучить один из европейских языков и начать думать на нём. Тогда поймёте, что Панасенков прав.
Русский язык очень хорош для писателей, лжецов, демагогов и пропагандистов...

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

Мне вот, как не россиянину, интересно. На "Эхо Москвы" личности вроде Понасенкова -- это норма или исключение?

Про этого персонажа услышал, к счастью, в первый раз. Вот тут про него, как я понял, очень кратко и по делу. Критику его исторических исследований так же легко найти в Интернете (вот, например).

[life.prog.memories] Какие-то вещи нынешним программистам может быть очень сложно рассказать...

Занимаюсь сейчас статьей про SObjectizer для одного из русскоязычных ресурсов. Пытаюсь сказать несколько слов про самый ранний этап развития этого проекта, который происходил в Гомельском КП Системного Программирования с 1995 по 2000-й годы. И понимаю, что целое поколение нынешних программистов, которое пришло в профессию, скажем, после 2004-го года, просто не поймет того, что стоит за скупой фразой "в сложных социально-экономических условиях".

Между тем, для разработчиков ПО, которые жили и работали в небольших областных городах, вроде Гомеля, вторая половина 90-х годов -- это была жопа. Если ты не свалил на Запад или хотя бы в Москву, то с работой и с ее оплатой была напряженка. Даже тем, кто смог переключится на склады/бухгалтерию и прочую автоматизацию торговли, приходилось крутиться как белке в колесе.

А уж о том, чтобы вчерашний выпускник ВУЗа с профильной специальностью, с минимальными знаниями и посредственными способностями мог устроится на эквивалент нынешних $400-$500, а затем сидя на попе ровно в течении года-двух выйти на уровень $1000-$1500, работая при этом на самой современной технике, в комфортабельном офисе с кучей корпоративных плюшек... Подавляющему большинству выпускников в наших провинциях о таком не приходилось и мечтать. Да и, как я понимаю, не только в наших провинциях. На Украине и в России в областных центрах было не лучше.

Собственно к чему я это все. Да не к чему. Нынешнее поколение, конечно, зажралось, разжирело, по чем фунт лиха не знает... ;) Но я не об этом, собственно :) Просто старею, воспоминания иногда накатывают, вот старческое брюзжание и появляется.

PS. С удивлением обнаружил, что жива и доступна очень старая моя статья про SCADA Objectizer в "Компьютерной газете". От, страшно подумать, 2000-го года :)