Рубрика «C#» - 136

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

В ПО, которое разрабатывает наша команда используются денежные значения в рублях и копейках. Мы изначально знали, что использование примитивов для выражения денежных значений — это антипаттерн. Однако по мере разработки приложения мы всё никак не могли наткнуться на проблемы связанные с использованием примитивов, нам, видимо, везло и всё было нормально. До поры до времени.
Мы совсем забыли про эту проблему и использование примитивов типа int и decimal расползлось по всей системе. И теперь, когда мы написали первый метод, в котором прочувствовали проблему, пришлось вспомнить про это технический долг и переписать всё на использование денежной абстракции вместо примитивов.
Читать полностью »

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

Нам понадобятся некоторые знания из прошлых статей, в частности, понимание принципа прямых инжекций.
Совершенствуем xaml: Bindable Converters, Switch Converter, Sets - 1
Читать полностью »

Всем привет!

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

Представление спикеров конференции Desktop UI & Business Application. Про UI - 1

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

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

Читать полностью »

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

Совсем скоро в Москве пройдут две крупные конференции для .NET разработчиков, и там вы сможете повстречаться с нами и вживую задать все интересующие вас вопросы!

Ниже вы узнаете, где и когда нас можно найти:

Читать полностью »

Недавно мы уже узнали о принципе прямых инжекции и эффективном связывании вью-моделей с представлениями, а также о том, каким образом создавать расширения привязки. Продолжим исследование библиотеки Aero Framework и рассмотрим ещё один архитектурный вопрос.

Навигация между представлениями (экранами) в xaml-ориентированных приложениях довольно важная и интересная задача. Особенно это касается её реализации в рамках паттерна MVVM. В идеале вью-модели не должны содержать никаких прямых ссылок на представления, чтобы быть кросс-платформенными и сохранялась возможность повторного их использования в нескольких проектах. Сегодня мы узнаем, как этого достичь.
Командно-ориентированная навигация в xaml-приложениях - 1
Читать полностью »

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

Самостоятельная сборка 3d-принтера или покупка готового оборудования для конструирования. ПО. Часть 2 - 1

Для этого я использовал open source бесплатный софт: Repetier-host (для связи компьютера с платой управления 3D-принтером) и Arduino IDE (для работы с прошивкой микроконтроллера). И сам 3D-принтер.О тонкостях настройки этого программного обеспечения будет рассказано в этой части:

Читать полностью »

Всем привет!

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

Ни для кого не секрет, что основной целью наших конференций является дать возможность людям познакомиться на почве профессиональных интересов. Доклады являются пищей для размышления и вводной частью к последующим дискуссиям различной степени детальности. На наш взгляд, такое общение способствует осознанию собственных убеждений в более глубокой мере, так как вы сталкиваетесь с другими, порой диаметрально противоположными мнениями. Так что же приготовлено для конференции Desktop UI & Business Application?

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 1

Сначала представим темы, которые относятся к бэкенду, к серверной части, которая будет интересна всем разработчикам, занятым в сфере энтерпрайз разработки. Т.е. это и WPF, и WinForm, и ASP.NET.

История представления реальных данных и процессов в мире программ имеет богатую и долгую историю. Можно сказать, что все началось с транзакционных скриптов, и процедурного программирования. Когда доменную модель пытались полностью представить в виде набора процедур и данных, которые хранятся в базе данных. По сути, все крутилось вокруг таблиц. Шагом вперед, вместе с ООП разработкой стала модель табличных данных, которые уже были представлены набором данных в памяти программы. Теперь таблицы стали отправной точкой в представлении доменной логики. Процедуры уже не объявлялись в глобальном пространстве имен, а были «пристегнуты» к определенной таблице, в зависимости от своих функций. Дальнейшее удешевление и распространение компьютеров привело к тому, что все более широкое применение находило компьютерное моделирование. В то же время сложные реальные доменные модели надо было отображать как можно более проще для поддержки и расширения. Так Мартин Фаулер предложил, а Эрик Эванс развил идею Domain Driven Design, которой большинство сейчас придерживается, в той или иной степени.
Читать полностью »

Недавно была выпущена первая бета версия тестового фреймворка NUnit v3. Кроме всего прочего, эта версия реализует параллельное выполнение тестов (практически «из коробки»). Я решил проверить как это работает на одном реальном проекте и обнаружил, что новая версия nunit-а не поддерживает часть используемых вещей предыдущих версий. В частности предлагается вместо аттрибута ExpectedException использовать Assert.Thorws или Assert.That.
Независимо от релиза этой беты, в одном из проектов начал использовать модель Assert.That вместо всех остальных методов и атрибутов nunit-а.

Под катом небольшой опыт перевода аттрибута ExpectedException в модель Assert.That.
Читать полностью »

Расширение функциональности элементов управления Windows с помощью AttachedProperty - 1

Краеугольным камнем разработки приложений для Windows (WPF, SilverLight, WP, WinRT) является паттерн MVVP. Который основан на концепции связывания данных модели представления и пользовательского интерфейса, что позволяет, используя декларативное описание UI посредством XAML избавится от codebegind (так я и не придумал/нашел русского перевода) и перенести всю логику работы с пользовательским интерфейсом в модель представления.

К сожалению, реализовать все возможные функции в фреймвоках производителю физически невозможно и часто возникает ситуация, когда решить требуемую задачу имеющимися средствами нельзя. Если проблема простая и единовременная, то решается она быстро в месте возникновения, через codebehind представления. Но если одна и та же функциональность нужна в многих местах, необходимо реализовать удобный механизм повторного использования решения.

Написать данную статью меня побудила статья habrahabr.ru/company/edusty/blog/253635/. В статье найдено решение конкретной проблемы и предложено работающее решение. Однако для его использования необходимо в codebehind для каждого текстового блока вызывать код. Более того если данные предполагают изменение в процессе работы необходимо следить за их изменением. В процессе своей работы такие решения встречаю довольно часто, они отличаются реализацией, но их все отличает одно неизменное свойство, сложность поддержки и сопровождения кода.Читать полностью »

При разработке игр, довольно часто возникает необходимость в построении системы широковещательной рассылки сообщений. Предположим, Вы хотите сделать так, чтобы в тот момент когда персонаж, управляемый игроком, вошел в определенную зону, или выполнил определенное действие, все заинтересованные в этом объекты получили уведомление. По возможности это уведомление должно нести в себе информацию о произошедшем событии. В данной статье, я предлагаю Вашему вниманию один из возможных способов построения подобной системы. Приведенная система построена на базе Unity3D EventSystem.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js