TGViewer
Channel Public Channel
C# Development | YeaHub

C# Development | YeaHub

@yeahub_c_sharp_dev

Теория, подготовка к интервью и курсы для C# разработчиков

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

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

Для связи: @ruslan_kuyanets
Subscribers
743
Photos
304
Videos
33
Links
537

Showing posts older than #61 · Back to latest

Older Posts 20 shown
Post #60 137
#полезное
🤓 Работа с документами Office на .NET

Если нужно генерировать, читать или изменять файлы Word, Excel и PowerPoint (форматы .docx, .xlsx, .pptx) без установки Microsoft Office – Open-XML-SDK от Microsoft отлично подойдёт

🟠 Создание и редактирование файлов без COM и Interop
🟠 Извлечение данных из документов (например, текст из Word или ячейки из Excel)
🟠 Высокая производительность при работе с большими файлами
🟠 Поддержка .NET Core и .NET 6+

👉Новости 👉База вопросов
Post #58 110
#видео
🥺 Паттерн Abstract Factory, Абстрактная фабрика, C#, Unity

Видео объясняет порождающий паттерн проектирования "Абстрактная фабрика", начиная с его определения, ключевых аспектов и UML-схемы. Оно показывает, как этот паттерн помогает создавать семейства объектов (например, юниты, UI-элементы), избегая привязки к конкретным классам. Приводятся практические примеры кода: сначала без фабрик, затем с использованием абстрактной фабрики.
📱 Cмотреть видео

👉Новости 👉База вопросов
Post #56 137
#статьи
😊 Процесс компиляции в .NET для C#, включая этапы от написания исходного кода до его выполнения.

Описание охватывает компиляцию в Common Intermediate Language (CIL), хранение в сборке, а также Just-In-Time (JIT) компиляцию в Common Language Runtime (CLR). Также упоминается Ahead-Of-Time (AOT) компиляция для оптимизации производительности.
Читать статью

👉Новости 👉База вопросов
  • 👍 1
Post #55 125
#ЛитКод
Задача: 490. The Maze

В лабиринте есть шар, который может перемещаться по пустым пространствам (представленным как 0) и стенам (представленным как 1). Шар может катиться по пустым пространствам вверх, вниз, влево или вправо, но он не остановится до тех пор, пока не наткнется на стену. Когда шар останавливается, он может выбрать следующее направление.

Дан лабиринт размером m x n, начальная позиция шара и место назначения, где start = [startrow, startcol] и destination = [destinationrow, destinationcol]. Верните true, если шар может остановиться в месте назначения, иначе верните false.
Вы можете предположить, что границы лабиринта представляют собой стены. В приведённом ниже примере они не указаны.

Пример:
Input: maze = [[0,0,1,0,0],[0,0,0,0,0],[0,0,0,1,0],[1,1,0,1,1],[0,0,0,0,0]], start = [0,4], destination = [4,4]
Output: true
Explanation: One possible way is : left -> down -> left -> down -> right -> down -> right.


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

1⃣Инициализация и подготовка данных
Определите количество строк и столбцов в лабиринте (m и n). Создайте 2D массив visit для отслеживания посещённых ячеек. Запустите DFS (глубокий поиск) с начальной позиции.

2⃣DFS обход
Если текущая ячейка уже посещена, верните false. Если текущая ячейка совпадает с ячейкой назначения, верните true. Отметьте текущую ячейку как посещённую. Переберите все четыре направления движения (вверх, вправо, вниз, влево): продвигайтесь в выбранном направлении до тех пор, пока не столкнётесь со стеной или границей. После остановки вызовите DFS для новой позиции.

3⃣Результат
Если любой вызов DFS возвращает true, завершите выполнение и верните true. Если ни один путь не приводит к цели, верните false.

😎 Решение:
public class Solution {
public bool HasPath(int[][] maze, int[] start, int[] destination) {
int m = maze.Length, n = maze[0].Length;
bool[,] visit = new bool[m, n];
return Dfs(m, n, maze, start, destination, visit);
}

private bool Dfs(int m, int n, int[][] maze, int[] curr, int[] destination, bool[,] visit) {
if (visit[curr[0], curr[1]]) return false;
if (curr.SequenceEqual(destination)) return true;
visit[curr[0], curr[1]] = true;
int[][] directions = new int[][] { new int[] {-1, 0}, new int[] {1, 0}, new int[] {0, -1}, new int[] {0, 1} };
foreach (var dir in directions) {
int r = curr[0], c = curr[1];
while (r >= 0 && r < m && c >= 0 && c < n && maze[r][c] == 0) {
r += dir[0];
c += dir[1];
}
int[] newCurr = new int[] { r - dir[0], c - dir[1] };
if (Dfs(m, n, maze, newCurr, destination, visit)) return true;
}
return false;
}
}


👉Новости 👉База вопросов
  • 👍 2
Post #54 141
#полезное
👍 Планирование фоновых задач в .NET с помощью Quartz

Видео посвящено настройке и использованию Quartz.NET в .NET для создания фоновых задач. Рассматриваются внедрение зависимостей, конфигурация Quartz, создание и планирование заданий с IJob, настройка ожидания завершения задач, предотвращение одновременного выполнения с DisallowConcurrentExecution и использование IConfigureOptions для управления фоновыми заданиями.
📱 Cмотреть видео

👉Новости 👉База вопросов
Post #53 135
#Собес
🤔 Что такое свойства (Properties) в С#?

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

👉Новости 👉Платформа
  • 👍 1
Post #52 160
#полезное
👍 Примеры .NET DateOnly и TimeOnly

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

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

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

👉Новости 👉База вопросов
  • 👍 1
Post #51 135
#полезное
😬 Это библиотека для управления авторизацией и правами доступа в ASP.NET Core.

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

👉Новости 👉База вопросов
  • 👍 1
Post #50 164
#видео
🤯 Полный курс. От нуля и до создания игры на Unity и C# 2024

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

👉Новости 👉База вопросов
Post #49 137
#Собес
🤔 В чем разница между ключевыми словами ref и out?

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

👉Новости 👉Платформа
  • ❤ 4
  • 🔥 1
Post #48 149
#полезное
😊 ASPNET Core Identity

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

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

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

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

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

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

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

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

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

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

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

👉Новости 👉База вопросов
  • 👍 3
Post #47 116
#ЛитКод
Задача: 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());
}
}


👉Новости 👉База вопросов
  • 👍 1
Post #46 160
#статьи
🥺 Подробный план упражнений по освоению многозадачности и параллельного программирования на C#

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

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

👉Новости 👉База вопросов
  • ❤ 2
Post #45 167
#Собес
🤔 Что такое enum в С#?

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

👉Новости 👉Платформа
  • ❤ 2
Post #44 196
#полезное
🤯 BlazorToolkit

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

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

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

👉Новости 👉База вопросов
  • 👍 2
Post #43 174
🥺 MediatR + CQRS - использование паттернов для разделения запросов и модификаций

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

👉Новости 👉База вопросов
Post #42 177
#статьи
👍 Изучите SignalR в .NET Core для общения в чате в реальном времени.

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

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

👉Новости 👉Платформа
Post #41 166
#Собес
🤔 В чем разница между структурой и классом в С#?

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

👉Новости 👉Платформа
  • 👍 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →