• Еще немного о валидации в ASP.NET

      В прошлый раз я перенес часть императивного кода в атрибут. Есть еще одна проверка, кочующая из одного файла в другой:

      public class MoveProductParam
      {
         public ProductId {get; set; }
      
         public CategoryId {get; set; }
      }
      
      //...
      if(!dbContext.Products.Any(x => x.Id == par.ProductId))
          return BadRequest("Product not found");
      
      if(!dbContext.Categories.Any(x => x.Id == par.CategoryId ))
          return BadRequest("Category not found");
      

      Мы достойны лучшего
      public class MoveProductParam
      {
         [EntityId(typeof(Product))]
         public ProductId {get; set; }
      
         [EntityId(typeof(Category))]
         public CategoryId {get; set; }
      }
      

      Читать дальше →
    • Январская починка дыр в .NET Framework и Core

        Аккурат к концу новогодних каникул в России, 9-го января, Microsoft выпустили обновления, исправляющие CVE-2018-0786 и CVE-2018-0764. Починили так, что кое-где ещё и сломали. В этом коротком посте мы ещё раз вспомним, что это такое и что нам теперь делать.


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


        Читать дальше →
      • Объединение .NET-сообществ



          Вот уже несколько лет в России развивается движение открытых .NET-сообществ. Первопроходцем стало питерское сообщество SpbDotNet, стартовавшем в 2015 году. Последователем питерского сообщества стало московское сообщество MskDotNet, проводящее встречи с 2016 года. Разумеется, оба сообщества очень хорошо дружат и оказывают посильную взаимопомощь. С начала создания сообществ были проведены десятки встреч, рассказаны более сотни докладов. Отлично! Давайте немного поговорим о настоящем и будущем .NET движений.

          День сегодняшний


          За время существования наших замечательных коммьюнити были проведены десятки встреч, обсуждены тысячи вопросов, как в форме докладов, так и в форме живого общения в кулуарах. Многие познакомились с новыми коллегами, обзавелись полезными связями, нашли ответы на интересующие их вопросы, получили море позитива, а кто-то даже нашёл новых друзей. Те, кто по каким-либо причинам не посещают, или не могут посетить наши встречи вживую — смотрят наши видео на youtube. Кстати, на данный момент наш YouTube-канал пополняется записями и с MskDotNet и c SpbDotNet. На нём выложены уже более 70 видео с докладами. Звучит просто отлично!
          Читать дальше →
        • Избавляемся от boilerplate для валидации в ASP.NET MVC

            В большинстве примеров проверка входных данных ASP.NET MVC осуществляется следующим образом:

                    [HttpPost]
                    public IActionResult Test(SomeParam param)
                    {
                        if (!ModelState.IsValid)
                        {
                            return View(param);
                            // return Json({success: false, state: ModelState});
                        }
                        
                        dbContext.UpdateData(param);
            
                        return RedirectToAction("index");
                        // return Ok({success: true});
                    }
            

            Этот код можно улучшить:

            1. вынести валидацию из тела метода и избавиться от дублирования if (!ModelState.IsValid)
            2. вернуть код ответа 422
            Читать дальше →
          • «Письмо турецкому султану» или линейная регрессия на C# с помощью Accord.NET для анализа открытых данных Москвы

            • Tutorial
            Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на Python или R. Мы не будем обсуждать их плюсы и минусы, а просто зададимся вопросом, что делать если вы знакомы только с экосистемой .NET, но при этом вам очень любопытно окунутся в мир науки о данных? Ответ прост, не отчаиваться и посмотреть в сторону F#, а если вы также, как и я из .NET знаете только азы C#, то попробовать изучить Accord.NET Framework.

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

            Несмотря на то, что в заголовке статьи указан C#, мы попробуем собрать код и на VB.NET.

            Мне осталось только пригласить вас под кат!


            Читать дальше →
            • +15
            • 5,4k
            • 4
          • Анализируем локальные функции в C# 7

            • Перевод
            Добавление локальных функций в языке C# первоначально для меня было излишним. Прочитав статью в блоге SergeyT, я понял, что эта фича действительна нужна. Итак, кто сомневается в надобности локальных функций и кто еще не знает что это, вперед за знаниями!

            Локальные функции — это новая возможность в C# 7, которая позволяет определять функцию внутри другой функции.
            Читать дальше →
          • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

            Подробнее
            Реклама
          • Настройка Azure Application Insights для диагностики ПО с микросервисной архитектурой

              Application Insights — клёвая штука, позволяющяя проводить диагностику, профилирование и анализ использования развернутых систем (в т.ч. в продакшен режиме), и при этом не требующая от разработчика вообще никаких усилий. Конечно, всё это становится возможным ценой мучительной первоначальной настройки.


              В рекламных видео конечно никакой особой настройки нет, но жизнь — она сложнее, особенно если ваше ПО микросервисное. Почему? А всё очень просто.


              Что в первую очередь должна делать система диагностики в микросервисной архитектуре?
              Правильно, коррелировать диагностику от различных микросервисов в рамках одной операции.
              Тыркнул пользователь в UI кнопочку — надо увидеть диагностику от всех N микросервисов, которые так или иначе обрабатывали этот тырк. Случился где-нибудь exception — надо увидеть не только в каком микросервисе он произошёл, но и в рамках какой операции это случилось.
              Только вот Application Insights с точки зрения конкретного микросервиса — это в первую очередь SDK. И SDK таких есть несколько — есть для JS, есть для .NET Core, .NET (со своими особенностями настройки для MVC, WebAPI, WCF), есть для Java и т.д.


              Какие-то из этих SDK — opensource, какие-то — внутренняя разработка MS. И чтобы всё завелось — их надо подружить.


              В этом и состоит основная сложность.


              Не скажу, что я достиг 100% просветления в этом вопросе.
              Но по крайней мере, я уже собрал несколько граблей и у меня есть рабочий семпл с UI на ASP.NET MVC (не Core) + JS и двумя микросервисами (Asp.Net WebApi, WCF)


              Кому интересно — прошу под кат.

              Читать дальше →
            • «Здравствуй елка — Новый Год!» или программируем NanoCAD с помощью Visual Basic .NET

              • Tutorial
              Намедни просматривая документацию к NanoCAD API идущую в комплекте с SDK неожиданно обратил внимания на то, что описание членов классов для .NET API и MultiCAD.NET API дано, как на C# так и на Visual Basic. И я подумал: «А ведь это здорово, что есть описание и для VB!»

              И хотя если честно я совсем не знаю VB, да и код на старом добром BASIC последний раз видел лет 100 назад, но ведь это же один из языков на котором начинают учить людей азам программирования, поэтому я решил внести свой небольшой вклад в популяризацию программы.

              Надо сказать, что на «Хабре» уже есть хорошая статья по применению VB для NanoCAD, там рассматривается связка NanoCAD с Excel и то как она в итоге может облегчить строительное проектирование.

              Мы же с Вами решим другую, более простую и праздничную задачу, начертим ёлочку и поздравим пользователя с новым годом. Несмотря на то, что статья посвящена VB, код на C# тоже будет.

              А поскольку «Новый год» – праздник затратный то ориентироваться мы будем на бесплатную для коммерческого использования версию NanoCAD 5.1 (но по идее без проблем должно работать и под NC 8.X).

              Также не обойдем стороной и пользователей Linux поскольку код на C# с помощью Mono и Wine можно будет на нём скомпилировать и запустить.

              Если честно я сам только недавно начал осваивать API NanoCAD и поэтому моя последняя в этом году предпраздничная статья по сложности кода чем-то напоминает теплый ламповый графический исполнитель «Кенгуренок (ROO)», но если вас это не останавливает, то милости прошу под кат…



              P.S. Это первая буква слова «Habrahabr» — на большее меня не хватило =)
              Читать дальше →
            • Кроссплатформенная новогодняя демка на .NET Core и Avalonia

                "ААА! Пришло время переписывать на .NET Coreǃ", говорили они, WPF в комментариях обсуждали. Так давайте же проверим, можно ли написать кросс-платформенное GUI приложение на .NET / C#.



                Новогоднее настроение навеяло идею сделать анимацию падающего снега. Были такие демки под DOS, горящий огонь, фракталы, снежок, падающий на ёлочку, и так далее.


                Как увидим ниже, это не только весело, но и позволит испытать ключевой функционал UI фреймворка. Поехали!

                Читать дальше →
              • 10 главных анонсов Microsoft в 2017 году

                  А вот и уже ставшая традицией предновогодняя публикация с десятью самыми главными анонсами и новинками года от корпорации Microsoft. Чем же запомнится уходящий год с приставкой MS? Заглядывайте под кат!

                  Читать дальше →
                Самое читаемое