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
🎮 Сборник полезных материалов UNITY для разарабочтиков игр. Про шейдеры, пользовательский интерфейс, искусственный интеллект и многое другое

Compute Shaders in Unity: Multiple Kernels, ComputeBuffers, CPU - GPU data flow
How to make your own game engine (and why)
Unity runtime on Arm-based Windows devices
Game ready: Building the ‘Ōhi’a lehua tree with SpeedTree, part 2

Видео

How Unexplored 2 Generates Entire Fantasy Worlds from Scratch | Artifacts #1
Exploring C# async/await support in Unity 2023.1
Unity Interfaces - Complete Guide (Plugins, Abstraction, Events, & More) #unity3d
How to use the Job System + Burst in Unity!
System Driven Level Design (My Biggest Mistake)
How to Animate EVERYTHING with Absolute Shapes Keys
Being Successful with Open Source in Game Development

Игры на Unity

Unity Hidden Gems Bundle
Royalty Free Game Film And Content Music Mania Bundle
Blender Animation And Games Book Bundle
Note Attribute
UnityTodo (Editor-Only)
Layout Panel
Green Mamba Stealth
Unity 2D Context steering AI
Pathfinding
EntitiesNavMeshBuilder
Unified Universal Blur - URP Blur effect for Unity
TextureMerge
GpuTrail
Unity - Display missing component type info
Gameframe.GUI
Create Script Dialog
Unity Fantastic Fantasy Sale
50% Off Dragonsan Studios - Publisher Sale
UnityUxmlGenerator
UniFlux - Flexible Event Driven and Flux for Unity
Editor Screenshot
SnowyOwl
Baked Blender Pro Suite (Free Asset Library)
The Complete Learn Coding Mega Bundle
Polygon Assets Bundle

Обзор

Remnants of R'lyeh

@csharp_ci
Что выведет код ?

using System;
class Program
{
static void Main(string[] args)
{
int num = 5;
int square = 0, cube = 0;
Mul (num, ref square, ref cube);
Console.WriteLine(square + " & " +cube);
Console.ReadLine();
}
static void Mul (int num, ref int square, ref int cube)
{
square = num * num;
cube = num * num * num;
}
}


@csharp_ci
Что выведет код ?
Anonymous Quiz
8%
125 & 25
76%
25 & 125
14%
Compile time error
2%
10 & 15
Cledev.OpenAI

NET SDK для OpenAI, который включает API ChatGPT, DALL-E и Whisper и тестовую площадку Blazor Server.

Install-Package Cledev.OpenAI

Пример с ChatGPT

var request = new CreateChatCompletionRequest
{
Model = ChatModel.Gpt35Turbo.ToStringModel(),
Stream = true,
MaxTokens = 500,
Messages = new List<ChatCompletionMessage>
{
new("system", "You are a helpful assistant."),
new("user", "Who won the world series in 2020?"),
new("assistant", "The Los Angeles Dodgers won the World Series in 2020."),
new("user", "Where was it played?")
}
};

var completions = client.CreateChatCompletionAsStream(request);

await foreach (var completion in completions)
{
Console.Write(completion.Choices[0].Message?.Content);
}


Пример генерации изображений (Dall-E)

var request = new CreateImageRequest
{
Prompt = "Once upon a time",
Size = ImageSize.Size512x512.ToStringSize(),
ResponseFormat = ImageResponseFormat.B64Json.ToStringFormat(),
N = 1
};

var response = await client.CreateImage(Request);

<img src="@response.Data[0].Url" />


Github

@csharp_ci
Полный список сайтов с практическимим задачами для программистов.

Edabit.com - 350+ практических задач по C#

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

Codeforces — платформа для алгоритмических соревнований. Проводит контесты и раунды с 5 задачами на 2 часа. Есть система рейтинга и два дивизиона. Задачи можно решать и проверять после соревнования. Также есть доступ к тренировкам с задачами с прошлых соревнований.

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

HackerRank - сайт будет больше интересен продвинутым программистам, которые уже многое умеют. На этом сайте собрано множество задач на самые разные разделы Computer Science: традиционная алгоритмика, ИИ, машинное обучение и т.д. Если вы решите много задач, то вами могут заинтересоваться работодатели, регуляторно мониторящие эту платформу.

C# задачи для начинающих - помощь в решении задач. Готовые программы.

Codewars — популярный cборник задач на разные темы, от алгоритмов до шаблонов проектирования.

LeetCode — известный сайт с задачами для подготовки к собеседованиям. Можно пообщаться и посмотреть решения других программистов.

Timus Online Judge — русскоязычная (хотя английский язык также поддерживается) платформа, на которой более тысячи задач удачно отсортированы по темам и по сложности.

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

informatics.mccme.ru - платформа с теоретическим материалом и задачами, удобно разделенными по категориям. Большая база задач с олимпиад школьников также доступна.

SPOJ - большой англоязычный сайт с 20000+ задачами на разные темы: DP, графы, структуры данных и др. Иногда проводят неинтересные контесты, если не из страны их проведения.

CodeChef — менее крупный аналог Codeforces и TopCoder, тоже с огромным архивом задач и регулярными контестами.

Project Euler - сборник 500 задач, проверяющих знание математических алгоритмов. Часто используется на собеседованиях, чтобы оценить алгоритмическую подготовку кандидата.

Kaggle - соревнования по анализу данных.

Golang tests - канал с тестами по Go

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

Al Zimmermann’s Programming Contests — платформа, на которой регулярно проводятся контесты с задачами на исследование и оптимизацию. Интересен тем, что писать программу необязательно — даются только тестовые данные. Ответы можно расчитывать вручную, или просто гадать их на кофейной гуще.

Programming Praxis — сайт, где можно найти много интересных задач.

CheckIO — сайт с задачами для программистов всех уровней, который вы проходите в виде игры.

Ruby Quiz — сайт с задачами для программистов на Ruby, но решения можно писать и на других языках.

Prolog Problems — Подборка задач для программистов, использующих Prolog.

Сборник задач от СppStudio - задачи на С++, но их можно и на других языках.

Operation Go — практика написания кода на Go в форме браузерной игры.

Empire of Code — сайт для программистов, где необходимо писать код, реализующий стратегию и тактику виртуальных бойцов.

@csharp_ci
📚7 лучших библиотек C# для парсинга веб-страниц в 2023 году

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

Так же, существуют разные показатели, которые следует учитывать при выборе лучшей библиотеки для парсинга, и в этой статье мы обсудим 7 лучших библиотек для парсинга на C# для использования в 2023 году. Кроме того, мы увидим примеры, которые помогут вам понять, как эти фреймворки работают.

1. ZenRows API — лучшая библиотека веб-парсинга данных на C# в этом списке. Это API, который обрабатывает обход ботов от вращающихся прокси и безголовых браузеров до CAPTCHA.

2. Puppeteer Sharp — это библиотека для парсинга на C#, которая сканирует веб-страницу с помощью браузера без заголовка.

3. Веб-драйвер Selenium — один из наиболее часто используемых инструментов для парсинга больших объемов данных, таких как фотографии, ссылки и текст.

4. HTML Agility Pack - является наиболее загружаемой библиотекой парсинга C# DOM благодаря своей способности парсить веб-страницы напрямую или через браузер.

5. Scrapy Sharp - это библиотека веб-парсинга на C# с открытым исходным кодом, которая объединяет расширение HTMLAgilityPack с веб-клиентом, который может эмулировать веб-браузер, например jQuery.

6. Iron Web Scraper — это библиотека веб-скрейпинга .Net Core C#, исользуемая для извлечения и анализа данных из интернет-источников. Она способна контролировать разрешенные и запрещенные объекты, сайты, медиа и другие элементы.

7. HttpClient — это библиотека парсинга HTML на C#, которая предоставляет асинхронные функции для извлечения только необработанного содержимого HTML из целевого URL-адреса. Однако для извлечения нужных данных вам по-прежнему необходимо использовать инструмент синтаксического анализа HTML.

Подробнее

@csharp_ci
[Успех в геймдеве — ошибка выжившего?💀]

Почему у одних получается делать крутые игры, которые приносят деньги и славу, а у других — нет? Как перестать делать посредственные игры и начать делать хиты?

Успех в геймдеве — не ошибка выжившего, а цель, которую мы преследуем. Мы стремимся создавать игры для игроков, в которые будет интересно играть.

Многие бросают на полпути, но мы настойчивы и готовы дойти до конца.

⚡️Приглашаем на трехдневную онлайн геймдев конференцию, где ты узнаешь, как начать делать хорошие игры. Мы развеим все твои сомнения и докажем, что геймдев — это далеко не ошибка выжившего!

На конференции ты получишь кучу практических рекомендаций и поймешь, как создавать игры, которые получат миллионы скачиваний.

Регистрируйся тут прямо сейчас, чтобы ничего не пропустить. Программа конференции по ссылке.

Звучит как офигенная возможность вкатиться в геймдев. Так что погнали!
🎮 Обзор 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