C# Development | YeaHub
742 subscribers
304 photos
33 videos
1 file
537 links
Теория, подготовка к интервью и курсы для C# разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес
🤔 Что такое Common Language Runtime (CLR)?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Media is too big
VIEW IN TELEGRAM
#статьи
🥱 Процесс создания приложения на платформе .NET MAUI для Windows, способного сканировать штрихкоды с помощью камеры

🚩Автор демонстрирует, как использовать Windows Media API для захвата видеопотока с USB-камеры и интеграции с Dynamsoft Barcode Reader для распознавания штрихкодов. Проект включает две страницы: одну для загрузки изображений и другую для работы с живым видеопотоком с камеры, отображая результаты сканирования над изображением или видео.
Читать

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
#полезное
😊 JsonStringEnum
MemberName

В версии 9 библиотеки System.Text.Json, которая является стандартным инструментом для сериализации и десериализации JSON в .NET, был добавлен новый атрибут под названием JsonStringEnumMemberName.

Этот атрибут расширяет возможности работы с перечислениями (enum) при преобразовании их в JSON и обратно.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👍 Бесплатная, с открытым исходным кодом CRM для разработчиков .NET и солопредпринимателей!

Этот проект построен с использованием технологий, таких как ASP.NET Core 9, Clean Architecture, CQRS и MediatR. Он предоставляет возможности для управления клиентами, кампаниями и командами без дополнительных сборов, а также включает полный RESTful API.
Ознакомиться

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес
🤔 Что такое наследование? Поддерживает ли С# множественное наследование?

Наследование — это механизм в С#, позволяющий одному классу наследовать
характеристики другого. С# не поддерживает множественное наследование для
классов, но поддерживает его для интерфейсов.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#ЛитКод
Задача: 364. Nested List Weight Sum II

Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.

Глубина целого числа — это количество списков, внутри которых оно находится. Например, вложенный список [1,[2,2],[[3],2],1] имеет значение каждого целого числа, установленное равным его глубине. Пусть maxDepth будет максимальной глубиной любого целого числа.
Вес целого числа определяется как maxDepth - (глубина целого числа) + 1.

Верните сумму каждого целого числа в nestedList, умноженную на его вес.

Пример:
Input: nestedList = [[1,1],2,[1,1]]
Output: 8
Explanation: Four 1's with a weight of 1, one 2 with a weight of 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8


👨‍💻 Алгоритм:

1⃣Инициализировать первый уровень BFS-дерева, добавив все элементы из входного nestedList в очередь.

2⃣Для каждого уровня извлекать передний элемент из очереди. Если это список, то добавить его элементы в очередь. В противном случае обновить значения sumOfElements, maxDepth и sumOfProducts.

3⃣Когда очередь станет пустой, вернуть значение (maxDepth + 1) * sumOfElements - sumOfProducts.

😎 Решение:
using System;
using System.Collections.Generic;

public class Solution {
public int DepthSumInverse(IList<NestedInteger> nestedList) {
var queue = new Queue<NestedInteger>(nestedList);
int depth = 1, maxDepth = 0, sumOfElements = 0, sumOfProducts = 0;

while (queue.Count > 0) {
int size = queue.Count;
maxDepth = Math.Max(maxDepth, depth);

for (int i = 0; i < size; i++) {
var nested = queue.Dequeue();

if (nested.IsInteger()) {
int value = nested.GetInteger();
sumOfElements += value;
sumOfProducts += value * depth;
} else {
foreach (var ni in nested.GetList()) queue.Enqueue(ni);
}
}
depth++;
}
return (maxDepth + 1) * sumOfElements - sumOfProducts;
}
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#новости
😊 Версия 2.3.0 шаблонов Auth0 для .NET уже вышла!

🟠Добавлена поддержка .NET 9.0
🟠Minimal API теперь используется по умолчанию для Web API
🟠Добавлена поддержка параметра 'controllers' в Web API
🟠Исправлена ошибка выхода из системы в шаблонах Blazor

Теперь можно использовать актуальные шаблоны с последними возможностями .NET!
Ознакомиться

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#видео
😬 Как запустить проект? ASP.NET Core + React + NGINX + Docker Compose

Видео объясняет процесс создания и развертывания веб-приложения с использованием API на FastAPI, клиентской части на React и проксирования через Nginx, с контейнеризацией всех компонентов в Docker.
📱 Cмотреть видео

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес
🤔 В чем разница между структурой и классом в С#?

Класс и структура в С # похожи, но имеют ключевые различия. Класс - это ссылка на объект, а структура - это значение. Классы обычно используются для более сложных объектов, а структуры - для небольших, легких обьектов.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
#статьи
👍 Изучите SignalR в .NET Core для общения в чате в реальном времени.

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

Также затрагиваются вопросы масштабирования и использования IHubContext для отправки событий. Приводятся примеры кода для каждой стадии.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🥺 MediatR + CQRS - использование паттернов для разделения запросов и модификаций

В видео объясняются паттерны проектирования "Медиатор" и "CQRS" (разделение операций чтения и записи), а также их использование в разработке веб-приложения для заметок с помощью библиотеки MediatR.
📱 Cмотреть видео

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 BlazorToolkit

Это набор инструментов для разработки на Blazor.

Он включает утилиты для упрощения сетевых операций, такие как вызовы REST API, сервисы для модульного кода и инструменты для валидации форм.

Этот набор доступен через NuGet и лицензирован по MIT License.
Смотреть тут

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#Собес
🤔 Что такое enum в С#?

Enum (перечисление) в С# - это тип данных, который позволяет задавать именованные целочисленные константы. Это облегчает работу с фиксированными наборами значений, такими как дни недели или направления.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#статьи
🥺 Подробный план упражнений по освоению многозадачности и параллельного программирования на C#

Он охватывает основы, такие как многопоточность и синхронизация, а затем переход к более сложным темам, таким как асинхронное программирование, Parallel LINQ и шаблоны "производитель-потребитель".

Каждый этап включает примеры кода и практические задачи для закрепления знаний.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#ЛитКод
Задача: 767. Reorganize String

Дана строка s, переставьте символы строки s так, чтобы любые два соседних символа не были одинаковыми.

Верните любую возможную перестановку строки s или верните "", если это невозможно.

Пример:
Input: s = "aab"
Output: "aba"


👨‍💻 Алгоритм:

1⃣Инициализируйте пустой список ans для хранения переставленных символов. Создайте приоритетную очередь pq, используя структуру данных кучи. Каждый элемент в pq — это кортеж, содержащий количество символов и сам символ. Приоритетная очередь упорядочена так, что элементы с большим количеством имеют более высокий приоритет.

2⃣Извлеките элемент с наивысшим приоритетом из pq. Присвойте его количество и символ переменным count_first и char_first соответственно. Если ans пуст или текущий символ char_first отличается от последнего символа в ans, добавьте char_first в ans. Если количество char_first не равно нулю, уменьшите его на один. Если обновленное количество больше нуля, поместите его обратно в pq. Перейдите к следующей итерации.

3⃣В противном случае, если char_first совпадает с последним символом в ans, нужно выбрать другой символ. Если pq пуста, верните пустую строку, так как переставить символы невозможно. Извлеките следующий элемент из pq, присвоив его количество и символ переменным count_second и char_second соответственно. Добавьте char_second в ans. Если количество char_second не равно нулю, уменьшите его на один. Если обновленное количество больше нуля, поместите его обратно в pq. Наконец, поместите оригинальный char_first обратно в pq. Верните переставленные символы как строку, объединив элементы в ans.

😎 Решение:
using System;
using System.Collections.Generic;

public class Solution {
public string ReorganizeString(string s) {
int[] charCounts = new int[26];
foreach (char c in s) {
charCounts[c - 'a']++;
}

var pq = new PriorityQueue<int[], int>(Comparer<int>.Create((a, b) => b.CompareTo(a)));
for (int i = 0; i < 26; i++) {
if (charCounts[i] > 0) {
pq.Enqueue(new int[] { charCounts[i], i + 'a' }, charCounts[i]);
}
}

var result = new List<char>();
while (pq.Count > 0) {
var first = pq.Dequeue();
if (result.Count == 0 || first[1] != result[^1]) {
result.Add((char)first[1]);
if (--first[0] > 0) {
pq.Enqueue(first, first[0]);
}
} else {
if (pq.Count == 0) {
return "";
}
var second = pq.Dequeue();
result.Add((char)second[1]);
if (--second[0] > 0) {
pq.Enqueue(second, second[0]);
}
pq.Enqueue(first, first[0]);
}
}

return new string(result.ToArray());
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😊 ASPNET Core Identity

Не реализуйте собственную аутентификацию, если вы разработчик на .NET.

ASPNET Core Identity может быть всем, что вам нужно.

Identity предоставляет вам

🟠Аутентификацию
🟠Управление пользователями
🟠Вход, выход, обновление токенов
🟠Роли и утверждения для авторизации
🟠Внешние провайдеры аутентификации (Google, Meta)

Это легко настроить в .NET приложении.

Вы полностью контролируете все данные в своей базе данных.

Identity имеет всё, что нужно для простых приложений.

Один недостаток — его сложно использовать в микросервисах.

Но это можно решить с помощью собственной реализации JWT.

Система аутентификации в .NET достаточно гибкая.

Вот как можно реализовать RBAC: клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#Собес
🤔 В чем разница между ключевыми словами ref и out?

ref и out оба используются для передачи параметров по ссылке, но ref требует,
чтобы параметр был инициализирован перед передачей, а out используется для
передачи параметров, которые будут инициализированы в методе.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥1
Media is too big
VIEW IN TELEGRAM
#видео
🤯 Полный курс. От нуля и до создания игры на Unity и C# 2024

Рассматриваются интерфейс Unity, работа с объектами и их компонентами, основы программирования (переменные, операторы, циклы, корутины), использование префабов и GetComponent, механики перемещения и взаимодействия (Input, стрельба, камера, анимация), а также создание врагов, эффектов, интерфейса и внутриигрового магазина.
📱 Cмотреть видео

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Это библиотека для управления авторизацией и правами доступа в ASP.NET Core.

Она поддерживает настраиваемые роли, multi-tenant архитектуру, обновляемые JWT-токены и гибкие схемы аутентификации. Администраторы могут менять разрешения ролей без перезапуска, а данные хранятся с шардированием или в общей базе.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👍 Примеры .NET DateOnly и TimeOnly

Мне очень нравятся эти новые типы, добавленные в dotnet 6.

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

До .NET 6 мы часто просто использовали DateTime и отбрасывали часть с временем для таких переменных, как DateOfBirth или OrderDate.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес
🤔 Что такое свойства (Properties) в С#?

Свойства в С # — это специальные члены класса, которые позволяют гибко читать, записывать или вычислять значение приватного поля. Свойства используют методы доступа ("get" и "set"), которые скрывают внутреннюю реализацию и обеспечивают инкапсуляцию.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1