• Как называются и зачем нужны такие штуки [field:]?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Это цели атрибутов - то для чего атрибут предназначается.
    RTFM
    Ответ написан
    Комментировать
  • Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Можно ли увидеть аналог пример кода на c# java с этим типом? Как-то наглядно продемонстрировать отличие от void. Иначе никак не пойму?


    Unit это специальный тип, который больше нужен для инфраструктуры. Например, в функциональных языках чтобы делать цепочки вызовов: там нет понятия инструкции, зато можно передать Unit, который возвращается функцией, которая должна быть выполнена первой.

    Если хочешь в дотнете - то иди в F#. Там есть Unit, попробуй функциональное программирование.

    А почему нету Типа, который ни чего не упаковывает, а просто передает двойное машинной слово?


    Это long. Передавай везде его, а внутри делай каст/приведение. А вообще, зачем делать стек еще больше? Если надо передать только байт, ты предлагаешь передавать сразу 8?

    кортежи в 8 байт.


    Где кортежи в 8 байт?


    // почему такого нету, вроде же легко можно добавить, я куча раз сталкивался,
    // когда дженерик писать прям в лом, или большие изменения внесет, или еще что,
    // а передать надо byte int double


    Используй ограничения на дженерики - where тебе в помощь
    Ответ написан
    Комментировать
  • Что означает +0 в запросе SQL?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Конвертирование в число

    StackOverflow
    Ответ написан
    Комментировать
  • Что означает CP в билдах пакетов на PyPI?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Скорее всего версия CP ython

    Из документации - тэг ABI пакета

    The tag format is {python tag}-{abi tag}-{platform tag}

    python tag
    ‘py27’, ‘cp33’
    abi tag
    ‘cp32dmu’, ‘none’
    platform tag
    ‘linux_x86_64’, ‘any’
    Ответ написан
  • Что плохого в использованиe в MethodImpl(MethodImplOptions.AggressiveOptimization)?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Во-первых, каждый раз это писать утомишься.
    Во-вторых, в .NET умный алгоритм оптимизации, если надо будет он оптимизирует сам.
    В-третьих, оптимизация ресурсоемкий процесс. В данном случае все быстро произошло. А теперь представить огромный проект на несколько миллионов строк кода, где некоторые части вообще не используются либо запускаются только 1 раз. Все они должны будут оптимизироваться самым ярым образом.

    В итоге: никто не запрещает его везде использовать, просто это "Экономически" не выгодно
    Ответ написан
    Комментировать
  • Как заставить бота копировать строки в txt поочередно?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    with open('asdf') as file:
        for line in file:
            # Что-то со строчкой
            pass
    Ответ написан
    Комментировать
  • Как получить внешний API в Web API C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Используй GetFromJsonAsync<T>(url) метод у HttpClient.

    В T указываешь объект, который нужно десериализовать, а в url - адрес, по которому нужно послать запрос. Для httpbin, например
    client.GetFromJsonAsync<SomeObject>("httpbin.org/get");


    Класс объекта создаешь сам.

    Туториал на метаните
    Ответ написан
    1 комментарий
  • Что нужно знать для создания собственного движка?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Дополняя ответ Геннадий на ютубе есть канал The Cherno.
    Это бывший разраб из одной игровой компании (забыл какой). У него есть целый плейлист по созданию движка.
    Также он там обясняет базу (алгоритмы, математика), делает свою игру на Java без движка. Лично мне помогло разобраться со многими базовыми вещами, когда делал свою игру на WinForms
    Ответ написан
    Комментировать
  • Почему вылетает программа в ходе работы через консоль Python?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Скорее всего проблема в этой строке:
    encrypted_password_file = open('password_database.txt', 'r')  # viewing the password database


    Ты указываешь локальный путь к файлу - относительно рабочей директории. При запуске она может быть не той, где лежит файл password_database

    P.S. открывать файлы лучше через
    with open('password_database.txt', 'rt') as encrypted_password_file:
         # код

    поищи что такое контекстные менеджеры
    Ответ написан
    Комментировать
  • Как корректно использовать селектор при парсинге сайта?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Вместо .messageContain copy-text напиши .messageContain .copy-text (точка у copy-text).

    Если есть несколько классов, то все они должны писаться через точку - точка означает css класс. Без точки - html тэг
    Ответ написан
    Комментировать
  • Как реализовать SQL движок в своём приложении?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. GraphQL - специальный язык запросов. Можно изменять/обновлять/добавлять/читать. Есть полноценный пакет, который парсит запрос и выполняет его. Можно к In memory коллекциям подкрутить. Но это не SQL

    2. OData - тоже язык запросов. Можно изменять/добавлять/читать/удалять. Он достаточно старый и разобраться сложнее. Тоже есть фреймворк, который автоматизирует работу по парсингу/выполнению. Это также не SQL

    3. In Memory sqlite - можно запустить SQLite в памяти и проксировать запросы уже ему.
    Ответ написан
    Комментировать
  • Как десериализовать объект с учетом значения свойства?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    На SO уже есть похожий вопрос.

    В кратце, после десериализация Json объекта (словаря) смотришь на значение свойства и на его основании, обновляешь нужные поля.

    Код оттуда
    class MyItemConverter : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return typeof(ItemToSell).IsAssignableFrom(objectType);
        }
    
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject obj = JObject.Load(reader);
            string discriminator = (string)obj["ObjectType"];
    
            ItemToSell item;
            switch (discriminator)
            {
                case "apple":
                    item = new Apple();
                    break;
                case "books":
                    item = new Books();
                    break;
                case "melon":
                    item = new Melon();
                    break;
                default:
                    throw new NotImplementedException();
            }
    
            serializer.Populate(obj.CreateReader(), item);
    
            return item;
    
        }
    
    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
    
        }
    }
    Ответ написан
    2 комментария
  • Какой командой можно посмотреть команды для создания С# приложений в VS Code?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    dotnet new --list
    Ответ написан
    Комментировать
  • Какую базу данных лучше использовать с неободимостью хранения записей постов?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В общем - любую: PostgreSQL, MySQL, MongoDB, CockroachDB ...
    Каждая серьезная БД имеет под капотом механизмы оптимизации (специальные запросы, индексы) и т.д.

    Кэшируй запросы (Redis, например) в уже готовом к ответе представлению (сразу Json для ответа, без необходимости JOIN'ить).

    Масштабируй саму БД - мастер для записи и много слейвов для чтения.
    Ответ написан
  • Как можно инициализировать структуру в прямо в массиве в safe коде c#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Сначала создает структуру на стеке, потом копирует ее в массив.


    Потому что сначала создается временная переменная с new User(1, 2), а потом она записывается в массив.

    Можно ли так сделать?


    Про так не знаю, но ты можешь использовать users.Initialize(). Он вызовет стандартный конструктор (без параметров) для всех элементов, а потом вручную выставить значения в цикле
    Ответ написан
    Комментировать
  • Почему CLR при генерации Машиного кода не оптимизирует циклы?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    На чем основывалась проверка? Какой инструмент?

    Во-первых, У .NET есть двухуровневая система генерации кода. Это Tiered JIT.

    0 уровень ничего не оптимизирует. Это для оптимизации старта.
    1 уровень уже запускает оптимизации и генерирует оптимальный код. Чтобы запустить его запусить, надо очень много прогнать код.

    P.S. именно поэтому BenchmarkDotNet делает очень много WarmUp, Preworkload и других стадий перед запуском реальных бенчмарков.

    Во-вторых, в какой конфигурации запускали: Debug или Release?

    Если Debug, то ничего удивительного нет - должны сохраниться изначальные строки, чтобы можно было пройтись дебагером. В Release получается каша, из которой ничего не понятно.
    Ответ написан
  • Почему в CoreCLR Int32.TryParse сделано не самым оптимальным образом?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Причина 1 (расширяемость)
    Если в будущем добавлять новые варианты NumberStyles, которые null должны обрабатывать иначе, либо какую-нибудь комбинацию, которая при null возвращает int.MinValue (например), то при проверке на null код сработает неправильно.

    Причина 2 (контракт)
    На вход всегда должны подаваться правильные данные. Очень странно, если будешь выполнять какую-либо работы с неправильными входными значениями.
    Я, например, всегда валидирую данные перед тем как выполнять работу.

    Причина 3 (легаси/совместимость)
    Может в старых версиях (.NET Framework) было такое поведение - исключение при неправильных данных
    Ответ написан
    2 комментария
  • Python asyncio list does not processing asyncrounouslly because of what?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В первом случае ты грубо говоря все запускаешь синхронно: синхронно итерируешься по списку, await'ишь - все последовательно

    Во втором случае, ты запускаешь множество асинхронных генераторов. Каждый запускается, пишет Started, достигает await и управление переходит следующему генератору. Т.е. получается - сначала все доходят до await (печатают Started), после ставятся в конец и, когда все Started уже написали, начинается исполнение того, что после await
    Ответ написан
  • Почему парсер сайта kinopoisk выдаёт пустой список?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В чём причина?


    Внутри каждого блока .styles_root__ti07r только один элемент .base-movie-main-info_mainInfo__ZL_u3, а ты указал не брать последний :not(:last-child). Значит 1 - 1 = 0

    На будущее: если видишь странные символы, по типу _ZL_u3 или ti07r, то не полгайся на них - это автосгенерированные классы и в будущем их названия изменятся и этот код сломается
    Ответ написан
  • Как передать токен в заголовок?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Ты используешь [Authorize] атрибут из фреймворка для авторизации, но при этом не следуешь правилам, чтобы фреймворк понял, что клиент авторизован. Как минимум - откуда он узнает, что токен для авторизации находится именно в куках с именем token?

    В HttpContext есть метод SignInAsync. Этот токен нужно передавать туда, а не в куки. Дополнительно, нужно правильно настроить процесс авторизации.

    Держи туториал по JWT авторизации

    if (token is not null)
         {
             _httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
             _httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
         }

    - Этот код не имеет смысла, так как заголовок выставляется для созданного _httpClient, а не в запросе (дополнительно, Middleware - синглтон, а _httpClient у тебя один, он не может делать параллельные запросы)
    Ответ написан
    Комментировать