C# 1001 notes
Open in Telegram
Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp
Show more6 612
Subscribers
+924 hours
+667 days
+5630 days
Posts Archive
6 611
+2
🖥 Репозиторий с примерами для ML.NET, кроссплатформенного фреймворка машинного обучения для .NET
В этом репозитории GitHub приведены примеры, которые помогут начать работу с ML.NET и узнать, как внедрить ML в существующие и новые приложения .NET.
В репозитории есть 2 типа примеров/приложений:
— Прототипы / MVP, обычно реализованные в виде простых консольных приложений
— Полноценные приложения: примеры веб- и нативных приложений с моделями машинного обучения на основе ML.NET
🖥 GitHub
🟡 Страничка ML.NET
@csharp_1001_notes
6 611
💥Программист, поработай руками!
👉Узнайте больше об электронике на бесплатном уроке онлайн-курса «Электроника и электротехника» - «Разработка и программирование усилителя класса D на Arduino»: регистрация
На бесплатном уроке вы:
- получите знания о том, как с помощью платформы Arduino создать усилитель класса D
- узнаете теоретические основы предметной области, пошаговый процесс выбора компонентов и написания кода для управления усилениями.
Урок подходит:
- Техническим специалистам, желающим реализовать проекты с использованием аудиотехнологий
- Студентам технических специальностей, ищущим практического опыта в связке программирования и электроники
🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!
erid: LjN8K5gLV
6 611
+1
🖥 SimplCommerce — простая, кроссплатформенная, модульная eCommerce система на .NET
Быстрый старт с помощью Docker:
docker run -p 5000:80 simplcommerce/ci-build
🖥 GitHub
🟡 Демо готового проекта с использованием SimplCommerce
@csharp_ci6 611
🖥 Harmony — позвляет исправлять методы .NET прямо в рантайме
Harmony — это библиотека для исправления, замены и декорирования методов .NET и Mono во время выполнения.
Harmony предоставляет высокоуровневый подход к изменению функциональности в C#-приложениях.
🖥 GitHub
@csharp_ci
6 611
🖥 QuestPDF — генерация PDF в .NET
QuestPDF — это .NET open-source библиотека для создания PDF-документов. Предлагает комплексный механизм верстки на основе лаконичного и удобного C# Fluent API.
Позволяет легко генерировать PDF-отчеты и любые документы.
🖥 GitHub
@csharp_ci
6 611
+2
🖥 NSwag — Swagger/OpenAPI-инструментарий для .NET, ASP.NET Core
Это набор инструментов Swagger/OpenAPI 2.0 и 3.0 для .NET, .NET Core, Web API, ASP.NET Core, TypeScript и других платформ.
Предоставляет возможность генерации спецификаций OpenAPI из существующих контроллеров ASP.NET Web API и клиентского кода из этих спецификаций OpenAPI.
NSwag объединяет функциональность Swashbuckle (генерация OpenAPI/Swagger) и AutoRest (генерация клиента) в одном наборе инструментов.
Таким образом можно избежать многих несовместимостей и лучше поддерживать функции, которые не очень хорошо описаны в спецификации OpenAPI или JSON Schema (например, наследование, обработка перечислений и ссылок)
🖥 GitHub
🟡 Страничка NSwag
@csharp_ci
6 611
🚀 Готовься к переменам в мире IT с нашим практическим курсом по Domain Driven Design!
😰 Устал от запутанной инфраструктуры, вперемешку с бизнес логикой? Мы знаем, как это тяжело. Писать тесты становится неприятно и больно, много приходится мокать, тесты получаются огромными, хрупкими.. Но есть решение! Присоединяйся к нашему курсу, где мы разложим все по полочкам за 10 вебинаров, начиная с 13 мая.
🔝 Прими вызов и стань частью передовой волны технологического прогресса. Успей зарегистрироваться уже сейчас https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqvmkXyj&utm_campaign=1
🎓 На нашем курсе ты изучишь:
✅ Основы Domain-Driven Design и его важность для разработчиков.
✅ Создание эффективных и масштабируемых сервисов с использованием DDD.
✅ Применение шаблонов проектирования и принципов DDD для оптимизации кода и повышения производительности.
💡 Зачем тебе этот курс?
🌟 Плюс, ты получишь:
— Новые подходы к разработке, в том числе и использование подходов ядра и слоев в онион-архитектуре.
— Шанс быть первым внедрившим новые методы в отделе.
— Стань Senior Developer или Team Lead.
— Пиши код как профессионал, а не как в учебниках.
— Получи признание в компании и увеличь свою заработную плату.
🌟 Присоединяйся к нам прямо сейчас и стань экспертом в разработке успешных проектов: https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqvmkXyj&utm_campaign=1
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqvmkXyj
6 611
+1
🖥 Phi-3-mini в 30 строках на C# с ONNX Runtime GenAI
В рамках запуска Phi-3 Microsoft выпустила оптимизированные модели ONNX, как подробно описано в статье «ONNX Runtime supports Phi-3 mini models across platforms and devices».
Также модели Phi-3 mini опубликованы на HuggingFace 🤗
Используя всё это, можно легко запустить модель локально всего в нескольких строках C#, как показано в этом гайде.
▶️ Гайд
А вот те самые 30 строк:
using Microsoft.ML.OnnxRuntimeGenAI;
var modelDirectory = args.Length == 2 ? args[1] :
@"C:\git\oss\Phi-3-mini-4k-instruct-onnx\cuda\cuda-int4-rtn-block-32";
using var model = new Model(modelDirectory);
using var tokenizer = new Tokenizer(model);
while (true)
{
Console.Write("Prompt: ");
var line = Console.ReadLine();
if (line == null) { continue; }
using var tokens = tokenizer.Encode(line);
using var generatorParams = new GeneratorParams(model);
generatorParams.SetSearchOption("max_length", 2048);
generatorParams.SetInputSequences(tokens);
using var generator = new Generator(model, generatorParams);
while (!generator.IsDone())
{
generator.ComputeLogits();
generator.GenerateNextToken();
var outputTokens = generator.GetSequence(0);
var newToken = outputTokens.Slice(outputTokens.Length - 1, 1);
var output = tokenizer.Decode(newToken);
Console.Write(output);
}
Console.WriteLine();
}
@csharp_ci6 611
Кто такой архитектор ПО и как им стать?
Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте, что нужно, чтобы претендовать на эту должность, на бесплатном практическом уроке от OTUS.
💯 На вебинаре разберём:
- какую роль выполняет архитектор и зачем он нужен;
- какие бывают архитекторы;
- чем отличается архитектура от проектирования.
📅 Встречаемся 20 мая в 19:00 мск в рамках курса «Software Architect». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS.
Ссылка для регистрации: https://vk.cc/cwwNcD?erid=LjN8KYfrz
6 611
+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
6 611
🖥 Вот пример отличного исследования и дискуссии опытных программистов
https://github.com/dotnet/runtime/issues/101437
#dotNET
@csharp_ci
6 611
+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
6 611
👋 Хотите узнать больше о библиотеке LINQ и расширить свои знания в программировании на С#?
🏃♂️ Приходите на открытый практический урок от OTUS. Спикер — опытный инженер и преподаватель.
✅ На вебинаре вы изучите, как использовать LINQ для построения запросов, как создавать запросы, аналогичные SQL и другие области его применения. Вы изучите функции и синтаксис LINQ для эффективного взаимодействия с данными в коллекциях. Улучшите производительность кода и сможете стать более эффективным программистом.
🚀 Урок пройдет 26 апреля в 20:00 мск и будет приурочен к старту большого курса «C# Developer. Professional». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров!
🎯 Короткий тест и вы получите доступ ко всем открытым урока курса и запись на вебинар: https://clck.ru/3A7abo
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 611
🖥 Реализация словаря на двух статических методах и делегате в C#
⏩Речь пойдет о структуре данных "словарь" (отображение или ассоциативный массив). В программировании мы чаще всего пользуемся шаблоном мышления, который предполагает, что есть данные и функции, которые над этими данными выполняют различные операции. При этом данные могут быть представлены как некоторые одиночные элементы – объекты простых типов (числа, bool’ы, символы и т.п.) и объекты сложных типов, которые мы проектируем сами (Student, Employer, Car, Factory и т.п.), так и коллекции, состоящие из этих одиночных элементов: множества, словари, списки, массивы, стеки и т.п. Коллекции могу существовать в виде обобщенных вариантов, в этом случае предполагается, что тип объектов, которые будут храниться в ней, задается (заранее известен) до компиляции (для статически типизированных языков), это способствует большей производительности и лучшей безопасности.
⏩Если немного поразмышлять над лямбда-исчислением Черча, то в какой-то момент становится понятно, что описанное выше восприятие данных — это всего лишь удобная абстракция, которую мы перетащили из нашего "физического" мира. Например, у нас есть яблоко (это объект данных), и мы над ним с помощью определенной функции (соковыжималка) производим работу, преобразуя его в сок (объект другого типа). А вот само яблоко, мы, как правило, в качестве функции не рассматриваем. В лямба-исчислении всё есть функция – то, над чем выполняются операции и то, что эти операции выполняет. Фон-неймановская архитектура, по дизайну которой построены почти все современные вычислительные системы, также нас толкает к тому, что функции и данные — это одно и тоже: байты в памяти мы можем интерпретировать как данные и как операции для работы над данными, тут другая идея: всё есть данные (биты), а уж как мы их интерпретируем — это наша ответственность.
📎 Реализация
@csharp_ci
6 611
👩💻 Лекции по .NET
Крутой плейлист, который постоянно пополняется свежими видосамипо C# от инженера из Microsoft Amichai Mantinband.
🔗 плейлист
@csharp_1001_notes
6 611
🔥Подборка лучших обучающих каналов для программистов.
➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять
⚡Машинное обучение
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
6 611
🎉 Анонс выпускы .NET 9 Preview 3. 🙌
Узнайте, что нового появилось в библиотеках #dotNET, среде выполнения и SDK, включая:
➖ Библиотеку токенизаторов
➖ Временной интервал.Защита от перегрузок
➖ Более быстрая обработка исключений
... и многое другое.
Получить подробную информацию и ссылки на ресурсы можно здесь
➡️ https://github.com/dotnet/core/discussions/9271
6 611
Бесплатный курс для middle C#-разработчиков от Ozon
На курсе Route 256 инженеры Ozon расскажут про самые современные технологии, а также поделятся своим опытом разработки микросервисов.
Будут лекции, воркшопы, код-ревью домашних заданий и профессиональное комьюнити. Курс рассчитан на разработчиков с опытом от 3 лет, в конце Ozon предлагает офферы лучшим выпускникам.
Чтобы попасть на курс, нужно пройти отборочный контест 5 мая.
Узнать подробности и подать заявку
6 611
🖥 Подписать 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_ci6 611
🖥 Необходимо определить делегат и реализовать метод
⏩Итак, вот задание:
определить делегат
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