Обновить
100.41

.NET *

Хаб со знаниями про .NET

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

Расширяем log4net. Конкурентное логирование

Время на прочтение7 мин
Охват и читатели12K
Библиотека log4net известна и в представлении не нуждается. В ней есть практически всё, что нужно, «из коробки». Однако, есть специфические ситуации, в которых необходимо добавлять/расширять функциональность библиотеки. Конкретная ситуация: есть некоторая библиотека, которая выполняет логирование через log4net в некоторый логер (или несколько — не суть). Эта библиотека используется в N службах. Как сделать так, чтобы логирование происходило в единственный файл? Под катом объяснение, почему FileAppender+MinimalLock не подходит, и реализация Appender'а, который решает задачу. Отдельно хочу сказать, что вопрос о логировании в БД, по сети и т.п. в статье не рассматривается, т.к. это гораздо более серьёзная задача, которая (особенно для больших систем) требует длительного обдумывания и внедрения.

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

Тонкие моменты C#

Время на прочтение6 мин
Охват и читатели109K
C SharpНе секрет, что C# сегодня популярный и динамично развывающийся язык, в отличие от своего прямого конкурента — языка Java, который в плане функциональности переживает период застоя. Основное неоспоримое преимущество Java — настоящая кросплатформенность, а не унылая и ограниченная, как у C#.

C# — простой язык, благодаря простоте живёт и PHP. Но в то же время он весьма функциональный, и имеет статус «гибридного» языка, совмещая в себе различные парадигмы, встроенную поддержку как императивного стиля программирования, так и функционального.

Как и любой язык, шарп имеет свои тонкости, особенности, «подводные камни» и малоизвестные возможности. Что я имею ввиду? Читайте под катом…
Читать дальше →

C#: Этюды, часть 7

Время на прочтение1 мин
Охват и читатели1.9K
Сегодня простой этюд, почти без кода.

Допустим, есть некий класс и его статический конструктор:
static C()
{ Console.WriteLine("from static ctor"); }

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

В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.

Console.WriteLine("before static ctor");
// нужно вызвать здесь
Console.WriteLine("after static ctor");

ILSpy — open source альтернатива .NET Reflector

Время на прочтение2 мин
Охват и читатели58K
Как вы все знаете, Reflector становится платным. Такой шаг компании Red Gate не мог не сподвигнуть разработчиков сделать бесплатную альтернативу. Вот и всем известные разработчики open source решений для .NET IC#Code (на их счету так же IDE SharpDevelop) взялись за разработку своего Reflector'а.
Разработка началась совсем недавно, поэтому проект ещё не оброс всеми нужными фичами, но есть надежда на успешное продолжение.
читать дальше

Встраиваем сбор Code Coverage в CruiseControl.NET

Время на прочтение6 мин
Охват и читатели3.7K

Введение


Последнее время активно пропагандируется практика разработки программного обеспечения Test-Driven Development. Бесспорно, она очень полезна, но не всегда и не все ее применяют. Поэтому часть кода покрыта юнит-тестами, а часть остается непокрытой. Проследить за каждым проектом вручную, нормально написаны там тесты или нет, является практически невыполнимой задачей.
Недавно я задался вопросом, а как можно автоматизировать процесс сбора метрики, которая показывает процент покрытия кода тестами. Было решено встроить ее сбор в CruiseControl.NET. Естественно, что 100% покрытие не гарантирует отсутствие багов, но хотя бы показывает отношение разработчиков к написанию тестов.

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

Небольшое тестирование двух библиотек для работы с ZIP архивами (язык C#)

Время на прочтение5 мин
Охват и читатели31K
Архивирование

Не раз приходилось работать с zip архивами с помощью C#, в моих случаях — это было скачивание архива с базой, потом извлекал базу на диск, если это был не текстовый файл, то динамически подключал базу данных, иначе просто считывал необходимые мне данные. Для этих целей я использовал ZipStorer, он мне нравиться тем, что очень просто делает возложенную на него работу, мало весит и является классом, который с минимальным количеством телодвижений оказывается в исполняемом файле. Сегодня я решил попробовать что-то другое, для чего выбрал две библиотеки SharpZipLib и DotNetZip, после чего провел небольшое тестирование, чтобы понять какая из них может мне быть полезной в будущем.
Читать дальше →

Задачка по C#

Время на прочтение1 мин
Охват и читатели2.7K
При каких условиях пройдет данный тест?

    [Fact]
    public void NewTest()
    {
      var a = new A();

      a.GetType().GetField("b").SetValue(a, 83);
      a.GetType().GetField("c").SetValue(a, 42);

      Assert.Equal(a.b, a.c);
    }

upd: В комментариях написали уже 5 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно.

Виртуальная клавиатура

Время на прочтение1 мин
Охват и читатели19K

На днях набрел на хорошую виртуальную клавиатуру. Почему-то я ее раньше нигде не встречал, хотя продукт достойный. Наш, русский, даже имеет патент (РОСПАТЕНТа №2009611147 от 20.02.2009).
Читать дальше →

.NET Reflector станет платным

Время на прочтение1 мин
Охват и читатели2.6K


Компания Red Gate, которая сейчас занимается разработкой Reflector, объявила что начиная с 7-й версии, продукт станет платным.
Читать дальше →

Делаем PDF-книгу из веб-комикса при помощи C# на примере xkcd

Время на прочтение6 мин
Охват и читатели5.7K
Sony PRS-650 и xkcdРассматривая новый выпуск xkcd, я взглянул на свою свежеприобретённую электрокнигу Sony PRS-650, и немедленно подумал — хочу смотреть комиксы на ней! Xkcd как раз чёрно-белые и, обычно, небольшие по размеру. Слегка погуглив, нашел лишь сборник картинок на TPB, и скрипт на bash, который должен делать PDF. Решил слегка поразмяться в программировании и сделать граббер комиксов на любимом C#.

Можно было бы обойтись консольным приложением, но, для наглядности, сделал простой интерфейс на WPF.

Увидеть код и результат

Сайтлеты WebSharper: создание двухстраничного вебсайта

Время на прочтение3 мин
Охват и читатели2.7K
Позвольте показать вам простейший законченный пример использующий сайтлеты WebSharperа, которые будут в релизе 2.1.
Читать дальше →

Простой web scraping на f#

Время на прочтение6 мин
Охват и читатели7.5K
imageДостаточно законный вопрос почему такая избитая тема как web scraping и почему f#. 1. на f# web scraping намного увлекательней чем на c#  2. хотелось попробовать насколько f# применим для разработки не демо примеров а что то реально делающих программ 3. У f# есть интерактивная консоль, что при ковырянии в недрах HTML становится просто спасением. Сегодня с помощью f# будем покупать VW Touareg.
Если интересно...

Linq To Tasks и монада продолжения

Время на прочтение6 мин
Охват и читатели4.7K
После анонса C# 5.0 с его async и await, у меня появился небольшой интерес к асинхронному программированию, копание в сторону которого и послужило возникновению данного текста.
В процессе чтения статьи вы узнаете/омните.
  • Что есть монада на примере Maybe.
  • Что такое CPS и монада продолжения.
  • Как это связать с классом Task из TPL.

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

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

Рисуем многочлен Бернштейна для произвольного числа опорных точек

Время на прочтение1 мин
Охват и читатели4.3K
Так собственно выглядит рабочая область:


Можно указать количество точек(от 2 до 13), и перетаскивать любую опорную точку наблюдая в реальном времени как меняется кривая.
Сделано для себя, с целью разобраться с кривыми разного порядка.
Базовые знания почерпнуты отсюда:

Многочлен_Бернштейна
Биномиальный_коэффициент

Можно также почитать про кривую Безье, которая является частным случаем многочлена Бернштейна.

Исходники прилагаются, в архиве также скомпиленный(Win_X86) exe'шник.

Архив с исходниками и exe'шником.
Зеркало
Доработка от Vordigont

Класс реализующий многочлен откомментирован, разобраться проблемы не будет. Код на шарпе.

Вторая онлайн конференция mvcConf пройдет 8 февраля

Время на прочтение1 мин
Охват и читатели388
image

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

Недавно было объявлено о проведении второй конференции mvcConf. Согласно информации на официальном сайте онлайн конференция состоится 8 февраля. В конференции примут участие известные сотрудники Microsoft и разработчики платформы: Скотт Гатри, Скотт Ханселман, Фил Хаак, Глен Блок и другие. Полный список докладчиков можно посмотреть на следующей странице. Как и в первый раз все доклады будут транслироваться онлайн в прямом эфире, а после мероприятия для загрузки будут доступны видео-материалы и презентации.

Регистрация на вторую конференцию mvcConf доступна по этой ссылке.

Html Agility Pack — удобный .NET парсер HTML

Время на прочтение5 мин
Охват и читатели167K
Всем привет!
Как-то раз мне пришла в голову идея проанализировать вакансии размещенные на Хабре. Конкретно интересовало, есть ли зависимость между размером зарплаты и наличия высшего образования. А еще сейчас у студентов идет сессия (в том числе и у меня), то возможно кому-то уже надоело трепать нервы на экзаменах и этот анализ будет полезен.
Так как я программист на .Net, то и решать эту задачу — парсить объявления на Хабре я решил на C#. Вручную разбирать строки html мне не хотелось, поэтому было придумано найти html-парсер, который помог бы осуществить задачу.
Забегая вперед скажу, что из анализа ничего интересного не вышло и сессию придется сдавать дальше :(
Но зато немножко расскажу про весьма полезную библиотеку Html Agility Pack
Читать дальше →

Расширяем возможности StyleCop

Время на прочтение6 мин
Охват и читатели19K

StyleCop — статический анализатор C# кода на предмет соответствия стилю — был официально представлен публике в начале 2008 года. По IT-меркам это довольно давно, однако этот полезный инструмент почему-то до сих пор не получил широкую популярность (по крайней мере ту, которую заслуживает).

Ниже я постараюсь проанализировать причины, а также расскажу о новом плагине к StyleCop.
Читать дальше →

Выпущена финальная версия среды разработки с открытым исходным кодом SharpDevelop 4.0

Время на прочтение1 мин
Охват и читатели6K
imageЗавершена разработка четвертой версии открытой и бесплатной среды разработки SharpDevelop. Эта среда предлагается как среда разработки для языков на базе .NET: C#, VB.NET, Boo, IronPython, IronRuby, F#.

SharpDevelop содержит дизайнеры форм для проектов Windows Forms, WPF и моделей баз данных Entity Framework. Кроме того, в наличии все необходимые инструменты разработки: завершение кода, рефакторинг, отладка, анализ кода, unit testing ( c code coverage), профилирование кода. С помощью расширения можно добавить поддержку StyleCop.

SharpDevelop содержит встроенную поддержку систем контроля версий SVN и Git. Поддерживается мультитаргетинг для разных версий .NET. Среда поддерживает сборку проектов с распараллеливанием, если в системе есть многоядерный процессор.

Остальные возможности SharpDevelop 4.0 можно узнать по следующей ссылке на официальном сайте.

В четвертой версии SharpDevelop были добавлены следующие возможности:
  • WPF Designer
  • Entity Framework (EF) Designer
  • C# 4.0 support
  • VB.NET 10 support
  • New productivity features
  • Alt+Ins has been reimplemented
  • Code completion in IronPython
  • Unit testing with IronPython
  • Unit testing with IronRuby
  • Custom unit test runners
  • New Git source control addin
  • SharpDevelop supports the new Help Viewer
  • Grouping support in SharpDevelop Reports
Загрузить SharpDevelop 4.0 можно по следующей ссылке. Новая версия среды разработки требует предустановленный .NET Framework 4.0. Исходные коды проекта доступны по этой ссылке.

WebMatrix Hosting возвращается!

Время на прочтение1 мин
Охват и читатели1.5K
image Более 7 лет назад в 2003 году компания Parking.ru принимала участие в создании первой версии WebMatrix Hosting. Проект оказался очень популярным и беспрецедентным по своим масштабам.

И вот недавно была анонсирована новая версия проекта WebMatrix и мы снова не остались в стороне и объявляем о запуске проекта WebMatrixHosting.ru.

подробнее о проекте

Использование Razor за пределами ASP.NET

Время на прочтение5 мин
Охват и читатели5.6K
Итак, вчера Microsoft выпустила ASP.NET MVC3 RTM, который включает в себя новый движок представлений Razor. Как вы наверняка уже знаете, Razor не содержит каких-то компонентов, специфичных для web, а значит, его можно использовать и в других приложениях. Ну, а если вы этого еще не знаете – то самое время узнать!

В этом посте я покажу, как использовать Razor в качестве движка шаблонов для ваших нужд. Источником для него послужил блог-пост Andrew Nurse «Hosting Razor outside of ASP.Net», но это не прямой перевод.

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

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