Pull to refresh
1
0
Send message

Использование async и await в C# — лучшие практики

Reading time 8 min
Views 224K

Ключевые слова async и await, введённые в C# 5.0, значительно упрощают асинхронное программирование. Они также скрывают за собой некоторые сложности, которые, если вы потеряете бдительность, могут добавить проблем в ваш код. Описанные ниже практики пригодятся вам, если вы создаёте асинхронный код для .NET приложений.
Читать дальше →
Total votes 79: ↑69 and ↓10 +59
Comments 24

Использование технологии Direct2D для создания WinRT компонентов

Reading time 9 min
Views 18K
Эта статья продолжает серию наших рассказов, в которых мы делимся своим опытом разработки визуальных WinRT контролов в стиле Windows 8 UI.

В прошлый раз мы приводили базовые шаги, необходимые для создания своего WinRT контрола и SDK для него, а сейчас речь пойдёт о применении технологии Direct2D для создания визуальных эффектов в вашем WinRT компоненте.

В данной статье мы рассмотрим процесс создания кругового индикатора aka гейдж (gauge control), у которого стрелка будет размываться при движении.

Примечание: полный код этого проекта вы можете скачать по следующей ссылке: go.devexpress.com/Habr_WinRTSample.aspx

Читать дальше →
Total votes 51: ↑42 and ↓9 +33
Comments 2

Упрощение регистрации и работы с DependencyProperty

Reading time 4 min
Views 18K
При работе с WPF/Silverlight, периодически приходится создавать кастомные DependencyProperty, в основном при создании контролов. Стандартный подход объявления и работы с ними не идеальный и имеет минусы, о которых будет сказано ниже. Соответственно, появилась идея упростить запись регистрации и работы с DependencyProperty.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 17

Жесткая приоритизация, или 5 первых шагов к отличному приложению для Windows 8. Навигация

Reading time 10 min
Views 12K
From Idea to App

В предыдущей части мы рассмотрели три первых шага на пути проектирования приложения:
  1. Определение целевой аудитории
  2. Формулировка цели приложения
  3. Отбор ключевых сценариев

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

Читать дальше →
Total votes 52: ↑31 and ↓21 +10
Comments 8

Каррирование и частичное применение функции

Reading time 3 min
Views 27K
Когда я впервые услышал термин Каррирование, я сразу же представил себе вкусные тайскую и индийскую кухни.  К моему удивлению, я обнаружил, что разговор шел не о прекрасных специях, а о преобразовании функции, принимающей n аргументов в функцию, которая принимает один аргумент и возвращает каррированую функцию, которая принимает n — 1 аргументов. Где бы это могло быть полезным?
Читать дальше →
Total votes 29: ↑21 and ↓8 +13
Comments 37

Создание и регистрация Metro style компонента для WinRT

Reading time 7 min
Views 14K
Официальный релиз Windows 8 приближается с каждым днём, и всё больше разработчиков задумывается о том, чтобы создать своё приложение в стиле Metro. А если же вы делаете сразу несколько таких приложений, то скорее всего у вас возникнет потребность использовать один и тот же код в разных проектах.

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

В качестве примера компонента мы выбрали анимированный индикатор загрузки в стиле Metro, похожий на тот, который многие из нас уже видели в новой версии Windows. К концу этой статьи вы будете не только знать всё о регистрации компонентов, но и иметь возможность добавить готовый индикатор загрузки в своё Metro приложение.
Читать дальше →
Total votes 57: ↑47 and ↓10 +37
Comments 14

Контракт Settings в WinRT (Windows 8)

Reading time 4 min
Views 3.6K
Одним из основных контрактов доступных в чудо-панели Windows 8 является контракт Settings.
Активация панели настроек осуществляется соответствующей кнопкой «Settings» в чудо панели:
image

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

В этой статье мы рассмотрим две темы:.
Добавление поддержки контракта Settings
Добавление собственной панели настроек.

Подробности
Total votes 35: ↑28 and ↓7 +21
Comments 11

Записи с летней школы по Metro-дизайну

Reading time 1 min
Views 15K


Друзья, как вы, наверняка, знаете, буквально в прошедшие выходные (13-14 июля) мы проводили летнюю школу по Metro-дизайну для Windows Phone и Windows 8. Рады сообщить, что записи лекций уже доступны на TechDays!
Под катом ссылки на отдельные лекции
Total votes 54: ↑39 and ↓15 +24
Comments 8

Контракты и расширения Windows 8

Reading time 5 min
Views 11K
Если вы интересовались разработкой приложений в metro-стиле под Windows 8, вы, наверное, уже знаете, что жизненный цикл этих приложений ближе к жизненному циклу приложений на Windows Phone. Это означает, что приложение, фактически не исполняется, когда пользователь его не видит. Таким образом, возникает вопрос, как приложения могут взаимодействовать друг с другом и системой.

В Windows 8 для приложений в metro-стиле для взаимодействия приложений друг с другом используются контракты, а для взаимодействия с системой – расширения.

Разнообразных контрактов и расширений достаточно много. Написать пост про то, какие контракты и расширения доступны разработчику, меня натолкнула статья Windows 8. Контракт «поиск» в деталях, после которой я решил систематизировать свои знания и собрать в одном месте краткие, буквально в несколько строчек, «how to» по большинству контрактов и расширений, с примерами из Windows SDK Samples.
Подробнее о контрактах и расширениях Windows 8 со ссылками на примеры
Total votes 48: ↑39 and ↓9 +30
Comments 8

Скринкаст: монада Maybe на языке C#

Reading time 1 min
Views 20K
Небольшая иллюстрация того, как на языке C# реализовать монаду Maybe и зачем это вообще нужно. Смотреть видео рекоммендуется в разрешении 720p.



Сопутствующую статью можно найти тут (англ. яз.). Комментарии приветствуются!
Total votes 54: ↑44 and ↓10 +34
Comments 41

Публикация сайта ASP.NET MVC в обновленный Windows Azure

Reading time 5 min
Views 10K
image
Ни для кого уже не секрет, что 6го июля компания Microsoft расширила российские возможности для работы с Windows Azure и предоставила доступ к Preview-технологиям. Об одной из этих технологий я хочу рассказать в этом посте.
Сразу хочу сказать, что большая часть информации взята из официального мануала и адаптирована к восприятию на собственном примере. Оригинал написан на английском, так что русская версия не помешает.
Ознакомиться с пошаговой инструкцией
Total votes 39: ↑26 and ↓13 +13
Comments 19

Windows 8. Контракт «поиск» в деталях

Reading time 8 min
Views 3.4K
Поиск внутри приложений одна из новых, наиболее важных и интересных функций Windows 8. Поиск предоставляет возможность искать не только файлы и документы на устройстве, но также позволяет искать внутри установленных приложений.

В этой статье рассматривается:
1. Интеграция поиска в метро приложение
2. Контекстные подсказки (suggestions).
3. Обработка запроса по мере ввода данных.
4. Неосторожное использование контракта поиска (обычные ошибки интеграции).
Читать дальше →
Total votes 46: ↑39 and ↓7 +32
Comments 18

Windows 8: Проектирование интерфейсов

Reading time 1 min
Views 19K

В продолжении темы о подготовке MSDN к выходу Windows 8, хочется отметить ещё одну порцию полезных материалов. На этот раз собрана документация по проектированию интерфейсов. Приведены рекомендации и руководство о том, как спланировать все сценарии использования вашего приложения, как спроектировать интерфейс, показаны конкретные примеры и многое другое.
Читать дальше →
Total votes 76: ↑48 and ↓28 +20
Comments 10

Локализация ASP.NET MVC приложения с помощью БД

Reading time 8 min
Views 18K

Данная статья будет узконаправленной и покрывает локализацию через БД, поэтому подробно расписывать как делать локализацию с помощью файлов ресурсов (resx) можно посмотреть, например, тут: MVC 2: Полное руководство по локализации. Для локализации с помощью представлений я тоже там ссылки.

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

Читать дальше →
Total votes 31: ↑21 and ↓10 +11
Comments 11

Как правильно сортировать контент на основе оценок пользователей

Reading time 5 min
Views 91K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Total votes 458: ↑423 and ↓35 +388
Comments 134

Непутевые заметки о ASP.NET MVC. Часть 1 (и единственная)

Reading time 11 min
Views 41K
В последнее время на Хабре часто начали появляться статьи о ASP.NET MVC. Однако в этой статье я бы хотел сделать несколько заметок по поводу построения приложений на вышеприведенном фреймворке: минимальный набор NuGet-packages (без которых грех начинать работу), логирование, подводные камни при использовании стандартных membership-, profile- провайдеров. И, напоследок, почему Web API из MVC 4 — то, что так долго мы все ждали.
Поехали
Total votes 60: ↑48 and ↓12 +36
Comments 72

И снова про сортировки: выбираем лучший алгоритм

Reading time 9 min
Views 143K
Недавно на хабре в очередной подняли тему алгоритмов сортировки, а именно был хорошо описан метод Timsort.

Он, имея сложность не более O(n log n), ускоряется в случае сортировки частично упорядоченных данных и имеет сложность O(n), если данные изначально отсортированны. Но это не единственный алгоритм с такими заявленными свойствами. Существует еще как минимум два более-менее известных метода с похожей сложностью — это Smoothsort и сортировка Шелла.

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

Читать дальше →
Total votes 117: ↑114 and ↓3 +111
Comments 32

Барьеры памяти и неблокирующая синхронизация в .NET

Reading time 7 min
Views 57K

Введение


В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
Читать дальше →
Total votes 63: ↑62 and ↓1 +61
Comments 18

Information

Rating
Does not participate
Registered
Activity