Рубрика «.net» - 33

image

Сегодня мы поговорим про то, как написать свой AutoMapper. Да, мне бы очень хотелось рассказать вам об этом, но я не смогу. Дело в том, что подобные решения очень большие, имеют историю проб и ошибок, а также прошли долгий путь применения. Я лишь могу дать понимание того, как это работает, дать отправную точку для тех, кто хотел бы разобраться с самим механизмом работы «мапперов». Можно даже сказать, что мы напишем свой велосипед.
Читать полностью »

Большая Философская Мысль: топ-10 докладов DotNext 2019 Piter - 1

Здравствуй! В мае прошла наша большая .NET-конференция, где нашлось место и хардкору, и трендам, и архитектуре, и просто хорошим практикам.

А теперь делимся лучшими докладами (по оценкам зрителей конференции), из которых вы:

  • узнаете, почему (скорее всего) пишете функциональный код, даже не подозревая об этом;
  • погрузитесь в асинхронное программирование;
  • услышите в доступной форме про уязвимости десериализаторов;
  • получите комплексную информацию о кардинальных изменениях, которые принёс C# 8 с non-nullable reference types;
  • захотите купить Raspberry Pi;
  • узнаете о «настоящей» стоимости кода.

Есть нюанс: в этот раз возникла особая ситуация с докладом-лидером. Во-первых, он посвящён не .NET, а во-вторых, его видеозаписью мы поделиться не можем (по условиям спикера). Чтобы компенсировать это, мы добавили в пост 11-е место — так что под катом вы всё равно сможете увидеть видеозаписи 10 отличных докладов про .NET-разработку. Поехали!

Читать полностью »

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

Выбор пал на ноутбук HP c 14'' экраном, поддерживающим расширение 1920x1080, что и явилось решающим критерием для выбора. Железо вроде хорошее, но вот софт от HP заставляет задумываться, а надо ли оно было.

Читать полностью »

В своей практике я часто встречаю, в различном окружении, код вроде того, что приведен ниже:

[1] var x = FooWithResultAsync(/*...*/).Result;

//или
[2] FooAsync(/*...*/).Wait();

//или
[3] FooAsync(/*...*/).GetAwaiter().GetResult();

//или
[4] FooAsync(/*...*/)
    .ConfigureAwait(false)
    .GetAwaiter()
    .GetResult();

//или
[5] await FooAsync(/*...*/).ConfigureAwait(false)

//или просто
[6] awiat FooAsync(/*...*/)

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

  • Первая группа, это те, кому ничего не известно о возможных проблемах с вызовом Result/Wait/GetResult. Примеры (1-3) и, иногда, (6), типичны для программистов из этой группы;
  • Ко второй группе относятся программисты, которым известно о возможных проблемах, но они не знают причин их возникновения. Разработчики из этой группы, с одной стороны, стараются избегать строк вроде (1-3 и 6), но, с другой, злоупотребляют кодом вроде (4-5);
  • Третья группа, по моему опыту самая малочисленная, это те программисты, которые знают о том, как код (1-6) работает, и, поэтому, могут сделать осознанный выбор.

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

ConfigureAwait, кто виноват и что делать? - 1

Читать полностью »

Picture 19

Библиотеки .NET Core — один из самых популярных C# проектов на GitHub. Неудивительно, с учётом его широкой известности и используемости. Тем интереснее попробовать выяснить, какие тёмные уголки можно найти в исходном коде этих библиотек, что мы и попробуем сделать с помощью статического анализатора PVS-Studio. Как думаете, удалось ли в итоге обнаружить что-нибудь интересное?
Читать полностью »

Picture 19

.NET Core libraries is one of the most popular C# projects on GitHub. It's hardly a surprise, since it's widely known and used. Owing to this, an attempt to reveal the dark corners of the source code is becoming more captivating. So this is what we'll try to do with the help of the PVS-Studio static analyzer. What do you think — did I manage to eventually find something interesting?
Читать полностью »

Недавно мне выпала возможность пообщаться с довольно большим количеством начинающих специалистов по разработке на языке C#. Многие из них интересуются языком и платформой, и это очень круто. Среди зеленых юниоров распространено мракобесие по поводу очевидных (только что прочитавшему книгу про память) вещей. И это же натолкнуло меня на мысль о создании этой статьи. Статья в первую очередь нацелена на начинающих разработчиков, но думаю, что многие факты будут полезны и практикующим инженерам. Ну и самые очевидные и неинтересные заблуждения, разумеется, опущены. Здесь собраны наиболее интересные и значимые, особенно с точки зрения прохождения интервью.

Заблуждения начинающих C# разработчиков. Пытаемся ответить на стандартные вопросы - 1

Читать полностью »

Привет! Таки да, скоро выходит net core 3.0 и там будет шаблон проекта с Blazor как один из дефолтных. Название у фреймворка, по-моему, похоже на название какого-нибудь покемона. Блазор вступает в бой! Решил я значит глянуть что за зверь такой и с чем его едят поэтому сделал на нем Todo лист. Ну и на Vue.js тоже, для сравнения с сабжем потому что по моему они похожи система компонентов в обоих и реактивность и вот это все. Больше тудушек богу тудушек! По факту это Гайд для юных, не окрепших умов которым лень TypeScript или JavaScript учить а кнопочки и инпуты на сайте сделать хочется. Как в том меме -«Технарь хотел написать книгу но получилась инструкция». Кому интересны мои похождения в фронт энде или узнать что за Blazor такой добро пожаловать под кат.Читать полностью »

Picture 1

Это небольшая история о том, как с помощью PVS-Studio удалось найти ошибку в исходном коде библиотеки, используемой в PVS-Studio. Причём не теоретическую, а фактическую — ошибка проявлялась на практике при использовании библиотеки в анализаторе.
Читать полностью »

Picture 1

This is a short story about how PVS-Studio helped us find an error in the source code of the library used in PVS-Studio. And it was not a theoretical error but an actual one — the error appeared in practice when using the library in the analyzer.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js