Обновить
122.61

C# *

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

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

Декомпилятор от JetBrains: релиз dotPeek 1.0

Время на прочтение2 мин
Охват и читатели64K
imageДобрый день, хабровчане! Бесплатный декомпилятор и менеджер сборок от JetBrains ушел в народ – несколько дней назад на нашем сайте стал доступен официальный релиз dotPeek 1.0.

dotPeek, о котором мы писали на Хабре около года назад, когда появились первые публичные сборки продукта, — это инструмент, сочетающий качественную декомпиляцию с развитой навигацией и поиском на манер ReSharper — нашего небезызвестного расширения для Visual Studio. Сегодня мы представляем вашему вниманию авторизованный перевод новости о выходе этого продукта.

Основные возможности dotPeek 1.0 таковы:

  • Декомпиляция сборок .NET Framework 1.0-4.5 в эквивалентный код на C#. Поддерживаются библиотеки (.dll), исполняемые файлы (.exe), а также файлы метаданных Windows 8 (.winmd). Кроме того, dotPeek умеет искать сборки в каталогах, которые вы ему указываете, и открывает разного рода архивы: как .zip, так и родственные форматы .vsix и .nupkg.
Читать дальше →

Android портирован на C#

Время на прочтение1 мин
Охват и читатели32K
В разгар битвы между Oracle и Google за право использовать Java/Dalvik в системе Android, компания Xamarin представила альтернативу — более производительную и энергоэффективную версию Android на С#. Тесты производительности говорят сами за себя.



В отличие от Sun и языка Java, компания Microsoft направила C# и .NET VM для стандартизации в ECMA, система защищена от патентных исков строгими требованиями ISO, а также обязательством Microsoft.
Читать дальше →

Используем Last.fm API с помощью C#

Время на прочтение5 мин
Охват и читатели8.1K
Приветствую Вас, Хабралюди!

В этом посте я рассказал о своей программе для скробблинга треков на Last.fm. Теперь я хочу рассказать Вам, как на языке C# наладить взаимодействие с Last.fm API на примере скробблинга трека.
Читать дальше →

Автономный Last.fm скробблер

Время на прочтение3 мин
Охват и читатели7K
Приветствую Вас, Хабралюди!

Многие из Вас знают такой замечательный сервис, как Last.fm. Коротко для тех, кто не в курсе: Last.fm — это интернет-проект музыкальной направленности, основными сервисами которого является сбор информации о музыке, которую слушает пользователь, и её каталогизация в индивидуальных и общих чартах, выдача рекомендаций на основе собранных данных. Более подробно в этом посте.

Сначала я зарегистрировался на этом сайте по совету друга без особого энтузиазма, только для того, чтобы смотреть, какие песни популярны у того или иного исполнителя. Но потом, когда началась нормальная поддержка скробблера для плеера AIMP, я начал использовать сервис как нужно. Всё бы хорошо, но меня расстраивал тот факт, что в статистику добавлялись только те песни, которые я прослушиваю в AIMP'е (тогда ещё у меня был обычный телефон, песни из машины и плеера, естественно, не поскробблишь, да и скробблеры для ВКонтакте работали очень нестабильно).
И тогда я решил поковырять API Last.fm для общего развития и решения этой проблемы. В итоге получилась программа, написанная на C#, которую я незамысловато назвал Автономный Last.fm скробблер, которая позволяет скробблить треки без непосредственного прослушивания в плеере. Это позволит заносить в статистику все треки, которые Вы слушаете (естественно, если Вы знаете их названия).
Читать дальше →

Непутевые заметки о ASP.NET MVC. Часть 1 (и единственная)

Время на прочтение11 мин
Охват и читатели41K
В последнее время на Хабре часто начали появляться статьи о ASP.NET MVC. Однако в этой статье я бы хотел сделать несколько заметок по поводу построения приложений на вышеприведенном фреймворке: минимальный набор NuGet-packages (без которых грех начинать работу), логирование, подводные камни при использовании стандартных membership-, profile- провайдеров. И, напоследок, почему Web API из MVC 4 — то, что так долго мы все ждали.
Поехали

CXXI: Мост между мирами C# и C++

Время на прочтение7 мин
Охват и читатели42K
В рантайме Mono есть немало средств для взаимодействия с кодом на не .NET языках, но никогда не было ничего вменяемого для взаимодействия с кодом на C++.

Но это вскоре изменится благодаря работе Алекса Коррадо, Андрэа Гайта и Зольтана Варга.

Вкратце, новая технология позволяет разработчикам C#/.NET:

  • Легко и прозрачно использовать классы C++ из C# или любого иного .NET языка
  • Создавать экземпляры классов C++ из C#
  • Вызывать методы классов C++ из кода на C#
  • Вызывать инлайн-методы C++ из кода на C# (при условии, что библиотека скомпилирована с флагом -fkeep-inline-functions или если вы скомпилируете дополнительную библиотеку с их реализациями)
  • Наследовать классы C++ из C#
  • Переопределять виртуальные методы классов C++ методами на C#
  • Использовать экземпляры таких смешанных C++/C# классов как в коде на C#, так и в коде на C++

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

Асинхронное программирование в приложениях ASP.NET MVC 4

Время на прочтение6 мин
Охват и читатели42K
Прочитав статью об изучении MVC и увидев комментарий пользователя RouR, я очень заинтересовался данной темой, ну и на ходу решил перевести указанную им оригинальную статью.

Если и тебе, дорогой хабражитель, это интересно — прошу под кат!

«Я попробую показать вам, что нового несет в себе C# 5.0 с точки зрения асинхронного программирования при использовании ключевого слова await. Особенно для веб-приложений ASP.NET MVC 4.»

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

Басни на ночь — Хорошие имена как залог успеха

Время на прочтение3 мин
Охват и читатели1.5K
image
Доброго времени суток всем.

«Как лодку назовешь, так она и поплывет» — довольная известная фраза, которая вполне подходит к функциям, переменным, классам.

Сколько раз вам приходилось читать чужой (а бывает и свой код, каюсь, бывало подобное с моим же кодом) и разбираться с написанным месивом. Назначение переменных, функций, а то и вовсе классов не являются интуитивно понятным.
Казалось бы, есть переменная, есть ее имя, но ее назначение не понятно.

Например
enum Dates{
  GET_FIRST,
  GET_SECOND,
  GET_BOTH,
  None
}



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

Работа с Command Line в .Net

Время на прочтение4 мин
Охват и читатели18K
Добрый день сообщество,

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

Мне кажется, что этой, на первый взгляд, банальной теме уделяется мало внимания. В этой статье я хотел бы поделится опытом работы с Command Line в .Net.
Читать дальше →

Полуавтоматическая конвертация лени в код

Время на прочтение7 мин
Охват и читатели6.7K
Всем доброго дня. Сегодня я хочу поговорить об автоматической генерации кода C#. Например, свойства в классах, описывающих сущности предметной области, обычно описываются по совершенно одинаковой схеме. И мне элементарно лениво писать для каждого примитивного свойства одинаковые конструкции. Немного спасает применение сниппетов и активных шаблонов, но когда приходит нужда что-то поменять в этой схеме, то приходится перелопачивать кучу кода. Так почему бы это однообразие не генерировать автоматически в процессе сборки?
В какой-то момент кинетическая энергия творчества ненадолго пересилила потенциальную энергию лени, и результатом этого стала маленькая библиотечка для автоматической генерации некоторых исходных файлов программы на основе внешних данных. Приглашаю под кат всех ленивых (в хорошем смысле этого слова) разработчиков на C#.
Читать дальше →

Сказ о том, как я себе рабочий процесс упростил. Или написание своего шпиона на C#

Время на прочтение5 мин
Охват и читатели5.1K
В этой статье я хочу рассказать вам об эксперименте, который я поставил на себе.

Уже давно работаю удалённо (outsourcing) и как следствие обязан ежемесячно предоставлять отчёт о проделанной работе, в виде таблицы с наименованием задач, затраченным временем и прочей информацией. Даже при огромном наличии тикет систем, использовать их ежедневно для записи проделанной работы — каторга. В фирме где я работаю нет строгих требований к ведению логов или других ежедневных отчётов, что возможно делает мою проблему отсутствия ежедневных данных единичной, или по крайней мере не такой популярной (или же нет, быть может я не один такой аутсорсер?). Месяц пролетает незаметно и с полным погружением в работу, вместо погружения в бюрократию, поскольку всё строится на доверии. И до недавнего времени я с задачей составления ежемесячных отчётов справлялся, поскольку почти каждый день я как минимум здоровался с коллегами по skype, болтал о том о сём, включая рабочий процесс, обновлял тикеты, получал письма. Но вот же беда, не всегда имеются в наличии сохранившиеся данные на нужный день, в который хоть убейся не можешь вспомнить что делал. И в один такой момент, составляя такой отчёт, меня вдруг осенило, как я, программист, могу сам себе впредь эту проблему решить.
Читать дальше →

Dependency injection в MVC 3 Framework на примере Autofac

Время на прочтение4 мин
Охват и читатели16K
В настоящее время трудно представить себе приложение на MVC3Framework без использования Dependency injection. Это статья рассчитана на тех кто знает, что такое DI, но никогда не использовал Autofac для этого.
Так же отмечу что более подробно об Autofac вы сможете прочитать тут

Для начала мы должны скачать и включить библиотеки Autofac в проект. Для этого я использую NuGet. Введите в консоли:
PM> Install-Package Autofac Устанавливаем сам Autofac
PM> Install-Package Autofac.Mvc3 И дополнения к Mvc3

Так же вы можете воспользоваться визуальным редактором NuGet, или просто скачать и подключить эти сборки.
Ниже написан код для инициализации Autofac, я постарался включить сюда основные варианты инициализации.
Читать дальше →

Менеджмент памяти в .Net Framework от Redgate

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

Недавно с рассылкой от компании Redgate (это та компания, которая выпустила всем известные тулы .Net Reflector, SmartAssembly и прочие) получил бесплатную книгу «Under the Hood of .NET Memory Management». Пока что доступна только первая ее часть, но она довольно объемная и раскрывает многие аспекты менеджмента памяти. Самое вкусное обещают во второй части. Приятного скачивания (краткое содержание под катом):



Бонусом по первой ссылке, в том же архиве, идет книга по ANTS Memory Profiler

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

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

WPF Navigation: Используем связку Page + Frame

Время на прочтение2 мин
Охват и читатели50K
image

Windows Presentation Foundation имеет много вариантов создания многооконного приложения. Среди них выделяются два типа: стандартный привычный Window и «браузерный» Page. Ничего особенно интересного для меня в Window не было, поэтому решил попробовать браузерный вариант в десктопном приложении. Звучит несколько странно и, возможно, абсурдно, но менее интересно от этого не становится. В данном топике будут описаны основные этапы создания данной навигации.
Читать дальше →

Сжатие пакетов и защита С# клиента с открытым исходным кодом

Время на прочтение2 мин
Охват и читатели2.8K
Привет, сообщество.

Мой путь в программировании: ASP VB script >> VB.Net >> C#, с С и С++ я знаком минимально.
С давних пор пишу онлайн RPG (около 9 лет) и сейчас дошел до стадии публичного онлайн тестирования.

Клиентская часть написана на С# и доступна для изучения(улучшения) всеми желающими.
У меня нет никакой паранойи (надеюсь ;-)) относительно хакеров и любителей поломать чужие сервера — я отлично понимаю, что никому нет дела до моих исходников, однако мне хочется, чтобы на сервер отсылались пакеты, обработанные только известной, проверенной и утверждённой версией клиента.
Поэтому я хочу реализовать защиту в виде подключаемой приватной нативной библиотеки, которая будет отсылать на сервер хеш код используемого клиента, плюс она-же будет шифровать/дешифровать/сжимать/разжимать все пакеты. То есть если в клиенте реализуют отсылку фиктивного хешь кода, без использования нативной DLL, то злоумышленнику также придется реализовать свою версию обработки пакетов.
Читать дальше →

C# 5 — об async/await с начала

Время на прочтение5 мин
Охват и читатели257K
В недавно вышедшей Visual Studio 11 Beta встроена новая и главная фишка будущего C# 5 — асинхронное программирование с помощью async/await. Про нее уже написано достаточно много статей в том, числе на хабре — например, эта серия статей. Однако, я для себя так и не понял в чем суть нового синтаксиса, пока сам не попробовал его в деле. Данная статья — попытка самому структурировать и до конца разобраться с этим достаточно интересным инструментом и поделиться результатами с сообществом, рассказав про него немного иначе. Итак, поехали…
Читать дальше →

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

Время на прочтение8 мин
Охват и читатели2.7K
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().
Читать дальше →

Windows Phone 7 XNA: гнем пиксели или нет шейдерам

Время на прочтение8 мин
Охват и читатели4.5K
Привет дорогой друг.

Опять прошло много времени и я не радовал вас интересной информацией по
поводу разработки игр. Сегодня эту статью я хочу посветить разработке игр под WP7, используя
замечательный фреймворк XNA, о котором я писал здесь, здесь и здесь и тут. А конкретно, я вам расскажу, как можно сделать красивые эффекты без шейдеров. В этой статье рассмотрим эффект искажения. Остальное под катом.



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

Разрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 2 + Бонусы)

Время на прочтение16 мин
Охват и читатели12K
Привет, Хабрахабр!

Введение


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

Напомню, что процесс компиляции по фен-шую включает в себя несколько этапов, которые изображены на рисунке ниже слева. Мой же компилятор содержит только три этапа, которые изображены на этом же рисунке справа.

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

Жизненный цикл Request в MVC 3 Framework приложении

Время на прочтение7 мин
Охват и читатели8.7K
Любой разработчик знает, что URL в маршрутизации MVC играет ключевую роль. Как известно, существует стандартная маршрутизация:

routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional );


Она представляет собой правило по которым выбираются маршруты. В простейших случаях, можно поменять местами action и controller, или добавить еще множество параметров, которые будут выглядеть в url следующим образом- param1/param2/param3/. Иногда, например в CMS системах, необходимо сделать так, чтоб часть url приходила как переменная.

routes.MapRoute(
                "Default",
                "{controller}/{action}/{*url}",
               new { controller = "Content", action = "Home", url = UrlParameter.Optional
});


Это правило выделяет Action и Controller, а остальную часть присваивает переменной url.
Регистрируются Routes при старте приложения. А именно в файле Global.asax в методе Application_Start().

Для создания большинства приложений этих знаний хватает. Цель же моей статьи пройти весь жизненный цикл Request и посмотреть, что же происходит, перед тем как приложение разберет url и передаст управление нужному action.

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

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