Как стать автором
Обновить

Компания Developer Soft временно не ведёт блог на Хабре

Сначала показывать

Report-Driven Design

Время на прочтение6 мин
Количество просмотров12K
В этой статье рассматривается альтернативный подход к созданию приложений и реализации структуры базы данных.

Основная идея этого подхода состоит в том, что процесс разработки приложения строится на анализе отчётов, которые должны будут генерироваться готовым бизнес-приложением.

Мы называем такой подход RDDReport-Driven Design.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии12

И снова о топологической сортировке…

Время на прочтение9 мин
Количество просмотров11K

Приветствую всех читателей Хабра! Решив написать эту статью, я обнаружил на Хабре много материалов по графам и, в частности, по топологической сортировке. Например, здесь довольно подробно описана теоретическая часть и приведены примеры основных алгоритмов. Поэтому не буду повторяться, а расскажу о практической области применения Topological sorting, а точнее, хочу поделиться личным опытом применения этого метода при разработке продуктов DevExpress. Из статьи станут понятны мотивы и причины, побудившие к использованию этого алгоритма. В конце я приведу наш вариант реализации алгоритма для сортировки зависимых объектов.
Подробности
Всего голосов 40: ↑34 и ↓6+28
Комментарии7

Новое расширение MVC для рисования графиков

Время на прочтение2 мин
Количество просмотров11K
Мы рады сообщить, что в следующей версии DXperience — v2011 vol 1 — появится новое расширение для ASP.NET MVC, а именно MVC Chart Extension.

Это расширение позволяет добавить в MVC приложение десятки различных графиков — от прямоугольных и круговых, до радарных и финансовых.

Если вы заинтересовались, добро пожаловать под кат.

подробности...
Всего голосов 35: ↑28 и ↓7+21
Комментарии9

Установка DataContext вложенным невизуальным объектам в WPF/Silverlight

Время на прочтение8 мин
Количество просмотров9.9K
image
При разработке DXScheduler for WPF мы получили от пользователя сценарий, в котором использовался MVVM шаблон.
Пользовательский объект назначался свойству DataContext нашего планировщика, а в XAML-разметке осуществлялась «привязка» к соответствующим свойствам объекта с использованием Binding-выражений.
Но возникла проблема — планировщик содержал некий невизуальный объект Storage, который хранил набор настроек для данных. В том виде, в котором были записаны Binding-выражения, свойства объекта-стораджа не обновлялись.

О том, как была решена эта проблема, вы узнаете ниже…
Читать дальше →
Всего голосов 35: ↑29 и ↓6+23
Комментарии1

Избавляемся от утечек памяти в WPF

Время на прочтение5 мин
Количество просмотров16K
imageВ DevExpress мы тратим много сил на бизнес компоненты для WPF и Silverlight. У нас есть своя линейка контролов, в список которых недавно вошел DXPivotGrid – замена инструмента PivotTable из Excel. В процессе разработки новых компонентов, мы стараемся по-максимуму использовать существующий код. Например, базовые классы от версии PivotGrid для WinForms. Часто это рождает проблемы, с которыми ты не сталкивался, разрабатывая под .NET 2.0. Когда я писал PivotGrid для WPF, мне пришлось решить проблемы с утечками памяти из-за подписки (точнее, «неотписки») на события.
Читать дальше →
Всего голосов 55: ↑43 и ↓12+31
Комментарии35

Праздники в календарях или кто больше всех работает

Время на прочтение6 мин
Количество просмотров19K

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


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

Если заинтересовались - добро пожаловать под кат...
Всего голосов 40: ↑29 и ↓11+18
Комментарии24

Вышла новая версия набора компонентов для .NET — DXperience 10.2

Время на прочтение5 мин
Количество просмотров17K
Компания DevExpress объявила о выходе новой версии своего продукта DXperience, который содержит компоненты для программистов, ведущих свою разработку на платформе .NET с помощью MS Visual Studio. Версия DXperience 10.2 содержит множество новых продуктов и улучшений для таких популярных направлений как Silverlight, WPF, ASP.NET MVC, а также традиционных ASP.NET и Windows Forms.

Если вы пишете код, используя одну из этих технологий, добро пожаловать под кат.
Читать дальше →
Всего голосов 43: ↑35 и ↓8+27
Комментарии12

Собственные шаблоны тестов CodeRush. Тестируем порядок вызовов методов

Время на прочтение4 мин
Количество просмотров8.1K
В своей работе нам приходится писать много тестов. Чтобы делать это быстро, мы используем шаблоны CodeRush. В этой статье мы расскажем вам, как создавать собственные шаблоны для тестирования. В качестве примера возьмём такую задачу: протестировать правильный порядок вызовов защищенных методов класса. Будем использовать только NUnit без применения библиотек типа NMock и им подобных.


Читать дальше →
Всего голосов 45: ↑37 и ↓8+29
Комментарии22

Поиск по регулярным выражениям

Время на прочтение4 мин
Количество просмотров9.8K
Что является важным при разработке текстового редактора? Конечно же, «снабдить» его богатым функционалом и обеспечить стабильную работу. Однако многие скажут, что этого недостаточно, чтобы проект действительно был успешным. Нужно его сделать еще и «удобным» для конечного пользователя. А что является важным при разработке такого компонента как текстовый редактор? Да пожалуй, то же самое, вот только удобным он должен быть не только для конечного пользователя, но и для разработчика, который на его основе будет писать приложение.

На первый взгляд удовлетворить и тех, и других будет непросто – одним нужно понятное UI, снабженное набором полезных инструментов, другим – API, позволяющее выполнять широкий спектр задач. Однако зачастую эти задачи связаны друг с другом.

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


Читать дальше →
Всего голосов 44: ↑36 и ↓8+28
Комментарии35

Что скрывается за формой редактирования сложного объекта?

Время на прочтение9 мин
Количество просмотров20K
В этой статье мы продолжаем знакомить вас с подходами, реализованными в планировщике XtraScheduler. В предыдущей статье мы рассказывали о синхронизаторе данных, на этот раз поговорим о формах.



Довольно часто в приложениях можно встретить формы, которые предназначены для ввода или редактирования объектов с большим количеством зависимых свойств. Построение таких форм ввода вызывает «головную боль» у разработчиков: рутинная работа по размещению редакторов, написание кода инициализации, валидации, обработчиков событий…

Так как же делать такие формы быстро и надежно?
Читать дальше →
Всего голосов 49: ↑35 и ↓14+21
Комментарии40

Хороший пользовательский интерфейс, ясность и параллельное отображение информации

Время на прочтение5 мин
Количество просмотров18K
Перевод статьи Марка Миллера: Great User Interfaces, Clarity, and Information in Parallel

Предыдущие переводы:

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

Эта концепция была впервые изложена в удивительной книге Эдварда Тафти:



Title: Visual Explanations: Images and Quantities, Evidence and Narrative
ISBN: 0961392126
Несмотря на то, что и книга и её заголовок выглядят ужасно сухо, внутри содержатся подлинно гениальные идеи.
Читать дальше →
Всего голосов 70: ↑64 и ↓6+58
Комментарии24

Готовим скриншоты для документации в GIMP (часть 2)

Время на прочтение6 мин
Количество просмотров18K
В первой части статьи мы рассмотрели script-fu скрипты «Быстрая тень» и «Подрезать уголки» и пообещали показать, как красиво оформить скриншот фрагмента окна. Пришло время исполнить обещанное. Сегодня будем разбирать скрипт «Кадрирование с эффектом волны», который позволяет отсечь часть изображения по волнистым линиям, похожим на синусоиды.

Дополнительно мы рассмотрим, как можно собрать несколько скриптов в один для ускорения выполнения типовых действий над изображением.
Читать дальше →
Всего голосов 127: ↑118 и ↓9+109
Комментарии14

Хороший пользовательский интерфейс, ясность и выразительность

Время на прочтение4 мин
Количество просмотров18K
Очередной перевод статьи Марка Миллера:
Great User Interfaces, Clarity, and Emphasis


Предыдущие переводы:

В предыдущей статье мы сделали важный вывод для достижения ясности в пользовательском интерфейсе:

Визуальный вес должен соответствовать важности информации.

Суть этого вывода — не пренебрегайте важностью информации, выбирая методы её отображения. Обсуждая здесь способы контроля выразительности, следует помнить, что наша цель — получить лёгкий и элегантный интерфейс, выразить в нём то, что Эдвард Тафти называет «наименьшим эффективным отличием». (От переводчика: на русском можно почитать здесь и здесь).
Читать дальше →
Всего голосов 63: ↑54 и ↓9+45
Комментарии27

Готовим скриншоты для документации в GIMP (часть 1)

Время на прочтение5 мин
Количество просмотров24K
Как известно, неотъемлемой частью профессионального программного продукта является качественная документация. А документация, в свою очередь, немыслима без иллюстраций. В большинстве случаев иллюстрации представляют собой скриншоты, которые должны быть не только красивыми и информативными, но и единообразно оформленными. Последнее важно, если над разными разделами документации работают разные специалисты (технические писатели). В этой статье мы рассмотрим, как редактор растровой графики GIMP и его встроенный язык сценариев Script-Fu могут пригодиться для подготовки иллюстраций. В качестве примеров использованы скриншоты нашего продукта eXpressApp Framework.
Читать дальше →
Всего голосов 124: ↑119 и ↓5+114
Комментарии40

Хороший пользовательский интерфейс, ясность и релевантность информации

Время на прочтение2 мин
Количество просмотров27K
Перевод статьи Марка Миллера: Great UI, Clarity, and Information Relevance

Давайте создадим таблицу 3x4 в MS Word:


Теперь заполним таблицу данными:


Давайте остановимся и зададим себе вопрос: «Что здесь не так?»
Читать дальше →
Всего голосов 128: ↑110 и ↓18+92
Комментарии58

Синхронизатор данных. Разработчику на заметку

Время на прочтение9 мин
Количество просмотров14K
На работе и в повседневной жизни нам довольно часто приходится сталкиваться с различного рода синхронизацией данных. Вы синхронизируете файлы и папки своего телефона с компьютером, выполняете привычные действия в системах контроля версий, используете различного рода интернет-службы синхронизации контактов, почтовых сообщений и документов и зачастую даже не задумываетесь, как этот процесс реализован в том или ином случае.

Если вы решили написать собственный синхронизатор, то скорее всего столкнётесь с рядом вопросов. В этой статье мы поделимся опытом написания такого компонента и рассмотрим требования, предъявляемые к нему. В основу этих требований легли всевозможные пожелания, полученные нами от пользователей, и реальные сценарии использования синхронизатора событий планировщика XtraScheduler. Потому в качестве примеров кода будем приводить фрагменты кода от указанного продукта.
Читать дальше →
Всего голосов 37: ↑28 и ↓9+19
Комментарии7

Почему так сложно сделать хороший пользовательский интерфейс?

Время на прочтение5 мин
Количество просмотров32K
Перевод статьи Марка Миллера: Why is Great UI so hard to achieve?

Сегодня утром, когда я заправлял свою машину бензином, мне в глаза неожиданно бросилось еще одно доказательство того, что большинство интерфейсов пользователя не удовлетворяют трём основным показателям хорошего интерфейса: ясности (clarity), эффективности (efficiency) и открытости (discoverability).

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

Возвращаясь к кнопкам, вот часть того интерфейса, который я наблюдал сегодня на заправке:


Читать дальше →
Всего голосов 131: ↑123 и ↓8+115
Комментарии104

На что ещё способно Undo/Redo

Время на прочтение4 мин
Количество просмотров15K
На первый взгляд кажется, что ничем другим кроме отката и повтора Undo/Redo не занимается и заниматься не может. Но это не совсем так.



При реализации XtraRichEdit настал момент, когда нам надо было сделать свойство, которое отвечает на вопрос, изменён документ или нет. Как именно его делать, на первый взгляд было вполне очевидно. Надо было завести переменную isModified и выставлять ей значение true, когда документ изменялся. В тот момент, когда пользователь сохранял документ, надо было присвоить ей значение false. Разумеется, изначальное значение переменной также было false, что означало, что документ не изменён.

Всё было просто и понятно и мы принялись за дело.
Читать дальше →
Всего голосов 60: ↑46 и ↓14+32
Комментарии29

Конструктор для печатной формы .NET планировщика

Время на прочтение5 мин
Количество просмотров13K
Создано множество компонентов для .NET, реализующих функциональность календаря и планировщика (органайзера). Их задача — предоставить пользователю возможности, сходные с теми, которые он получает при использовании конечных приложений Outlook Calendar, Apple iCal, Windows Calendar, интернет-календарей Google Calendar и им подобных. Важное место среди этих возможностей занимает печать. Функционал печати у компонентов должен быть не хуже, чем у специализированных приложений, но при этом предоставлять большую гибкость в настройках.

Читать дальше →
Всего голосов 32: ↑24 и ↓8+16
Комментарии13

DXCore — Бесплатная библиотека для создания плагинов в Visual Studio

Время на прочтение2 мин
Количество просмотров10K


В данной статье мы хотим сделать краткий обзор DXCore и рассказать, чем может быть полезна эта .NET библиотека.

DXCore — это абсолютно бесплатный продукт, который мы развиваем и поддерживаем начиная с 2004 года. В двух словах, DXCore облегчает разработку расширений для Visual Studio.

Мы стараемся проектировать API этой библиотеки так, чтобы максимально упростить процесс создания плагинов — чтобы разработчики могли сосредоточится на функциональности и по возможности избежать основных сложностей интеграции с Visual Studio.
Читать дальше →
Всего голосов 50: ↑40 и ↓10+30
Комментарии12