Обновить
121.06

.NET *

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

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

Знакомство с NDepend

Время на прочтение4 мин
Количество просмотров9.5K
Проблема связанности в архитектуре приложений в последнее время получила очень много огласки, и породила большое количество фреймворков DI-характера и приложений для статического разбора и «умного рефакторинга». Об одном таком приложении под названием NDepend я и хочу рассказать.

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

Использование Direct2D и DirectWrite в .Net-среде

Время на прочтение7 мин
Количество просмотров10K
Несмотря что «нагуглить» в интернете можно все, для новых технологий это далеко не так. В частности, когда я захотел использовать достаточно новые технологии Direct2D (не бойтесь, это никак не связано с DirectX 7) и DirectWrite в своем .Net-приложении, то столкнулся с проблемой что примеров взаимодействия этих библиотек и .Net нет. Поэтому пришлось самому покопаться.
Upd.: переношу в C++ т.к. дотнетчикам явно не интересно.

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

(Зло)употребление C# 4.0 Dynamic – Бестиповое Лямбда-Исчисление, Нумералы Чёрча, и все-все-все… (ч.1)

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

Введение


Воскресное утро, время для еще одного эпизода в серии Безумные Воскресения. Еще раз в одной категории с риском разрыва мозгов, но ведь это как раз то, что нам нравится, не так ли? На этот раз мы рассмотрим бестиповое лямбда-исчисление в C#. Но погодите, разве C# не типизированный язык? Действительно. Но значит ли это, что все, что вы делаете на C# должно быть статически типизировано? Не обязательно: типизация присутствует в языке как инструмент, который вы можете либо не трогать, либо применить. В этом топике мы рассмотрим как новое ключевое слово dynamic из C# 4.0 под несколько странным углом…
Читать дальше →

Прав ли R#: call to .ToString() is redundant?

Время на прочтение9 мин
Количество просмотров3.6K
Этот пост публикуется по просьбе хабраюзера mstyura, у которого не хватает кармы для публикации. Если вам понравилась статья, то благодарите автора и помогите ему с кармой.

Хочу поделиться с Хабросообществом результатом своего минииcследования на тему упаковки\распаковки значимых типов. На написание данного топика меня сподвигли две вещи: книга Рихтера «CLR via c#» и собственно R#. Последний на мой взгляд давал «нечестные» замечания моему коду.
Читать далее

Бесплатный AJAX CDN

Время на прочтение1 мин
Количество просмотров1.9K
Компания Microsoft запустила сервис AJAX CDN (content delivery network) для кэширования AJAX и jQuery-библиотек ASP.Net. По словам самих разработчиков, с помощью этого кэша можно значительно повысить производительность веб-приложений ASP.Net Web Forms и ASP.Net MVC.

Ajax CDN работает по стандартному принципу CDN, то есть контент дублируется на множестве серверов, географически удалённых друг от друга, а каждого юзера обслуживает наиболее близкий к нему сервер. Для запроса к CDN просто меняете адрес скрипта в коде веб-страницы:



Много стандартных скриптов уже лежат на CDN (список здесь), в будущем каталог обещают значительно пополнить.

Кроме ускорения загрузки на стороне юзера, с помощью этого сервиса можно банально экономить на трафике, поскольку Ajax CDN бесплатен как для частного, так и для коммерческого использования, и не требует регистрации.
Читать дальше →

DynamicObject, JSON и ближайшее будущее

Время на прочтение3 мин
Количество просмотров3.1K
В данной статье хочу ознакомить вас с небольшим приложением для работы с JSON данными, демонстрирующим возможности, доступные нам в .NET 4.0. Поверхностно будут рассмотрены вопросы JSON-формата, а так же работы с динамическими типами данных.
Читать дальше →

Qizmt – аналог MapReduce для Windows

Время на прочтение2 мин
Количество просмотров1.9K
Интересное вчерашнее объявление от Myspace.com 

Сегодня мы открываем в Open Source Qizmt, внутренний фреймворк для распределенных вычислений, созданный командой Data Mining в Myspace. Qizmt может быть использован для многочисленных операций, которые требуют процессинга больших объемов данных. Таких как фильтрация в системе рекомендаций и аналитика.


Некоторые источники уже отчитались по этому поводу и написали, что это фреймворк для системы рекомендаций. Это не так. Это полноценная имплементация MapReduce, написанная для Windows.

Не так часто любителей .NET сталкиваются с open source проектами такого уровня. Несмотря на то, что система заявленая как Alpha заявлено довольно много функциональности (что неудивительно, поскольку это вроде как работающий на myspace framework)

  • Быстрая разработка mapreduce jobs в C#
  • Легкий инсталлер
  • Встроенный IDE/Debugger (включая step through отладку jobs на кластере)
  • Из любой машины в кластере:
  • Cluster Assembly Cache (CAC) – кеш .NET assemblies для mapreduce jobs
  • 3 вида jobs:
    — Mapreduce – set логика для больших объемов данных
    — Remote – для тех задач, которые не подходят под шаблон mapreducer
    — Local – оркестрация связей между Mapreduce и Remote jobs
  • 3 способа обмена данных в mapreduce

    — Отсортированные – key/value пары равномерно отсортированы по кластеру
    — Сгруппированные – неотсортированные, но похожие пары key/value на одному reducer
    — Сортированные по хэшу – супер быстрый способ сортировки случайных данных


Выглядит все это довольно внушительно, хотя у думаю сейчас уже не особо важно на чем такие frameworks написаны. Используют их все равно платформо независимыми методами – легкими сервисами а-ля REST/REST2. Говорят тот же Bing использует Hadoop. Но в любом случае приятно что коллеги из Myspace поделились кодом.

Да, код на гуглокоде

В дженериках C# мог бы быть полезен “this type”

Время на прочтение2 мин
Количество просмотров3.7K
Разбирая наш код, нашел место, которое явно требовало бы некоторой подчистки. Но чтобы почистить, в языке нужна бы еще фича, которую и хочу обсудить. Я поднимал этот вопрос также и на StackOverflow. Был поддержан авторитетным камрадом.

Возьмем два класса, один наследуют от другого. Базовый класс – дженерик, в котором есть метод, который в производном закрытом типе должен возвращать экземпляр этого самаого закрытого типа.
Читать дальше →

Отладка исходного кода .Net Framework в MS VS 2008 и не только

Время на прочтение7 мин
Количество просмотров7.9K
Перевод нескольких статей, в т.ч. Shawn Burke (thanks!), ScottGu(thanks!), Paul Krill (thanks!) и John Robbins (First great thanks! Second great thanks!)

Конечный результат, к которому мы здесь стремимся — возможность отладчиком любой IDE войти «внутрь» вызова .Net Framework методов. Я надеюсь, этот пост содержит все, что вам понадобится. Последние несколько недель мы провели много экспериментов и собрали очень много данных по этому вопросу. И мы хотим поделиться полученным опытом с сообществом.

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

Цена вызовов

Время на прочтение16 мин
Количество просмотров3.6K
Бытует мнение, что накладные расходы на вызов методов и организацию процесса выполнения не должны превышать 15% времени выполнения приложения, иначе стоит серьезно задуматься над вопросом рефакторинга приложения и оптимизации его логики. Вооружившись такими мыслями я наткнулся на метод QuickSort из стандартного класса ArraySortHelper<T> использующийся для сортировки массивов в .Net.

Интересным моментом здесь является сравнение элементов — для обеспечения гибкости его вынеслив отдельный класс реализующий интерфейс IComparer<T>. Вооружившись разнообразными мыслями и студией было решено оценить сколько же такая гибкость стоит и что с этим можно было бы сделать — под катом анализ затрат на сравнение элементов во временя работы QuickSort.

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

GPS компонент

Время на прочтение1 мин
Количество просмотров1K
image Еще одно пополнение на CodePlex — новый компонент для работы с GPS.
GPS.NET прежде всего является коммерческим .NET компонентом, разрабатываемый GeoFrameworks LLC c 2004 года. В 2009 Джон Пирсон решил выложить полный исходный код GPS.NET для публичного использования. Текущая версия продукта 3.0, которая вышла незадолго до публикации на CodePlex. Данный фреймворк предлагает интуитивный GPS функционал в реальном времени, который максимально эффективно работает на любом компьютере, мобильном устройстве и NMEA-совместимыми GPS устройствами.
Узнать возможности компонента

ADO.NET Data Services — что нас ждет в будущем

Время на прочтение4 мин
Количество просмотров1.6K
Примерно чуть больше года назад мы с вами увидели новую тогда платформу для построения сервисов – ADO.NET Data Services. Ее появление ознаменовало начало широкого использования REST-подхода большим количеством разработчиков. Тогда эта платформа представлялась как удобный инструмент для получения доступа к данным через протокол HTTP.

За прошедшее время можно уже понять, что этот инструмент является действительно удачным – огромное число разработчиков начали немедленно использовать его в своих проектах. Причина этому вполне логична – использование ADO.NET Data Services позволяет сократить расходы на реализацию наиболее типичных сценариев при работе с сервисами. Это не означает что SOAP-сервисы и WCF ушли в прошлое, однако, в сценариях обращения к данным предпочтение стали отдавать ADO.NET Data Services.
Читать дальше →

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

Девелопим для себя

Время на прочтение2 мин
Количество просмотров2.5K
Привет всем! Хочу поделится с аудиторией Хабра утилитой, которую написал мой друг Евгений Доманов и я.
Программка помогает не гадит на рабочий стол и в то же время иметь все ярлыки под рукой.

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

Программируем для Windows 7. Индикатор прогресса на панели задач

Время на прочтение4 мин
Количество просмотров6.3K
Официальный выход Windows 7 не за горами, поэтому изучение новых возможностей операционной системы для программистов на C# становится актуальной. Новые веяния и правила для программистов появились уже при выходе Windows Vista с появлением UAC. Но Vista не получила широкого распространения у пользователей, поэтому программисты не очень активно изучали новое. С выходом Windows 7 ситуация может измениться в лучшую сторону. Я решил создать на своем сайте отдельный раздел, посвященный именно программированию под Window 7.
Читать дальше →

P/Invoke и 64-битная разработка

Время на прочтение4 мин
Количество просмотров2.6K
Недавно в моем WPF-приложении снова возникла потребность в ClearType постпроцессинге, т.е. добавлении ClearType-образных свойств графике которая изначально рендерится «обычным» способом. Снова был выбран unmanaged код (Intel C++ stack, OpenMP), но в этот раз взаимодействовать захотелось в 64-битной среде. Вот рассказ о том, насколько это было «весело».

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

Использование P/Invoke: прячем кнопку Пуск и панель задач в Windows

Время на прочтение5 мин
Количество просмотров8.2K
На Хабре уже было несколько статей, рассказывающих об использовании механизма P/Invoke в проектах на C#. В основном, в статьях был сильный уклон в сторону теории и приводились небольшие показательные примеры.
Я же хочу показать более наглядный пример, показывающий возможности неуправляемого кода — мы будем прятать кнопку Пуск и панель задач.
Читать дальше →

Менеджер пакетов для .NET

Время на прочтение3 мин
Количество просмотров2.5K
Менеджеры пакетов в том или ином их проявлении есть практически везде: Gems и Rip для Ruby, Maven для Java и море разливенное для различных дистрибутивов Linux и Unix. И только .NET-разработчики по старинке ползают по сайтам в поисках той или иной версии необходимой библиотеки.

Будучи одним из таких разработчиков и устав от постоянных поисков требуемых компонентов, я решил, что с этим пора заканчивать. Результатом такого решения стал таки менеджер компонентов для платформы .NET
Продолжение

Возвращаясь к конструкции foreach с Duck Typing для LINQ

Время на прочтение6 мин
Количество просмотров2.9K
Обещаю, что в этот раз будет короткая статья (относительно). Все вы знаете языковую конструкцию foreach в C#, не так ли? Но подумайте дважды прежде чем сказать как именно работает следующий код:
  1. foreach (int x in src)
  2. {
  3.   // Do something with x.
  4. }
* This source code was highlighted with Source Code Highlighter.

Уже знаете ответ? Позвольте мне разочаровать вас: если у вас только один ответ, то вы ошибаетесь. Нет единственного ответа на поставленный вопрос, поскольку вы должны знать больше о типе переменной src чтобы принять окончательное решение насчет того, как вышеприведенный код работает…
Читать дальше →

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