C# 1001 notes
Открыть в Telegram
Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp
Больше6 683
Подписчики
-424 часа
-47 дней
+3130 дней
Архив постов
6 682
🖥 CSharpier — форматтер C# кода
—
dotnet tool install csharpier -g
CSharpier разбирает код при помощи Roslyn и потом собирает его заново, используя свои собственные правила. Процесс сборки был вдохновлён Prettier, но со временем довольно сильно поменялся.
Особенности CSharpier:
— это реально быстрый форматтер
— интегрируется с основными IDE С#
— работает с C# <= 12
— поддерживает валидацию вносимых изменений
🖥 GitHub
🟡 Доки
@csharp_1001_notes6 682
Что нужно C#-разработчику для счастья?
Удаленка, выстроенные CI/CD, сильное комьюнити... Все это есть в Контуре, не хватает только вас 🫶
Приглашаем в команду C#-разработчиков с опытом работы с highload-сервисами от 3 лет, чтобы вместе автоматизировать рутину бизнеса. Мы развиваем 70+ продуктов: от стартапов вроде Толка до гигантов, таких как Диадок или Экстерн.
Наш стек:
— Бэкенд: C# (.NET Core, .NET 5 и выше, ASP.NET MVC / Web API)
— Хранилища: MS SQL, PostgreSQL, Cassandra, MongoDB.
Почему у нас хорошо:
👉С#-разработчики — представители самого массового стека в компании. Всегда есть, с кем поделиться и чему научиться.
👉Можем стажироваться в других командах и менять продукт, наращивая свой инженерный опыт.
👉Становимся наставниками, преподаем в вузах. На это выделяется рабочее время.
👉Получаем приятные бонусы крупной аккредитованной IT-компании: ДМС, частичную оплату питания и компенсацию спорта.
Больше о работе и процессе найма в Контур по ссылке, откликайтесь!
Реклама. АО «ПФ «СКБ Контур» ИНН 6663003127. Erid:2SDnjejnpCZ
6 682
+1
🖥 Mapperly — .NET-кодогенератор для создания отображений, вдохновлён MapStruct
—
dotnet add package Riok.Mapperly
Mapperly значительно упрощает реализацию отображений объектов на объекты. Необходимо только определить сигнатуру методов отображения.
🖥 GitHub
🟡 Доки
@csharp_ci6 682
🖥 AntDesign.Templates — набор компонентов UI корпоративного класса, основанный на Ant Design и Blazor WebAssembly
—
dotnet new --install AntDesign.Templates
Фишки AntDesign:
— набор высококачественных компонентов Blazor из коробки.
— поддержка взаимодействия с событиями UI на основе WebAssembly на стороне клиента и SignalR на стороне сервера
— поддержка прогрессивных веб-приложений (PWA)
— упрощает локализацию за счёт поддержки десятков языков
— бесшовная интеграция с существующими проектами ASP.NET Core MVC и Razor Pages
🖥 GitHub
🟡 Доки
@csharp_ci6 682
Блокчейн TON ищет талантливых разработчиков!
Стартует масштабный хакатон “The Open League Hackathon” с призовым пулом $2,000,000 от команды блокчейна TON.
В поддержку хакатона все Web3-энтузиасты приглашаются на трёхдневные оффлайн встречи для нетворкинга в 13 городах мира:
📍Прага, Берлин, Киев, Варшава, Тбилиси, Белград, Сеул, Тайбэй (Тайвань), Гуруграм (Индия), Гонг-Конг, Минск, Москва и Санкт-Петербург.
Первые встречи начнутся уже 24 мая. Ищи свой город и регистрируйся здесь 👈 тык
Что вас ждет:
— 3 дня нетворка, лекций, конкурсов и работы над собственными проектами с поддержкой представителей TON Foundation и команд экосистемы TON
— Призовые $5.000 для трех лучших проектов на каждом оффлайн ивенте + много мерча и других бонусов
Не упусти возможность представить свое приложение 900 миллионам активных пользователей Telegram вместе с TON.
Регистрируйся — https://society.ton.org/activities/open-league
6 682
+2
🖥 Репозиторий с примерами для ML.NET, кроссплатформенного фреймворка машинного обучения для .NET
В этом репозитории GitHub приведены примеры, которые помогут начать работу с ML.NET и узнать, как внедрить ML в существующие и новые приложения .NET.
В репозитории есть 2 типа примеров/приложений:
— Прототипы / MVP, обычно реализованные в виде простых консольных приложений
— Полноценные приложения: примеры веб- и нативных приложений с моделями машинного обучения на основе ML.NET
🖥 GitHub
🟡 Страничка ML.NET
@csharp_1001_notes
6 682
💥Программист, поработай руками!
👉Узнайте больше об электронике на бесплатном уроке онлайн-курса «Электроника и электротехника» - «Разработка и программирование усилителя класса D на Arduino»: регистрация
На бесплатном уроке вы:
- получите знания о том, как с помощью платформы Arduino создать усилитель класса D
- узнаете теоретические основы предметной области, пошаговый процесс выбора компонентов и написания кода для управления усилениями.
Урок подходит:
- Техническим специалистам, желающим реализовать проекты с использованием аудиотехнологий
- Студентам технических специальностей, ищущим практического опыта в связке программирования и электроники
🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!
erid: LjN8K5gLV
6 682
+1
🖥 SimplCommerce — простая, кроссплатформенная, модульная eCommerce система на .NET
Быстрый старт с помощью Docker:
docker run -p 5000:80 simplcommerce/ci-build
🖥 GitHub
🟡 Демо готового проекта с использованием SimplCommerce
@csharp_ci6 682
🖥 Harmony — позвляет исправлять методы .NET прямо в рантайме
Harmony — это библиотека для исправления, замены и декорирования методов .NET и Mono во время выполнения.
Harmony предоставляет высокоуровневый подход к изменению функциональности в C#-приложениях.
🖥 GitHub
@csharp_ci
6 682
🖥 QuestPDF — генерация PDF в .NET
QuestPDF — это .NET open-source библиотека для создания PDF-документов. Предлагает комплексный механизм верстки на основе лаконичного и удобного C# Fluent API.
Позволяет легко генерировать PDF-отчеты и любые документы.
🖥 GitHub
@csharp_ci
6 682
+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 682
🚀 Готовься к переменам в мире 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 682
+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 682
Кто такой архитектор ПО и как им стать?
Архитектор ПО — одна из самых востребованных позиций на современном рынке IT. Узнайте, что нужно, чтобы претендовать на эту должность, на бесплатном практическом уроке от OTUS.
💯 На вебинаре разберём:
- какую роль выполняет архитектор и зачем он нужен;
- какие бывают архитекторы;
- чем отличается архитектура от проектирования.
📅 Встречаемся 20 мая в 19:00 мск в рамках курса «Software Architect». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS.
Ссылка для регистрации: https://vk.cc/cwwNcD?erid=LjN8KYfrz
6 682
+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 682
🖥 Вот пример отличного исследования и дискуссии опытных программистов
https://github.com/dotnet/runtime/issues/101437
#dotNET
@csharp_ci
6 682
+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 682
👋 Хотите узнать больше о библиотеке LINQ и расширить свои знания в программировании на С#?
🏃♂️ Приходите на открытый практический урок от OTUS. Спикер — опытный инженер и преподаватель.
✅ На вебинаре вы изучите, как использовать LINQ для построения запросов, как создавать запросы, аналогичные SQL и другие области его применения. Вы изучите функции и синтаксис LINQ для эффективного взаимодействия с данными в коллекциях. Улучшите производительность кода и сможете стать более эффективным программистом.
🚀 Урок пройдет 26 апреля в 20:00 мск и будет приурочен к старту большого курса «C# Developer. Professional». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров!
🎯 Короткий тест и вы получите доступ ко всем открытым урока курса и запись на вебинар: https://clck.ru/3A7abo
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 682
🖥 Реализация словаря на двух статических методах и делегате в C#
⏩Речь пойдет о структуре данных "словарь" (отображение или ассоциативный массив). В программировании мы чаще всего пользуемся шаблоном мышления, который предполагает, что есть данные и функции, которые над этими данными выполняют различные операции. При этом данные могут быть представлены как некоторые одиночные элементы – объекты простых типов (числа, bool’ы, символы и т.п.) и объекты сложных типов, которые мы проектируем сами (Student, Employer, Car, Factory и т.п.), так и коллекции, состоящие из этих одиночных элементов: множества, словари, списки, массивы, стеки и т.п. Коллекции могу существовать в виде обобщенных вариантов, в этом случае предполагается, что тип объектов, которые будут храниться в ней, задается (заранее известен) до компиляции (для статически типизированных языков), это способствует большей производительности и лучшей безопасности.
⏩Если немного поразмышлять над лямбда-исчислением Черча, то в какой-то момент становится понятно, что описанное выше восприятие данных — это всего лишь удобная абстракция, которую мы перетащили из нашего "физического" мира. Например, у нас есть яблоко (это объект данных), и мы над ним с помощью определенной функции (соковыжималка) производим работу, преобразуя его в сок (объект другого типа). А вот само яблоко, мы, как правило, в качестве функции не рассматриваем. В лямба-исчислении всё есть функция – то, над чем выполняются операции и то, что эти операции выполняет. Фон-неймановская архитектура, по дизайну которой построены почти все современные вычислительные системы, также нас толкает к тому, что функции и данные — это одно и тоже: байты в памяти мы можем интерпретировать как данные и как операции для работы над данными, тут другая идея: всё есть данные (биты), а уж как мы их интерпретируем — это наша ответственность.
📎 Реализация
@csharp_ci
6 682
👩💻 Лекции по .NET
Крутой плейлист, который постоянно пополняется свежими видосамипо C# от инженера из Microsoft Amichai Mantinband.
🔗 плейлист
@csharp_1001_notes
