Denis Gladkikh
Russian   |  English
Страница  ...  4  5  6  7  8  9  10  11  12  13  14  ...  

TSQL: Передача списка/коллекции/множества в хранимую процедуру

Передача множества в хранимую процедуру довольно-таки частая задача. Встречается, например, при фильтрации какой-нибудь коллекции. Так же это может быть импорт данных в базу данных из внешних источников. Я рассмотрю несколько вариантов, которые можно использовать в вашем приложении: склеивание SQL запроса, передача строки списка параметров, разделенных запятой, Bulk Insert, а так же table-valued parameters (самый интересный вариант, пришедший с MS SQL Server 2008).



Непрерывная интеграция.

Так получилось, что на текущей работе мне пришлось настраивать CCNet build сервер для создания среды непрерывной интеграции. Что это такое и зачем нужно можно почерпнуть из многих источников, из которых можно выделить статью Мартина Фаулера [1], а так же книгу Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска [2], о которой Мартин Фаулер так же хорошо отзывался. Про эту книгу я могу сказать одно, она мне попалась в переведенном варианте пару лет назад (или даже больше), и переведенный вариант был ну просто ужасен, после которого я посчитал, что нужно бы начинать читать книги только на оригинале (если оригинал - английский язык, что бывает в большинстве случаев).

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



Экспорт в Excel из Silverlight/WPF DataGrid

Экспорт табличной части в Excel из приложения достаточно распространенная задача, и решать ее можно по разному. Конечно решение зависит от того, что за приложение вы разрабатываете. Если это приложение разрабатываемое для автоматизации бизнес процессов, и оно предназначено для установки в несколько контор, то скорее всего вы можете диктовать условия (рекомендации по использованию), необходимые для вашего приложения. Либо заказчик выставит требования, под которые вы будете его разрабатывать. В этом случае, экспорт проще всего реализовывать через COM, используя инфраструктуру Excel (либо OpenOffice), тогда и реализовать данную задачу при помощи данного подхода будет просто, и это даст вам наибольшую гибкость и возможность использовать всю мощь таблиц Excel. Об этом вариант и пойдет разговор ниже. Другой вариант – ваше приложение предназначено для домашних пользователей, в этом случае диктовать обязательную установку MS Office или OpenOffice не очень хорошо, потому лучше не завязываться на них, а использовать либо сторонние компоненты для создания документов, либо экспортировать в xml/html формат, который понимает MS Office (так делает, например, JIRA). Правда в этом случае будет тяжело удовлетворить просьбы клиентов, вроде: сделать так, чтобы экспортируемый документ был подготовлен для печати в альбомном виде с необходимыми полями, хотя может быть и возможно.



Разработка веб-приложений с поддержкой временных зон

При разработке веб-приложений важно помнить о том, что клиентские компьютеры могут быть разбросаны достаточно сильно по земному шару. Даже если разрабатывать приложение только для русских пользователей, то наберется 11 временных зон. Меня очень сильно удивило и расстроило, что достаточно известные сайты http://habrahabr.ru и http://gotdotnet.ru об этом вообще не задумываются. На таких сайтах сделать поддержку временных зон еще проще, там есть профили пользователей, в которых пользователи запросто смогли бы выставлять временную зону в которой они находятся. Таким образом, например, реализована поддержка временных зон в Sharepoint, и таким образом реализовывают поддержку в большинстве enterprise приложений. А что же делать когда нет поддержки профайлов на сервере? Что, если это просто новостной сайт или блог, и хочется чтобы пользователи с любой точки земного шара видели время не в будущем, а публиковали комментарии видя свое текущее локальное время.



Метод расширение для безопасного приведения типов

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

Нам часто приходится писать, примерно, такой код:

int intValue;
if (obj == null || !int.TryParse(obj.ToString(), out intValue))
    intValue = 0;

Это способ безопасного приведения к типу int. Напрашивается сразу же какой либо унифицированный метод для безопасного приведения типов.

Мне нравится подход вынесения преобразования в extension method и использовать его затем следующим образом:

int i;
i = "1".To<int>();
// i == 1
i = "1a".To<int>();
// i == 0 (default value of int)
i = "1a".To(10);
// i == 10 (set as default value 10)
i = "1".To(10);
// i == 1
// ********** Nullable sample **************
int? j;
j = "1".To<int?>();
// j == 1
j = "1a".To<int?>();
// j == null
j = "1a".To<int?>(10);
// j == 10
j = "1".To<int?>(10);
// j == 1


Регулярные выражения. Вспоминаем, пишем, тестируем.

Признаюсь, я фанат регулярных выражений. Всегда, когда я вижу задачу, которую можно решить при помощи RegEx, я загораюсь и бегу писать тест под новенькое Regex условие. Раньше даже специально держал установленный SharpDeveloper, так как там была удобная тулза для проверки RegEx выражений, сейчас же я немного поумнел и для каждого RegEx пишу просто отдельный тест и в нем же и тестирую. Вообще, нужно стараться находить те задачи, которые предназначены для решения их через регулярные выражения. Мне сложно помнить синтаксис регулярных выражений, точнее приходится их писать не так уж и часто, потому из головы постоянно вылетает: какой символ отвечает за начало строки и т.п. Для освежения я постоянно пользуюсь очень легкой статьей Регулярные выражения на RSDN.



Основы создания модульных приложений

В дополнение к вебкасту Prism: Composite Application Guidance for WPF and Silverlight хотелось бы сделать еще несколько умозаключений. “Призма” на данный момент очень распространенный подход к разработке программных продуктов. За рубежом если вы найдете какую-нибудь работу на WPF или Silverlight первый вопрос, который вам зададут “А знаете ли вы призму?”. Чтобы узнать ее можете посмотреть первые 20 минут скринкаста, где я описываю основные моменты данного подхода. Узнать призму – это безусловно хорошо, но еще лучше знать зачем она нужна. Постараюсь привести пару простых примеров модульных приложений.




Теперь у меня есть свой сайт (Переезжаю)

Так и хочется написать “Пожалуйста, прочтите это письмо до конца” :). Если кратко, то хочу получить фидбэк от вас и покрасоваться своим новым сайтом http://outcoldman.ru. Соответственно, постить теперь все свои записи буду туда, а на остальных ресурсах (Livejournal, GDN и т.п.) будут только ссылки. Потому, если вам удобней читать мой блог целиком без перехода на сайт, то измените, пожалуйста, подписку с rss от livejournal на http://feeds.feedburner.com/Outcoldman. Подозреваю что у некоторых уже rss стоит на feedburner (я старался везде публиковать именно его), вы станете свидетелями, что последние статьи загрузятся заново – я просто поменяю источник для feedburner.



WPF 4.0. Что нового? Часть 5.

Последняя статья из серии что нового в WPF. Предыдущие версии: 1, 2, 3, 4. В данной части будет небольшая солянка из еще найденных и откопанных нововведений. Предполагаю, что можно найти и другие, но уже и эти не совсем нужны в продакшене, потому, пожалуй, пора остановится.



Страница  ...  4  5  6  7  8  9  10  11  12  13  14  ...