Как стать автором
Обновить
20
0
Андрей Цветков @AndreyTS

Пользователь

Отправить сообщение

Усиливаем контроль типов: где в типичном C#-проекте присутствует непрошеный элемент слабой типизации?

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

Проблема


Мы привыкли говорить о языках вроде C# как строго и статически типизированных. Это, конечно, правда, и во многих случаях тип, указываемый нами для некоторой языковой сущности хорошо выражает наше представление о ее типе. Но есть широко распространенные примеры, когда мы по привычке («и все так делают») миримся с не совсем верным выражением «желаемого типа» в «объявленном типе». Самый яркий — ссылочные типы, безальтернативно оснащенные значением «null».
В моем текущем проекте за год активной разработки не было ни одного NullReferenceException. Могу не без оснований полагать, что это следствие применения описанных ниже техник.

Рассмотрим фрагмент кода:

public interface IUserRepo 
{
	User Get(int id);
	User Find(int id);
}

Этот интерфейс требует дополнительного комментария: «Get возвращает всегда не null, но кидает Exception в случае ненахождения объекта; а Find, не найдя, возвращает null». «Желаемые», подразумеваемые автором типы возврата у этих методов разные: «Обязательно User» и «Может быть, User». А «объявленный» тип — один и тот же. Если язык не заставляет нас явно выражать эту разницу, то это не означает, что мы не можем и не должны делать это по собственной инициативе.
Maybe в C#: какие есть варианты
Всего голосов 37: ↑32 и ↓5 +27
Комментарии 63

Распараллеливание задач. Случай «идеальной параллельности». Часть 2

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

Предлагаемые решения в .NET 4


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

Для распараллеливания «идеальных» циклов предоставляются следующие варианты:
  • класс System.Threading.Tasks.Parallel с методами For (), ForEach ()
  • Parallel LINQ с методом расширения AsParallel ().


Читать дальше
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 8

Распараллеливание задач. Случай «идеальной параллельности». Часть 1

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

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


Введение

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

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

Анти-Сервисный центр Сервисфон

Время на прочтение 3 мин
Количество просмотров 583
Хочу предупредить людей, дабы не наткнулись на сию организацию.

Что случилось


Мой HTC Desire в один прекрасный день словил обновление на версию ОС Android 2.2, которое (обновление) привело к неработоспособности телефона. В интернете эта проблема уже обсуждалась, и связана была, видимо, с некорректной версией обновления, попавшей на некоторые телефоны. Конкретно — он перестал видеть WiFi, сотовую сеть и SD-карту, и перезагружался каждые 3 минуты.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 5

Компиляция страниц ASP.NET: генерация кода

Время на прочтение 10 мин
Количество просмотров 7.4K
Сейчас пришла пора разобраться с тем, что происходит с кодом от момента написания ASPX/ASCX- разметки и CS-кода до момента их физического выполнения в виде некоторого скомпилированного кода на сервере.
Читать дальше →
Всего голосов 16: ↑10 и ↓6 +4
Комментарии 4

Генерация скрипта базы данных по модели данных Entity Framework

Время на прочтение 1 мин
Количество просмотров 1.2K
В будущей версии редактора моделей Entity Framework в Visual Studio ожидается такая полезная функциональность, как обратная генерация базы данных по модели данных (SSDL — Storage Schema Definition Language). Но пока её нет, можно воспользоваться XSLT-преобразованием, которое поможет получить из XML-описания модели хранилища SQL-DDL код для создания таблиц и связей в БД.

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

Сервис Вопросы-Ответы: как правильно дать ответить на вопрос?

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

Доброго времени суток, уважаемые Хабрапользователи!



Некоторое время назад мы начали разрабатывать систему вопросов-ответов (две малоизвестные компании уже создали по аналогу: ответы mail.ru или ответы Google). И мы, кроме прочего, поставили задачу избавиться от всех недочётов и проблем, которые мы выявили в существующих подобных системах.
Итак, ...
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 11

Навигация на AJAX-сайтах: Extender Control для ajaxtoolkit: TabContainer

Время на прочтение 15 мин
Количество просмотров 2.1K
Этот пост будет интересен прежде всего ASP.NET-разработчикам, которые осваивают «продвинутый» функционал AjaxControlToolkit, в частности, расширение стандартного TabControl — контрола, обеспечивающего клиентские вкладки («табы») на странице.

Впрочем, так как задача по сути сводится к клиентскому программированию, общие принципы окажутся полезными не только ASP.NET-разработчикам, поэтому, думаю, место ей в блоге «Веб-разработка».

Постановка проблемы: обеспечить при использовании TabControl соответствие текущей выбранной вкладки содержимому адресной строки браузера. То есть,
  1. чтобы при переходе между вкладками соответствующим образом изменялся адрес,
  2. можно было в любой момент скопировать ссылку, и открыв её после, попасть на ту же вкладку, откуда была скопирована ссылка,
  3. обеспечить корректную работоспособность кнопок «Назад» и «Вперёд» браузера для навигации по вкладкам.
Решил разобраться с AJAX Extender Controls и реализовать эту полезную штуку именно в виде Extender-контрола.
погружаемся
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 7

Сервис: Видеособеседования

Время на прочтение 2 мин
Количество просмотров 615
Сам работаю с фрилансерами и большинство из них — жители небольших городов России и Украины. Часто сталкивался с тем, что многие из фрилансеров готовы выйти на постоянную работу, если их устроят условия работа и зарплата, которые в их родных городах просто никакие, но ехать наобум в другой город, еще не получив гарантию, что возьмут на работу, желающих нет. А гарантии такой без собеседования никто давать не будет.

Думаю, такие фрилансеры и на Хабре есть, потому стоит пропиарить вот такую вот штуку — может, кому-нибудь пригодится.

смотрим: удалённые видеособеседования
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 11

ASP.NET: расширяем механизм путей SiteMapPath

Время на прочтение 3 мин
Количество просмотров 2.1K
При разработке на ASP.NET мы привыкли для стандартных задач использовать стандартные компоненты. Одной из таких стандартных задач является вывод на каждой странице сайта пути к ней от главной страницы — фрагмента карты сайта (sitemap path). Для этого используется контрол SiteMapPath, берущий данные о карте сайта от провайдера карты сайта (SiteMapProvider) по умолчанию, который, в свою очередь, берет их из конфигурационного файла Web.siteMap.

Поместив этот контрол на мастер-страницу сайта, и описав в конфигурационном файле карту сайта, мы тем самым обеспечиваем вывод пути на всех страницах.

Но ASP.NET — расширяемая среда, и позволяет замещать почти все стандартные модули, и провайдер карт сайта — не исключение. Мы рассмотрим, как создать свой провайдер для получения расширенной функциональности для карты сайта.

Читать про SiteMapPath с динамическим содержимым
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 6

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность