• Как сделать типизацию под случай undefined в объекте?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Никак. Тип undefined не может быть ключом в принципе.
    Из вариантов:
    1. Убедиться что ключ не undefined руками:
    card = card_id && this.cards[card_id];
    2. Заставить ts думать, что ключ есть даже если его нет(и взять на себя ответственность за возможные ошибки):
    card = this.cards[card_id!];
    3. Явно привести к строке:
    card = this.cards[String(card_id)];
    Ответ написан
    5 комментариев
  • Как изменить программу написанную на C++?

    Во-первых: Зачем вообще изобретать велосипед? Если конечная цель - включить тёмную тему в sai, то это уже решено несколько лет как:
    https://vk.com/wall-203085393_2592
    https://www.deviantart.com/nyamhk/art/Dark-mode-in...
    https://github.com/NotBoogie/SaiThemeColorChanger/...

    Если больше интересно пройти самому путь, то тогда:

    1. Вооружаешься глубоким пониманием работы компьютера и операционной системы, и умением читать ассемблер.
    2. Берёшь в руки какую-нибудь IDA Pro и лезешь разбираться в том, как программа работает и что можно попробовать поправить.

    3. Исходя предыдущего пункта уже решаешь, возможно ли реализовать задумку и на сколько это реально.
    Например можно попытаться найти константы с цветами элементов интерфейса и изменить их значения - в таком случае даже ничего подгружать не придётся.

    Какого-то универсального способа/алгоритма нет.
    Ответ написан
    5 комментариев
  • Объясните, почему так работает код?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    потому, что воспринимает как десятичную точку
    2000.123

    Вот так, например, сработает: 2000.0.toLocaleString() — тут уже понятно, что не десятичная точка. Но я — за скобки!
    Ответ написан
    2 комментария
  • Кириллица в c++. Что с ней не так?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как распознать кракозябры:

    Как распознаете - сможете понять из какой кодировку в какую у вас происходит трансформация и настроить всё в единой кодировке или добавить нужные опции где надо.
    Ответ написан
    Комментировать
  • Как быстро переключаться между редактором и консолью во vscode?

    @heinehen Автор вопроса
    Простите, это уже теперь неактуально — сам задал вопрос, сам и ответил:
    1. ctrl+shift+p;
    2. Open Keyboard Shortcuts (JSON);
    3. Прописать следующий код:
    {
            "key": "ctrl+`",
            "command": "workbench.action.terminal.focus"
        },
        {
            "key": "ctrl+`",
            "command": "workbench.action.focusActiveEditorGroup",
            "when": "terminalFocus"
        }
    Ответ написан
    Комментировать
  • Почему каст u32::MAX в f32 увеличивает число на 5?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    32-bit unsigned int имеет 32 бита для хранения значения.
    32-bit float только 24 бита для хранения мантиссы.
    Поэтому точность представления числа и падает.
    Ответ написан
    3 комментария
  • Возможен ли такой URL страницы на GitHub Pages?

    Lynn
    @Lynn
    nginx, js, css
    Да.
    Для этого надо назвать репозиторий имя_пользователя.github.io

    И это написано на главной странице pages https://pages.github.com/
    Ответ написан
    1 комментарий
  • Мессенджер, не требующий для входа номера телефона/e-mail, и не заблокированный в РФ?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    В Вашем вопросе два качественных определения. Чтобы на него ответить, сначала пожалуйста определите, что такое "достаточно безопасный" и что такое "без бубна".
    Оператор мессенджера по определению имеет доступ ко всей переписке (а вся трепотня про end-to-end encryption - это всего лишь трепотня - кто ее проверял-то?). Поэтому если Вас так заботит факт "нечитаемости" - подымайте свой сервак.
    Ответ написан
    3 комментария
  • Нормально ли использовать var вместо явной типизации в C#?

    xez
    @xez
    TL Junior Roo
    Вполне норм. Просто тип определяется справа, а не слева.
    Подсказки ide должны решить вопрос понимания человеком, что там за тип.
    Ответ написан
    5 комментариев
  • Как сделать проверку на авторизацию Websocket?

    @Everything_is_bad
    Я знаю, что протокол передачи данных другой, из-за чего я не могу получать куки с токеном при отправке сообщения.
    не совсем так, ты можешь получить куку (а так же заголовки) в момент коннекта к ws, это фактически http запрос, этого достаточно.
    Ответ написан
    Комментировать
  • Откуда появляется это странное число?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Читайте код внимательно:
    Ввод:
    for (int i=0; i<x; i++){

    Вывод:
    for (int i = 0; i <= x; i++){

    У вас там <= в конце. Из-за этого идет обращение к элементу по индексу x, за границей массива. И оттуда выводится какой-то мусор - это и есть ваше странное число.
    Ответ написан
    Комментировать
  • Как правильно перегрузить шаблонный оператор (метод, функцию), чтобы наследники попадали в нужный?

    @Mercury13
    Программист на «си с крестами» и не только
    Итак, перед нами конфликт первой и второй функции, и надо первую как-то ограничить.

    Вариант 1. Концепция Си++20.
    template <class T>
    concept Printable = requires(T x) {
            std::cout << x;
    };
    
    struct Class {
        template<Printable Text>
        Class& operator<<(const Text& text) {
            cout << text << endl;
            return *this;
        }


    Вариант 2. Обратная концепция.
    template<uint8_t i>
    struct Id {
        constexpr static uint8_t id = i;
        using SpecialPrint = void;
        // какие-то элементы класса с методами
    };
    . . . . .
    template <class T>
    concept SpecialPrintable = requires {
        typename T::SpecialPrint;
    };
    
    struct Class {
        template<class Text>
        Class& operator<<(const Text& text) {
            cout << text << endl;
            return *this;
        }
        
        template <SpecialPrintable Special>
        Class& operator<<(const Special& text) {
            specialPrint(text);        
            return *this;
        }
        
        template<uint8_t i>
        void specialPrint(const Id<i>& text) {
            cout << (int)i << endl;
        }
    };


    А на 17 без концепций…
    template<uint8_t i>
    struct Id {
        constexpr static uint8_t id = i;
        using SpecialPrint = void;
        // какие-то элементы класса с методами
    };
    . . . . .
    
    template<class T, class Dummy = void>
    struct IsSpecPrintable { static constexpr bool value = false; };
    
    template<class T>
    struct IsSpecPrintable<T, typename T::SpecialPrint> { static constexpr bool value = true; };
    
    struct Class {
        template <class T>
        Class& operator<<(const T& text)
        {
            if constexpr (IsSpecPrintable<T>::value) {
                specialPrint(text);
            } else {
                normalPrint(text);
            }
            return *this;
        }
    
        template<class Text>
        void normalPrint(const Text& text) {
            cout << text << endl;
        }
    
        template<uint8_t i>
        void specialPrint(const Id<i>& text) {
            cout << (int)i << endl;
        }
    };
    Ответ написан
    1 комментарий
  • Как правильно сделать тестовый стенд?

    @Drno
    В одну сеть их поместите для начала
    Ответ написан
    Комментировать
  • Что значит такое объявления полей в С++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Да. Field - ссылка на приватное поле. Но она константная, поэтому так дается доступ к приватному полю только на чтение.

    Это становится понятнее, если воспринимать ссылки как указатели, которые не могут быть нулевыми, не могут менять адресс, куда они указывают, и должны быть инициализированны.
    Ответ написан
    5 комментариев
  • Как сделать одномерный массив в си?

    @res2001
    Developer, ex-admin
    Если количество цифр фиксировано, то просто перечислите в формате scanf сразу их все.
    Если количество цифр может меняться, то ...
    Вводить как строку и потом парсить ее с помощью strtol, кода будет, конечно, больше, чем сейчас.
    Строку вводить в какой-то достаточно большой буфер длинной в 1 или 4 кб.
    При превышении буфера можно выдавать ошибку.
    Или ввод оформить в цикл, на случай, если буфер заполнится, а Enter пользователь еще не нажал. Выход из цикла по нахождению символа '/n' в буфере. В таком случае буфер можно делать меньше. Но тут возникает дополнительная проблема с неоконченным вводом, т.е. пользователь вводит число 123456 и допустим 123 прилетело в конец прошлого буфера, а 456 в начало следующего. Это надо будет решать в коде.

    Есть проблема с фиксированным размером массива.
    Если нужен произвольный размер входных данных, то можно, предварительно выделять массив какого-нибудь начального размера, если в ходе парсинга размер массива превысится, то сделать realloc увеличив размер массива в 2 раза. Ну и надо отдельно хранить количество реально заполненных элементов массива.
    А вообще, массив может оказаться не нужен, если взглянуть на задачу целиком.
    Ответ написан
    1 комментарий
  • Как сделать одномерный массив в си?

    includedlibrary
    @includedlibrary
    Либо заранее просить пользователя ввести размер и использовать for:
    int size;
    scanf("%d", &size);
    int *list = malloc(sizeof(int) * size);
    for(int i = 0; i < size; i++)
        scanf("%d", &list[i]);


    Либо как сделали вы.

    Такой код, кстати, list[size++] = n; в какой-то момент приведёт к segfaul, потому что list, очевидно, фиксированного размера, а работа предполагается с массивом переменной длины. Почитайте про malloc/realloc
    Ответ написан
    Комментировать
  • Что именно дают миллиарды транзисторов в процессоре для работы программы?

    15432
    @15432
    Системный программист ^_^
    1) Больше фич. Всякие AVX, MMX, а также умная конвейеризация, Hyper-Threading, спекулятивное исполнение, предсказание веток - при правильном применении сильно ускоряет вычисление
    2) Больше ядер. В один кристалл всё больше процессорных ядер запихивают, можно распараллелить задачи, тоже получим прирост в скорости работы
    3) Больше кэш-памяти. Та самая SRAM, которая входит в процессор и тоже состоит из транзисторов. Сильно ускоряет работу с памятью и задержки выполнения инструкций
    4) Больше контроллеров. В процы сейчас встраивают всё, что попало - шины данных, контроллер DRAM, PCIE, северный мост, отдельное ядро сопроцессора (Intel ME, AMD PSP), GPU и даже NPU где-то добавляют. Тоже считается за "больше транзисторов".
    Ответ написан
    4 комментария
  • Где проходит граница между опенсорсом и коммерческим продуктом, основанным на опенсорсе?

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

    Но всегда вспоминайте создателя Nginx (Игорь Сысо́ев) который работая в Рамблер его писал. а потом Рамблер хитрожопо решил его отжать - хорошо что не вышло.
    Ответ написан
    Комментировать
  • 4g и Wi-Fi почему одна частота сигнала, но разная дальность?

    b1ora
    @b1ora
    Контакты в профиле
    1. Мощность базовой станции
    2. Чувствительность базовой станции
    3. Секторные антенны
    Ответ написан
  • Как исправить ошибку error: linking with `link.exe` failed: exit code: 1120?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Надо линкеру указать dll-ку в которой эта функция определена. В документации не указано, в какой именно библиотеке оно лежит, но можно пропробовать Gdi32.dll или Ddraw.dll. Надо где-то в настройках проекта на вкладке про линкер указать эти dll.
    Ответ написан
    Комментировать