uz
Feedback
C# 1001 notes

C# 1001 notes

Kanalga Telegram’da o‘tish

Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp

Ko'proq ko'rsatish
6 538
Obunachilar
-224 soatlar
-57 kunlar
-330 kunlar
Postlar arxiv
Кто такой архитектор ПО и как им стать? Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте
Кто такой архитектор ПО и как им стать? Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте, что нужно, чтобы претендовать на эту должность, на бесплатном практическом уроке от OTUS. 💯 На вебинаре разберём:  - какую роль выполняет архитектор и зачем он нужен; - какие бывают архитекторы; - чем отличается архитектура от проектирования. 📅 Встречаемся 20 мая в 19:00 мск в рамках курса «Software Architect». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS. Ссылка для регистрации: https://vk.cc/cwwNcD?erid=LjN8KYfrz

🖥 Полезные материалы по .NET и AWS Держите полезный репозиторий с материалами о разворачивании и обслуживании .NET-приложени
+2
🖥 Полезные материалы по .NET и AWS Держите полезный репозиторий с материалами о разворачивании и обслуживании .NET-приложений в AWS. В частности, освещаются такие моменты: — Настройка учетных данных AWS для приложений .NET — Работа с AWS S3 в ASP.NET Core Web API — Amazon API Gateway для разработчиков .NET — Как защитить Amazon API Gateway с помощью Lambda Authorizer? 🖥 GitHub @csharp_ci

🖥 Вот пример отличного исследования и дискуссии опытных программистов https://github.com/dotnet/runtime/issues/101437 #dotNET @csharp_ci

🖥 Zenject, внедрение зависимостей, Unity C# Очень понятное объяснение, что же такое Zenject, Dependency Injection и всё тако
+2
🖥 Zenject, внедрение зависимостей, Unity C# Очень понятное объяснение, что же такое Zenject, Dependency Injection и всё такое Рекомендую) Что внутри? • 00:36 - Другие годные источники по зенджекту • 02:20 - Что такое Dependency Injection? • 03:39 - Проблема DI — большое количество сервисов • 04:02 - Проблема DI — вложенные зависимости • 04:56 - Проблема DI — разное время жизни сервисов • 05:45 - Что делает Zenject? • 06:35 - Binding в Zenject • 07:54 - Installer-s в Zenject • 09:16 - Context в Zenject • 10:54 - Как это всё работает • 11:54 - Дополнительные инструменты Zenject-а • 13:04 - ITickable, IInitializable и IDisposable 📎 YouTube 🖥 GitHub @csharp_ci

👋 Хотите узнать больше о библиотеке LINQ и расширить свои знания в программировании на С#? 🏃‍♂️ Приходите на открытый практ
👋 Хотите узнать больше о библиотеке LINQ и расширить свои знания в программировании на С#? 🏃‍♂️ Приходите на открытый практический урок от OTUS. Спикер — опытный инженер и преподаватель. ✅ На вебинаре вы изучите, как использовать LINQ для построения запросов, как создавать запросы, аналогичные SQL и другие области его применения. Вы изучите функции и синтаксис LINQ для эффективного взаимодействия с данными в коллекциях. Улучшите производительность кода и сможете стать более эффективным программистом. 🚀 Урок пройдет 26 апреля в 20:00 мск и будет приурочен к старту большого курса «C# Developer. Professional». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров! 🎯 Короткий тест и вы получите доступ ко всем открытым урока курса и запись на вебинар: https://clck.ru/3A7abo Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Реализация словаря на двух статических методах и делегате в C# ⏩Речь пойдет о структуре данных "словарь" (отображение или
+1
🖥 Реализация словаря на двух статических методах и делегате в C# ⏩Речь пойдет о структуре данных "словарь" (отображение или ассоциативный массив). В программировании мы чаще всего пользуемся шаблоном мышления, который предполагает, что есть данные и функции, которые над этими данными выполняют различные операции. При этом данные могут быть представлены как некоторые одиночные элементы – объекты простых типов (числа, bool’ы, символы и т.п.) и объекты сложных типов, которые мы проектируем сами (Student, Employer, Car, Factory и т.п.), так и коллекции, состоящие из этих одиночных элементов: множества, словари, списки, массивы, стеки и т.п. Коллекции могу существовать в виде обобщенных вариантов, в этом случае предполагается, что тип объектов, которые будут храниться в ней, задается (заранее известен) до компиляции (для статически типизированных языков), это способствует большей производительности и лучшей безопасности. ⏩Если немного поразмышлять над лямбда-исчислением Черча, то в какой-то момент становится понятно, что описанное выше восприятие данных — это всего лишь удобная абстракция, которую мы перетащили из нашего "физического" мира. Например, у нас есть яблоко (это объект данных), и мы над ним с помощью определенной функции (соковыжималка) производим работу, преобразуя его в сок (объект другого типа). А вот само яблоко, мы, как правило, в качестве функции не рассматриваем. В лямба-исчислении всё есть функция – то, над чем выполняются операции и то, что эти операции выполняет. Фон-неймановская архитектура, по дизайну которой построены почти все современные вычислительные системы, также нас толкает к тому, что функции и данные — это одно и тоже: байты в памяти мы можем интерпретировать как данные и как операции для работы над данными, тут другая идея: всё есть данные (биты), а уж как мы их интерпретируем — это наша ответственность. 📎 Реализация @csharp_ci

👩‍💻 Лекции по .NET Крутой плейлист, который постоянно пополняется свежими видосамипо C# от инженера из Microsoft Amichai Ma
👩‍💻 Лекции по .NET Крутой плейлист, который постоянно пополняется свежими видосамипо C# от инженера из Microsoft Amichai Mantinband. 🔗 плейлист @csharp_1001_notes

🔥Подборка лучших обучающих каналов для программистов. ➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять ⚡Машинное обучение Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду Ml ru - актуальные статьи, новости, код и обучающие материалы Ml Jobs - вакансии ML ML Книги - актуальные бесплатные книги МО ML чат 🏆 Golang Golang - изучи один из самых перспективных языков на ит-рынке Golang собеседование - разбор задач и вопросов с собесов Golang вакансии -работа для Go разработчика Golang книги библиотека книг Golang задачи и тесты Golang чат Golang news - новости из мира go Golang дайджест 💥 Linux /Этичный хакинг Linux Academy - гайды, секреты и лучшие материалы по Linux Kali linux - погрузись в мир этичного хакинга и кибербезопасности linux_kal - kali чат Информационная безопасность 🚀 Data Science Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста Data Jobs - ds вакансии Аналитик данных Data Science книги - актуальные бесплатные книги Big data 🛢Базы данных Sql базы данных - научим работе с базами данных профессионально Библиотека баз данных SQL чат Вакансии Sql аналитик данных #️⃣C# С# академия - лучший канал по c# С# заметки — код, лучшие практики, заметки программиста c# С# задачи и тесты С# библиотека - актуальные бесплатные книги C# вакансии - работа 🐍 Python Python/django - самый крупный обучающий канал по Python Python Собеседование - подготовка к собеседовению python и разбор алгоритмов Pro python - статьи, новости, код и обучающие материалы Python Jobs - вакансии Python Python чат Python книги ☕ Java Java академия - java от Senior разработчика Java вакансии Java чат Java вопросы с собеседований Java книги 💻 C++ C++ академия С++ книги C++ задачи - подготовка к собеседовению мл, алгоритмам C++ вакансии ⚡️ Frontend Javascript академия - крупнейший js канал React - лучшие гайды и советы по работе с react Frontend - тутрориалы, уроки, гайды, код PHP Книги frontend Задачи frontend 🦀 Rust Rust программирование Rust чат Rust книги для программистов 📲 Мобильная разработка Android разработка Мобильный разработчик гайды и уроки 🇬🇧 Английский для программистов 🧠 Искусственный интеллект ИИ и технологии Neural - нейросети для работы и жизни Книги ИИ Artificial Intelligence 🔥 DevOPs Devops для программистов Книги Devops 🌟 Docker/Kubernets Docker Kubernets 📓 Книги Библиотеки Книг для программситов 💼 Папка с вакансиями: Папка Go разработчика: Папка Python разработчика: Папка Data Science Папка Java разработчика Папка C# Папка Frontend

🎉 Анонс выпускы .NET 9 Preview 3. 🙌 Узнайте, что нового появилось в библиотеках #dotNET, среде выполнения и SDK, включая: ➖
🎉 Анонс выпускы .NET 9 Preview 3. 🙌 Узнайте, что нового появилось в библиотеках #dotNET, среде выполнения и SDK, включая: ➖ Библиотеку токенизаторов ➖ Временной интервал.Защита от перегрузок ➖ Более быстрая обработка исключений ... и многое другое. Получить подробную информацию и ссылки на ресурсы можно здесь ➡️ https://github.com/dotnet/core/discussions/9271

Бесплатный курс для middle C#-разработчиков от Ozon На курсе Route 256 инженеры Ozon расскажут про самые современные технологии, а также поделятся своим опытом разработки микросервисов. Будут лекции, воркшопы, код-ревью домашних заданий и профессиональное комьюнити. Курс рассчитан на разработчиков с опытом от 3 лет, в конце Ozon предлагает офферы лучшим выпускникам. Чтобы попасть на курс, нужно пройти отборочный контест 5 мая. Узнать подробности и подать заявку

🖥 Подписать PDF-документы на C# и VB.NET Цифровые подписи позволяют доказать, что документ PDF: • Не изменялся с момента под
🖥 Подписать PDF-документы на C# и VB.NET Цифровые подписи позволяют доказать, что документ PDF: • Не изменялся с момента подписания. • Был подписан цифровой подписью конкретного человека. ⏩Используйте библиотеку Docotic.Pdf для подписи PDF-документов в приложениях для .NET Framework и .NET Core. Вы можете скачать бинарные файлы библиотеки или использовать ее пакет NuGet. ⏩Как же наконец добавить цифровую подпись в PDF? Вам необходим цифровой сертификат PKCS#12 (файл .pfx или .p12), выданный действительным центром сертификации, чтобы подписать PDF-документ. Вот базовый пример, показывающий, как подписать PDF-документ на C#:
using BitMiracle.Docotic.Pdf;

using (var pdf = new PdfDocument("document_to_sign.pdf"))
{
    var options = new PdfSigningOptions("your_cert.p12", "your_cert_password")
    {
        DigestAlgorithm = PdfDigestAlgorithm.Sha256,
        Format = PdfSignatureFormat.Pkcs7Detached,
        Reason = "Testing digital signatures",
        Location = "My workplace",
        ContactInfo = "support@example.com"
    };

    pdf.SignAndSave(options, "signed.pdf");
}
Замените "your_cert.p12" собственным файлом сертификата .p12 или .pfx и "your_cert_password" собственным паролем. На GitHub вы можете загрузить и попробовать полную версию примера (подписать PDF-документ https://github.com/BitMiracle/Docotic.Pdf.Samples/tree/master/Samples/Digital%20signatures/SignDocument) на C# и VB.NET. ⏩Бывают случаи, когда необходимо подписать уже подписанный документ. Или несколько человек должны подписать одну форму друг за другом. Это также возможно. Шаги, в основном, те же. Просто убедитесь, что после подписывания вы сохраняете документ инкрементально. Инкрементальные обновления не нарушают цифровые подписи при условии, что вы делаете только разрешенные изменения. 📎 Подробнее @csharp_ci

🖥 Необходимо определить делегат и реализовать метод ⏩Итак, вот задание: определить делегат bool CounterHashSetDelegate(int a
🖥 Необходимо определить делегат и реализовать метод ⏩Итак, вот задание: определить делегат bool CounterHashSetDelegate(int a) и реализовать метод int Function12(HashSet<int> intSet, CounterHashSetDelegate filter), который возвращает количество элементов из intSet, которые удовлетворяют условию filter.
public static  class 
{
public delegate bool CounterHashSetDelegate(int a);
public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{
 
    int count = 0;
    foreach (int i in intSet)
    {
        if(filter(i))
                    count++;
}
return count;
}
}
⏩Давайте сразу к сути, решение может выглядеть так:
public delegate bool CounterHashSetDelegate(int a);

class Program
{
   static void Main(string[] args)
   {
       CounterHashSetDelegate d = IsEvenNum;

       Console.WriteLine($"Количество четных элементов:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

       d = IsGreaterThen;

       Console.WriteLine($"Количество  элементов > 2:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

       Console.ReadKey();
   }

   public static bool IsEvenNum(int a)
   {
       return a % 2 == 0;// четное ли число например
   }

   public static bool IsGreaterThen(int a)
   {
       return a > 2;//больше  ли  например
   }


   public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
   {

       int count = 0;
       foreach (int i in intSet)
       {
           if (filter(i))
           {
               count++;
           }
       }
       return count;
   }

}
Вот и все дела @csharp_ci

1

ХОЧЕШЬ ПОВЫШЕНИЕ В 2024 ГОДУ? 😎🔥 Согласно опросу, проведенному компанией Solo.io в 2022 году, на текущий момент 85% организ
ХОЧЕШЬ ПОВЫШЕНИЕ В 2024 ГОДУ? 😎🔥 Согласно опросу, проведенному компанией Solo.io в 2022 году, на текущий момент 85% организаций переводят свои IT-системы на микросервисную архитектуру. Но специалистов, которые глубоко понимают все тонкости и нюансы микросервисной архитектуры не так-то много. Самое время разобраться в микросервисной архитектуре и стать более востребованным специалистом. 🚀 Стартуем 9 апреля. Курс ведет действующий архитектор Кирилл Ветчинкин. Он успешно реализовал проекты с применением микросервисов для Мегафона, Теле2, ВСS Brокer, СберМаркет. Постоянный спикер крупных IT-конференций. На курсе вы: 📌 Изучите и отработаете более 20 паттернов микросервисной архитектуры 📌 Познакомитесь c Domain Driven Design 📌 Научитесь декомпозировать систему на микросервисы с помощью Event Storming и DDD Полная программа ТУТ https://microarch.ru/?utm_source=posev&utm_medium=erid:2VtzqwKifY2&utm_campaign=3 А самое главное — будет поддержка от эксперта, чат с одногруппниками и интересное практическое задание. Сертификат об участии по итогам прохождения курса. Курс ориентирован на системных аналитиков и разработчиков, которые хотят больше погрузиться в архитектуру современных IT систем. Узнай больше о курсе 👉 https://microarch.ru/?utm_source=posev&utm_medium=erid:2VtzqwKifY2&utm_campaign=3 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwKifY2

🖥 Небольшой проект, который вы могли бы добавить в свое резюме 👇 Реализация сервиса для сокращения URL-адресов с помощью .NET: Создадим эндпоинты. Первая принимает URL, создаёт короткий URL и возвращает его:
csharp 
app.MapPost("shorten", async (
    string url,
    UrlShorteningService svc,
    AppDbContext dbCtx,
    HttpContext httpCtx) =>
{
  if (!Uri.TryCreate(url, UriKind.Absolute, out _))
    return Results.BadRequest(
     "Предоставленный URL неверный.");

  var code = await svc.GetCode();
  var req = httpCtx.Request;
  var shortUrl = new ShortUrl
  {
    Id = Guid.NewGuid(),
    Url = url,
    Code = code,
    CreatedOn = DateTime.UtcNow
  };
  dbCtx.ShortenedUrls.Add(shortUrl);
  await dbCtx.SaveChangesAsync();
  return Results.Ok(
   $"{req.Scheme}://{req.Host}/{code}");
});
Здесь возникает небольшая ситуация гонки, поскольку мы сначала генерируем уникальный код, а затем вставляем его в БД. Параллельный запрос может сгенерировать тот же уникальный код и вставить его в БД до того, как мы завершим транзакцию. Однако вероятность того, что это произойдет, невелика, кроме того, уникальный ключ в БД защищает нас от дублирования значений. Второй эндпоинт перенаправит на исходный URL при доступе к сокращённому:
csharp 
app.MapGet("{code}", 
 async (
  string code, 
  AppDbContext dbCtx) =>
{
  var shortUrl = await 
   dbCtx.ShortUrls
    .SingleOrDefaultAsync(
     s => s.Code == code);

  if (shortUrl is null)
    return Results.NotFound();

  return Results.Redirect(shortUrl.Url);
});
Эта конечная точка ищет код в БД и, если он найден, перенаправляет пользователя на исходный длинный URL. Ответ будет иметь код состояния 302 (Found) согласно стандартам HTTP. Недостатки и возможные улучшения 1. Недостатком реализации сервиса является длинная задержка, т.к. мы проверяем каждый генерируемый код в БД. Улучшением может стать заблаговременное создание уникальных кодов в БД. 2. Кэширование второй конечной точки позволит снизить нагрузку на БД для часто используемых коротких URL. 📌 Подробнее @csharp_1001_notes

🖥 Что полезного в новых версиях C# Держите годное видео, в котором систематизируются знания о новых возможностях языка начин
🖥 Что полезного в новых версиях C# Держите годное видео, в котором систематизируются знания о новых возможностях языка начиная с C#8 по C#11, а также обсуждаются на примерах новейшие возможности C# 12 и .NET 8. 📎 YouTube @csharp_1001_notes

🖥 Преобразуйте базу данных SQL Server в базу данных SQLite из Code project. https://codeproject.com/Articles/26932/Convert-S
🖥 Преобразуйте базу данных SQL Server в базу данных SQLite из Code project. https://codeproject.com/Articles/26932/Convert-SQL-Server-DB-to-SQLite-DB https://github.com/karenpayneoregon/sqlserver-to-sqllite @csharp_1001_notes

🖥 Прочитать Nullable из строки ⏩Итак, дан код: long? catCode = null; // Если строка val не пустая, if (!(String.IsNullOrWhit
🖥 Прочитать Nullable<long> из строки ⏩Итак, дан код:

long? catCode = null;
// Если строка val не пустая, 
if (!(String.IsNullOrWhiteSpace(val)))
{
    // распознаем в первых цифрах до пробела целое 64-битное число.
    // Если его там нет, записываем в catCode NULL. 
    // Если его удалось распознать, записываем его в catCode.
    if (!(Int64.TryParse(val.Split(" ")[0], out long cc)))
    {
        catCode = null;
    }
    else 
    {
        catCode = cc;
    }
}
Как переписать этот код чуть понятнее? ⏩Как вариант, можно написать что-то в духе:

public static string LeftDigits(this string str)
{
    if (str == null) return null;
    if (!str.contains(" ") return null;
    string left = str.Split(" ")[0];
    if (! left.All(Char.IsDigit){
        return null;
    }
    return left;
}

//... 

string digits = LeftDigits(val);
long? catCode = digits != null ? Int64.Parse(digits) : null;
А есть ли ещё варианты? Можете накидать свои в комментах @csharp_1001_notes

⚡️Компания Аванпост в поисках Разработчиков C# (Junior + / Middle) 🚀Какие задачи предстоит решать? - Интеграционная разработ
⚡️Компания Аванпост в поисках Разработчиков C# (Junior + / Middle) 🚀Какие задачи предстоит решать? - Интеграционная разработка - Разработка подключаемых модулей приложений (non-GUI) в соответствии с заданными интерфейсами, сервисов и приложений интеграционного слоя - По мере профессионального роста – расширение сферы деятельности 👨‍💻Какие требования к кандидатам? - Знание: С#, .Net Core - Понимание концепций ООП и базовых шаблонов проектирования - Понимание принципов работы реляционных СУБД - Опыт написания простых SQL-запросов и работы с БД - Технический английский, чтение документации и профессиональной литературы 🔥Что мы предлагаем: - Удаленный формат работы - Зарплата по результатам собеседования и определения навыков соискателя - Профессиональный рост - Оформление по ТК РФ Узнал себя?  Принимай участие в One Day Offer и становись частью крупной IT-компании! Подробности и регистрация: https://tglink.io/aea5ca1b4725

🔥 Создание отказоустойчивых облачных сервисов с помощью .NET 8 В новой версии .NET представлены пакеты Microsoft.Extensions.Http.Resilience и Microsoft.Extensions.Resilience, основанные на библиотеке Polly. Их главная цель — упростить интеграцию отказоустойчивости в ваши приложения.
dotnet add package Microsoft.Extensions.Http.Resilience
<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Http.Resilience" />
</ItemGroup>
var services = new ServiceCollection();

services.AddHttpClient("my-client")
        .AddStandardResilienceHandler(options =>
        {
            // Configure standard resilience options here
        });