суббота, февраля 28, 2009

Что общего между Android и .Net?

Думаете ничего? Забавные и неожиданные параллели обнаруживаются порой в развитии информационных систем.
Все знают о том, что в прошлом году Google запустил Android - свою мобильную платформу. Android построен на ядре Linux, а прикладные приложения выполняются в виртуальных машинах (sandbox) и для их разработки используется Java. Или, вернее, язык с синтаксисом Java и библиотеки анлогичные Java SE. А в качестве среды исполнения вместо JVM используется виртуальная машина Dalvik. Сразу возникает резонный вопрос, а зачем вообще Google понадобилось изобретать велосипед, почему не использовать стандартную для мобильных устройств Java ME? Вроде бы Google не намерен зарабатывать непосредственно на софте для Android. Кроме того, использование Java ME обеспечило бы переносимость огромного количества мобильных приложений на новую платформу.
Однако тут все не так просто, и как уже заметили многие все дело в лицензионной политике. В случае с Java ME, Sun продемонстрировала просто чудеса иезуитства изобретательности, выпустив ее сразу под двумя лицензиями: GPLv2 и коммерческой. А это вынуждает производителей, использующих Java ME либо открывать весь свой код, либо... платить Sun :)

Естественно, все это не укладывалось в рамки политики, которую избрал Google для продвижения Android. В отличие от Sun, у которой хорошие юристы, Google решил положиться на своих инженеров и... создал свою реализацию виртуальной машины. Причем, Dalvik - это не просто новая реализация JVM (которую все едино пришлось бы лицензировать в Sun), Dalvik вообще не использует Java байт-код (вернее байт-код, полученный в результате компиляции в design-time преобразуется в dex формат, который и используется в run-time). В общем, инженеры Google обставили лоеров Sun. Неудивительно, что мы не видим Sun в списке участников Open Handset Alliance. Тем не менее в Google предпочитают не заострять внимание на этом вопросе, и когда речь заходит о Dalvik они предпочитают говорить об оптимизации своей виртуальной машины под специфику мобильной платформы, позволяющей запускать множество экземпляров, и т.д. и т.п.

Интересно, что девять лет назад подобная история имела место в отношении Sun и Microsoft. И в результате на свет появился еще один "язык, похожий на Java" и "еще одна реализация виртуальной машины" - .Net. Практически все увидели в этом ответ Microsoft SUN и его платформе Java. Новый язык был очень похож на Java по синтаксису, а платформа весьма напоминала JRE. Тогда еще у всех на памяти было противостояние MS и Sun на почве Java, которое закончилось грандиозным скандалом, судебным иском Sun против Microsoft и последующим мировым соглашением. Суть претензий Sun заключалась в том, что Microsoft внесла изменения в свою реализацию JVM, которые делали ее несовместимой со спецификациями Sun и давали преимущества Java программам, исполняемым под Windows. В результате судебных тяжб Microsoft потеряла возможность развивать свою версию JVM. Это, собственно, и стало основным политическим мотивом для создания .Net Framework.
Тогда Microsoft также предпочитала говорить не о борьбе с Sun, а о необходимости более тесной интеграции с WinAPI и COM.

История повторяется. Но .Net - это закрытая проприетарная платформа, ориентированная на Windows, которая за 9 лет так и не смогла существенно постенить Sun и Java с занимаемых ими позиций. А вот с Android все выглядит более серьезно, и более угрожающе. Сегодня у Sun есть реальные шансы потерять платформенное лидерство. Как бы им не повторить судьбу DEC и Compaq.

среда, февраля 25, 2009

Модульные тесты для SilverLight

SilverUnit (другое название CThru) - движок для модульного тестирования SilverLight.
Интересно, что
- тесты могут исполняться в обычном NUnit или MS Test tools без специальной Silverlight-компиляции
- тесты исполняются в обычном CLR runtime, не в silverlight.

В общем полная изоляция. А все потому, что SilverUnit построен на базе Typemock Open-AOP API.

воскресенье, февраля 22, 2009

Как проводить телефонное интервью

В блогах полно статей для кандидатов о том, как проходить интервью. Этот пост наоборот, для тех кто проводит интервью.

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

Я в свое время провел десятки телефонных интервью, и могу сказать, что по телефону не так уж и сложно составить полное и четкое представление об уровне знаний и навыков человека. Надо просто знать некоторые приемы. Вот шесть советов по ведению телефонного интервью которые помогут вам составить объективное представление о опыте человека с которым вы впервые говорите по телефону.

1. Имейте в запасе побольше вопросов. Составьте вопросник по тому языку, платформе, framework, знания которых требуются от кандидата. В моем вопроснике по .Net более сотни вопросов, плюс около полусотни вопросов по RDBMS. Избегайте прямых вопросов о конкретных классах, ответы на которые легко читаются из документации. Например, вместо вопроса о классе XmlDocument спрашивайте о том, как работать с Xml DOM.

2. Начинайте с простых вопросов. С самых элементарных. Например таких "Собеседование. Вопросы на засыпку"). Если человек начинает плавать на простых вопросах вы можете быстро свернуть интервью, сэкономить свое и чужое время. От простых вопросов переходите к более сложным. Если кандидат знает, что такое XmlDocument, попросите его рассказать о том, как в XmlDocument добавить новый элемент.

3. Свободные вопросы - наиболее мощный инструмент при проведении телефонного интервью. Свободный вопрос - это когда вы просите кандидата рассказать все, что он знает по какой-то теме. Например, «Расскажите, что вы знаете о многопоточном программировании на .Net», или «Расскажите, что вы знаете об использовании триггеров в SQL». Старайтесь не перебивать человека, когда он отвечает на такой вопрос, он сам покажет ширину и глубину своих познаний. Можете попросить его уточнить какие либо детали, или направить его рассказ в нужное русло, подсказками.

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

5. Вопросы по прошлым проектам. Это тоже кладезь информации. Попросите рассказать о роли в проекте, об организации работы, проектном окружении и инструментарии. Поинтересуйтесь о деталях реализации, попутно задайте несколько технических вопросов в тему. Если человек действительно делал это на прошлом проекте, он с легкостью ответит на эти вопросы. Наконец, поинтересуйтесь, почему они выбрали именно такой дизайн для своего проекта, можно ли было сделать это иначе, почему?

6. Ну и наконец, то о чем не надо забывать всем интервьюерам. Будьте благожелательны, постарайтесь расположить к себе собеседника. Помните, что ваша задача не доказать, что вы знаете больше вашего собеседника, а объективно оценить уровень его знаний. Не начинайте сразу с вопросов, сначала расскажите о своей компании, своем продукте (проекте), о вакансии. Затем попросите собеседника рассказать о своем опыте. Задавайте наводящие вопросы, и постепенно переходите к собственно технической части. Не давайте собеседнику уклониться от темы, ведите и направляйте разговор. Никогда не вступайте в дискуссию, если, по вашему мнению, собеседник дает неправильные ответы. Выслушивайте с одинаковым вниманием и правильные ответы и неправильные. Оценку лучше давать в самом конце интервью.

четверг, февраля 19, 2009

пятница, февраля 13, 2009

Мы строили, строили...

Оказывается, у нас в стране есть "Совет по развитию информационного общества при президенте России". Вчера этот ареопаг заседал в Кремле. Президент удивлен:

"По индексу развития электронного правительства мы были в 2005 г. на 56-м месте, а в 2007 г. достигли 92-го"


Вот тебе и "Электронная Россия". Если бы президентом у нас был товарищ Сталин, то он бы решил что все это диверсия. Но президентом у нас товарищ Медведев, человек культурный. Он все понимает:

"О чем это говорит? Это говорит о том, что у нас никакого электронного правительства нет, все это — химера."


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

Какие выводы сделаны ареопагом? Известно какие. Назначить дополнительных чиновников, ответственных за информатизацию. Выделить дополнительно бабла для распила.

Я думаю года через два, мы достигнем таки дна того рейтинга, про который говорил президент.

понедельник, февраля 09, 2009

Microsoft Tag

Microsoft анонсировала новую технологию для мобильных устройств - "Tag"
Все до безобразия просто. Если вы видите вот такую картинку:

вы наводите на нее камеру своего мобильника и тут же попадаете на URL который зашифрован в ней. Потому что картинка эта - баркод. Конечно для таких чудес надо установить Microsoft Tag Reader. Что интересно, есть версии не только для WinMobile, но и для iPhone, Symbian S60, BlackBerry, и наконец J2ME. Скоро обещают версии для PalmOS и Android.
Формат кодирования картинки не раскрывается. Судя по всему в картинке зашифрован не сам URL, а некий хэш код, который отправляется на сайт Microsoft Tag, а уж оттуда броузер редиректится на нужный URL. Для чего такие сложности? В самой картинке зашифровано довольно мало информации, что-то в районе 8-10 байт. Т.е. URL там попросту не помещается.
Для того чтобы создавать свои tag-и надо иметь эккаунт. Пока все бесплатно, но Microsoft оставляет за собой право сделать технологию платной для паблишеров после окончания периода бета тестирования.
Попробовал я как это все работает на мобильнике с WM 6.0. Бывает сканер схватывает картинку в доли секунды, а иной раз приходится дерижировать камерой над картинкой несколько секунд.
В-общем идея очень свежая и интересная.
Скачать TagReader на телефон можно здесь
А на картинке, кстати, ссылка на RSDN.