войти зарегистрироваться

.NETРеализация Code Action с помощью Roslyn

Roslyn Services API позволяют легко реализовывать расширения, которые находят и устраняют проблемы в коде прямо в Visual Studio. Roslyn Services API доступно как часть Roslyn CTP.

В этом посте мы реализуем расширение для Visual Studio, которое детектирует вызовы метода Count() у Enumerable, после чего результат проверяется на равенство больше нуля, например, someSequence.Count() > 0. Проблема, заключающаяся в коде, в том, что Count() должен пройтись по всей последовательности, прежде чем вернуть результат. Более правильным подходом в данном случае является вызов метода Enumerable.Any().

Чтобы исправить это, мы реализуем CodeIssueProvider, детектирующий проблему, и CodeAction, который заменяет условие на вызов Enumerable.Any(), как и требуется. Т.е. наш CodeAction изменит что-то типа someSequence.Count() > 0 на someSequence.Any().

ПрограммированиеМолитва «Си наш»

Наткнулся на сайте испанского сообщества С-программистов на интересную интерпретация молитвы «Отче наш» за авторством некоего Docma. Я позволил себе вольность сделать перевод на великий и могучий.

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

C наш, сущий в памяти!
да компилируется код Твой;
да приидет царствие Софта Твоего;
да будут действительны указатели Твои
и в ОЗУ, как на жестком диске;
массив наш насущный подавай нам на каждый день;
и прости нам варнинги наши,
как и мы избавляемся от ошибок наших;
и не введи нас в бесконечный цикл,
но избавь нас от винды.
Ибо Твое есть Царство и сила и слава во веки.
Энтер.
K&R.16:64:256:1—8


Оригинал на испанском:
C Nuestro que estas en la Memoria,
Compilado sea tu código,
venga a nosotros tu software,
carguense tus punteros.
así en la RAM como en el Disco Duro,
Danos hoy nuestro Array de cada día,
Perdona nuestros Warnings,
así como nosotros también los eliminamos,
no nos dejes caer en Bucles,
y libranos del Windows, Enter.

Источник

Работа с видеоВидеоплеер на базе ffmpeg

Привет, Хабр!

В этой статье речь пойдет о разработке простейшего плеера с использованием библиотек из проекта FFmpeg.
Я не нашел на хабре статей на данную тематику, поэтому решил восполнить этот пробел.
Декодирование видео будет осуществляться с помощью библиотек FFmpeg, отображение — с помощью SDL.

Human ResourcesЯ хочу работать в Google! Телефонное интервью (часть 2)

Сегодня мы будет обсуждать технические аспекты и реализацию задач на Python и C/C++, которыми нас будет закидывать инженер из Google. Начнём с самых тривиальных проблем с последующим нарастанием сложности. Параллельно обратим внимание о чём стоит упомянуть во время интервью и где не попасть в ловушку.

.NETСравнение объектов в C#.NET из песочницы

C#.NET предлагает множество способов сравнить объекты, как экземпляры классов, так и структур. Способов так много, что без упорядочения этих способов и понимания их грамотного использования и имплементации (при наличии возможности переопределения), в голове, неминуемо, образуется каша.

ASP.NET MVCОбработка всех исключений в контроллерах с помощью атрибута

Всё мы знаем, что в ASP.NET MVC есть такой атрибут HandleErrorAttribute, который как сказано в MSDN
Представляет атрибут, используемый для обработки исключения, вызываемого методом действия.

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

Посмотрев на исходный код HandleErrorAttribute легко убедиться в этом. Там имеются следующие строки:

// If this is not an HTTP 500 (for example, if somebody throws an HTTP 404 from an action method),
// ignore it.
if (new HttpException(null, exception).GetHttpCode() != 500) {
    return;
}

Не знаю, как вам, а мне удобнее при возникновении исключения, чтобы пользователи видели специальную страницу для этого, а не «жёлтую страницу смерти» или вообще как браузер отображает стандартную для него страницу с кодом ответа сервера (зависит от настроек в Web.config, но об этом позже).

Блог компании MicrosoftWindows 8 Camp — 2 марта в Москве и онлайн

Мы проводим первое в России мероприятие по новой операционной системе Windows 8 – 2 марта пройдет Windows 8 Camp!

Мы расскажем и покажем, как создавать приложения на HTML5/JavaScript, C# и C++ и как соблюдать принципы Metro-дизайна.

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

Как вы знаете, на данный момент Windows 8 находится в статусе Developer Preview – как и наш сайт. В конце февраля выйдет бета-версия Windows 8, после чего у нас будет более подробное расписание докладов.

Не пропустите начало нового этапа в развитии Windows!

ASP.NET MVCДинамическая проверка прав доступа для ASP.NET MVC из песочницы

В ASP.NET MVC есть встроенная возможность ограничить доступ к тем или иным контроллерам и их действиям. Эта возможность предоставляется атрибутом AuthorizeAttribute, но возможностей и гибкости ему явно не хватает (точнее их практически нет). Права можно определить только на этапе разработки и без повторной компиляции никак не изменить. А ведь создать собственный атрибут, обладающий необходимым функционалом совсем не сложно.

ПрограммированиеMP3 MusicID по аудио отпечатку файла в своей программе на С# из песочницы

Недавно у меня возникла такая необходимость — использовать распознавание музыки в собственной программе. Программа разрабатывалась на C#, это сортировщик коллекции mp3 файлов, заточенный под себя. В двух словах скажу, что к примеру, он умеет распознавать по ID3 тэгам принадлежность произведения к классической музыке, и соответственно раскладывать по папкам на диске не /Исполнитель (год-год)/Альбом (год)/Произведение, а /Композитор/Альбом/Произведение.

Изначально, мне пришла в голову идея использовать для этой цели Winamp, так как он неплохо справляется с задачей распознавания ID тэгов по отпечатку аудио. Есть идея — есть реализация! В списке треков появилась кнопочка, которая создает в %TEMP% m3u список и запускает Winamp передавая ему m3u как параметр, а приложение отслеживает ChangeFileNotification и если тэги были обновлены в Winamp — автоматом обновляет информацию в своих окошках. Однако спустя некоторое время я понял, что это неудобно, непонтово и решил вживить в код такую же фичу, как в Winamp.

Windows PhoneИспользование паттерна MVVM при создании приложений для Windows Phone из песочницы

Паттерн MVVM делится на три части:

  • Модель (Model), так же, как в классическом паттерне MVC, Модель представляет собой фундаментальные данные, необходимые для работы приложения.
  • Вид/Представление (View) так же, как в классическом паттерне MVC, Вид — это графический интерфейс, то есть окно, кнопки и.т.п.
  • Модель вида (ViewModel, что означает «Model of View») является с одной стороны абстракцией Вида, а с другой предоставляет обертку данных из Модели, которые подлежат связыванию. То есть она содержит Модель, которая преобразована к Виду, а так же содержит в себе команды, которыми может пользоваться Вид, чтобы влиять на Модель.


Зачастую возникает необходимость подписываться на события представления в модели представления или переопределять его методы (например, метод OnNavigatedFrom или OnNavigatedTo). Так как сам шаблон пропагандирует разделение логики и представления, писать в code behind уж очень не хочется.

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