Задать вопрос
  • Почему systemd-journald ест много оперативки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Из 2 гигов оперативки занято 500 мб, причём раньше свободно было больше.

    Память должна быть занятой. Если она свободна -- значит она никому не нужна.

    Из-за чего systemd-journald может есть 10% от оперативки? Куда смотреть?

    Смотреть в колонку VIRT -- приложение выделило себе 266М виртуальной памяти. То, что оно использовало 202М физической памяти для этого -- это просто прекрасно.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    файл "Название какого-то файла.mkv" $WhatFile возвращает в виде "Название" , отрезая всё, что есть после первого пробела

    для этого вместо for WhatFile in $(...) лучше использовать конструкцию find ... -print0 | xargs -0 .... Т.е.
    find $Downloads -regex ".*\.\(mkv\|m4v\|mp4\|ts\|avi\)" -and -mmin +30 -print0 | sort -zr | xargs -0 -I\{} bash -c '
    WhatFile=\{}
    // извлекаем название найденного файла
    WhatFileName=$(basename "$WhatFile"  )
    echo "$WhatFileName"
    // извлекаем папку найденного файла
    WhatFolder=$(dirname "$WhatFile"  )
    echo "$WhatFolder"
    // извлекаем папку найденного файла
    #echo WhatFolder $WhatFolder
    #переименование
    #файла
      if [ -n "$WhatFileName" ]; then
      WhatRenameFile=$( echo "$WhatFileName" |
      sed -f "$Renamer" )
        if [ "$WhatFileName" != "$WhatRenameFile" ]; then
          echo "переименовываем файл из "$WhatFileName" в "$WhatRenameFile""
        mv -fv "$WhatFile" "$WhatFolder"/"$WhatRenameFile"
      echo "пауза 2 секунды"
        sleep 2s
      else 
        echo "Файл соответствует правилам "$WhatFileName""
        fi
      #echo $WhatRenameFile
      fi
    '
    Ответ написан
  • Почему ВМ перезагружается?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я пишу ос и у меня возникла проблема

    Возникла проблема -- отлаживай.
    Разберись, что за адрес у тебя загружается здесь в GDT.

    Вот так это можно пофиксить.
    Ответ написан
  • Почему ядро странно себя ведет?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я пишу новую операционную систему и столкнулся с непредвиденным поведением ядра

    Обычно в этот момент люди начинают пользоваться отладчиком.

    проблема в файле kernel\kernel.asm

    Нет. Ядро твоё не запускается, потому что бутлоадер пытается загрузить его поверх собственного кода:

    0x00008122:  bb 00 81                 movw     $0x8100, %bx
    0x00008125:  50                       pushw    %ax
    0x00008126:  b8 00 00                 movw     $0, %ax
    0x00008129:  8e c0                    movw     %ax, %es
    0x0000812b:  58                       popw     %ax
    0x0000812c:  cd 13                    int      $0x13

    -- это вызов int 13 из бутлоадера, посмотри на адреса. Вот куда возвращается выполнение после этого int 13:

    0x0000812e:  00 00                    addb     %al, (%bx, %si)
    0x00008130:  00 00                    addb     %al, (%bx, %si)
    0x00008132:  00 00                    addb     %al, (%bx, %si)
    0x00008134:  00 00                    addb     %al, (%bx, %si)
    0x00008136:  00 00                    addb     %al, (%bx, %si)
    0x00008138:  00 00                    addb     %al, (%bx, %si)
    0x0000813a:  00 00                    addb     %al, (%bx, %si)
    0x0000813c:  00 00                    addb     %al, (%bx, %si)
    0x0000813e:  00 00                    addb     %al, (%bx, %si)
    0x00008140:  00 00                    addb     %al, (%bx, %si)
    0x00008142:  00 00                    addb     %al, (%bx, %si)
    0x00008144:  00 00                    addb     %al, (%bx, %si)


    Такие дампы ты можешь получить запуская своё ядро в qemu следующим образом:
    qemu-system-i386 -hda collector.bin -d in_asm,exec,cpu -D log
    Ответ написан
    7 комментариев
  • Как запустить другую программу на NASM-е?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как из файла ассемблера (NASM) запустить exe-шник?

    Системным вызовом (т.е. вызовом функции ядра ОС, например execve), либо вызовом библиотечной функции, которая сделает этот системный вызов за тебя (например функции библиотеки C system или функции win32 API CreateProcess).

    Не отдельно, а как-будто ассемблерский файл это и есть ос?

    Загрузить исполняемый файл в память, если он не статически слинкован -- загрузить все его зависимости (и все их зависимости, соответственно), связать вызовы сделанные через таблицы импорта, выполнить релокации для объектов, которые загружены не по адресам для которых они собраны, очистить bss, выделить стек, инициализировать регистры для первого потока, перейти в точку старта. Обычно ядро делает только загрузку исполняемого образа и динамического линковщика, инициализацию bss, выделение стека и запуск первого потока, а дальше динамический линковщик делает всё остальное в юзерспейсе.
    Ответ написан
    Комментировать
  • Могу ли я подключить ноутбук к розетке в поезде?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    может кто сталкивался с этим

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

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

    Потому что mass[0]; -- это не вызов функции, а просто указатель. Вызов функции выглядит так: mass[0]();
    Ответ написан
    Комментировать
  • Как исправить ошибку E0304?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не понимаю, откуда эта ошибка появляется


    Здесь написано, что create_huge_matrix принимает два аргумента, и второй имеет такой же тип, как тип элементов внутреннего вектора:
    template <typename T>
    void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);


    а здесь первый аргумент типа std::vector<std::vector<double>>, а второй -- int:
    create_huge_matrix(matrix_s, 5);

    а здесь вообще только один аргумент:
    create_huge_matrix(matrix_p);
    Ответ написан
    Комментировать
  • Как описать перегрузку оператора умножения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    перегрузка оператора должна скалярно умножать два массива. Под этим подразумевается, например: массив1 - 3,2; массив2 - 5,1, скалярное умножение: 3*5 + 2*1 = 17

    LabArray operator* (const LabArray& other) {
          double sum = 0;
            for (int i = 0; i < size; ++i) {
              sum += Array[i] * other.Array[i];
            }
          return sum;
        }

    Если результатом должно быть число и возвращаешь ты double, то почему тип возвращаемого значения -- LabArray?
    Ответ написан
    Комментировать
  • Как проверить число ли подается на вход?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    isdigit

    проверяет, является ли символ цифрой или нет. Помогло бы вам, если бы вы получали из стандартного ввода строку и сами переводили её в число. Но нет, операция
    int count_students;
      cin >> count_students;

    вводит не строку, а число.

    Чтобы проверить, был ли ввод успешным или нет можно вызвать cin.fail(), типа того:
    cin >> count_students;
      if (cin.fail()) {
        cout << "Неправильные входные данные. Попробуйте еще раз.";
        cin.clear();
        cin.ignore();
        goto Step1;
      }
    Ответ написан
    1 комментарий
  • Lsusb и lspci не видят тачпад ноутбука ELAN, однако dmesg его видит?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    lsusb и lspci не видят его

    и это правильно, потому что, судя по dmesg, это i2c устройство подключенное к i2c-контроллеру висящему на шине PCI (вот к этому: 00:15.1 Serial bus controller: Intel Corporation Cannon Point-LP Serial IO I2C Controller #1 (rev 30)).
    Ответ написан
    3 комментария
  • Как на Linux читать и изменять память процесса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Классический способ состоит в использовании системного вызова ptrace с кодами запроса PTRACE_ATTACH для присоединения к процессу, PTRACE_PEEKTEXT и PTRACE_POKETEXT для чтения и записи его памяти и PTRACE_DETACH для отсоединения.
    Ответ написан
    Комментировать
  • Нормален ли такой код?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нормален ли такой код?

    В каком смысле "нормален"? Он понятен, но не очень хорошо организован и делает какие-то с виду лишние действия.
    Ответ написан
  • Как инициализировать n так что бы оно работало для всех введенных n,а не только для 2?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    код работает только для 2 строк , а как записать что бы для всех которые будет вводить пользователь?

    заменить
    int k[2]={};
    на
    int k[100]={};
    Ответ написан
    Комментировать
  • Не запускается ядро Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что я делаю не так?

    Ты не предоставляешь достаточно данных для диагностики. Как ты конфигурировал своё ядро? Как устанавливал?

    Unable to mount root fs on unknown-block(0,0)

    мой хрустальный шар говорит, что ты либо не установил модули своего ядра, либо они не попали в initramfs.
    Ответ написан
    21 комментарий
  • Чем это достигается?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    выбором компилятора? опциями компилятора? неизвестно, ты не привёл никакой полезной информации.
    Ответ написан
    2 комментария
  • В чем логическая ошибка сигсегва?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем проблема

    ну например find_index_bigger_element может вернуть -1, но ты это не проверяешь и сразу используешь полученный индекс в swap
    Ответ написан
  • Ne sovsem ponyatno kak ispravit, kto podskajet?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ne sovsem ponyatno kak ispravit

    смотреть не туда, куда ты смотришь сейчас (не на определение COMPILE_TIME_ASSERT, с ним всё ок, оно такое, чтобы генерировать ошибку компиляции, когда какое-то условие в коде не выполняется), а в строку
    ../deps/source-sdk-2013/mp/src/public/tier0/threadtools.h:1130

    где этот assert сработал, и разбираться с ней.
    Ответ написан
    6 комментариев
  • Bash не видит переменную после выхода из цикла. В чем может быть проблема?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    файл становится пустым после скрипта
    sed 's/${search%$'\n'}/${replase%$'\n'}/g' $file > $file


    неудивительно, >$file делает файл пустым ещё до вызова sed. Чтобы редактировать файл на месте у sed есть ключ -i:
    sed 's/${search%$'\n'}/${replase%$'\n'}/g' -i "$file"
    Ответ написан
    3 комментария
  • Как исправить ошибки use of deleted functions QT 5.12?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не понимаю из за чего может быть проблема

    вот из-за этого:
    sockets.push_back(*socket);
    в сообщениях об ошибке написано, что QTcpSocket нельзя копировать, а здесь ты делаешь именно это. Храни какие-нибудь умные указатели в векторе sockets вместо объектов.
    Ответ написан
    Комментировать