Обновить
87.61

C# *

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

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

Визуализация данных OpenStreetMap в 3D налету с помощью Unity3D

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

Предыстория


image
Некоторое время назад, в связи с наличием свободного времени, я задумался над применением карт для решения каких-либо интересных и нестандартных задач. Одна из идей, которая меня заинтересовала, была идея применения карт для рендеринга мира в игровом движке c возможностью интерактивного взаимодействия: разрушения Макдональдсов в выбранном городе, локальный апокалипсис у соседей в огороде и тому подобные приятные, но только в случае виртуального мира, мелочи.
Однако несмотря на примитивность идеи, не было найдено каких-то готовых решений под сформулированные мной условия:
  • Открытый исходный код
  • Реал тайм рендеринг мира в игровом движке
  • Поддержка основных платформ (mobile, web, desktop)
  • Желательно C# как основной язык разработки

Подробности

Тестирование математических алгоритмов

Время на прочтение5 мин
Охват и читатели19K
Эта статья написана для людей, прямо или косвенно связанных с промышленной разработкой математических алгоритмов для бизнеса, а также для профессиональных тестировщиков, от которых мы хотим услышать критику.

image

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

C#: коллекции только для чтения и LSP

Время на прочтение5 мин
Охват и читатели30K
Часто разработчики утверждают, что read-only коллекции в .NET нарушают принцип подстановки Барбары Лисков. Так ли это? Нет, это не так, потому что IList интерфейс содержит флаг IsReadOnly. Исключением является класс Array, он действительно нарушает LSP принцип начиная с версии .NET 2.0. Но давайте разберемся во всем по порядку.
Читать дальше →

Используем сборочные скрипты на F# / C# в TFS 2012

Время на прочтение8 мин
Охват и читатели7.6K
Думаю, не я один вспоминаю Microsoft нехорошими словами, когда приходится модифицировать и/или расширять так называемый шаблон сборочного процесса (build process template) в TFS. Под катом история о том, как мы перешли от Xaml к скриптам на F# / C#. Как мы пытались интегрировать Fake в TFS, но в итоге получилось собственное решение — AnFake.

Статья будет полезна тем, кто использует TFS как CI-решение, но не в восторге от его шаблонов сборочного процесса.
Читать дальше →

Унифицируем поведение LINQ to IEnumerable и LINQ to IQueriable в части работы с null значениями. Часть вторая. Своя реализация IQueryProvider

Время на прочтение4 мин
Охват и читатели9.4K
В комментариях к первой части мне справедливо сделали замечание, что я обещал унификацию IEnumerable и IQueryable, а сам спрятал их за самописным интерфейсом типа репозитория. В этой статье я постараюсь исправится и дать пример что же делать, если мы хотим работать с LINQ напрямую. Для этого я предложу собственную реализацию интерфейса IQueryProvider.

GitHub
Nuget

Много кода

Unity3d. Реализация зон видимости и слышимости

Время на прочтение5 мин
Охват и читатели40K
Добрый день, хабра.

Сегодня расскажу о том, как можно реализовать систему видимости и слышимости для ваших проектов. Получилось нечто схожее с игрой Commandos.
Немного скриншотов.

Больше видимости.


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

Унифицируем поведение LINQ to IEnumerable и LINQ to IQueriable в части работы с null значениями. Пример ExpressionVisitor

Время на прочтение4 мин
Охват и читатели11K
Ни для кого не секрет, что хотя LINQ позиционируется как универсальный язык запросов к коллекциям разного происхождения (как коллекциям в памяти, так и различным удаленным источникам данных, например, базам данных), однако на деле результаты одинаковых запросов получаются разными в зависимости от того, к какой коллекции был запрос. В частности, при наличии null в свойстве Property1 используемом в выражении в методе .Select(c=>c.Property1.Property2) можно получить как NullReferenceException, так и null в качестве результата.
Пример решения проблемы

Stealer на C#. Мы уложились в 9 Кб исполнимого файла

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


Есть такой класс программ, призванных получать у пользователя конкретные (или какие угодно) файлы и направлять их специально уполномоченным людям. Конечно, с предварительного письменного согласия упомянутых пользователей! Этот класс программ называют Stealer. Самый яркий их представитель, UFR Stealer имеет симпатичный интерфейс, множество настроек и по какому-то недоразумению детектируется всеми известными антивирусами. А что было бы, если бы хакеры писали подобные программы на С#? Пофантазируем!
Читать дальше →

Характеристики микросервисов, приложений и систем

Время на прочтение2 мин
Охват и читатели7.8K
Всем привет!



Вниманию хабрасообщества хочу представить интересную презентацию Стефана Тилькова, со основателя и главного консультанта в innoQ. Стефан рассказывает об идее разделения больших систем на небольшие приложения, которые отвечают за разные аспекты системы. Сама идея не нова, но автор упирает на то, что основной причиной такого разделения должна быть изоляция. Благодаря границам приложений полученных таким образом, сложнее получить связанные модули, которые на самом деле должны быть независимыми. Тут еще можно вспомнить подход «domains boundary», для разделения доменных сущностей по областям применения, вместо того, чтобы создавать единую модель данных на всю большую организацию/процесс.

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

CLRium: продолжаем тур по городам. Екатеринбург и Питер

Время на прочтение5 мин
Охват и читатели5.3K
Всем привет! Не так давно в Москве завершился CLRium #2, который собрал не много не мало — 380 разработчиков, а это по сравнению с прошлым годом — в 3,8 раза больше! Для меня это — большая победа: это значит что прошлый год всем пришелся по вкусу, а в этом мы сделали шикарные темы докладов. О том, как все прошло и какие выводы я сделал перед Питерской конференцией я и хочу поведать в этой заметке.



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

Сразу ссылки на Сайт мероприятия и Фотографии московской встречи.
Читать дальше →

Конференция SkillsWiki: .NET-разработчик глазами работодателей России и зарубежья

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

Совсем скоро 29.04.2015 в офисе B2B-Center пройдет бесплатная конференция сообщества SkillsWiki о профессиональном развитии.

Программа докладов:
  1. «Навыки .NET-разработчика глазами американских и российских работодателей» — Алексей Воронин, NVision Software Solutions.
  2. «За что вам платят деньги на работе?» — Алексей Косарчук, Positive Technologies.

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

Регистрация на бесплатную конференцию SkillsWiki: http://skillswiki.timepad.ru/event/193115.
Читать дальше →

Управление API и SOA

Время на прочтение9 мин
Охват и читатели18K
Достижение начального успеха для Сервис-ориентированной Архитектуры (Service Oriented Architecture, SOA) определяется:
  • созданием слабосвязанных соединений «потребитель-поставщик»,
  • соблюдение принципа разделения ответственностей между потребителем и поставщиком,
  • публикация набора повторно используемых, общих сервисов
  • и обеспечение того, чтобы потребители приняли и стали использовать сервис.

Множество команд разработчиков создают и используют сервисы, но до сих пор идет мучительный подбор архитектуры, при которой сервисы будут широко использованы, с потенциалом для повторного использования внутренними командами разработки. Вместо создания согласованной сервисной архитектуры и демонстрации множественного использования одних и тех же сервисов, разработчики вновь и вновь не нарочно создают «Просто Набор Веб Сервисов» (Just a Bunch of Web Services (JBOWS)) или «Просто Набор REST Сервисов» (Just a Bunch of REST Services (JBORS)).

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

Управление SOA, API, и приложением может стать мостом между этими концепциями и улучшить архитектурную согласованность всего решения.

Сервисы, API и архитектура


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

Исследование защиты PVS-Studio

Время на прочтение4 мин
Охват и читатели55K
PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Читать дальше →

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

LLILC — транслятор MSIL в байткод LLVM от Microsoft

Время на прочтение1 мин
Охват и читатели13K
Сегодня сотрудник Microsoft анонсировал проект LLILC — новый проект для трансляции MSIL в байткод LLVM, предназначенный пока главным образом для инфраструктуры CoreCLR. В ближайшее время он может быть использован для JIT-компиляции, а в дальнейшем и для формирования прекомпилированных сборок (Ahead-of-Time) средствами .NET Native.

Несмотря на то, что в CoreCLR уже есть свой JIT, планируется расширить поддержку различных платформ за счёт LLVM. Новый JIT использует тот же набор внутренних API, что и RyuJIT и бесшовно его заменяет. Таким образом новый JIT позволит .NET-коду выполняться на всех поддерживаемых LLVM-платформах, на которые можно портировать CoreCLR.
Читать дальше →

Глубокое погружение в систему рендеринга WPF

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

На перевод этой статьи меня подтолкнуло обсуждение записей "Почему WPF живее всех живых?" и "Семь лет WPF: что изменилось?" Исходная статья написана в 2011 году, когда Silverlight еще был жив, но информация по WPF не потеряла актуальности.


Сначала я не хотел публиковать эту статью. Мне казалось, что это невежливо — о мертвых надо говорить либо хорошо, либо ничего. Но несколько бесед с людьми, чье мнение я очень ценю, заставили меня передумать. Вложившие много усилий в платформу Microsoft разработчики должны знать о внутренних особенностях ее работы, чтобы, зайдя в тупик, они могли понимать причины произошедшего и более точно формулировать пожелания к разработчикам платформы. Я считаю WPF и Silverlight хорошими технологиями, но… Если вы следили за моим Twitter последние несколько месяцев, то некоторые высказывания могли показаться вам безосновательными нападками на производительность WPF и Silverlight. Почему я это писал? Ведь, в конце концов, я вложил тысячи и тысячи часов моего собственного времени в течение многих лет, пропагандируя платформу, разрабатывая библиотеки, помогая участникам сообщества и так далее. Я однозначно лично заинтересован. Я хочу, чтобы платформа стала лучше.


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

Pool объектов для Unity3d

Время на прочтение6 мин
Охват и читатели35K
Все знают что операции создания и удаления объектов не дешевые. Например создавать каждый раз пулю и уничтожать, довольно накладно для тех же мобильных устройств. Может стоит не уничтожать пулю, а скрывать ее. Вот решил поделится своей реализацией Pool Manager.
Читать дальше →

ASP.NET 5 Middleware или куда же пропал мой HTTP модуль?

Время на прочтение5 мин
Охват и читатели32K
Новая версия ASP.NET 5 переписана почти с нуля и включает в себя существенные изменения по сравнению с предыдущими версиями. Одно из самых больших изменений — это конвейер обработки (HTTP Pipeline). В этой статье описано, как эти изменения влияют на проектирование и внедрение компонентов, которые раньше были представлены как Http модули.

Поведение HTTP модулей раньше было схожим с поведением фильтров запросов, вплоть до ASP.NET 5. Это функционал, который можно внедрить в конвейер запросов и описать некоторую задачу для выполнения, например, отреагировать на событие в приложении. Модули используют для аутентификации, глобальной обработки ошибок и логгирования. Также их часто используют для перехвата и изменения серверного ответа, например, удаления пробелов или компрессии. Они реализуют интерфейс IHttpModule, который определен в сборке System.Web, которая, в свою очередь, не является частью нового ASP.NET.
Читать дальше →

Binary serialization in Unity3d

Время на прочтение12 мин
Охват и читатели23K
Столкнулся с довольно-таки тривиальной проблемой. Сериализовать и десерилизовать данные.

Задача

Есть приложение, клиент-сервер. Клиент — Unity3d сервер PhotonServer. Есть модель, которая и на клиенте и на сервере должна быть эквивалентной. Требуется синхронизировать состояние модели и, возможно, дополнительные классы.

Решение

Protobuf

Самое логичное решение — это использовать бинарный протокол. В этом явный фаворит — ptotobuf (использовал proto-net 668). Он не поддерживает веб-сборку, но это допустимая жертва. Разметил требуемые классы. Проверяю. Все работает, небольшой размер и быстрый в работе. Шикарно. Но!
Читать дальше →

WPF 4.6 и дальнейшие планы

Время на прочтение5 мин
Охват и читатели18K
На недавно прошедшей онлайн конференции dotNetConf организованной Microsoft, рассказывалось множество интересных вещей. И коль скоро было большое количество обсуждений по поводу WPF, что он живее всех живых, то хочется сделать краткий обзор доклада программных менеджеров WPF, что нового нас ждет в релизе, что уже можно посмотреть и к чему все идет. Действительно все так плохо и будет ли аналог нового движка для WPF, как например Razor для ASP.NET.

12 ноября 2014 года блог WPF ожил (сейчас активен тоже) и был представлен генеральный план развития фреймворка.


Здесь и далее, скриншоты с видео, так что качество не очень, но разглядеть все можно.

В начале выступления, ведущие Уни Равиндранатан (Unni Ravindranathan) и Харикришна Менон (Harikrishna Menon) обмолвились, что есть вещи, которые еще находятся в разработке, и они не имеют права о них рассказывать, NDA и все такое. Но то что они могут показать, внушает оптимизм и видно, что работа идет. Забегая вперед, скажу, что прежде всего разработчики подумали о быстродействии, например, как сократить визуальное дерево для конкретной целевой платформы.
Подробности в картинках

Слой кэширования поверх Linq to SQL

Время на прочтение10 мин
Охват и читатели8K
За последний год мы перенесли внушительную часть настроек DirectCRM в базу данных. Множество элементов промо-кампаний, которые мы до этого описывали исключительно кодом, теперь создаются и настраиваются менеджером через админку. При этом получилась очень сложная структура БД, насчитывающая десятки таблиц.

Однако, за перенос настроек в базу данных пришлось расплачиваться. Об архитектуре, позволяющий кэшировать редко меняющиеся Linq to SQL сущности, смотрите под катом.
image
Читать дальше →

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