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

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

@ai_machinelearning_big_data - Machine learning

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

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

@pythonlbooks- книги📚

Реестр РКН: https://clck.ru/3Fk3kb
Download Telegram
🎮 Обзор Top-3 Open Source игр на C# и ошибок в их коде

В мире много хороших игр, но совсем немногие открывают исходный код. В этой статье мы познакомимся, на мой взгляд, с тремя лучшими Open Source играми на C# и разберём наиболее интересные ошибки, найденные в их исходном коде.

Читат статью

@csharp_ci
📌Telegram API и библиотека TDLib для .NET платформ

В Telegram представлено два различных вида API: Telegram Bot API (стандартные боты с пометкой "бот") и Telegram API (клиенты и юзерботы, которые обладают более расширенным функционалом, чем просто боты).

Сфокусируемся на последнем виде и рассмотрим, как взаимодействовать с Telegram API, какие инструменты требуются для написания кода своего юзербота на языке C#, как установить эти инструменты правильно и как их использовать.

Сборка и подключение библиотеки TDLib

TDLib имеет следующие зависимости, т. е. на вашем компьютере это должно быть:

- компилятор C++14 (Visual Studio имеет свой компилятор MSVC);
- Библиотека OpenSSL;
- Библиотека zlib;
- gperf (только сборка);
- CMake (3.0.2+, только сборка).

Для установки необходимых зависимостей, выполните следующие команды в командной строке (обратите внимание, что требуется git):
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
git checkout 1b1ae50e1a69f7c659bd7d731e80b358d21c86ad
.\bootstrap-vcpkg.bat
.\vcpkg.exe install gperf:x64-windows gperf:x86-windows openssl:x64-windows openssl:x86-windows zlib:x64-windows zlib:x86-windows


Далее скачиваем саму библиотеку и собираем её для .NET-проектов:

1. Переходим в папку (в командной строке) /example/csharp, т.е. туда, где будем собирать нашу библиотеку

2. Создаём папку, куда будем собирать библиотеку, и переходим в неё:
mkdir build
cd build


3. Настраиваем сборку библиотеки в зависимости от разрядности системы (x32 или x64); где "...path to vcpkg...", указываем путь до скачанного ранее vcpkg:

Для x32:
cmake -A Win32 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=<path to
vcpkg>/scripts/buildsystems/vcpkg.cmake ../../..
Для x64:

cmake -A x64 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=<path to
vcpkg>/scripts/buildsystems/vcpkg.cmake ../../..


4. Собираем библиотеку в зависимости от требуемой конфигурации (Release или Debug):

Для Release:
cmake --build . --config Release
Для Debug:

cmake --build . --config Debug



Готово! Теперь в папке build/Release или build/Debug (в зависимости от того, что вы выбрали) находится готовый файл Telegram.Td.dll, который и нужно использовать в своем проекте.

Продолжение

@csharp_ci
​​vpngate-with-proxy

Полезная библиотека VPN GATE для GNU/Linux с поддержкой прокси.

▫️Позволяет подключаться к публичным серверам vpn по адресу https://www.vpngate.net/en/ напрямую или через прокси
▫️Автоматическое настройка DNS для устранения утечек dns
▫️Автоматическая фильтрация не работающих vpn
▫️Может запускать пользовательский скрипты

▪️GitHub

https://t.iss.one/csharp_ci
virtual-auto-clicker - Your idle success

Это простой, но эффективный кликер, в виде консольного приложения, реализованного на C# .
При запуске кода, кликер, позволяет свободно пользоваться компьютером.

Github

@csharp_ci
Введение в gRPC
Первый проект с .NET CLI


gRPC представляет фреймворк, который использует протокол RPC (Remote Procedure Call) для обмена сообщениями между клиентом и сервером. Цель фреймворка состоит в том, чтобы обеспечить высокую производительность в тех условиях, где это особенно критично, например, при интенсивном обмене информацией в режиме реального времени.

gRPC не является частью ASP.NET Core или .NET, более того gRPC представляет технологию, которая не привязана к конкретному языку, поэтому данную технологию можно использовать и в рамках приложения на C#.

gRPC имеет следующие преимущества:

Легковесность и высокая производительность

Независимость от конкретного языка программирования

Доступные инструменты для работы со многими распространнеными языками программирования

Поддержка клиентских, серверных и двунаправленных потоковых вызовов

Уменьшение нагрузки сети за счет бинарной сериализации

Если говорить непосредственно о gRPC в .NET, сервисы ASP.NET Core gRPC можно развертывать на всех трех основных операционных системах: Windows, Linux, MacOS. Кроме того, сервисы gRPC поддерживаются всеми стандартными веб-серверами ASP.NET Core: Kestrel, IIS, HTTP.sys.

Для создания проектов на C# для gRPC .NET CLI предоставляет специальный шаблон grpc. Итак, для создания проекта для gRPC сначала определим каталог. Допустим, он будет называться GreeterServiceApp. Перейдем к этой папке в консоли с помощью команды cd и затем введем команду:

dotnet new grpc

Читать дальше

@csharp_ci
Целое число английскими словами

Сложность задачи: Hard

Условие задачи:
Преобразуйте неотрицательное целое число num в его буквенное представление английскими словами.

Пример:
Ввод: num = 123
Вывод: "One Hundred Twenty Three"

Ввод: num = 12345
Вывод: "Twelve Thousand Three Hundred Forty Five"

Решение задачи

Пишите свое решение в комментариях👇


@csharp_ci
🧅 TorSharp

Проект, который позволяет использовать Tor для C# HTTP-клиентов. Полезный интсрумент для проксирования HTTP-трафика и парсинга.

1. Пример использования SOCKS в .NET (картинка 1)

2. Пример использования Privoxy (картинка 2)

Github

@csharp_ci
📱 ChatGPT for .NET

Библиотека интеграции ChatGPT для .NET. Проект поддерживает OpenAI и Azure OpenAI Service.

dotnet add package ChatGptNet

Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#️⃣Анатолий Жмур — Поговорим о хэш-функциях

В 2002 с релизом .NET мы получили достаточно примитивный вариант хэш-функции для строк. В 2010 его обновили, а текущая версия ушла еще дальше вперед.

Поговорим про историю хэш-функций в .NET, почему так вышло и какие требования к ним применяются.
Затронем и тему криптографических функций — разберемся, зачем они вообще нужны и почему не используются по умолчанию.
Посмотрим на то, как проверяются качества хэш-функции в пакете SMHasher.
В качестве эталона будет предложена XXH3 и ее реализация на .NET, которая обгоняет текущий string.gethashcode по скорости и, скорее всего, превосходит по качеству.

📌Видео

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
👍 С# лайфхаки для обработки больших файлов

Анализ больших объёмов данных – неотъемлемая и трудоёмкая часть аналитической деятельности. Наверняка вы сталкивались с проблемами, связанными с повышенным потреблением оперативной памяти и скоростью обработки.

Вот два примера решения подобных проблем на языке C#

1. Нехватка памяти при чтении очень больших файлов

Предположим, нам необходимо найти соответствия регулярному выражению в строках CSV файла. В этом случае нам может помочь оператор yield return.

▪️Метод-генератор AllLinesFromFile (string a_file_path) принимает на вход путь к файлу и возвращает итератор, указывающий на текущий объект коллекции - связный список, состоящий не более, чем из ста строк файла.

Продемонстрируем в методе Main() использование написанного генератора коллекции для чтения csv файла, состоящего из 437 строк: *в картинке

Примечания:
- Размер возвращаемой «порции строк» ограничен ста (для примера). Выбор значения должен зависеть от системных требований к потреблению памяти.
- Для чтения сложных форматов (JSON или XML) может потребоваться использование парсера.
- Метод AllLinesFromFile(string a_file_path) использует связный список строк в качестве типа возвращаемого элемента коллекции, чтобы избежать проблем с выделением памяти.
- Подробнее о операторе yield return в C# можно узнать на сайте Microsoft.
- Оператор yield также присутствует в других языках программирования, таких как Python, JavaScript и PHP.

2. Использование LINQ и PLINQ

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
📣 Внимание C# разрабочики!

Сохраните этот пост и возвращайтесь к нему в любое время, когда вам понадобится освежить в памяти методы LINQ!

@csharp_ci
⚡️Маст-хэв список для программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.

Python: t.iss.one/pythonl
C#: t.iss.one/csharp_1001_notes
C/C++/ t.iss.one/cpluspluc
Машинное обучение: t.iss.one/ai_machinelearning_big_data
Data Science: t.iss.one/data_analysis_ml
Devops: t.iss.one/devOPSitsec
Go: t.iss.one/Golang_google
Базы данных: t.iss.one/sqlhub
Rust: t.iss.one/rust_code
Javascript: t.iss.one/javascriptv
React: t.iss.one/react_tg
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Linux: t.iss.one/+A8jY79rcyKJlYWY6
Big Data: t.iss.one/bigdatai
Хакинг: t.iss.one/linuxkalii
Java: t.iss.one/javatg

💼 Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy

🎞 YouTube канал: https://www.youtube.com/@uproger

😆ИТ-Мемы: t.iss.one/memes_prog

🇬🇧Английский: t.iss.one/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
9 "Черная магия" и "трюки" в языке C#

C# является чрезвычайно продвинутым языком благодаря наличию в нем "синтаксического сахара".

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

Итак, давайте посмотрим, являются ли эти возможности в C# жестко прописанными компилятором ("черная магия") или расширяемыми ("трюки") "утиной типизацией".

Попробуйте определить сами)

Правильные ответы вы найдете в статье.

1. LINQ operations, with IEnumerable<T> type

2. async/await, with Task/ValueTask types

3. Expression trees, with Expression<T> type

4. Interpolated strings, with FormattableString type

5. yield return, with IEnumerable<T> type;

6. foreach loop, с IEnumerable<T> type

7. using keyword, with IDisposable interface

8. T?, with Nullable<T> type

9. Generic operations of Index/Range for any type


📌Статья

@csharp_ci