Обновить
88.77

C# *

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

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

Тестирование GUI приложений с помощью оптического распознавания текстов

Время на прочтение4 мин
Охват и читатели15K
Функциональное тестирование интерфейса (GUI) приложений — задача очень важная, нужная, но не всегда тривиальная. Основной вопрос тут: как сэмулировать работу пользователя? Простого, рядового пользователя, которому придется непосредственно изо дня в день работать с вашим софтом.

Казалось бы, причем здесь распознавание текстов?
Читать дальше →

Эффект кофты на шейдерах для мобильных устройств

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

Пролог


Доброго времени суток! После опубликовании статьи о визуализации квадратичного дерева(Quad-tree), меня попросили написать статью, показывающую работу шейдера, переводящего изображение в «кофту».



Так что, давай рассмотрим данную методику.
Читать дальше →

Quad-tree визуализация в реальном времени на Shader Model 2.0

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

Пролог


Доброго времени суток! Однажды ко мне на работу пришёл друг, и я ему показал свой свеженаписанный шейдер, на тот момент это была первый серьёзный опыт с ними. Данная микропрограмма преобразовывала изображение с камеры в изображение вязаной кофты.


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

[The Methanum project] Создание инструментария для построения распределенных систем с топологией “Звезда”

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


Звезда — на сегодняшний день самая распространенная топология компьютерных сетей. Такая структура обладает рядом преимуществ: легкостью масштабирования, надежностью (выход из строя одной машины не сказывается на других) и простота администрирования. Конечно это решение из физического уровня давно реализовано и на программном уровне. Тем не менее, представляю на суд читателей свою версию инструментария .Net для построения распределенных систем с топологией звезда.
Читать дальше →

Простой инструмент SQL Server Tool на C#

Время на прочтение14 мин
Охват и читатели26K
Публикуем перевод статьи, в которой рассматривается поэтапное создание простого инструмента SQL Server Tool.


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

Правила работы с Tasks API. Часть 2

Время на прочтение4 мин
Охват и читатели18K
В этом посте я бы хотел поговорить о временами неправильном понимания концепции тасков. Также попытаюсь показать несколько неочевидностей при работе с TaskCompletionSource и просто выполненными (completed) тасками, их решение и истоки.

Проблема


Пусть у нас есть некий код:
static Task<TResult> ComputeAsync<TResult>(Func<TResult> highCpuFunc)
{
    var tcs = new TaskCompletionSource<TResult>();

    try
    {
        TResult result = highCpuFunc();
        tcs.SetResult(result);

        // some evil code
    }
    catch (Exception exc)
    {
        tcs.SetException(exc);
    }

    return tcs.Task;
}


И пример использования:
try
{
    Task.WaitAll(ComputeAsync(() =>
    {
        // do work
    }));
}
catch (AggregateException)
{
    
}
Console.WriteLine("Everything is gonna be ok");


Есть ли проблемы у кода выше вместе с примером? Если да, то какие? Вроде бы AggregateException ловим. Everything is gonna be ok?
Если возникли смутные сомнения, тогда прошу под кат

Научись командовать

Время на прочтение11 мин
Охват и читатели24K
Захотелось поделиться чудесным процессом разработки, с которым недавно познакомился. Я раньше не видел такого подхода, и люди, как только с ним знакомятся, долго не могут понять и принять такой способ построения игр. И, если честно, я сам понял все не в первую неделю. Но после некоторого освоения я уже забыл как делать игры иначе. В планах написать цикл статей, но начнем с малого и постепенно будем наращивать понимание что и зачем и с чем это есть.

Как кое-кто уже мог догадаться, я сегодня расскажу про паттерн “Command” и как его использовать для разработки игр с использованием движка Unity 3D. Это один из ключевых паттернов в этом подходе. Код будет упрощенным, но рабочим и должен дать понимание процесса.
Читать дальше →

Правила работы с Tasks API. Часть 1

Время на прочтение3 мин
Охват и читатели54K
С момента появления тасков в .NET прошло почти 6 лет. Однако я до сих пор вижу некоторую путаницу при использовании Task.Run() и Task.Factory.StartNew() в коде проектов. Если это можно списать на их схожесть, то некоторые проблемы могут возникнуть из-за dynamic в C#.

В этом посте я попытаюсь показать проблему, решение и истоки.

Проблема


Пусть у нас есть код, который выглядит так:

static async Task<dynamic> Compute(Task<dynamic> inner)
{
    return await Task.Factory.StartNew(async () => await inner);
}

Вопрос знатокам: есть ли в данном примере проблема? Если да, то какая? Код компилируется, возвращаемый тип Task на месте, модификатор async при использовании await — тоже.

Думаете, речь идет о пропущенном ConfigureAwait? Хаха!
Если интересно, тогда прошу под кат

Решил написать свой язык аппаратного синтеза, для Minecraft и что из этого вышло

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


Мне всегда было интересно, как люди делают в играх сложные инженерные конструкции, и всегда хотелось попробовать повторить. Очень давно я увидел ролик на YouTube о том, как один человек построил процессор на редстоуне. И решил попробовать: чем я хуже? Тогда я собрал несколько прототипов отдельных элементов и понял, что эта задача мне не по плечу. К этому времени я немного освоил Verilog. Родилась мысль: почему никто не пытался использовать языки аппаратного синтеза для построения сложных логических схем в minecraft? Чуть углубившись в различные форумы, я не нашел ни одной похожей утилиты, а свой процессор на редстоуне очень хотелось. Пришлось взяться за написание компилятора самому. Что из этого получилось, читайте под катом.
Читать дальше →

Настройка Xamarin Studio для полноценной работы с кодом

Время на прочтение7 мин
Охват и читатели22K
При знакомстве с Xamarin обычно разработчиков в первую очередь смущает Xamarin Studio, которым иногда приходиться пользоваться по тем или иным причинам.

Также цена редакции Business (1к$ в год) и Indie (25$ в месяц) может стать серьезным аргументом, чтобы на постоянной основе пользоваться Xamarin Studio не только iOS, но и Android разработчикам (будем надеяться, что теперь после покупки Microsoft сделает адекватные цены на эти лицензии).

IDE Xamarin Studio (XS) на самом умеет гораздо больше, чем может показаться в начале с настройками по умолчанию. О том, как настроить и выжать побольше из Xamarin Studio, пойдет речь далее
Читать дальше →

Unity и «Помогаторы» для редактора

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


В этой статье опишу несколько полезных возможностей и реализаций, которые мне помогли в разработке. Unity уже имеет множество методов чтобы не только «дебажить логами», но и расширять, дорисовывать необходимые данные в окне редактора. Если вы новичок в Unity или вам захотелось освежить знания – «Нужно брать!».
Читать дальше →

Использование ClickOnce и прокси-сервера

Время на прочтение2 мин
Охват и читатели10K
ClickOnce — технология Майкрософт для развёртывания приложений. Приложения ClickOnce могут проверять наличие новых версий по мере их доступности и автоматически заменять любые обновленные файлы, что очень удобно.

Бывает так, что для управления доступом пользователей к Интернету и ресурсам внешней сети используется прокси-сервер (с аутентификацией или без). ClickOnce предоставляет поддержку встроенной проверки подлинности прокси-сервера в Windows, начиная с версии .NET Framework 3.5, но не поддерживает другие протоколы проверки подлинности, такие как «Обычная проверка подлинности» или «Краткая проверка подлинности».
Читать дальше →

Обработка «видео 360», очистка изображения: алгоритм и его реализация на C#

Время на прочтение5 мин
Охват и читатели23K
В последнее время, в связи с растущим трендом виртуальной реальности, все более актуальными становятся съемка/монтаж/обработка видео в формате «видео 360».

В данной статье я хочу рассказать об одном эксперименте по обработке «видео 360», который хорошо иллюстрирует некоторые особенности такого формата. Забегая вперед скажу, что эксперимент потребовал реализации несложного алгоритма и, конечно, без написания программы не обошлось.

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

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

Используем highcharts.js для создания графиков на стороне сервера

Время на прочтение2 мин
Охват и читатели15K
highcharts-on-a-server
Сегодня мы поговорим об использовании highcharts.js графиков на стороне сервера. Весь код будем писать на С#, обойдемся совсем без javascript. В результате получим файл с графиком, который можно будет сохранить на диск или например приложить к письму.

Беглый поиск хороших бесплатных .net библиотек для создания графиков не увенчался успехом. Лучшей из всех найденных библиотек была ms-chart, но судя по отсутствию обновлений и хорошей документации сама Microsoft ее давно забросила.

Выбор пал на highcharts.js — очень гибкая библиотека для построения графиков, которая широко применяется на фронтенде.
Читать дальше →

Проверяем исходный код плагина PVS-Studio с помощью PVS-Studio

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

Один из вечных вопросов, с которыми мы встречаемся, звучит так — «Вы проверяли PVS-Studio с помощью PVS-Studio? Где статья о результатах проверки?». Да, мы регулярно делаем это, поэтому мы никак не могли написать статью об ошибках, которые нашли сами в себе. Ошибки исправляются разработчиками ещё на этапе написания кода, и мы постоянно забываем в этот момент их выписать. Но читателям в этот раз повезло. Из-за недосмотра C# код плагина для Visual Studio не был добавлен в ежедневные ночные проверки, которые мы проводим. И, соответственно, в отличие от ядра анализатора, ошибки в нем не замечались на протяжении всего развития C# PVS-Studio. Как говорится, нет худа без добра, и благодаря этому вы и читаете данную статью.
Подробности

[PF] Печать PDF под .NET, растровый подход

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

Под катом хочу рассказать про вывод на печать PDF фалов под .NET. С уклоном на печать из разных лотков принтера. Это бывает полезно, когда нужно распечатать документы, состоящие из разных типов бумаги разложенных по лоткам принтера.
Читать дальше →

Об одной интересной ошибке в Lucene.Net

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

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

Анонс .NET-конференции DotNext 2016 Piter

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


В пятницу, 3 июня, в Санкт-Петербурге пройдет .NET-конференция DotNext 2016 Piter. Это будет уже пятая по счету конференция DotNext, третья в Петербурге. Второй раз подряд конференцию примет гостиница «Radisson Пулковская».

Что мы припасли для вас на этот раз? Как всегда, крутейшие темы от крутейших докладчиков.

В частности, на конференции выступят:
  • Авторы крутейших книг о .NET Dino Esposito и Sasha Goldshtein;
  • Разработчики ReShaper и новой IDE для C# под названием Rider;
  • Сотрудники Microsoft, как евангелисты, так и инженеры, причем самого крутого уровня
  • Лучшие хаброавторы, лидеры .NET-хаба;
  • Лучшие докладчики предыдущих конференций DotNext;
  • Организаторы и спикеры SPb .NET Community;
  • Традиционные спонсоры DotNext — JetBrains и Futurice;
  • Кто-то из вас — мы ждем от вас заявок!

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

Ищем ошибки в игровом движке Xenko

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

Движков с открытым исходным кодом, написанных на C++, куда больше, чем аналогичных движков, написанных на C#. Но есть исключения. Xenko – один из движков, написанных на C# и имеющих открытый исходный код. О том, что же интересного удалось найти в коде этого движка, будет рассказано в этой статье.
Читать дальше →

Распространение iOS приложений по ссылке в корпоративной среде, используя стек технологий Microsoft

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


Недавно стало известно о покупке Xamarin компанией Microsoft. Данная новость не осталась незамеченной среди сообщества разработчиков, а также, среди корпоративных клиентов. В связи с этим, становятся более актуальны истории, где в Microsoft Full Stack окружение необходимо интегрировать мобильные решения, не приводящие при этом к необходимости драматического расширения набора компетенции IT-отела, либо компании в целом. Для таких сценариев становится лаконичным выбор Xamarin, как компонента, хорошо вписывающегося в пазл, состоящий из SharePoint, ASP.NET MVC, WebAPI services и Azure.
В рамках данной статьи описывается метод распространения мобильного приложения внутри компании, преимущественно на этапе прототипирования, используя перечисленный стек технологий Microsoft.
Описываемый в статье метод, несмотря на уклон в .NET окружение, применим к iOS-приложениям, написанным при помощи любого другого инструмента разработки, будь то Apache Cordova или классический натив.
Читать дальше →

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