четверг, 29 января 2009 г.

Памятные даты

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

Я хочу сегодня рассказать тебе о датах. Ты конечно знаешь, что есть разные даты: дни рождения, Новый Год и 23 февраля. А еще у всех-всех дат есть год. А некоторые базы данных говорят, что в них нельзя записать даты меньше 1 января 1753 года. Мне от этого становится очень грустно и печально, потому что я уже никогда не смогу записать в них все даты из моего любимого учебника истории.
Сегодня другой программист научил меня правильно и быстро проверять год дат. Он сказал, что для этого нужно только проверить длину строки, а если она вдруг окажется меньше 10 (2 буквы на день, 2 буквы на месяц, 4 буквы на год и еще 2 точки), то год неправильный. Вот как хорошо и здорово можно проверять год!

Дорогоуважаемые программисты! Пожалуйста всегда-всегда проверяйте свои даты только так, и тогад у вас не будут появляться глупые ошибки, а будут появляться только умные и сложные.

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

среда, 21 января 2009 г.

Сабвершен

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

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

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

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

четверг, 15 января 2009 г.

Сети

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

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

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

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

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

Письма счастья

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

Сегодня я расскажу тебе об одних письмах, которые называются MSMQ. Это такие специальные письма, их придумала вторая лучшая компания в мире, которые обязательно доходят до адресата или возвращаются обратно.
Я очень люблю писать и посылать разным людям письма: другим программистам, и аналитикам, и архитектору, и менеджеру, и субподрядчикам, и друзьям, и девушкам, и даже незнакомым людям. Субподрядчик, я тебе уже о нем рассказывал, дневник, и архитектор специально придумали так, чтобы наша программа и их программа посылали друг другу письма MSMQ. Я так рад этому решению! Больше всего я люблю спрашивать что-нибудь в письмах, и я научил нашу программу спрашивать другую программу про то, какие картинки у нее есть. А субподрядчик научил свою программу отвечать на мои письма и посылать в ответ картинки. Это так здорово!!! А недавно я узнал, что я могу получить только две или три картинки, а большие письма мне не приходят. Я очень расстроился, и менеджер расстроился, и даже начальник всего нашего отдела расстроился, потому что они тоже любят писать письма и смотреть картинки.
Тогда я и субподрядчик узнали, что письма MSMQ не могут быть очень большими, а только не больше 2 Мб. А еще мы узнали, что если у почтового ящика MSMQ поставить размер 100 Мб, то нельзя получить ни одного письма, потому что MSMQ тоже любит писать письма, но только уже сам себе.

Дорогоуважаемые программисты! Если вы тоже любите писать письма, обязательно пользуйтесь Почтой России, потому что там работает добрый почтальон Печкин, и проверяйте их размер. А если вы так много написали, что все не влезает в конверт, отправляйте бандероли и контейнерные перевозки.

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

среда, 3 декабря 2008 г.

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

Сегодня я снова хочу расказать тебе о стиле, а точнее об именовании всего-всего.
Как ты наверно знаешь, все-все вещи в компьютере можно назвать. Можно назвать файлы, документы, папки, пользователей, а еще переменные, классы, интерфейсы, сервисы, базы данных и даже серверы! Раньше я называл их по-разному: файлы, документы и папки мог назвать русскими буквами или английскими, а переменные и другие вещи - только английскими. Обычно у меня получалось называть их, например, так: MessagingService или IRibbonItemsFactory. Но один добрый человек сказал мне, что это неправильно, и научил называть все одинаково и правильно, например, так: SLUGBA_SOOBSHENIY или I_RIBBON_KNOPKA_FACTORY. Теперь я, и другие программисты, и архитектор, и даже аналитики и менеджер все будем называть правильно и хорошо. Какое счастье!

Дорогоуважаемые программисты! Пожалуйста называйте все-все-все только правильно и красиво.

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

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

История про субподрядчика

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

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

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

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

воскресенье, 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 будут и они и еще много других приятных штук :)

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

среда, 10 сентября 2008 г.

Ленточки

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

Сегодня я расскажу тебе о лентах и контекстных вкладках. Лента -- это такая новая панель инструментов, которую придумал Майкрософт и стал использовать в Office 2007. В ней есть категории, вкладки, на вкладках есть группы, в группах есть кнопки и другие штуки и группы кнопок, в которых тоже есть кнопки и другие штуки. Вот, и все это позволяет пользователю легко, и красиво, и свободно делать все, что ему надо. А еще в ленте можно сделать одну большую кнопку с главным меню программы и вставить много-много всяких кнопочек и других шиук в панель быстрого запуска. Лента -- это очень хороший контрол, в который можно поместить все, что надо, только она занимает немножко много места, зато она может быть одна на всю программу.
Вот, а еще в ленту можно прямо во время работы программы вставлять все, что угодно: и вкладки, и группы, и кнопки и все остальное. Например, если пользователь работает со списком входящих сообщений и документов, можно показать вкладку для этого списка, а если он работает с запросами, можно показать ему вкладку для запросов. А сделать это просто :)
1. Надо сначала создать категорию вкладок и наполнить ее вкладками или создать вкладку, но мне больше нравится делать с категориями:
RibbonPageCategory category
= new RibbonPageCategory(categoryName, categoryColor, false);
RibbonPage page = new RibbonPage(pageName);

FillRibbonPage(page);

category.Pages.Add(page);

2. Надо наполнить вкладки группами, кнопками и всем остальным:
public void FillRibbonPage(RibbonPage page)
{
RibbonPageGroup groupBrowse = new RibbonPageGroup("Просмотр");

BarButtonItem btnBrowse = new BarButtonItem();
btnBrowse.Caption = "Просмотр";
btnBrowse.LargeGlyph = Resources.box_view;
btnBrowse.LargeWidth = 85;
btnBrowse.Name = "btnBrowse";
btnBrowse.RibbonStyle = RibbonItemStyles.Large;
btnBrowse.ItemClick += new ItemClickEventHandler(btnBrowse_ItemClick);

groupBrowse.ItemLinks.Add(btnBrowse);

page.Groups.Add(groupBrowse);
}

3. А потом надо управлять видимостью категории или вкладки:
private void OnSmartPartActivated(object sender, WorkspaceEventArgs e)
{
category.Visible = (e.SmartPart is MySmartPart);
}

private void OnSmartPartClosing(object sender, WorkspaceCancelEventArgs e)
{
if (e.SmartPart is MySmartPart)
category.Visible = false;
}

Дорогоуважаемые программисты! Используйте ленты и прочие инструменты на здоровье! У меня ленты от DevExpress.

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