• Вышел ASP.NET Core 2.2. Что нового? (2 из 3)

    • Перевод

    4 декабря вышел ASP.NET Core 2.2, он входит в поставку .NET Core 2.2. Про .NET Core 2.2 я писал совсем недавно и теперь нужно раскрыть тему в глубину. Давайте посмотрим, чего новенького нам приготовили.


    Читать дальше →
    • +20
    • 6,6k
    • 3
  • Вышел .NET Core 2.2. Что нового? (1 из 3)

    • Перевод

    4 декабря вышел .NET Core 2.2. «Кого можно удивить новостью недельной давности?» — спросите вы и будете правы… и кстати, вы уже обновились? )


    Теперь по делу. Новый релиз включает улучшения диагностики в рантайме, поддержку ARM32 для Windows и поддержку Azure Active Directory для SQL Client. Наибольшие улучшения этого релиза коснулись ASP.NET Core.


    Читать дальше →
    • +25
    • 10,1k
    • 6
  • Интеграция Cake и TeamCity

    • Перевод

    Cake — замечательный инструмент для создания конвеера доставки для ваших приложений. Я люблю его, поскольку он позволяет мне писать этот конвеер на языке C#, который я знаю хорошо. Прекрасным свойством Cake, PSake и дургих подобных фреймворков является то, что они создают скрипт, который можно выполнять как на локальной машине разработчика, так и на CI серверах. Здесь я объясню, как организовать взаимодействие скрипта Cake с TeamCity.

    Читать дальше →
  • .NET — локализация без боли. (N)gettext + poedit

    • Tutorial


    Создавая новый проект, мне приходилось использовать либо *.resx для WinForms, либо I2Localization для Unity, либо другие решения для локализации приложений. Все эти решения похожи тем, что приходится придумывать ключ-локализации, вставлять его в код и в словарь. Поначалу все хорошо, но со временем этот процесс начинает раздражать. Вместе с тем, смотря на ключ в коде не всегда понятно о чем речь.

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

    Не знаю почему, но оказывается существует уже давно такое готовое решение как gnu/gettext. Расспрашивая своих знакомых и коллег (тех кто работает с .NET), большинство даже и не слышал о таком. Поэтому решил поделиться с этим удобным инструментом.

    Принцип прост. Вы пишите код со строками на английском языке, запускаете утилиту, которая сканирует исходники и предоставляет вам возможность перевода. Никаких ключей придумывать не надо. Текст на английском и есть ключ.
    Читать дальше →
  • Сущности в DDD-стиле с Entity Framework Core

    • Перевод
    • Tutorial
    Эта статья о том, как применить принципы Domain-Driven Design (DDD) к классам, отображаемым Entity Framework Core (EF Core) на базу данных, и почему это может быть полезно.

    TLDR


    В DDD-подходе есть множество преимуществ, но главное – DDD переносит код операций создания / изменения внутрь класса сущности. Это значительно понижает шансы неверного понимания / интерпретации разработчиком правил создания, инициализации и использования экземпляров классов.
    Читать дальше →
  • AI в игре Hase und Igel: minimax на троих


      После настоящего бума настольных игр конца 00-х в семье осталась несколько коробок с играми. Одна из них — игра “Заяц и Ёж” в оригинальной немецкой версии. Игра для нескольких игроков, в которой элемент случайности сведен к минимуму, а побеждает трезвый расчет и способность играющего “заглядывать” вперед на несколько шагов.

      Мои частые поражения в игре привели меня к мысли написать компьютерный “интеллект” для выбора наилучшего хода. Интеллект, в идеале, способный сразиться с гроссмейстером Зайца и Ежа (а что, чай, не шахматы, игра попроще будет). Далее в статье идет описание процесса разработки, логики AI и ссылка на исходники.
      Читать дальше →
    • Как мы удвоили скорость работы с Float в Mono

      • Перевод

      Мой друг Aras недавно написал один и тот же трассировщик лучей на разных языках, в том числе на C++, C# и компиляторе Unity Burst. Разумеется, естественно ожидать, что C# будет медленнее, чем C++, но мне показалось интересным, что Mono настолько медленнее .NET Core.

      Опубликованные им показатели были плохими:

      • C# (.NET Core): Mac 17.5 Mray/s,
      • C# (Unity, Mono): Mac 4.6 Mray/s,
      • C# (Unity, IL2CPP): Mac 17.1 Mray/s

      Я решил посмотреть, что происходит, и задокументировать места, которые можно улучшить.

      В результате этого бенчмарка и изучения этой проблемы мы обнаружили три области, в которых возможно улучшение:

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

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

      Результаты на моём домашнем iMac для Mono и .NET Core были следующими:

      Рабочая среда Результаты, MRay/sec
      .NET Core 2.1.4, отладочная сборка dotnet run 3.6
      .NET Core 2.1.4, релизная сборка dotnet run -c Release 21.7
      Ванильный Mono, mono Maths.exe 6.6
      Ванильный Mono с LLVM и float32 15.5
      Читать дальше →
    • Как правильно работать с исключениями в DDD

        image

        В рамках недавно прошедшей конференции DotNext 2018 состоялся BoF по Domain Driven Design. На нем был затронут вопрос работы с исключениями, который вызвал жаркий спор, но не получил развернутой дискуссии, поскольку не являлся основной темой.

        Также, изучая множество ресурсов, начиная от вопросов на stackoverflow и заканчивая платными курсами по архитектуре, можно наблюдать, что в IT-сообществе сложилось неоднозначное отношение к исключениям и к тому, как их использовать.

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

        Есть разные мнения о том, стоит ли создавать собственные типы исключений или использовать стандартные, поставляемые в .NET.

        Кто-то делает валидацию на исключениях, а кто-то повсеместно использует монаду Result. Справедливо, что Result позволяет по сигнатуре метода понять, возможно ли не только успешное выполнение. Но не менее справедливо, что в императивных языках (к которым относится C#) повсеместное использование Result приводит к плохо читаемому коду, засыпанному конструкциями языка настолько, что с трудом можно разглядеть исходный сценарий.

        В данной статье я расскажу о практиках, принятых в нашей команде (если кратко — мы используем все подходы и ни один из них не является догмой).

        Речь пойдет об enterprise-приложении, построенном на базе ASP.NET MVC+WebAPI. Приложение построено по луковой архитектуре, общается с базой данных и брокером сообщений. Используется структурированное логирование в ELK-стек и настроен мониторинг при помощи Grafana.
        Читать дальше →
      • Расширение редактора Unity через Editor Window, Scriptable Object и Custom Editor

          Всем привет! Меня зовут Гриша, и я основатель CGDevs. Сегодня хочется поговорить про расширения редактора и рассказать про один из моих проектов, который я решил выложить в OpenSource.

          Юнити — прекрасный инструмент, но в нём есть небольшая проблема. Новичку, чтобы сделать простую комнату (коробку с окнами), необходимо либо осваивать 3д моделирование, либо пытаться что-то собрать из квадов. Недавно стал полностью бесплатным ProBuilder, но это так же упрощённый пакет 3д моделирования. Хотелось простой инструмент, который позволит быстро создавать окружения вроде комнат со окнами и правильными UV при этом. Достаточно давно я разработал один плагин для Unity, который позволяет быстро прототипировать окружения вроде квартир и комнат с помощью 2д чертежа, и сейчас решил выложить его в OpenSource. На его примере мы разберём, каким образом можно расширять редактор и какие инструменты для этого существуют. Если вам интересно – добро пожаловать под кат. Ссылка на проект в конце, как всегда, прилагается.


          Читать дальше →
          • +20
          • 4,1k
          • 2
        • Самые быстрые отчёты на диком западе. И горстка багов в придачу…

            Picture 3

            Не только Microsoft в последнее время выкладывает код собственных проектов в открытый доступ — другие компании тоже следуют этой тенденции. Для нас же — разработчиков PVS-Studio — это отличный способ ещё раз протестировать анализатор, посмотреть, что интересного он сможет найти, и сообщить об этом авторам проекта. Сегодня заглядываем внутрь проекта компании Fast Reports.
            Читать дальше →
            • +33
            • 5,6k
            • 6

          Самое читаемое