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

C# *

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

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

Создание «нестандартного» кастомного объекта для AutoCAD, работающего без Object Enabler

Время на прочтение8 мин
Количество просмотров8.9K
Добрый день.
Те, кто имеет дело с AutoCAD и сторонними решениями для него, наверняка, сталкивались с проблемой прокси объектов, для отображения или перемещения которых требуется установить библиотеки, с помощью которых были созданы данные объекты или так называемые Objects Enablers, от тех же разработчиков. Это достаточно неудобно. Например, получили вы документ от заказчика/субподрядчика и видите только квадраты.

Хочу поделиться с Вами личным опытом создания «нетрадиционного» объекта для AutoCAD. За основу взят анонимный блок. Свойства объекта хранятся отдельно в BlockReference::ExtensionDictionary. Что дает возможность стороннему приложению или скрипту получить к ним доступ и считать их, а при желании изменить, без наличия оригинальных библиотек. Примитивы внутри блока всегда отрисовываются в соответствии со своим состоянием. Да и вообще, устойчивость работы AutoCAD значительно выше. Со стороны все выглядит просто. Но при попытке реализовать данный механизм были выявлены различные «подводные камни». Об этом по порядку.
Читать дальше →

Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

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

Предисловие



Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
Читать дальше →

Continuous Delivery & Sitecore: наша реализация

Время на прочтение7 мин
Количество просмотров11K
Хочу представить Вам нашу концепцию Continuous Delivery (далее, CD) применительно к основной CMS в которой нашу компания ведет разработку – Sitecore. Наша концепция CD зиждется на трех китах:
  • Система контроля версий – Git (в принципе, можно применять и к другим, но Git наиболее удобен в виду того, что ветки в нем весьма просты, быстры и дешевы)
  • CI сервер – TeamCity
  • Код, который собственно и осуществляет всю доставку, установку и обработку (скрипты и дополнительные исполняемые файлы)

В данной статье, я попробую описать все вовлеченные аспекты.
Читать дальше →

Список сообщений в стиле Message Hub

Время на прочтение3 мин
Количество просмотров8.9K
Если вы уже разрабатывали приложения под Windows Phone 7, то возможно уже заметили отсутствие некоторых элементов управления, таких как Hub Tile, сгруппированный список или список сообщений. Некоторые из них можно найти в библиотеке Silverlight Toolkit for Windows Phone. Но что делать, когда нам нужно создать приложение, похожее на стандартный Message Hub? Основная проблема заключается в том, что в стандартном LisBox'е элементы размещаются cверху вниз, в то время как в хабе сообщений — наоборот.



Хочу продемонстрировать одно из решений данной задачи. Нам понадобится лишь стандартный элемент управления ListBox, библиотека System.Windows.Interaction из Blend SDK и некоторые знания в области трансформации визуальных компонентов.
Читать дальше →

Хлеб Маркуса и YAGNI

Время на прочтение17 мин
Количество просмотров46K
imageНедавно в нашей новостной ленте появились два Героя, программисты-пекари – Борис и Маркус. Борис – хороший человек и перфекционист, а Маркус – очень скромный и серый программист, не желающий выделяться. Оба стремятся к лучшему и хотят быть полезными. Но кажется, что Маркус не очень старался.
Это новая ветка – продолжение. Сегодня сюжетная линия коснется только Маркуса. Он – главный герой.
Итак, история под катом.
Читать дальше →

Создание минидампов в проектах на C# 4.0, разрабатываемых в VS 2010

Время на прочтение4 мин
Количество просмотров11K
Для создания минидампов в управляемой среде используются возможности библиотеки DbgHelp.dll. Рассмотрим применение ее функционала на примере готового проекта на WinForms.

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

Получение метаданных .NET на клиенте с использованием ajax

Время на прочтение3 мин
Количество просмотров4.8K
Всем, кто программирует в среде ASP.NET MVC, хорошо известно, насколько широко используются метаданные в .NET вообще и в MVC в частности. В MVC, атрибуты применяются как при генерации разметки, так и при валидации данных, полученных с клиента.
При использовании классической модели программирования сайтов это прекрасно работает. Но что, если Вы работаете с использование ajax и формируете html разметку динамически на клиенте? Вы хотите иметь метаданные модели (далее МДМ) на клиенте? Я — да!
Читать дальше →

Первые шаги с Chromium Embedded Framework и .NET

Время на прочтение5 мин
Количество просмотров88K
Chromium Embedded Framework (CEF) — это проект с открытыми исходными кодами, созданный в 2008 году как элемент управления Web browser, работающий на базе Chromium от Google.
На данный момент это довольно мощный инструмент для разработки настольных приложений, со списком решений, использующих этот контрол можно ознакомиться здесь. Но достаточно сказать, что его используют такие широко известные продукты, как Evernote и Steam.

Итак, что же дает этот фреймворк?
Читать дальше →

Условие «WHERE» по составным ключам в Entity Framework

Время на прочтение4 мин
Количество просмотров17K
Совсем недавно при разработке проекта с версионностью, я столкнулся с проблемой выборки элементов по списку составных ключей.

Описание проблемы:

При разработке «в условиях» версионности primary key таблиц состоит из Id и Revision. Нужно получить выборку из таблицы БД по передаваемому списку составных ключей (Id, Revision). Такой SQL запрос выглядел бы так (для пяти элементов в списке):
/* Запрос 1 */
select *
from dbo.[Items] i
where  (i.Id = 1 and i.Revision = 2) 
	OR (i.Id = 1 and i.Revision = 4)
	OR (i.Id = 3 and i.Revision = 3)
	OR (i.Id = 3 and i.Revision = 4)
	OR (i.Id = 5 and i.Revision = 9)

Но Entity Framework не позволяет написать такой запрос для списка составных ключей. Максимум что можно сделать стандартными средствами это:
context.Items.Where(i=> idList.Contains(i.Id) && revisionList.Contains(i.Revision))

что превратится в такой запрос (концептуально):
/* Запрос 2 */
select *
from dbo.[Items] i
where i.Id in (1, 3, 5) and i.Revision in (2, 3, 4, 9)

Этот запрос будет выдавать неверные результаты, если таблице Items есть элементы с такими идентификаторами:
Id = 3, Revision = 2
Id = 3, Revision = 4
А в списке составных ключей есть такие строчки:
Id = 5, Revision = 4
Id = 3, Revision = 2

Так как же быть?
Читать дальше →

Prism и запросы взаимодействия с пользователем

Время на прочтение13 мин
Количество просмотров13K
В руководстве по Prism можно найти небольшое упоминание о том, как обрабатывать запрос на взаимодействие с пользователем с помощью класса InteractionRequest. Напомню, о чём там шла речь:

Использование объектов запроса на взаимодействие



Один из подходов к осуществлению взаимодействия с пользователем при использовании шаблона MVVM — позволить модели представления посылать запрос на взаимодействие непосредственно в представление. Это можно осуществить с помощью объекта запроса взаимодействия (interaction request), сопряжённого с поведением в представлении. Объект запроса содержит детали запроса на взаимодействие, а также делегат обратного вызова, вызываемый при закрытии диалога. Также, данный объект содержит событие, сообщающее о начале взаимодействия. Представление подписывается на это событие для получения команды начала взаимодействия с пользователем. Представление обычно содержит в себе внешний облик данного взаимодействия и поведение (behavior), которое связано с объектом запроса, предоставленным моделью представления.

Использование объекта взаимодействия запрос для взаимодействия с пользователем

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

Легкая прогулка от функтора через монаду к стрелке

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

Давайте совершим прогулку по цепочке Pointed, Functor, Applicative Functor, Monad, Category, Arrow, в процессе которой я попытаюсь показать что все это придумано не для того что бы взорвать мозг, а для решения вполне реальных проблем, притом существующих не только в haskell. Большая часть кода написана на C#, но думаю и без его знания можно будет понять что к чему.
Читать дальше →

Как я изобретал велосипед, изучая технологии

Время на прочтение21 мин
Количество просмотров27K
Неоднократно слышал утверждение, что язык программирования изучать лучше всего в процессе создания чего-либо. Не мог с этим не согласиться, и решил, что это распространяется не только на язык, но и на всякие технологии сосуществующие с этим языком.
Протаптывать неизведанную дорожку самому непросто, гораздо легче изучить, как кто-то протаптывает эту дорожку перед тобой. К изучению документаций у меня не лежит душа, ей я пользуюсь как справочником, а изучать что то с нуля отнимает слишком много времени и сил, так как авторы оной обычно предполагают, что у читателя знания обширнее, практически все что нужно он уже знает. Велосипедные темы же освещают именно процесс обучения, хождение по граблям и все прочее. К сожалению, на интересные мне темы достаточно подробных статей не нашел, изучал урывками, и решил все-таки написать статью сам, в надежде упростить жизнь тем, кто может пойти следом.
Далее

О некоторых особенностях Windows 8 и WinRT(метро)-приложений

Время на прочтение4 мин
Количество просмотров32K
Речь пойдет о новом типе приложений, которые предназначены для новой операционной системы Windows 8 и нового меню “Пуск”.



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

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

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

Работа с данными в WinRT. Часть 2. Работа с БД на примере SQLite

Время на прочтение6 мин
Количество просмотров17K
В предыдущей части мы рассматривали как получить доступ к файловому хранилищу приложения. Так как есть прямой доступ к файловому хранилищу, мы можем воспользоваться практически любой встраиваемой БД. На сегодняшний день SQLite, пожалуй, является самой популярной кроссплатформенной встраиваемой базой данных. В связи с этим при портировании приложений скорее всего придется работать с SQLite, работу с которым будем рассматривать далее.

В целом статья получилось больше похожей на инструкцию по установке и работе SQL Lite.

В статье будет описано
Установка расширения для сутдии.
Добавление SQLite в проект
Добавление провайдера sqlite-net
Работа с БД через linq провайдер (в стиле LinqToSql, EF)
Работа с БД через SQL запросы (в стиле ADO.NET)
Читать дальше →

Работа с данными в WinRT. Часть 1. Хранение настроек и файлов

Время на прочтение8 мин
Количество просмотров13K
В WinRT изменилась работа работа с данными и файловой системой и она немного отличается как от десктопного .NET так и Silverlight.

Для доступа к пользовательским файлам в системе нужны соответствующие разрешения и надо использовать контракты и расширения для работы с файлами (которые будут рассматриваться в отдельной статье). Однако каждое приложение получает доступ к изолированному хранилищу для хранения служебных данных и настроек. Все что необходимо для хранения данных находится в пространстве имен Windows.Storage в объекте ApplicationData.

В этой статье мы рассмотрим работу со следующими объектами:

Хранение простых данных в LocalSettings и RoamingSettings. (Хранение простых данных)

Хранение бинарных данных в LocalFolder, TemporaryFolder, RoamingFolder. (Хранение данных в файловой системе)

Особенности работы с RoamingSettings и RoamingFolder (Хранение данных в облаке. Синхронизация данных между устройствами).

Версионность данных в роуминге.

Прямой доступ к данным через Uri.


В следующей части будет рассматриваться работа с БД.
Читать дальше →

Приложение для отображения текущей скорости сетевого подключения

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



Как и ожидалось, в Windows 8 по умолчанию отключена возможность добавления гаджетов на рабочий стол, но я привык созерцать в процессе работы активность сетевого подключения, ранее в Windows 7 я пользовался гаджетом мониторинга сети либо платными версиями программ подобного функционала. С переходом на Windows 8 гаджеты отпали, а платные содержат кучу ненужного функционала помимо простой информации о текущей активности. Таким образом, возникла идея самому написать простенькую программку и поделится ей, вдруг кому тоже пригодится. Если интересно, прошу под хабракат…
Читать дальше →

ISN Digest #0. Использование сенсоров и оптимизация энергопотребления в приложениях под Windows 8

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

Предлагаем вниманию хабраобщественности новую рубрику в блоге Intel — ISN Digest. В этой рубрике мы будем публиковать ссылки и краткие аннотации на документы, появляющиеся в огромной библиотеке документов для разработчиков на сайте Intel. Подборки ссылок мы будем стараться делать тематическими, посвященными одной или нескольким близким темам.
В первом дайджесте мы будем говорить о программировании приложений под Windows 8 Metro, а точнее — об использовании сенсоров и оптимизации энергопотребления.
Читать дальше →

Unity3d, Агенты и Танчики

Время на прочтение3 мин
Количество просмотров19K
image

Всем доброго времени суток!

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

Давно хотел этим заняться, но все времени не было. Сейчас наконец-то дошли руки сделать среду для агентов, хотя и не в таком масштабе. Так что если кому-нибудь интересно, присоединяйтесь! Репозитарий открытый, ссылка внизу.
Читать дальше →

Конвертация строки в число

Время на прочтение4 мин
Количество просмотров68K
Помогал на днях одной своей знакомой разобраться в программировании. По ходу дела написали учебную программу, которая умеет конвертировать строку (string) в число (int). И как-то само собой захотелось сравнить скорость работы собственной нетленки, со скоростью работы стандартных инструментов (Convert.ToInt32 и Int32.Parse). Результат такого сравнения, на первый взгляд, получился несколько необычным.
Читать дальше →

Использование Dynamic Data совместно с Entity Framework 5

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


Добрый день!

Как известно, уже вышла релиз-версия .NET Framework 4.5, а также стала доступна для загрузки финальная версия Visual Studio 2012.

Познакомиться с новой Visual Studio я успел еще с beta версии, а после релиза начал использовать rtm релиз Visual Studio и .NET Framework 4.5 в реальной работе.
В новую версию .NET Framework входит так же новая версия Entity Framework. Уже пятая. Точнее она туда не совсем входит — у меня при создании проекта файлы подгружаются из репозитория NuGet. Но в любом случае в новом проекте используется именно 5 версия библиотеки.

Прежде чем продолжить, хочу вкратце рассказать, что же нового появилось в EF5 и почему я решил начать использовать эту версию.
Читать дальше →

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