Все потоки
Поиск
Написать публикацию
Обновить
91.62

C# *

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

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

Использование SCM для управления драйверами в C# реализованной с помощью dll на C++/cli

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

Service Control Manager (SCM)


SCM — это сервер, реализованный в Windows, для удаленного управления сервисами (вызовом процедур).

Для того, чтобы запустить драйвер в Windows, ему в соответствие ставится сервис, который обеспечивает управление этим драйвером. Не путать с устройством, которое создает драйвер в системе, через которое происходит обмен сообщениями с драйвером. Это устройство создается уже после старта драйвера, а вот SCM обеспечивает само внесение драйвера в систему. С помощью SCM можно: добавлять, удалять, запускать или останавливать службы.

Постановка задачи


Написать буферный класс позволяющий упростить работу SCM в C#.
Сам внешний вид этого класса можно обознать очень просто:

public ref class ServiceControlManager : public IDisposable
{
public:
	ServiceControlManager(void);
	void AddDriver(String^ ServiceName, String^ BinaryPathName);
	void DeleteDriver(String^ ServiceName);
	void StartDriver(String^ ServiceName);
	void StopDriver(String^ ServiceName);
protected:
	~ServiceControlManager();
	!ServiceControlManager();
private:
	SC_HANDLE SCMHandle;
};

Конструктор, деструктор, финализатор, основные методы, из атрибутов только HANDLE объекта SCM. Из этого следует, что экземпляр объекта этого класса будет содержать в себе созданный объект SCM, а методы упрощают с ним работу. Класс является буферным, и поскольку он реализован в C++/cli он будет автоматически масштабируем для работы в среде .NET, соответственно и в C#.
Читать дальше →

Вышел ReSharper 6.1

Время на прочтение1 мин
Количество просмотров802
JetBrains выпустили ReSharper 6.1. В новой версии исправлены многие проблемы производительности, добавлена поддержка Async CTP (список нововведений), обновлён движок настроек (список нововведений), добавлена экспериментальная поддержка Visual Studio 11 Developer Preview. Скачать новую версию можно с официального сайта

XNA Draw: пишем отложенное освещение на три источника с помощью шейдера

Время на прочтение7 мин
Количество просмотров19K
Привет хабравчанам!

Давненько я не писал на хабр: учеба, сессия надвигается, сами понимаете. Сегодня я попробую рассказать, как в XNA реализовать Deferred Lighting (отложенное освещение) с использованием normal mapping на три источника света, при этом использовать мы будем Reach-профиль и Shader model 2.0.
Напомню, раньше мы уже затрагивали тему шейдеров: тут. Остальное под катом, видео и демо там же.
Читать дальше →

Silverlight 5 Released!

Время на прочтение1 мин
Количество просмотров5.1K
Microsoft выпустили Silverlight 5. Поддержка будет производиться до 2021 года.



Установочный файл Silverlight 5 весит меньше 7МБ и устанавливается за 10 секунд. В него добавили много вкусного и полезного.
Читать дальше →

Hosts Commander — консольный редактор hosts для Windows и Linux

Время на прочтение3 мин
Количество просмотров7.6K
Hosts Commander призван максимально облегчить работу с файлом hosts из консоли. Если вам время от времени приходится забираться в этот файл (что характерно для веб-разработчика), и вы любите консоль — Hosts Commander может прийтись вам по душе.
Год назад на Хабрахабре была анонсирована первая версия программы, которая работала только под Windows. Но с тех пор многое изменилось и стало лучше. Это отличный пример, как из простой идеи может вырасти нечто большее.
Читать дальше →

Coin Keeper. iPhone приложение на C#

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

Вчера разработанное нами приложение Coin Keeper заняло третье место в топе платных приложений русского AppStore.

Интересно то, что мы разрабатывали его не на привычном Objective C, а на C#, используя фреймворки Monotouch и Monodroid.

Внутри я бы хотел рассказать про архитектуру приложения, хитрости и удачные моменты. Кроме того я раздам 5 промокодов, тому кто сможет дать ценные комментарии по проекту.

технические подробности проекта...

Универсальный NMEA 0183 Parser/Formatter на C# (+ порт на JAVA)

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

Префикс


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

Проштудировав официальный документ, я всецело пропитался идеей непременно это реализовать и недолго думая сам взял себя на понт.

Фабула


Да простят меня люди сведущие, но для прочей ясности я все же кратко опишу физику явления.
Итак, сообщение стандарта NMEA, в самом стандарте называются «sentence», тот, кто эти «предложения» «говорит» — «Talker». Так например, GPS-применик в рамках NMEA имеет идентификатор «GP», а наш ответ чемберлену — «GL».

Существующие решения работали либо только с этими двумя типами устройств, а в лучшем случае понимали различные специфические для конкретных производителей (Germin, UBLox, и пр.) приемников команды.
Да и кто знает, вдруг срочно нужно будет интерпритировать данные поступающие с атомных часов (Talker: ZA), или спозиционироваться по системе Loran-C (Talker: LC), ну а возможность поболтать с автопилотом (Talker: AG) вообще нельзя исключать!

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

Пишем свой сервис авто-обновлений

Время на прочтение7 мин
Количество просмотров22K
Большинство разработчиков stand-alone приложение рано или поздно сталкиваются с проблемой доставки обновлений для своего приложения. В этой статье я постараюсь решить эту проблему наилучшим, на мой взгляд, способом — написать свой собственный универсальный сервис авто-обновлений, который будет висеть в процессах в единственном экземпляре и доставлять обновления для всех подписавшихся приложений.

Существует несколько готовых решений для .NET, но самое актуальное — это ClickOnce. Эту технологию уже нельзя назвать новой, однако серьёзное развитие, на мой взгляд, она получила не так давно, и не обладает исчерпывающим функционалом.
Если вы не хотите изобретать велосипед, то советую вам пристально изучить возможности ClickOnce, и если вам будет достаточно предлагаемого функционала, то это определенно ваш выбор. Однако ClickOnce не панацея и далеко не всегда ею можно обойтись.

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

UPD: Суть реализации заключается в том, чтобы уменьшить количество процессов и служб, которые занимаются обновлением. Если у вас несколько приложений, то все они смогут «получать» обновления от одного единственного Windows-сервиса. Не надо будет для каждого приложения запускать лаунчер, держать соединение с сервером обновлений. Теоретически в системе всеми обновлениями может заниматься один процесс, и возможно этим процессом скоро станет ClickOnce, если разработчики перестанут делать свои «велосипеды». А разработчики перестанут делать свои велосипеды тогда, когда им будет достаточно функционала ClickOnce. Сейчас, к сожалению, это не всегда так.

Итак задача


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

Как использовать C++ AMP из C#

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

В Visual Studio 11 Developer Preview, C++ AMP позволяет ускорить Ваши приложения, используя гетерогенное железо, такое как GPU.
Если Вы являетесь .NET-разработчиком, то все равно сможете использовать C++ AMP в Ваших приложениях. Большинство кода будет писаться на C#, лишь некоторые участки с помощью C++ AMP для его выполнения на GPU, затем использоваться любимый interop-механизм для связывания. Данный пост объяснит, как это сделать через P/invoke.
Читать дальше →

Введение в Microsoft “Roslyn” CTP

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

Почему Roslyn?


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

Как пишет Soma в своём блоге, часть Visual Studio language team работает на проектом, который называется Roslyn. Его главная цель — переписать компиляторы C# и VB и создать языкове сервисы в управляемом коде. С чистым, современным и управляемым кодом наша команда сможет быть более продуктивной, внедрять инновации быстрее и выдавать больше возможностей скорее и с лучшим качеством.

Более того, мы открываем компиляторы C# и VB со всей их внутренней информацией, делая доступным для вас анализ кода. Мы предоставляем публичное API и обеспечиваем точки расширения в языковых сервисах C# и VB.

Это открывает новые возможности для расширений VisualStudio — написание мощных инструментов рефакторинга и утилит языкового анализа, а так же позволит любому использовать наши парсеры, семантические движки, генераторы кода и сценариев в своих проложениях.
Читать дальше →

Вышел Microsoft “Roslyn” CTP

Время на прочтение1 мин
Количество просмотров8.4K
Большинство компиляторов на текущий момент являются чёрными ящиками — они превращают исходный код в объектные файлы или сборки. Цель “Roslyn Project” от компании Microsoft — открыть компиляторы Visual Basic и C#, дав разработчикам возможность пользоваться API, предоставляющим SyntaxTree, Emit API, Symbol API, Binding & Flow Analysis API. Над API надстраивается множество полезных сервисов:


Roslyn можно использовать для генерации кода, анализа и оптимизации, а так же поддержки сценариев и интерактивного использования VB и C#. На днях вышел Microsoft “Roslyn” October 2011 CTP, который уже можно скачать и попробовать на деле. Под катом подборка ссылочек по теме.
Читать дальше →

Событийно-ориентированный HTTP-сервер на C# с помощью Rx и HttpListener

Время на прочтение4 мин
Количество просмотров27K
Достаточно большое название? Да? В этом посте я покажу Вам альтернативный подход в создании простого событийно-ориентированного HTTP-сервера на C#, используя мощь Reactive Extensions.
Читать дальше →

Roslyn Project — compiler as a service

Время на прочтение1 мин
Количество просмотров3.7K
Не так давно в рамках конференции Build был доклад «Future directions for C# and Visual Basic» от Anders Hejlsberg, в котором анонсировался Roslyn Project. Сейчас об этой разработке известно не так много, но я постараюсь осветить наиболее интересные моменты, имеющиеся на данный момент.

В настоящее время компиляторы C# и Visual Basic представляют из себя чёрный ящик — они берут исходный высокоуровневый код и выдают нам готовый IL-код. Roslyn Project представляет из себя compiler as a service, т.е. компилятор, предоставляющий разработчику API, позволяющее добираться до его внутренних данных. Теперь можно анализировать код и принимать участие в компиляции — проводить модификацию исходного кода, создавать дополнительную функциональность для C# и VB.
Читать дальше →

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

XNA Draw или пишем систему частиц. Часть II: шейдеры

Время на прочтение6 мин
Количество просмотров17K
Привет всем разработчикам игр и просто людям, которые интересуются геймдевом.

Пришло время рассказать вам о пиксельных шейдерах и о том, как сделать post-proccesing. Это вторая часть статьи о графических методах в XNA, в прошлой статье — мы рассматривали методы Draw и Begin у spriteBatch. Для примера: улучшим нашу систему частиц добавлением пиксельного шейдера, который будет искажать пространство.
Читать дальше →

XNA Draw или пишем систему частиц. Часть I

Время на прочтение6 мин
Количество просмотров29K
И опять, привет хабравчанам!

Буквально несколько дней назад — начал цикл статей, о том, как можно создавать крутые игры с помощью XNA Framework, своей студии у меня нет, поэтому ограничимся только 2D играми.

На этот раз — мы более подробно рассмотрим Draw и напишем свою первую систему частиц.
Читать дальше →

Относительно позиционированные элементы в документах WPF

Время на прочтение3 мин
Количество просмотров4.1K
Пару месяцев назад мне пришлось реализовывать интерфейс с помощью WPF. В основном использовался FlowDocument, т.к. необходимо было максимально близко организовать UI в стиле веб-страниц.
Привыкший к свободе по позиционированию HTML-элементов с помощью CSS, я не мог найти решение по относительному позиционированию вложенных элементов. Свойства Top, Left, Right, Bottom полностью отсутствуют в плавающих WPF документах. MSDN выдал только класс Figure. Однако HorizontalOffset и VerticalOffset не работают при использовании FlowDocumentScrollViewer. Поиск в гугле также не помог.
Однако решение оказалось более чем простым.
Читать дальше →

Дополнение к локализации ASP.NET MVC – Используем маршрутизацию

Время на прочтение4 мин
Количество просмотров2.8K
Дополнение к прошлому посту от Alex Adamyan, посвященный локализации в ASP.NET MVC приложениях. Хотя это материал относится к ASP.NET MVC 2, его можно смело использовать и в версии 3.

В моем предыдущем посте я описал возможность локализации, используя сессию, однако для реальных приложений — это абсолютно не лучший путь. Сейчас я опишу очень простой и при этом очень мощный метод локализации, расположив ее в URL-адресе, используя механизм маршрутизации.

Также этот метод локализации не потребует трюк с OutputCache, как было описано в предыдущем посте.

Цель этого поста – возможность показать, как получить из URL-адреса вида /{culture}/{Controller}/{Action}... в Вашем приложении, URL-адрес вида /ru/Home/About.
Читать дальше →

Знакомство с XNA и написание первой музыкальной игры

Время на прочтение13 мин
Количество просмотров49K
Привет всем начинающим геймдевелоперам и просто хорошим людям. Сегодня, я хочу познакомить вас с замечательным фреймворком XNA (набор инструментов с управляемой средой времени выполнения dotNet). Программировать мы будем на C#.
Для того, чтобы познакомить вас с XNA ближе, я предлагаю написать простую «музыкальную» 2D игрушку. Остальное под катом.
Читать дальше →

Postsharp. Решаем задачу кэширования

Время на прочтение6 мин
Количество просмотров2.8K
Иногда попадаются такие ситуации, в которых нет никакой возможности ускорить работу некоторой операции. Она может зависеть от какого-то сервиса, который располагается на внешнем web сервере, или это может быть операция, которая дает высокую нагрузку на процессор. Или же это могут быть быстрые операции, однако, их параллельная работа может высосать из вашего компьютера все ресурсы производительности. Существует огромное количество причин чтобы использовать кэширование. Следует отметить, что PostSharp, изначально не предоставляет решений для вас какого-либо фреймворка кэширования, просто он позволяет сделать эту задачу на порядки быстрее, без каких-либо занудных действий, типа расстановки кода, отвечающего за кэширование по всему исходному тексту программы. Он позволяет решить эту задачу элегантно, вынося задачи в классы и позволяя их повторно использовать.
Читать дальше →

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

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

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

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

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