C# (C Sharp) programming
18.7K subscribers
761 photos
38 videos
8 files
676 links
По всем вопросам- @haarrp

C# - обучающий канал Senior C# разработчика.

@ai_machinelearning_big_data - Machine learning

@itchannels_telegram - 🔥лучшие ит-каналы

@csharp_ci - C# академия

@pythonlbooks- книги📚

Реестр РКН: https://clck.ru/3Fk3kb
Download Telegram
В какой строке возникнет первое исключение DivideByZeroException?
Anonymous Quiz
37%
#1
22%
#2
29%
#3
11%
Ни в одной
🖥 Факт дня — семафоры в C#

Семафоры позволяют ограничить количество потоков, которые имеют доступ к определенным ресурсам. В .NET семафоры представлены классом Semaphore.

Для создания семафора применяется один из конструкторов класса Semaphore:
🟡Semaphore (int initialCount, int maximumCount)
параметр initialCount задает начальное количество потоков, а maximumCount — максимальное количество потоков, которые имеют доступ к общим ресурсам: initialCount — изначальное доступное количество свободных мест, maximumCount — вместимость.

🟡Semaphore (int initialCount, int maximumCount, string? name) в дополнение задает имя семафора

🟡Semaphore (int initialCount, int maximumCount, string? name, out bool createdNew): последний параметр — createdNew при значении true указывает, что новый семафор был успешно создан. Если этот параметр равен false, то семафор с указанным именем уже существует

Для работы с потоками класс Semaphore имеет 2 основных метода:
WaitOne() ожидает получения свободного места в семафоре
Release() освобождает место в семафоре

В отличие от lock (Monitor) и Mutex, у Semaphore нет «владельца» — он не зависит от потока. Любой поток может вызвать Release на семафоре, тогда как с Mutex и блокировкой только поток, получивший блокировку, может ее освободить.
// запускаем пять потоков
for (int i = 1; i < 6; i++)
{
Reader reader = new Reader(i);
}
class Reader
{
// создаем семафор
static Semaphore sem = new Semaphore(3, 3);
Thread myThread;
int count = 3;// счетчик чтения

public Reader(int i)
{
myThread = new Thread(Read);
myThread.Name = $"Читатель {i}";
myThread.Start();
}

public void Read()
{
while (count > 0)
{
sem.WaitOne(); // ожидаем, когда освободиться место

Console.WriteLine($"{Thread.CurrentThread.Name} входит в библиотеку");

Console.WriteLine($"{Thread.CurrentThread.Name} читает");
Thread.Sleep(1000);

Console.WriteLine($"{Thread.CurrentThread.Name} покидает библиотеку");

sem.Release(); // освобождаем место

count--;
Thread.Sleep(1000);
}
}
}


@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять

Машинное обучение

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

💥 Бесплатный Chatgpt бот
🖥 Развертывание ASP.NET Core приложений на Ubuntu Linux

Здесь мы рассмотрим последовательность действий для развертывания ASP.NET Core сервиса в Ubuntu Linux. От создания и адаптации приложения, до его развертывания и запуска.
Разберём вопросы регистрации репозиториев Microsoft, установки Apache и .NET, настройки реверс-прокси и некоторой диагностики.

▶️ Начинаем

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 AutoFixture — для быстрого написания модульных тестов

AutoFixture — это библиотека .NET, основная цель которой — позволить разработчикам сосредоточиться на том, что тестируется, а не на том, как настроить сценарий тестирования.

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

🖥 GitHub
🟡 Доки

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Amvera добавила поддержку Go, Ruby и С# (dotnet и mono) окружений

🟡Amvera Cloud — облако для ботов, сайтов и других IT-приложений c функционалом простого деплоя через Git и интерфейс.

🟡C апреля 2024 г. в Amvera Cloud доступна встроенная поддержка для развертывания С# (dotnet и mono) окружений к текущим Python, Java, Node.JS и Docker.
То есть теперь, если ваше приложение на C# (или Golang и Ruby), не нужно писать Dockerfile, можно просто задать конфигурацию в интерфейсе и загрузить файлы проекта через push в Git-репозиторий или интерфейс личного кабинета.
После этого развертывание, установка зависимостей и настройка произойдут автоматически.

📎 Подробнее

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Xeno RAT опубликован на GitHub

Недавно на GitHub был опубликован новый продвинутый инструмент для удалённого доступа (RAT) под названием Xeno RAT. Этот троян, написанный на языке программирования C# и совместимый с операционными системами Windows 10 и Windows 11, предоставляет «обширный набор функций для удалённого управления системой», согласно заявлениям разработчика под псевдонимом moom825.
В функционал Xeno RAT входит обратный прокси-сервер SOCKS5, возможность записи аудио в реальном времени, а также интеграция модуля скрытого виртуального сетевого вычисления (hVNC), подобного DarkVNC, который позволяет злоумышленникам получать удалённый доступ к заражённому компьютеру.

Разработчик отдельно отметил «весёлые» функции своего инструмента, такие как «синий экран смерти» по запросу, отключение монитора удалённого хоста, открытие/закрытие лотка для компакт-дисков и т.п.
Разработчик утверждает, что Xeno RAT был разработан исключительно в образовательных целях.

А что, неплохая идея для пет-проекта на C# ¯\_(ツ)_/¯
🖥 GitHub

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
#ПятничныйКвиз #карательныйсишарп



Объяснение:
Необходимо вспомнить, что метод GetEnumerator для List<T> возвращает структуру. А значит, при каждом обращении к методу x.Items.MoveNext() мы будем работать не с оригинальным перечислителем, а с его копией, не меняя при этом внутреннее состояние исходного енумератора (а именно, его текущий элемент x.Items.Current). Таким образом, в условии цикла ничего полезного не происходит, текущий элемент на веки останется нулём.

@csharp_ci
🖥 В CodeQL 2.17.1 внесли автоисправления на базе AI для C#

CodeQL — это механизм статического анализа, который обеспечивает сканирование кода на GitHub.

На днях была выпущена версия CodeQL 2.17.1; теперь сканирование кода CodeQL поддерживает автоматические предложения исправлений для предупреждений C# о запросах на включение на основе Copilot. Инструмент автоматически включается для всех частных репозиториев всех клиентов GitHub Advanced Security. Впервые автоисправление охватывает почти все запросы безопасности для языка: поддерживается 49 запросов для C# из наших пакетов по умолчанию и расширенных пакетов.

📎 Подробнее

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 LangChain .NET

Имплементация LangChain на C# для создания приложений с LLM

🖥 GitHub
🟡 Wiki

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Roslynator — это набор инструментов для анализа C# кода, созданный на основе Roslyn

dotnet tool install -g roslynator.dotnet.cli

Roslynator можно использовать для модульного тестирования анализаторов, рефакторинга и исправления кода.
Фреймворк распространяется в виде пакета NuGet.

О том, как использовать фреймворк, можно узнать из реальных примеров использования в репо Roslynator:
— Тесты анализаторов здесь, здесь и здесь
— Тесты рефакторингов здесь
— Тесты исправлений диагностики компилятора здесь

🖥 GitHub

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Релиз Bulk Crap Uninstaller 5.8 — деинсталятора приложений для Windows на C#

Состоялся релиз инструментария Bulk Crap Uninstaller 5.8. Это бесплатный открытый деинсталятор приложений для Windows 7/10/11, а также для Vista и XP. Предыдущий стабильный выпуск Bulk Crap Uninstaller 5.7 состоялся в сентябре 2023 года.

Исходный код проекта написан на C# и опубликован на GitHub под лицензией Apache License 2.0

🖥 GitHub

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 ASP.NET Boilerplate — C#-фреймворк для веб-приложений

ASP.NET Boilerplate (ABP) — это фреймворк общего назначения, специально разработанный для новых современных веб-приложений.
Функциональность ABP можно легко расширить — фреймворк предоставляет инфраструктуру для создания собственных модулей.

ASP.NET Boilerplate работает с последними версиями ASP.NET Core и EF Core, но также поддерживает ASP.NET MVC 5.x и EF 6.x.

🖥 GitHub
🟡 Доки

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Flow Launcher — инструмент на C# для быстрого поиска файлов, приложений, сайтов и не только

winget install "Flow Launcher"

Flow Launcher предназначен для поиска всего: приложений, файлов, закладок, видео YouTube, и многого другого.
Имеются плагины от комьюнити, также можно легко написать свои.
Работает под Windows

🖥 GitHub

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM