Обновить
112.95

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

IIS — изменяем размер картинок на лету

Время на прочтение2 мин
Количество просмотров12K
Почти в каждом веб-проекте мы сталкиваемся с задачей показывать те или иные изображения в разных размерах. Всё просто — изображение должно показываться в размере, требуемом контекстом. Если вы разрабатываете каталог с разными представлениями, то таких контекстов может быть много. А возможно, что потребуется сделать размер картинки адаптивным по отношению к размеру окна браузера (например, так делают Picasa Web Albums).

Я расскажу о способе решить эту проблему раз и навсегда.
Читать дальше →

Игру для Kinect, от нечего делать

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


В далёком уже 2010 году, появился на свет Kinect от Microsoft. Но, к счастью или нет, новость о чудо-сенсоре меня не «зацепила». Вспомнил, а точнее напомнили мне о нём спустя год, когда появилась мысль о приобретении, как оказалось, стильного пыле сборника – Xbox 360 Slim. Хоть и включается консоль только во время пьяных вечеринок, положительных эмоций и весёлых видео оставляет после себя не мало. Но наигравшись в стандартные Adventures и Joy Ride, в голову взбрела идея о создании собственной игры для Kinect-а, как оказалось, всё довольно просто…
Читать дальше →

Deserialize в существующие объекты используя стандартный форматер

Время на прочтение2 мин
Количество просмотров5.9K
Штатная десериализация .net всегда создает граф новых объектов. Это не всегда удобно.

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


Поиск не дал готового ответа. Есть не самые простые решения с использованием protobuf и прочих сторонних сериализаторов, но это не всегда применимо.

Задача в целом несложная, и мое решение не является чем то выдающимся, но с другой стороны, тем кто впервые столкнется с похожей проблемой — будет проще.

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

Немного об интерфейсах в .Net (по мотивам одного интервью)

Время на прочтение8 мин
Количество просмотров50K
В прошедний понедельник мне посчастливилось попасть на собеседование на Senior .Net Developer в одну международную компанию. Во время собеседования мне предложили пройти тест, где ряд вопросов был связан с .Net. В частности в одном из вопросов надо было дать оценку (истина/ложь) ряду утверждений, среди которых было и такое:

В .Net любой массив элементов, например int[], по умолчанию реализует IList, что позволяет использовать его в качестве коллекции в операторе foreach.


Быстро ответив на этот вопрос отрицательно и отдельно дописав на полях. что для foreach необходима реализация не IList, а IEnumerable, я перешел к следующему вопросу. Однако по дороге домой меня мучал вопрос: реализует ли массив все-таки этот интерфейс или нет?

Про IList я смутно помнил, что этот интерфейс дает мне IEnumerable, индексатор и свойство Count, содержащее число элементов коллекции, а также еще пару редко используемых свойств, типа IsFixedCollection(). Массив имеет свойство Length для своего размера, а Count в IEnumerable является методом расширения от LINQ, что было бы невозможно, если бы этот метод был реализован в классе. Таким образом, получалось, что массив не мог реализовывать интерфейс IList, однако какое-то смутное чувство не давало мне покоя. Поэтому вечером после интервью я решил провести небольшое исследование.

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

Работа с GPS в WinCE (C#)

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

Введение


Всем привет!
В этой статье я хочу рассмотреть вопрос реализации доступа к данным GPS в устройствах на базе WindowsCE. При создании продукта СКАУТ-Навигатор, необходимо было разработать приложение, работающее как в WinСЕ версии 5.0, так и в WinCE версии 6.0, которое умеет получать данные NMEA с навигационного приемника, и записывать их в журнал.

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

Дружим System.Web.Optimization Bundle с Windows Azure Storage

Время на прочтение3 мин
Количество просмотров2.6K
Я все ждал, ждал, ждал, когда же все-таки умные ребята, разрабатывающие System.Web.Optimization добавят поддержку автоматической загрузки содержимого бандла в контейнер Azure Storage. На днях вышла «1.0.0-beta2», но желаемого функционала так я и не нашел, а быстроты то хочется…
Читать дальше →

Методы вычисления мультиномиальных коэффициентов

Время на прочтение11 мин
Количество просмотров15K
Однажды, пролистывая популярный Q&A по математике (math.stackexchange.com), я обнаружил вопрос про расчет мультиномиальных коэффициентов и он меня заинтересовал. На заметку, для тех, кто не знает что это такое, существует статья в википедии. Итак, нужно вычислить следующее выражение:



Казалось, зачем на хабре выкладывать решение такой простой задачи? Ответ заключается в том, что самый простой наивный способ, заключающийся в перемножении факториала суммы с последующим делением его на произведение факториалов, не подойдет из-за того, что промежуточные вычисления выйдут за разрядную сетку типа uint и даже ulong, хотя результат может оказаться в пределах значений этих типов. Мне понравилась эта задача, и я сразу же сел за ее решение и придумал три способа. Остальные два способа я позаимствовал из других ответов. Итак, статья будет об описании и сравнении всех реализованных мною методов на C# под .NET.
Читать дальше →

WPF: 4 варианта кнопки с иконкой и текстом

Время на прочтение12 мин
Количество просмотров118K
Я думаю что каждый (или почти каждый), из тех, кто приходит в WPF из WinForms, поначалу испытывает растерянность по поводу функционала стандартных контролов.
Казалось бы – вот он — знакомый контрол.
Он очень похож на старого знакомого из WinForms. Даже сигнатура обычных методов либо полностью совпадает, либо претерпела незначительную трансформацию (ну, например, свойство Enabled получило приставку Is). Настроек у контролов много, от параметров визуализации рябит в глазах.
Но при чуть более тесном знакомстве и попытке натянуть привычные способы построения интерфейса на XAML и приходит та самая растерянность.

Как же так? Ну неужели у кнопки нет свойства Image? Вы ведь шутите, правда?
Читать дальше →

Entity Framework 6 — ALPHA

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

Зайдя сегодня с утра в менеджер пакетов NuGet в Visual Studio, обнаружил, что в cписке обновлений появилась prerelease версия Entity Framework 6. Заинтересовавшись, что же нового нас ждет решил узнать подробнее об этом обновлении. Информации пока не много, но кое-что узнать удалось.
Читать дальше →

Запрет редактирования свойств модели в ASP.NET MVC

Время на прочтение3 мин
Количество просмотров3.6K
При разработке сложных бизнес приложений часто приходится сталкиваться с ситуацией, когда пользователям необходимо ограничивать права на редактирование некоторых данных. В данной статье будет рассмотрен пример запрета изменения определенных свойств модели в приложении, разработанном на ASP.NET MVC.
Читать дальше →

Создание игрового сервера на базе Azure

Время на прочтение7 мин
Количество просмотров4.2K
В процессе реализации одной игры для Windows RT потребовалось сделать мультиплеер на 2 игрока. При этом необходима была поддержка кроссплатформенной игры между WinRT и Windows phone 7.5. Сервисов предоставляющих такую возможность обнаружено не было, поэтому я решил написать свой простой сервер, который бы просто пересылал сообщения от одного клиента другому в реальном времени. Так как у меня есть только аккаунт Azure, реализацию было решено делать под него. При этом Azure обеспечивает легкое масштабирование, отличную консоль управления (новый интерфейс) и много сервисов облегчающих разработку. Ну и главная для меня особенность разработки под Azure: возможность разработки на C# и Visual Studio 2012.

Под катом описание разработки и разворачивания сервера в облаке.
Читать дальше →

.Net-детектив: об интерфейсах и рефлексии

Время на прочтение3 мин
Количество просмотров4.7K
Недавно меня заинтересовала структура такого древнего .Net-интерфейса как IList. Почему меня это заинтересовало — это отдельная длинная история, о которой я, наверное. расскажу в следующий раз.

Чтобы изучить этот интерфейс подробнее я сначала решил посмотреть какие же методы он декларирует. Воспользовавшись рефлексией:
я обнаружил несколько интересных фактов

Mono 3.0

Время на прочтение1 мин
Количество просмотров17K
18-го октября вышла новая версия свободной кроссплатформенной реализации .NET Framework: Mono 3.0. Полный список новых фич можно найти в Release Notes на официальном сайте, а пока что некоторые из них:
  • Поддержка асинхронной модели программирования C# 5.0
  • Единый C#-компилятор для всех профилей
  • C# Interactive Shell
  • 4.5 Async API Profile
  • Работа с ASP.NET MVC 4, ASP.NET WebPages, Entity Framework, Razor, System.Json
  • Сборщик мусора с улучшенной производительностью
  • Поддержка CodeContracts
  • Частичная поддержка Portable Class Libraries

Ближайшие события

Топ комментариев Хабра — сервис, детали реализации, и немного статистики (С#)

Время на прочтение3 мин
Количество просмотров30K
Некоторое время назад страничка «Лучшие комментарии» была удалена с Хабра (подробности здесь: habrahabr.ru/qa/18401).
Тем не менее, мне бывало интересно туда заглянуть — и ради лулзов, и статьи иногда интересные попадаются из тех, что в ленте упустил. Так что решил я сделать свой небольшой сервис. Надеюсь, администрация не будет против.

Текущий URL сервиса: habrastats.comyr.com


Ссылка и технические подробности

Active Record Pattern

Время на прочтение3 мин
Количество просмотров17K
Хочу рассказать о применении шаблона Active Record для C# на практике. Такой класс реализует извлечение и запись структуры в базу данных. Бизнес логика выносится на следующие уровни абстракции, где с таким объектом можно работать уже как с обычной структурой.

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

Использование active record объекта в коде бизнес логики выглядит вот так:

Country russia = Country.All[“Russia”];

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

Создание и обработка шаблонов печатных форм

Время на прочтение7 мин
Количество просмотров24K
Как показала практика работы с ERP системами — корпоративные приложения на 30% состоят из отчетов. Типичная ситуация для таких приложений — построить отчет по некоторым данным.

Для построения отчетов можно использовать ReportBuilder или любые другие системы построения отчетов. В этой статье я хочу рассмотреть построение отчетов в MS Word 2003 (и более поздние версии) посредством Aspose.Words, так как легко вносить правки, удобно разрабатывать, не требует особых навыков по работе с гигантами систем отчетов и т.д.
Заинтересовавшихся прошу под кат

Создание «нестандартного» кастомного объекта для AutoCAD, работающего без Object Enabler

Время на прочтение8 мин
Количество просмотров9K
Добрый день.
Те, кто имеет дело с AutoCAD и сторонними решениями для него, наверняка, сталкивались с проблемой прокси объектов, для отображения или перемещения которых требуется установить библиотеки, с помощью которых были созданы данные объекты или так называемые Objects Enablers, от тех же разработчиков. Это достаточно неудобно. Например, получили вы документ от заказчика/субподрядчика и видите только квадраты.

Хочу поделиться с Вами личным опытом создания «нетрадиционного» объекта для AutoCAD. За основу взят анонимный блок. Свойства объекта хранятся отдельно в BlockReference::ExtensionDictionary. Что дает возможность стороннему приложению или скрипту получить к ним доступ и считать их, а при желании изменить, без наличия оригинальных библиотек. Примитивы внутри блока всегда отрисовываются в соответствии со своим состоянием. Да и вообще, устойчивость работы AutoCAD значительно выше. Со стороны все выглядит просто. Но при попытке реализовать данный механизм были выявлены различные «подводные камни». Об этом по порядку.
Читать дальше →

Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

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

Предисловие



Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
Читать дальше →

Continuous Delivery & Sitecore: наша реализация

Время на прочтение7 мин
Количество просмотров11K
Хочу представить Вам нашу концепцию Continuous Delivery (далее, CD) применительно к основной CMS в которой нашу компания ведет разработку – Sitecore. Наша концепция CD зиждется на трех китах:
  • Система контроля версий – Git (в принципе, можно применять и к другим, но Git наиболее удобен в виду того, что ветки в нем весьма просты, быстры и дешевы)
  • CI сервер – TeamCity
  • Код, который собственно и осуществляет всю доставку, установку и обработку (скрипты и дополнительные исполняемые файлы)

В данной статье, я попробую описать все вовлеченные аспекты.
Читать дальше →

Список сообщений в стиле Message Hub

Время на прочтение3 мин
Количество просмотров8.9K
Если вы уже разрабатывали приложения под Windows Phone 7, то возможно уже заметили отсутствие некоторых элементов управления, таких как Hub Tile, сгруппированный список или список сообщений. Некоторые из них можно найти в библиотеке Silverlight Toolkit for Windows Phone. Но что делать, когда нам нужно создать приложение, похожее на стандартный Message Hub? Основная проблема заключается в том, что в стандартном LisBox'е элементы размещаются cверху вниз, в то время как в хабе сообщений — наоборот.



Хочу продемонстрировать одно из решений данной задачи. Нам понадобится лишь стандартный элемент управления ListBox, библиотека System.Windows.Interaction из Blend SDK и некоторые знания в области трансформации визуальных компонентов.
Читать дальше →

Вклад авторов