Как стать автором
Обновить
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#: какие есть варианты

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

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

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


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

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


Читать дальше

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

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

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


Введение

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

Читать дальше →

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

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

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


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

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

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

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

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

Читать дальше →

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

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

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



Некоторое время назад мы начали разрабатывать систему вопросов-ответов (две малоизвестные компании уже создали по аналогу: ответы mail.ru или ответы Google). И мы, кроме прочего, поставили задачу избавиться от всех недочётов и проблем, которые мы выявили в существующих подобных системах.
Итак, ...

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

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

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

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

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

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

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

смотрим: удалённые видеособеседования

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

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

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

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

Читать про SiteMapPath с динамическим содержимым

Информация

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