Задать вопрос
  • Как правильно отрисовать прямоугольник на assembler?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как правильно отрисовать прямоугольник на assembler?

    Так же, как и на C. Т.е. как минимум делать это в обработчике сообщения WM_PAINT, а чтобы сообщение посылалось -- использовать UpdateWindow.
    Ответ написан
    Комментировать
  • Как передать значение переменной по SSH?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ssh -p22 root@192.168.0.1 "$RM -f $LR"
    Подставятся локальные значения RM и LR.

    есть ли возможность передать значение переменной

    Только переменных, заранее известных ssh серверу на той стороне, только при использовании протокола SSH версии 2. Из man ssh_config:
    SendEnv
                 Specifies what variables from the local environ(7) should be sent to the server.  Note that environment passing is only supported for protocol 2.  The server must also support it, and the server must be
                 configured to accept these environment variables.  Refer to AcceptEnv in sshd_config(5) for how to configure the server.  Variables are specified by name, which may contain wildcard characters.  Multiple
                 environment variables may be separated by whitespace or spread across multiple SendEnv directives.  The default is not to send any environment variables.

    Но возникает вопрос: зачем их передавать, если всё что нужно можно передать в командной строке?
    Ответ написан
    9 комментариев
  • Как изменить запись в файле c++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    открыть для "r+b", перейти к нужной записи через fseek, записать нужные данные с помощью fwrite.
    Ответ написан
  • Переслать данные из второй в третью переменную. Абсолютная адресация на ассемблере?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как дальше из 2 в 3 переслать?

    Понять, как была выполнена пересылка из 1 во 2 и повторить то же самое для 2 и 3.

    как переслать с помощью абсолютной?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    2 -- нет. Из второй в третью не переслано.
    3 -- нет. Использована косвенная адресация.
    Ответ написан
  • Как написать сортировку пузырьком с помощью кодов процессора dp32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Давай разбираться.

    Как написать программу на VHDL

    VHDL -- это язык описания железа (Hardware Description Language). С его помощью можно описать как будет работать электрическая схема. Выглядит он примерно так.

    с помощью кодов процессора dp32

    Машинный код процессора -- это программа в двоичном виде для этого процессора. Байты машинного кода можно поместить в память и выполнить целевым процессором.
    Отдельное слово про dp32. Что за dp32?

    Теперь попробуй для начала объяснить нам, что именно ты хочешь написать.
    Ответ написан
  • Выполнение shell-команды при коннекте к dropbear. Как?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    С sshd все было бы просто: ssh ip_remote command && exit.

    Ну неплохо было бы команду в кавычки взять, как минимум, если вы хотели exit выполнить на удалённой машине: ssh ip_remote "command && exit" . Хотя непонятно, зачем там exit.

    Но с dropbear у меня такой фокус не выходит, к сожалению.

    Какие симптомы?
    Ответ написан
    3 комментария
  • Как сделать вход в первую папку в скрипте sh?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    обнаружить папку в директории и осуществить вход в неё

    find -maxdepth 1 -type d -not -name '.' >& /dev/null && cd "`find -maxdepth 1 -type d -not -name '.' | head -n1`"
    Ответ написан
    1 комментарий
  • Как изменить функцию bash чтобы она выполнялась правильно?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    find -maxdepth 1 -type d -not -name '.' -print0 | xargs -0 du -sh
    Ответ написан
    Комментировать
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вопрос первый: я правильно понимаю, что эту структуру данных где будут хранится мои слова можно назвать хэш таблицей, а функцию, определяющую к какой ячейке массива отнести очередное слово - хэш-функцией?

    Да.

    По крупицам собираю информацию в гугле относительно динамических списков и массивов структур, но картина пока не складывается :(


    38000000 результатов, нифига себе "по крупицам".

    Подскажите как это реализовать и\или где можно почитать о создании таких вот вещей?

    Тут уже читал?
    Ответ написан
  • Как заставить iconv работать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как заставить iconv работать?

    Я в вашем коде вижу две ошибки и несколько странных мест. Ошибки:
    - вы создаёте конвертор на каждый вызов parse_callback, но закрываете его только по событию EVENT_RUNE.
    - вы выделяете память (два calloc в parse_callback) и не освобождаете её. При том, что динамическая память вам вообще здесь не нужна.
    Странные места:
    - printf("result: '%s'\n", converted_start); в converted_start -- utf8...
    -
    fprintf(stdout, "debug: event = RUNE, data = %c\n", iso);
    iso -- это во-первых массив, а во-вторых, массив символов CP866.
    Как минимум один (а скорее всего оба) из этих printf не выведет того, что вы ожидали.

    parse_callback можно переписать следующим образом:
    void parse_callback( struct parser_event *pe, void *userdata )
    {
        switch ( pe->event ) {
    
            case EVENT_RUNE: {
                char *iso = &pe->rune;
                char out[10] = {0};
                char *converted = out;
                size_t ibl = 1;
                size_t obl = sizeof(out);
                iconv_t foo = iconv_open("CP866", "UTF-8");
                int ret;
    
                if((int) foo == -1) {
                    if (errno == EINVAL) {
                        fprintf(stderr,
                                "Conversion is not supported");
                    } else {
                        fprintf(stderr, "Initialization failure:\n");
                    }
                    break;
                }
                ret = iconv(foo, &iso, &ibl, &converted, &obl);
    
                // if iconv fails it returns -1
                if(ret == (iconv_t)-1) {
                    perror("iconv");
                } else {
                    // otherwise the number of converted bytes
                    printf("%i bytes converted\n", ret);
                    printf("result: '%s'\n", out);
                }
                iconv_close(foo);
                fprintf(stdout, "debug: event = RUNE, data = %c\n", pe->rune);
                break;
            }
    
            case EVENT_FONT:
                fprintf( stderr, "FUCK FONT\n");
                fprintf( stdout, "debug: event = FONT, data = %d\n", pe->font_id );
                break;
    
            case EVENT_ERROR:
                fprintf( stderr, "FUCK ERROR\n");
                fprintf( stdout, "debug: event = ERROR\n" );
                break;
    
            default:
                fprintf( stdout, "debug: event = UNKNOWN\n" );
        }
    }
    Ответ написан
  • Можно ли слинковать 32-битный .so с 64-битным?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Правда?

    Правда.

    может есть лазейка

    Нет. Без шансов.
    Ответ написан
    Комментировать
  • Как убрать MINGW64 в терминале?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как убрать MINGW64 в терминале?

    Отредактировать переменную окружения PS1.
    Чтобы shell запускался с другим приглашением отредактировать место где эта переменная определена -- ~/.bashrc или ~/.bash_profile.
    Ответ написан
  • Как настроить raspbian что бы постоянно быть root и не печатать sudo?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    теперь при запуске любой программы из меню, у меня открывается консоль и пишет
    [*] This script must be run as root

    Вопрос в том, понимаете ли вы, что так быть не должно, или нет.
    Если да -- перейти к следующему пункту, если нет -- то я предлагаю вам прочитать документы из этого списка, пока такое понимание к вам не прийдёт.
    Как сделать так, что бы все запускалось из меню и не требовало каждый раз писать sudo?

    Разобраться с тем, почему так происходит и исправить.
    Ответ написан
    Комментировать
  • G++ версий 6-7, собирает не исполняемые файлы, а разделяемые библиотеки. Почему?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    g++ последних версий в linux собирает разделяемые библиотеки, а не исполняемые файлы

    Регулярно собираю g++ (правда не под x86), ничего такого не наблюдаю.

    В /bin большинство софта собрано как разделяемые библиотеки. Ощущение, что я что-то пропустил.

    Это не разделяемые библиотеки, это position-independent executable, исполняемые файлы с релокациями. В дистрибутиве включили -pie по умолчанию, чтобы рандомизировать пользовательское адресное пространство. См. https://wiki.ubuntu.com/Security/Features#Built_as_PIE
    Ответ написан
    Комментировать
  • Как распаковать или переименовать неизвестную папку на сервере под Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Видится мне, что есть два варианта:
    1. Распаковать папку с неизвестным названием.
    2. Переименовать папку с неизвестным названием.

    Третий вариант: при распаковке архива tar отрезать один уровень каталогов опцией --strip-components=1
    Ответ написан
    Комментировать
  • Как запустить tcpdump в фоне?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возник ряд вопросов: как завершить конкретный процесс tcpdump, запущенный вчера?

    Сразу после запуска tcpdump вчера отправить его PID в файл. Сегодня прочитать содержимое этого файла и убить процесс с этим номером, если это всё ещё tcpdump.

    Как запустить tcpdump в фоновом режиме?

    tcpdump <опции> >& /dev/null &
    Ответ написан
  • Почему в ioports и iomem одни нули?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Потому что вот такой код в kernel/resource.c занимается приготовлением этих значений:
    if (file_ns_capable(m->file, &init_user_ns, CAP_SYS_ADMIN)) {
                    start = r->start;
                    end = r->end;
            } else {
                    start = end = 0;
            }

    Т.е. чтобы получить не нули нужно иметь CAP_SYS_ADMIN.
    Это изменение появилось в ядре с версии 4.6:
    commit 51d7b120418e99d6b3bf8df9eb3cc31e8171dee4
    Author: Linus Torvalds <torvalds@linux-foundation.org>
    Date:   Thu Apr 14 12:05:37 2016 -0700
    
        /proc/iomem: only expose physical resource addresses to privileged users
    
        In commit c4004b02f8e5b ("x86: remove the kernel code/data/bss resources
        from /proc/iomem") I was hoping to remove the phyiscal kernel address
        data from /proc/iomem entirely, but that had to be reverted because some
        system programs actually use it.
    
        This limits all the detailed resource information to properly
        credentialed users instead.
    
        Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Ответ написан
    Комментировать
  • Почему указатели разные?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    make_request_fn определён как
    typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio);

    соответственно ваша функция filter_mrqfn должна возвращать blk_qc_t.
    Ответ написан
  • Какие ошибки в неблокируемом сокете не приводят к его закрытию?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Какие ошибки в неблокируемом сокете не приводят к его закрытию?
    Какие ошибки неблокируемого сокета можно игнорировать в сетевом программировании

    Вообще это два разных вопроса. Никакие ошибки не приводят к закрытию сокета, закрыть его можно только явно вызвав close.
    Игнорировать ошибки тоже не стоит, потому что они говорят о том, что случилось с данными переданными в send или полученными из recv. А именно, EAGAIN / EWOULDBLOCK говорят о том, что данные не были посланы или приняты, но с сокетом и с соединением (если есть) всё нормально. Кроме того, send и recv возвращают количество реально отправленных/полученных данных, и оно может быть меньше, чем было запрошено. Это не ошибка, а нормальная ситуация, её обязательно надо обрабатывать правильно.
    Почти все остальные ошибки говорят о том, что соединение оборвано и сокет остаётся только закрыть.
    Ответ написан
    1 комментарий