Задать вопрос
  • Как запустить команду на выбранном дисплее?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    DISPLAY=:99 -- это переменная окружения, её надо впихнуть в параметр env:
    env = os.environ
    env["DISPLAY"] = ":99"
    subprocess.run(["telegram-desktop", "-debug", "-tosettings", "-many", "-workdir", "/home/qwentor/share/prog/tgprofiles/"+phone], env=env)
    Ответ написан
    Комментировать
  • Почему данные не записываются в реестр?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    LONG error = RegCreateKeyEx(...);
      if (hKey) {

    Ошибок нет, но и результатов нет !

    Ошибок нет, потому что ты не проверяешь код ошибки, а вместо этого проверяешь hKey.
    Если внимательно прочитать https://docs.microsoft.com/en-us/windows/win32/sys... то можно увидеть для KEY_WOW64_32KEY, что
    This flag must be combined using the OR operator with the other flags in this table that either query or access registry values.

    Подозреваю, что там должно быть KEY_WOW64_32KEY | KEY_SET_VALUE.

    RegSetValueA(hKey, "test", REG_SZ, (LPCSTR)path.c_str(), sizeof(path.c_str()));

    Не sizeof. И код ошибки тоже не проверяешь.
    Ответ написан
  • Как хранятся числа в памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    struct Data {
      short id;
      double val;
    };


    я понимаю что 32 00 11 49 - это интовское значение

    в этой структуре short int, 2 байта. 0x32 0x00 -- это оно (0x32 + 256 * 0x00 = 50), little endian.
    0x11 0x49 -- это мусор. 0x02 0x56 0x00 0x00 идущие дальше -- это тоже мусор.
    0x33 0x33 0x33 0x33 0x33 0x33 0xf3 0x3f -- это double (0x3ff -- порядок, 0x3333333333333 -- мантисса, значение = 0x1.3333333333333 * 2 ^ (0x3ff - 1023) = 1.19999999999999995559), little endian, ieee754.

    Как в данном выводе понять где выравнивание происходит?

    Можно воспользоваться макросом offsetof.
    Ответ написан
    5 комментариев
  • Как понять условие задачи?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я подумал, что граф всегда можно разбить на две множества так, чтобы вершины, соединенные максимальным ребром были в одном множестве, а остальные вершины в другом, то-есть ответом всегда будет максимальное ребро. Я протестировал свое решение в яндекс.контест и получил ошибку на 8 тесте. Подскажите пожалуйста, что я не правильно понял из условия?
    Может есть контрпример?

    Контрпример: квадрат, верхнее ребро -- 2, боковые -- 1, нижнее -- 0. В терминах входных данных для задачи:
    4 4
    0 1 2
    1 2 1
    2 3 0
    3 0 1

    Если разбивать твоим алгоритмом, то в одно множество попадают две верхние вершины, во второе -- две нижние. Тогда "ребро минимального веса, соединяющее вершины из одного множества" -- это ребро соединяющее две нижние вершины (2 3), его вес -- 0.
    Но если разбить граф на две левые вершины (3 0) и две правые (1 2), то "ребро минимального веса, соединяющее вершины из одного множества" имеет вес 1, что лучше, чем 0.
    Ответ написан
    Комментировать
  • Как написать алгоритм движения по спирали на Arduino?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    к сожалению, я не силен и был бы благодарен за помощь.

    Этот сайт работает немного по-другому. Сюда приходят с конкретными вопросами чтобы получить на них ответ.
    Я вижу следующие несколько первых вопросов для вашей задачи:
    1 какая спираль имеется в виду? (архимедова/логарифмическая/с прямыми углами/...?)
    2 как нужно управлять колёсами, чтобы заставить тележку двигаться по выбранной в п.1 спирали?
    3 как запрограммировать ардуино, чтобы она управляла двигателями тележки в соответствии с п.2?

    Определитесь с п.1 и 2 для начала, они не требуют знания ардуины. После этого разберитесь со своей схемой -- что там за двигатели, как они подсоединены к колёсам, как управляются. И если после этого останутся вопросы по п.3 -- приходите.
    Ответ написан
    4 комментария
  • Как изменить строку, инициализированную при объявлении массива символьных указателей, с помощью scanf?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    char * suit [4] = { "Hearts", "Diamonds", "Clubs", "Spades" };

    Как изменить строку, инициализированную при объявлении массива символьных указателей, с помощью scanf?

    В данном случае -- только выделив память для новой строки, сделав scanf туда и присвоив указатель на выделенную память элементу массива suit. Напрямую в первоначальный массив -- никак, потому что указатели указывают на константные строки (а возможность писать char * вместо const char * -- это устаревшее средство обеспечения совместимости с древними версиями стандарта).
    Ответ написан
    3 комментария
  • Разбираюсь с умножением в ассемблере, почему так работает, а так нет?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    программа ломается во время выполнения

    Как ломается-то?

    use32
    mov ax,3h
    mov bx,4h
    mul bx

    должно записать 12 в ax и 0 в dx и очистить флаги OF и CF. Что записывает?
    Ответ написан
    Комментировать
  • Может ли процессор изменять порядок инструкций в программе?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Насчет компиляторов поверю, но вот процессора ??? как ???

    Читать тут, лучше сразу английскую версию.
    Ответ написан
    Комментировать
  • Как по полному имени файла получить номер записи MFT?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как по полному имени файла получить номер записи MFT?

    Попробуй поля nFileIndexHigh и nFileIndexLow структуры BY_HANDLE_FILE_INFORMATION приходящей из GetFileInformationByHandle.
    Ответ написан
    1 комментарий
  • Си. Как добавить программу в автозагрузку?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как добавить программу на Си в автозагрузку Windows?

    Так же как и на любом другом языке -- прописав её в соответствующий ключ реестра.

    И еще: как искать информацию на ответы по Си, если я пишу в гугле "Си как добавить программу в автозагрузку", но везде появляется только С++? Нереально найти ответ.

    Потому что ты задаёшь неправильный вопрос. Язык -- это способ делать действия, а не сами действия. Добавить программу в автозагрузку можно через реестр. Писать в реестр можно через winapi. Справка по winapi есть тут.
    Ответ написан
    Комментировать
  • C++. Ассоциативность перегруженных операторов?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В сети не нашёл ответа.

    В каждом из разделов стандарта касающихся операторов написано в каком порядке группируются вызовы опреаторов в однородных выражениях (например).

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

    Почти все операторы группируются слева направо, за исключением префиксных операторов и операторов присваивания (в том числе составных).

    Пример

    #include <string>
    #include <iostream>
    
    struct A
    {
            std::string name;
    
            A(const std::string& _name): name(_name)
            {
            }
    
            A operator +(const A& other) const
            {
                    std::cerr << name << " + " << other.name << std::endl;
                    return A(std::string("{temporary from ") + name + " + " + other.name + "}");
            }
    };
    
    int main()
    {
            A first("first"), second("second"), third("third");
            A r = first + second + third;
    }

    выводит
    first + second
    {temporary from first + second} + third
    Ответ написан
    Комментировать
  • Почему считывается не по порядку?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему результат вывода именно такой?

    Потому что если внимательно прочитать man dup, особенно вот эту часть:
    After a successful return from one of these system calls, the old
    and new file descriptors may be used interchangeably. They refer
    to the same open file description (see open(2)) and thus share file
    offset and file status flags; for example, if the file offset is modified
    by using lseek(2) on one of the descriptors, the offset is also
    changed for the other.

    то окажется, что это поведение предписанное стандартом.
    fhandle2 открыт независимо от fhandle1, поэтому у него все параметры состояния свои.
    Ответ написан
    Комментировать
  • Что мотивирует open source сообщество?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Кто эти люди что делают "готовое", что ими движет?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возможно ли как то совместить две эти реализации что бы получать на выходе crc32 в виде const char*?

    Поменять crc32_impl(const uint8_t* p и crc32(const uint8_t* data, на crc32_impl(const char* p и crc32(const char* data и выкинуть преобразование типов из crc32((uint8_t*)str,?
    Ответ написан
  • Существует ли таблица совместимости компиляторов и версий библиотек?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Для gcc и его libstdc++ есть таблица соответствия версии компилятора и версии символов из его библиотеки, а так же описание правил, по которым версии изменяются и вообще всей идеи версионирования ABI: https://gcc.gnu.org/onlinedocs/libstdc++/manual/ab...
    Ответ написан
    Комментировать
  • Как извлечь symvers из ядра?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Мне надо извлечь из ядра symvers чтоб собрать модуль.

    Это ты в продолжение Как решить ошибку компиляции ядра Android? пишешь?
    Ответ написан
  • Сегментация в long mode?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Русским и английским языком написано. Сегментные регистры в x64 кроме GS и FS не используются и принудительно устанавливаются в 0.

    Это какая-то неоднозначная и неточная цитата. Вот что пишет Intel Software Developer Manual 3.7.4.1 "Segmentat...:
    In 64-bit mode, segmentation is generally (but not completely) disabled, creating a flat 64-bit linear-address space. The processor treats the segment base of CS, DS, ES, SS as zero, creating a linear address that is equal to the effective address. The exceptions are the FS and GS segments, whose segment registers (which hold the segment base) can be used as additional base registers in some linear address calculations.

    Т.е. базовый адрес сегментов к которым осуществляется доступ через cs/ds/es/ss нулевой, но не сами значения селекторов. Базовый адрес, напомню, это поле в записях GDT/LDT. Селектор же (значение в сегментном регистре) выбирает запрашиваемые привилегии (младшие два бита), тип таблицы (GDT/LDT, третий с конца бит) и номер записи в таблице (все остальные биты).

    Согласись же, это совсем не то, что ты ожидал?

    Глядя на твою картинку можно сказать, что выполняется код из сегментв в шестой записи в GDT с привилегиями третьего кольца защиты, а доступ к данным через ds/es/ss/gs осуществляется через сегмент в пятой записи в GDT с привилегиями третьего кольца.
    Ответ написан
    Комментировать
  • Assembler WriteConsole не выводит текст?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    WriteConsole не выводит текст

    А что возвращает? А GetLastError какой? А что в буфере buffer и в eax перед вызовом WriteConsole?
    Ответ написан
    1 комментарий
  • Загадочное поведение сетевого интерфейса debian, как исправить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ну и че может быть, интернета тупо нет ;(

    iptables -vL
    Ответ написан
    Комментировать
  • Assembler WinAPI сокеты, Accept не ждет подключения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    invoke accept,[socket_server],addr_client,sizeof.sockaddr_in

    accept последним параметром ожидает указатель на размер, а не сам размер.
    Ответ написан
    1 комментарий