воскресенье, 19 октября 2008 г.

Дорогой блог!

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

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

До скорых встреч!

среда, 15 октября 2008 г.

История о формате и мэппинге

Дорогой блог!

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

Дорогоуважаемые программисты! Будьте осторожны и помните, что аналитики иногда не очень хорошо и правильно понимают программистов, и архитекторов, и менеджеров. А еще аналитики иногда бывают очень уверены в своем мнении и тянут до последнего дня, а программистам приходится оставаться на работе, чтобы все сделать, чтобы менеджер был доволен.

До скорых встреч!

пятница, 3 октября 2008 г.

SQL и XML

Дорогой блог!

Сегодня я расскажу тебе о том, как переводить данные из SQL Server 2005 сразу в XML.
Для этого в сервере придумали оператор SELECT FOR XML. Он умеет делать из табличек сразу XML, и программистам больше не надо писать много кода C# или VB или других языках, делать датасеты и обрабатывать их.
Я расскажу сегодня о режиме EXPLICIT, потому что он самый интересный и позволяет делать вообще любой XML. Только для этого надо писать много-много селектов и первыми двумя параметрами в них всегда должны стоять целые числа: сначала тэг, а потом родительский тэг. А еще родительский тэг может быть нуллом, тогда этот тэг будет без родителя. Например вот так:
SELECT
1 AS Tag
, NULL AS PARENT
, 'xml text' AS [TestRoot!1!value]
FOR XML EXPLICIT
И этот запрос выдает такой XML:
<TestRoot value="xml text" />

А если нужно тэги вкладывать друг в друга, то приходится писать много селектов и делать им всем юнион, а иерархия тэгов выстраивается полями Tag и Parent. Например можно сделать вот так:
SELECT
1 AS Tag
, NULL AS Parent
, 'xml text' AS [TestRoot!1!value]
, NULL AS [TestChild!2!Name]
, NULL AS [TestChild!2!Code]
UNION
SELECT

2 AS Tag
, 1 AS Parent
, NULL
, 'child text'
, 111
FOR XML EXPLICIT
Вот, тогда мы получим такой XML:
<TestRoot value="xml text" >
<TestChild Name="child text" Code="111" />
</TestRoot>

Дорогой блог, ты наверное уже заметил, что я в первом запросе пишу длинные и неудобные имена столбцов. На самом это я просто говорю, какие имена тэгов и атрибутов надо подставлять в XML: [имя тэга!номер тэга!имя атрибута]. А еще в конце имени столбца можно поставить еще один восклицательый знак и написать еще какую-нибудь опцию вроде HIDE (она нужна, чтобы столбец не отображался в XML, а только был в таблице).

Дорогоуважаемые программисты! Мне очень нравится выгружать мои данные сразу в XML, потому что я использую этот механизм для выгрузки больших объемов в смежную систему. А еще мне очень нравится, что имена столбцов получаются такими эмоциональными и радостными -- столько восклицательных знаков! Немного жаль только, что нельзя ставить еще и вопросительные, но это ничего, я уверен, что в SQL Server 2015 будут и они и еще много других приятных штук :)

До скорых встреч!