Как стать автором
Обновить
26
0.1
Тахир Латыпов @Cregennan

Пользователь

Отправить сообщение

Нет волшебной фразы "Не является инвестиционной рекомендацией")

HA можно точно так-же заставить из домашней сети в интернет торчать, если есть белый IP вообще здорово) В крайнем случае можно подключаться в сеть по VPN-подобным схемам

Так в этом и плюс, разве нет?) Можно распаковать несколько файлов из одного архива, в какой то момент даже может быть сюжетный поворот которого не было в оригинальном фильме (вероятность этого бесконечно мала, но не 0)

на минус случайно нажал

Есть вариант получения Шрека из любого хэша, пусть распакованный файл будет такого вида:

  • 4 байта - длина файла

  • ~60ГБ - полезные данные (Шрек 2)

  • 32 байта Nonce (случайное число)

В таком случае даже из хэша 0xFFFFFFFF... рано или поздно можно распаковать и Shrek 2 и Мадагаскар и Тачки 3.

from DolbyDigitalHandmadeDIYPlayer import Player
Player.play()

В .NET, если правильно помню, рантайм такое не позволяет делать, в T явно должно быть свойство Id

Берем код:

static void Main(string[] args)
{
    var t = new { Property1 = 123 };
    Some(t);
}

static void Some(dynamic argument)
{
    Console.WriteLine(argument.Property1);

На выходе видим это:

private static void Main(string[] args)
{
    Some(new <>f__AnonymousType0<int>(123));
}

private static void Some([Dynamic] object argument)
{
    //Содержимое не принципиально
}

Анонимный тип как аргумент функции это когда вот так:

private static void Some(<>f__AnonymousType0<int> argument)
{
    //Содержимое не принципиально
}

Такое нельзя сделать в C#, хотя-бы потому что нельзя использовать <> в названии типа.

По вашей логике и dynamic особо не нужен, можно и так

 static void Main(string[] args)
    {
        var t = new { SomeProperty = 12345 };
        WriteSomePropertyOfAnything(t);
    }
    
    static void WriteSomePropertyOfAnything(object anything)
    {
        var someProperty = anything.GetType().GetProperty("SomeProperty");
        if (someProperty is not null)
        {
            Console.WriteLine(someProperty.GetValue(anything));
        }
        else
        {
            Console.WriteLine($"У {anything.GetType()} нет свойства SomeProperty");
        }
    }

Тут про это сказано:

You cannot declare a field, a property, an event, or the return type of a method as having an anonymous type. Similarly, you cannot declare a formal parameter of a method, property, constructor, or indexer as having an anonymous type.

Кажется что да, на самом деле непосредственно поля с анонимным типом там не будет: ссылка на SharpLab

Верно, но я имел в виду что приложение именно не падает)

Принципиальной ошибки нет, в .NET Framework 2 появились дженерики, их поддержка появилась в C# 2

В первом примере дело же не в ConcurrentDictionary а в методе TryAdd вместо Add. Вот такой код отработает без ошибок даже с обычным Dictionary:

Dictionary<int, string> dictionary = []; // <- обычный dictionary

var t1 = new Thread(Method1);
var t2 = new Thread(Method2);
t1.Start(); // Запускаем
t2.Start();

t1.Join(); // Ждем
t2.Join();

foreach (var item in dictionary)
    Console.WriteLine($"Key:{item.Key}, Value:{item.Value}");

void Method1()
{
    for (var i = 0; i < 10; i++)
    {
        // В примере 1 тут сначала Add, потом TryAdd
        dictionary.TryAdd(i, "Added By Method1 " + i);
        Thread.Sleep(100);
    }
}

void Method2()
{
    for (var i = 0; i < 10; i++)
    {
        // Аналогично
        dictionary.TryAdd(i, "Added By Method2 " + i);
        Thread.Sleep(100);
    }
}

Соответственно вывод программы точно такой-же как и в варианте с ConcurrentDictionary:

Key:0, Value:Added By Method1 0
Key:1, Value:Added By Method2 1
Key:2, Value:Added By Method1 2
Key:2, Value:Added By Method2 2
Key:3, Value:Added By Method2 3
Key:4, Value:Added By Method2 4
Key:5, Value:Added By Method1 5
Key:6, Value:Added By Method1 6
Key:7, Value:Added By Method2 7
Key:8, Value:Added By Method2 8
Key:9, Value:Added By Method1 9

С телефона баннеры не видно к сожалению)

Hidden text

Не в укор обсидиану, сам пользуюсь)

Обратимая функция, это когда зная Y можно найти единственный X такой, что f(X) = y. В нашем случае, f(A, B) = f(B, A) = C. Да, A и B можно найти, но подходящих решений - 2

В нашем случае в .ico файле значок один. Я имел в виду размеры прямоугольника вокруг иконки, которую система нарисовала на рабочем столе. Получается, в статье подразумевается именно размер плитки)

Мне этот маневр стоил часа полтора, честно до конца довести терпения не хватило) Перезалью чуть позже полную версию

Отступы съехали

//АТАТА!! Тут дедлок - таски не запущены, но у нас все равно дедлок!!! 
await TestTaskConstructors();
async Task TestTaskConstructors() {
    var task1 = new Task(() => {
      Console.WriteLine("Hello world from Task1!");
    });
    var task2 = new Task(() => {
      Console.WriteLine("Hello world from Task2!");
    });
    await Task.WhenAll(task1, task2);
}

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

1

Информация

В рейтинге
3 699-й
Зарегистрирован
Активность

Специализация

Backend Developer, Fullstack Developer
.NET Core
Entity Framework
ASP.Net
PostgreSQL
React
SQL
Docker