Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.43K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
💡Структурированная конкурентность в C# на практике: что это, почему полезно и как может выглядеть в C#

Это концепция, которая помогает писать более надежный и легко поддерживаемый асинхронный код. Хотя в ней нет ничего нового, она не так широко известна среди .NET-разработчиков. Основная идея заключается в группировке асинхронных операций и гарантии их завершения.

В .NET это может быть реализовано с использованием конструкций, аналогичных Task или Async/Await. Подобно тому как в других языках используется Task Scope, в .NET можно использовать блоки try-catch-finally для управления жизненным циклом асинхронных задач и гарантирования их завершения.

👉 Подробнее в гайде от Steven Giesel
👍143🥱1
📌System.Text.Json JsonConverter Test Helpers: на заметку C#-разработчику

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

🔗 Читать
👍32🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🛞Учитель из России Татьяна Ерухимова уехала в США и занимается тем, чем должен заниматься любой нормальный учитель — прививает любовь к знаниям своим ученикам.

💬Всем бы таких учителей… А вы помните своего любимого учителя и предмет, который больше всего на вас повлиял?

#холивар
🥱40👏32👍65❤‍🔥1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
👍71
💬 Подкаст RadioDotNet: Reflection в AOT, новый Identity, тестирование в ASP

📌 Темы:
🎤 Reflection с .NET 8: обзор нового способа
🎤 Что нового в System.Text.Json в .NET 8
🎤 Green Threads Technical Report
🎤 C# Dev Kit
🎤 Стоит ли использовать .NET 8 Identity API endpoints?
🎤 Mocking dependencies в тестах ASP.NET Core
🎤 Кратко о разном

⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
👍9
🎉.NET 8 уже совсем близко. Стали известны темы докладов и все подробности, которые ждут участников .NET Conf 2023. А мы разбираемся, что из себя представляет второй релиз-кандидат новой версии платформы:

🔹 Анонс .NET 8 RC2
🔹 Обновления ASP.NET Core .NET 8 RC 2
🔹 Анонс .NET MAUI в .NET 8 RC 2
🔹 EF Core 8 RC 2

☑️ Смотрите также серию видеоуроков Learn Live, которая охватывает основы C# для новичков:
📺 Написание первой программу на C#
📺 Разработка и запуск простого приложения на C#
📺 Добавление логики в консольное приложение
📺 Работа с переменными данными в консольных приложениях C#

#чтопроисходит #матчасть
🔥9👍5🤩41🤔1
Отладка распространенных проблем с файлами Cookie в ASP.NET Core: гайд для C#-разработчика.

👉 Читать
👍94
👩‍💻 Если вы работаете над веб-приложением в Visual Studio и хотите запустить его в режиме инкогнито, просто используйте “Browse With…”.

#tools #tip by Dave Callan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5492
Discriminated Unions в C#

Discriminated Unions — давняя потребность в C#. Хотя этот функционал пока недоступен напрямую C#-разработчикам, Maarten Balliauw, Developer Advocate в JetBrains, представляет краткое введение в концепцию и два способа, которые вы можете использовать уже сейчас👇

🔗Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Newtownsoft vs System.Text.Json

Как вам производительность встроенного инструмента для сериализации и десериализации JSON?

#csharp #benchmarks by Nabi Karampoor
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥55👍5🥱41
From_Junior_to_Genius_an_optimization_story_by_Israel_Lot_ITNEXT.pdf
8.5 MB
🤔 Что будет, если разработчики разного уровня (джун, мидл, сеньор, хакер, эксперт и гений) реализуют простой метод вычисления контрольной суммы?

Получится довольно любопытная история оптимизации. Версия джуна выглядит следующим образом👇


public static uint Checksum(ReadOnlySpan<byte> arr)
{
if (arr.Length == 0) return 0;

uint sum0 = 0, sum1 = 0, sum2 = 0, sum3 = 0;

for(var i = 0; i<arr.Length; i++)
{
switch (i % 4)
{
case 0: sum0 += arr[i]; break;
case 1: sum1 += arr[i]; break;
case 2: sum2 += arr[i]; break;
case 3: sum3 += arr[i]; break;
}
}

var sum = sum3+ (sum2 << 8) + (sum1 << 16) + (sum0 << 24);

return sum;
}


Интересно, как этот простой метод можно существенно улучшить и оптимизировать? Тогда читайте подробнее — вас ждет много кода и бенчмарков.

#csharp #benchmarks
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
🤔.NET Framework vs .NET Core Environment Configuration

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

• .NET/Core применяет конфигурации окружения во время выполнения, используя конкретную переменную окружения, и может использовать множество источников конфигурации. Приложение спрашивает, в какой среде оно развернуто.

👌Build once, deploy to many

🔧С первого взгляда все кажется простым и понятным, но команда .NET сделала огромную работу, полностью изменив принцип работы конфигурации в .NET/Core и решив множество проблем.

👉 Читайте подробнее о том, что именно изменилось и как это должно работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔2
🚀Самый быстрый способ запуска тестов в .NET: гайд по работе с Meziantou.Xunit.ParallelTestFramework от Ника Чапсаса.

📺Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Ловите записи докладов с 91-й встречи SpbDotNet:

🌐Станислав Сидристый (известный .NET-разработчик, автор онлайн-книги .NET Platform Architecture): «Реактивная сборка огромного проекта»

• При стремительном росте проекта возникает ряд трудностей не только у разработки, но и у DevOps. Станислав решил помочь коллегам и сделал очень быструю сборку всех проектов.

• В итоге удалось ускорить сборку с 400 машиноминут (20 агентов, 20 минут) до диапазона (30 сек, 1 мин 30 сек) в зависимости от количества изменений. Через что пришлось пройти, все неудачные варианты и результат — в докладе.

🌐Евгений Пешков (ранее разрабатывал JetBrains Rider, занимался инфраструктурой в Контуре): «Убийцы производительности»

• Одна из причин низкой производительности .NET-приложений — некачественные сторонние библиотеки или неправильное их использование. Например, обычное логирование может превратить всю программу в однопоточную, если неправильно сконфигурировано.

• Увы, некоторые подобные проблемы кочуют из библиотеки в библиотеку, и из проекта в проект. В докладе Евгений показывает примеры таких проблем и рассказывает, как их избежать.

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍8
Каким терминалом/интерпретатором командной строки пользуетесь? Пользователи Windows, поделитесь опытом👇
Anonymous Poll
38%
CMD
35%
PowerShell
28%
Windows Terminal
20%
Всеми — в зависимости от задачи
3%
Другим (напишу в комментариях)
7%
Посмотреть результаты
3
📈Каким бы противоречивым ни был индекс TIOBE, который отслеживает показатель популярности языков программирования, но согласно ему C# потихоньку обгоняет Java.

«Разрыв между C# и Java никогда не был таким маленьким», — говорится в последнем выпуске. «В настоящее время разница составляет всего 1,2 процента, и если тенденция сохранится, C# превзойдёт Java примерно через 2 месяца».

📌Почему этим данным можно верить?

💬Снижение популярности Java может быть вызвано решением Oracle ввести модель платного лицензирования после Java 8 и ростом популярности Kotlin. .NET/C# в свою очередь повернулся в сторону открытого исходного кода и сообщества.
👍4311👏3
😎Михаил Жмайло, пентестер в команде МТС RED, делится опытом выполнения полезной нагрузки (payload) в памяти и показывает, насколько жизнь атакующих становится проще.

C# и System.Reflection.Assembly
C# и MemoryStream()
C#, память и неуправляемый код
Конвертация в JScript
Специальные лоадеры

👉Читать

#pentest #redteam
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Использование паттерна Outbox для надежного обмена сообщениями микросервисов: на заметку C#-разработчику

#dotnet #csharp #tip by Milan Jovanović
👍17🤔3😁2
🤔Получить значение типа по умолчанию во время компиляции легко — мы можем использовать default(T). Что, если мы хотим сделать то же самое во время выполнения? Каково значение по умолчанию для любого System.Type?

👉Разбирается Microsoft MVP/разработчик из Ubisoft Gérald Barré
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2❤‍🔥1