Обновить
90.86

C# *

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

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

Async/await и механизм реализации в C# 5.0

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

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


Механизм async реализован в компиляторе C# при поддержке со стороны библиотек базовых классов .NET. В саму исполняющую среду не пришлось вносить никаких изменений. Это означает, что ключевое слово await реализовано путем преобразования к виду, который мы могли бы написать и сами в предыдущих версиях C#. Для изучения генерируемого кода можно воспользоваться декомпилятором .NET Reflector или ILSpy. Это не только интересно, но и полезно для отладки, анализа производительности и других видов диагностики асинхронного кода.
Подробности

Простой алгоритм распознавания движения

Время на прочтение2 мин
Охват и читатели21K
Когда я начал работать над магистерской диссертацией на тему «Анализ пространственной структуры динамических изображений», то столкнулся с проблемой, что очень трудной найти какие-то готовые примеры алгоритмов распознавания образов и движущихся объектов. Везде, и в литературе, и в Интернете одна только голая теория. Цель написания данной статьи как раз восполнить данный пробел.
Читать дальше →

DTO vs POCO vs Value Object

Время на прочтение3 мин
Охват и читатели148K
В этой статье я бы хотел прояснить различия между DTO (Data Transfer Object), Value Object и POCO (Plain Old CLR Object), также известным как POJO в среде Java.
Читать дальше →

Портируем C#/XAML приложение Windows 8.1 на UWP

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

Если ваше приложение Windows 8 или 8.1 небольшое, то вы можете создать новый проект универсального приложения UWP и перенести в него код XAML и C#. Если же приложение содержит достаточный объем кода, то есть другие варианты.

Для того чтобы портировать WinRT C#/XAML приложение Windows 8.x на Windows UWP необходимо изменить манифест и файл проекта. Способа сделать это из среды Visual Studio пока что нет, но можно воспользоваться скриптом, который совершит некоторые автоматические операции, взяв на себя большую часть работы.
Читать дальше →

Metaballs без шейдеров + физика жидкостей

Время на прочтение7 мин
Охват и читатели20K
Как-то раз возник у меня диспут с хабраюзером ZimM по поводу безшейдерного 2D движка: я утверждал, что для простых 2D игр шейдеры не обязательны, почти все эффекты можно сделать спрайтами, его же позиция была обратной. Я не раз в уме возвращался к этому спору и придумывал задачи, не реализуемые на первый взгляд без шейдеров, и именно решение одной такой задачи и привело к созданию игры, где игрок управляет жидкостью наклоном телефона.
Читать дальше →

Система трекинга загрузки игрового клиента. Часть 2

Время на прочтение8 мин
Охват и читатели7.5K
В этой статье мы поговорим о сервисе GeoIP, который определяет геоданные по IP-адресу запроса, веб-сокетах, реализации polling сервера, AngularJS, Highcharts и проведем краткий анализ системы трекинга загрузки игрового клиента.


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

Рекомендательная система на .Net или первые шаги с MyMediaLite

Время на прочтение6 мин
Охват и читатели18K
Попробуй выбери, какая их них лучше? :)

Пошел я как-то на курсы по BigData, по рекомендации друзей и мне посчастливилось поучаствовать в соревновании. Не буду рассказывать об обучении на курсе, а расскажу о библиотеке MyMediaLite на .Net и о том, как я ее использовал.
Читать дальше →

Первый вздох PVS-Studio для C#

Время на прочтение2 мин
Охват и читатели33K
PVS-Studio for C#
Команда PVS-Studio хочет поделиться новостью и заранее подогреть интерес. Мы приступили к разработке анализатора для C#. С точки зрения пользователя это будет всё тот же старый добрый PVS-Studio, но мы научим его находить ошибки в программах на языке C#.
Читать дальше →

Конференция DotNext возвращается в Москву — с новыми силами и обновленным названием

Время на прочтение3 мин
Охват и читатели8.4K
Это анонс для всех .NET-программистов, которым интересно, что происходит с их платформой.

11 декабря в Москве пройдет .NET-конференция DotNext. Самая главная .NET-конференция на русском языке. И самая большая конфа для дотнетчиков в России. Ну и вообще, вроде как, самая большая .NET-конфа в Европе: да, есть конференции гораздо масштабнее, но чтобы вот так, чтобы именно по дотнету — пожалуй мы крупнейшие, да. В прошлом году в Москве собралось 400 участников (вместе со спикерами и организаторами — 450) и еще примерно столько же смотрели конференцию онлайн. В этом году конференция будет еще больше — мы хотим собрать на площадке 500-600 человек.



ТТДТХ! (Только технические доклады, только хардкор!)

Традиционно на DotNext много внимания будет уделено внутренностям самой платформы. Достаточно посмотреть на первые опубликованные доклады: Карлен szKarlen Симонян расскажет об атомарных операциях и Memory Model, а Андрей DreamWalker Акиньшин сделает доклад о микрооптимизациях.



Не обойдется и без прикладных (и иногда забавных) докладов. Например, Дмитрий mezastel Нестерук из JetBrains расскажет о том, как написать на дотнете своего бота.



Вообще докладов будет около 25 штук, продолжительностью 50-60 минут каждый. Если хотите попробовать себя в роли докладчикаподавайте заявку!
Читать дальше →

Летающие панельки от нас улетели… О навигации и кнопке «Назад» в C#/XAML приложениях Windows 10

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

Если вы захотите вынести настройки своего приложения UWP в «летающую панельку» Flyout, то я вас огорчу. Летающие панельки точно так же как и «волшебные Charm панельки» ушли в прошлое и теперь вместо них необходимо использовать другой способ отображения информации – навигацию. Про то, что и как читайте дальше
Читать дальше →

Система трекинга загрузки игрового клиента

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


Загрузка игры – довольно сложный механизм, проходящий в несколько этапов, на каждом из которых может произойти сбой по той или иной причине, будь то разрыв соединения, аппаратный сбой, банальный фаервол или ограничения на стороне провайдера.

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

JetBrains опубликовали уточнения к новой лицензионной и ценовой политике

Время на прочтение2 мин
Охват и читатели19K
В начале Сентября JetBrains опубликовали новость о смене модели лицензирования своих продуктов — компания объявила о переходе с бессрочной лицензии на модель «подписки». В случае подписки разработчик имеет доступ к среде разработки только в период оплаченной лицензии, в отличии от старой модели, когда разработчик имел доступ ко всем обновлениям в течении действия оплаченной лицензии, а после истечения мог продолжать пользоваться наиболее свежей версией IDE вышедшей в этот период.
Читать дальше →

С# aтрибуты и типы

Время на прочтение4 мин
Охват и читатели9.6K
Кисточка у художника может быть разной, а можно и совсем без кисточки. В С++ типы исчезали после трансляции, а вот в C# они не исчезают и могут быть использованы на этапе выполнения. С# — это располневшая на мелкософтах Дельфи и основная причина юзанья атрибутов с типами — PropertyGrid, бывший TValueListEditor. Ну а потом можно придти к не очевидному выводу, что атрибуты с типами — просто и удобно.

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

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

Основы NHibernate (легкий туториал)

Время на прочтение5 мин
Охват и читатели59K
Перевод статьи «NHibernate Basics» с сайта codeproject.com.

Ведение


Nhibernate это решение для Объектно Реалицонного мапинга для платформы .NET. Этот фреймворк позволяет делать мапинг Объектно ориентированных моделей к традиционным БД. Его основное преимущество маппирование классов .Net к таблицам БД и от типов данных CLR в типы SQL.

Как указано в заголовке нашей статьи, мы посмотрим: Как загружать бизнес объекты из БД и сохранять измененные объекты обратно в БД.
Читать дальше →

Perspex — кросплатформенный UI-фреймворк с XAML и биндингами

Время на прочтение2 мин
Охват и читатели28K
TL;DR: кроссплатформенный клон WPF. От других попыток сделать нечто с XAML-ом выгодно отличается наличием полностью своей системы отрисовки со сменными бакэндами (сейчас поддерживается Direct2D и Cairo). В наличии инспектор, дизайнер (см. видео). Биндинги сделаны на стероидах под названием ReactiveExtensions (старый стиль тоже можно использовать). Умеет работать с Windows/Linux/MacOS, поддержку мобильных платформ планируется добавить в начале следующего года посредством отрисовки через MonoGame.


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

Эгоистичный ген

Время на прочтение10 мин
Охват и читатели20K
Картинка для привлечения внимания (http://xkcd.com/534/) Всё началось одним летним вечером, во время чтения книги эволюционного биолога Ричарда Докинза «Бог как иллюзия». Данная книга о религии, вере и атеизме, но автор кратко ссылается на другую книгу «Эгоистичный ген» и вводит одноимённое понятие. Меня долгое время восхищало изящество генетических алгоритмов. И вот, спустя месяц, в очередной раз пытаясь придумать какой-нибудь мини-проект, меня внезапно осенило – а что, если с помощью генетических алгоритмов симулировать эволюцию и посмотреть, что и как будет развиваться. Задача это сложная и на данном этапе развития IT, полагаю, нерешаемая, так что пришлось заняться чем-либо попроще. А именно, проверить гипотезу эгоистичного гена. Заинтересовавшихся, прошу под кат…
Читать дальше →

Приложение на прокачку. Как ускорить загрузку C#/XAML приложения Windows Store

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

Существуют различные способы ускорить скорость загрузки приложения и его производительность.
В частности вы можете использовать отложенную загрузку элементов страницы или воспользоваться инкрементной загрузкой содержимого. Об этих способах загрузить страницу быстрее и о других рекомендациях читайте далее.
Pimp my App

Functional C#: работа с ошибками

Время на прочтение6 мин
Охват и читатели31K
В этой части мы рассмотрим как иметь дело со сбоями и ошибками ввода в функциональном стиле.

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

Functional C#: Non-nullable reference types (ненулевые ссылочные типы)

Время на прочтение5 мин
Охват и читатели21K
Третья статья в серии «Функциональный C#».

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

Рисуем на тайлах электронной карты в MSSQL

Время на прочтение37 мин
Охват и читатели11K
Хочу рассказать читателям хабра-сообщества как используя CLR библиотеку Microsoft.SqlServer.Types можно формировать тайлы для электронной карты. В статье пойдёт речь о генерации списка картографических тайлов для их дальнейшего рендеринга. Будет описан алгоритм генерации тайлов по геометрии объектов, хранящейся в базе данных MS SQL 2008. Весь процесс рендеринга шаг за шагом будет рассмотрен на примере в конце статьи.



Содержание




Проблема
Исходные данные
Решение
Хранилище тайлов
Этапы подготовки тайлов
Используемые функции
Пример с ломаной линией
Проверка пересечения
Таблицы для хранения образов тайлов
Размещение иконки на тайле
Объединение тайлов
Отрисовка геометрии на тайле
Заключение
Читать дальше →

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