суббота, 14 декабря 2013 г.

[life] Когда читаю материалы putnik1 по Украине...

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

Похожие ощущения есть и сейчас. По аналогии напрашивается вывод, что добром нынешние события на Украине не закончатся. Что очень и очень грустно. Во-первых, украинцев жаль просто по соседски, гражданскую войну в каком бы то ни было виде никому не пожелаешь, тем более живущим рядом братьям-славянам. Во-вторых, если понятно кому удастся устроить заваруху на Украине, то аналогичные попытки обязательно будут предприниматься и в отношении Белоруссии, и России. А это мне уж точно на фиг не надо. Так что грустно.

PS. Если кто не в курсе, речь идет о ЖЖ Льва Вершинина: putnik1.livejournal.com.

пятница, 13 декабря 2013 г.

[prog.os] Вынесу из комментариев: зачем и для чего нужны облачные ОС

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

Облако -- это куча серверов, отданных под выполнение какой-то задачи (какого-то приложения, вроде blogger-а).

Поскольку приложение не может крутиться на голом железе, на серверах (на каждом из серверов) должна быть развернута ОС. В случае традиционных ОС обозначаются две проблемы:

1) сложность администрирования и настройки. Т.е. каждый сервер должен быть правильно сконфигурирован, на него должен быть залит необходимый промежуточный софт (jvm, http-сервер, sql или nosql сервер, какой-нибудь mq). Должны быть определены юзвери, каждому из которых должны быть даны соответствующие пароли и явки имена, пароли и права доступа...

2) оверхед во время исполнения приложения. Традиционная ОС выполняет свой код в kernel space, а код приложения в user space, переключение контекстов -> лишние расходы. Плюс, запущенное в облаке приложение традиционная ОС рассматривает просто как какое-то приложение. Соответственно, какого-то специального тюнинга сервисов ОС под это приложение нет.

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

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

Так вот, вся эта кухня с объединением ядра ОС и модулей приложения в один образ уже давно была разработана и опробована на ОС РВ. Но явно пока не востребована в облаках.

[prog.os] Анонсы "облачных" ОС. А куда смотрят производители ОС РВ?

Пару месяцев назад на глаза попался анонс "облачной" ОС под названием OSv. Идея там была простая: зачем держать на облачных серверах традиционную ОС, если можно поверх железа запускать гиппервизор, на нем тонкую специализированную прослойку OSv, внутри которой будет работать JVM с пользовательским приложением? Довольно подробно эта мысль освещается в презентации по OSv, если кто еще не видел, то рекомендую. А последний слайд, для наглядности, я размещу прямо здесь:

Вчера увидел анонс еще одной облачной ОС -- MirageOS. Разрабатывает ее, похоже, та же команда, что и Xen. Идея, как я понимаю, в MirageOS практически такая же, как и в OSv. Но, если OSv затачивается на запуск базирующихся на JVM приложений (не только Java, но и JRuby, Jython, Clojure), то в MirageOS основным языком является OCaml.

Разработчиков MirageOS я могу понять. У них сильна вера, что если взять "правильный" язык, и все сделать "правильно" с самого начала, то получится хорошая и удобная экосистема, в которой разработка и обслуживание приложений будет проще, удобнее, безопаснее и дешевле. В принципе, я сам придерживаюсь такого же взгляда на SObjectizer. Но очень явных и впечатляющих успехов на этом поприще добилась Apple со своей экосистемой из MacOS/iOS, Objective-C, и собственными сервисами вроде iTunes.

Так что подход разработчиков MirageOS/Xen мне понятен. Но более симпатичен, все-таки, взгляд на вещи команды OSv. Какую бы удобную и уютненькую домашнюю атмосферу не предоставляла бы MirageOS, но необходимость использования OCaml... Тогда как в OSv можно задействовать уже имеющиеся наработки на Java/Ruby/Python/Clojure и даже что-то на C.

Но вот что вызывает в связи с этим всем мое недоумение, так это отсутствие новостей о попытках выйти на рынок "облачных" ОС производителей специализированных ОС, таких как ОС реального времени. Когда в конце 90-х годов я работал в КБСП в отделе, связанном с системами АСУТП, довелось узнать, что помимо традиционных и хорошо известных всем ОС (вроде Windows, OS/2, Linux, Free/Net/OpenBSD, Solaris, HP-UX и т.д.) существуют мало кому известные, заточенные под задачи реального времени, специализированные промышленные ОС. Вроде QNX, OS-9000, VxWorks и пр.

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

Так вот для меня непонятно, почему производители таких ОС не пытаются влезть в нишу облачных систем. Ведь у них уже есть годами отшлифованные наработки (по тому же сетевому стеку, например). Плюс, большинство из них поддерживает POSIX, а некоторые, наверняка поддерживают и довольно свежие версии GCC. Так что портирование приложений на такие платформы вряд ли потребует серьезных трудозатрат.

Хотя, может я просто не слышал о таких попытках, а на самом деле они есть. Все-таки от "облаков" я очень далек, многого не знаю. А может дело намного проще: все упирается в деньги. Ведь специализированные ОС РВ -- это коммерческие продукты. А не OpenSource разработки, вроде Linux-а. Если облачному провайдеру нужно поставить ОС на несколько тысяч серверов, а каждая инсталляция обойдется ему в какую-то сумму лицензионных отчислений, то вопрос в пользу бесплатного дистрибутива Linux или FreeBSD будет решен сам собой :)

С другой стороны, может разработчики ОС РВ вовремя не заметили тренда. А может, как в случае купленой BlackBerry и находящемся сейчас в непонятном статусе QNX, у них есть совсем другие проблемы...

PS. Кстати говоря, не так давно узнал, что PalmOS довольно долго не была полноценной ОС, а базировалась на базе ядра ОС AMX от KADAK Products Ltd. И отсутствие реальной многозадачности в первых версиях PalmOS было вызвано такой банальной причиной, как условия лицензирования AMX: Palm просто не купил соответствующий модуль AMX! Между тем, AMX RTOS вполне себе живет и здравствует до сих пор.

четверг, 12 декабря 2013 г.

[prog.c++] Qt 5.2: Digia оправдывает свой производственный план

Этот пост как некое дополнение к анонсу релиза Qt 5.2. В конце 2012-го или в начале 2013-го мне довелось пообщаться с представителем Digia по поводу планов относительно Qt на мобильных устройствах. Digia планировала к концу 2013-го сделать полную поддержку Android и бета-версию поддержки iOS. Похоже, план они перевыполнили. И поддержка Android, и поддержка iOS заявлена как production ready. На iOS, конечно, нашлись свои заморочки из-за дебилизмаособенностей Apple, но все равно это большое дело. Респект.

Как человек, который в свое время с удовольствием попрограммировал на Qt, не могу не порадоваться за развитие этого фреймворка. Видимо, выход из-под крыла Nokia пошел Qt на пользу.

[life.wow] на работу...если там нужно работать

Ввязался в обсуждение темы дистанционного образования на Тупичке Гоблина. Один из моих собеседников выдал фразу, всей глубины и значимости которой я пока осознать не могу :) Но, похоже, она достойна отдельного внимания:

Ну и в догонку: мало кто возьмет на работу тупо из-за того, что кто-то окончил хороший университет с хорошими рекомендациями, если там нужно работать.

[prog] Подход к выбору сторонних библиотек внушаить

Найдено вот здесь:

У нас в компании принята политика выбора библиотек.
1. Обязательно open source под либеральной лицензией (GPL идет лесом сразу, проприетарщина допустима только при наличии саппорт контракта не менее чем на срок жизни проекта с прибитым гвоздями SLA или при наличии исходников)
2. Библиотека в обязательном порядке проходит acceptance review при котором проверяется качество кода, вменяемость разработчика, политику патчей, активность комьюнити, покрытие тестами, систему сборки и т.п. По результатам AR может быть три вердикта: "в топку", "берем" и "берем под свою ответственность". Последнее означает что мы посылаем разработчика в пень и форкаем проект в свою инфрастркутуру, налаживаем систему сборки, тестирование и т.п. В некоторых проектах наши люди становятся основными контрибуторами и эти проекты фактически переходят под наш контроль.
3. Если библиотека признана годной, то она проходит compatibility review на котором проверяется насколько архитектура библиотеки совместима с нашими проектами. Часто при этом пишутся тесты на типичные сценарии из наших проектов. Обычно этим занимаются интерны/джуниоры под наблюдением старших. Если уж они способны справится с библиотекой, то и нормальные разработчики смогут.
4. Если оба ревью пройдены библиотека считается разрешенной к использованию. Библиотеке назначается внутренний мейнтейнер который собирает ее в пакет, следит за обновлениями, отправляет патчи, общается в списках рассылки, рекомендует или наоборот запрещает переход на новые версии. Как правило этим занимается тот же человек что проводил AR, но иногда на эту роль мы берем на контракт разработчика библиотеки.

Поскольку протокол занимает много времени, мы проводим предварительный CR для всех потенциально пригодных библиотек которые появляются в поле зрения.

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

Для статистики: протокол прошли >100 библиотек из них разрешены к использованию 32 из них активно используются 12. Включены в инфраструктуру компании и опубликованы — 5.

Внушаить! Правда, очень хочется узнать, что за язык разработки, что за прикладная область, ну и что за компания. А то как-то сомнения гложут... :)

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

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

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

среда, 11 декабря 2013 г.

[prog.c++] Зафиксирована версия SObjectizer-5.2.3 "Мижирги"

Очередная версия SObjectizer -- 5.2.3 -- зафиксирована в svn-репозитории на SourceForge в виде тега. Изменений по сравнению с предыдущей версией 2.2.2 довольно много, полная совместимость не сохранена. Но изменения внесены существенные, так что на такой шаг мы пошли сознательно.

Релиз версии 5.2.3 разбит на два этапа. На первом этапе зафиксирована вся функциональность и оформлен тег 5.2.3.0, но в нем нет подробных описаний новвоведений в doxygen-документации. Это описание будет создаваться параллельно с переводом других SObjectizer-подпроектов на версию 5.2.3. И затем будет зафиксирован тег 5.2.3.1, в котором функциональность останется точно такой же, но зато появятся подробные описания в doxygen-представлении. И в декабрьскую сборку SObjectizer, я надеюсь, войдет именно версия 5.2.3.1.

Под катом же краткое описание того, что было сделано в 5.2.3, несколько слов о том, что будет в развитии SObjectizer дальше и разъяснения по поводу необычных названий релизов SObjectizer (таких так Ушба, Джимара, Тетнульд и Мижирги).

вторник, 10 декабря 2013 г.

[prog.management] Немного буржуинской статистики об успешности IT проектов

LinkedIn подкинул ссылку на статью "The Cost of Optimism and The Sorry State of Project Management", в начале которой был вот такой фрагмент с цифрами:

The Standish Group, which analyzes IT projects, reported that only 29% of IT projects succeeded, down from 34% at the turn of the century. Cost over-runs from original budgets averaged 56%, and projects on average took 84% more time than originally anticipated.

Т.е. автор статьи ссылаясь на исследования The Standish Group (так же известные как CHAOS Report) говорит о том, что процент успешных IT-проектов снизился с 34% (на рубеже XX-XXI веков) до 29%. При этом не давая ссылки на результат самого исследования. Меня это заинтересовало, поэтому попробовал разыскать данные самостоятельно. Наше PDF-ку CHAOS Manifesto 2013. Она довольно большая, я пока лишь бегло просмотрел первый десяток страниц. Впечатлили несколько табличек, которые я счел нужным привести в данной заметке.

Первая табличка показывает процент успешных/тяжелых/провальных проектов по годам:

Т.е. 29% успешных проектов действительно имели место быть, но это было в далеком уже 2004-м году. В 2012 этот процент вырос до 39. Что, наверное, хорошо. Но, если таки вдуматься в эту цифру, то оказывается, что в бюджет/сроки/скоуп задач вписывается лишь чуть больше одной трети IT-шных проектов!

При этом не могу удержаться вот от такого комментария по поводу увеличения процента успешных проектов в 2010 и 2012: это годы финансового кризиса, затронувшего весь мир. В условиях кризиса деньги выделяются только под самые важные проекты, контроль за которыми ведется намного жестче, да и мотивация исполнителей совсем другая. В общем, когда на кону вопрос выживания, можно и проект вовремя закончить ;)

Следующая табличка показывает, во что же обходится исполнение т.н. тяжелых ("challenged") проектов:

Сроки исполнения таких проектов растягиваются на 74%, стоимость увеличивается на 59%, в итоге же пользователь получает лишь 69% ожидавшихся фич. При этом, в 2012-м количество тяжелых проектов составляло 43% от их общего числа.

Ну и напоследок не могу не привести картинку, которая явно показывает то, что было известно давным-давно. А именно: ситуация с маленькими проектами намного, очень намного лучше, чем с большими:

В общем, принцип "разделяй и властвуй" еще никто не отменял: хочешь решить большую задачу, решай ее как кучу мелких задачек.

Конечно, подобные отчеты The Standish Group ни в коей мере не являются истиной в последней инстанции. В Интернетах полно критики подобных отчетов (начиная тем, что в CHAOS Report используется очень ограниченное понятие "успешности" проектов и заканчивая закрытостью используемых при формировании CHAOS Report данных). Тем не менее, CHAOS Report показывает то, что разработчики ПО в той или иной мере постоянно видят вокруг: превышение сроков -- обычное дело, успешные проекты -- редкость, для получения приемлемого результата приходится пахать и пахать.

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

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

[comp] Windows-ультрабуки с 3200x1800px экранами

Я надеялся, что где-нибудь через полгода-год после появления MacBook-ов с Retina-экранами, последует ответ от других производителей. И что ноутбуки с разрешением больше 1920x1080 под управлением Windows станут широкодоступны 2012-м. Но ждать пришлось гораздо дольше.

Зато на днях я узнал, что появились ультрабуки еще более впечатляющими экранами с разрешением 3200x1800. Например, это Lenovo IdeaPad Yoga 2 Pro, Samsung ATIV Book 9 Plus, и несколько моделей от Fujitsu (Lifebook U904/T904, Lifebook UH90). Может есть и у других производителей, я большого поиска не делал.

Внушаить. Ультрабук от Lenovo -- Yoga 2 Pro -- произвел впечатление. Как раз такой и нужен для повсеместного таскания с собой. И поработать на нем можно (речь про модель с 8GiB RAM и 256GiB SSD), и на диване как с планшетом поваляться. Причем именно на примере этого ультрабука я понял, зачем ноутбукам тачскрин нужен. Плюс ко всему, Yoga 2 Pro уже продается в Москве (например, в Нотике).

В общем, жизнь не стоит на месте, процесс идет. Может через пару месяцев и матовые дисплеи с таким разрешением появятся.

воскресенье, 8 декабря 2013 г.

[life.sport.darts] Winmau анонсировал свою 2014 Collection

Один из крупнейших дартс-производителей, Winmau, разместил у себя на сайте описание новинок 2014 года. На dartscorner.co.uk они уже доступны для предзаказа. На puredarts, как обычно, появятся чуть позже (но, наверняка, по более низким ценам). Для интересующихся под катом кратко про то, что привлекло мое внимание.