LINUX.ORG.RU

Сообщения normann

 

Можно ли опираться на порядок объявления переменных в пресетах CMake?

Пресеты (предустановки, presets) cmake. Речь о поле «cacheVariables» пресета конфигурации. Существует ли в объявлении этих переменных стабильная последовательность их объявления, такая что бы на неё можно было опереться при последующем объявлении следующих переменных, используя значения первых для определения значения последних (как в императивных языках программирования)? Допустим в одной строчке я определил переменную VAR1 с каким-то значением, и хочу прочитать её значение в другой последующей строчке, где, например, определяю другую переменную VAR2, для задания её значения, например как «value»: «${VAR1}»:

"cacheVariables": {
    "VAR1": "linux.org.ru",
    "VAR2": "${VAR1}"
},

Могу ли я использовать этот подход для определения входных переменных в CMakeUserPresets.json и их чтения в CMakePresets.json?

 

normann
()

У меня одного выпилился ksysguard из Fedora40?

Обновил федору (39) до 40й версии. Всё конечно глючное стало, plasma 6, но не об этом. У меня был ksysguard, я им пользовался, а как обновился, его не стало. В репозитории его тоже нет, есть какой-то ksysguardd и всё. Это у всех так? А куда, а зачем, а как быть?

 fedora40,

normann
()

Увеличение раздела программой «Управление разделами KDE» уничтожает данные на нём?

Раздел в формате ext3 на диске ssd. Если я увеличу его размер программой «Управление разделами KDE» (partitionmanager) без перемещения, предполагает ли это потерю данных на разделе, или программа рассчитана на изменение без потерь?

 , ,

normann
()

Допускают ли протокол X11 и какие-либо реализации выбор кастомного TCP-порта вместо 6000+?

Иными словами, возможно ли при запуске сервера X11 и его клиентов указывать, что бы сервер слушал не 6000, а допустим 7000 или какой-либо другой, а клиенты, подключались тоже не на 6000, а на тот самый, который выбран при запуске сервера? Может ключи какие для этого есть?

 

normann
()

Можно ли на этом форуме постить темы по вопросам, возникающим в среде Mac OS?

Собственно и весь вопрос.

 ,

normann
()

Посоветуйте годную книгу по HTTP

Посоветуйте пожалуйста годную актуальную самодостаточную, но без фанатизма, книгу по HTTP, только такую, чтоб там не было перемешано со всяким джавами растами, чисто сабж (сам я, если что, на плюсах пишу). Смотрю во всех вакансиях только и дело, что rest, rest, restful, rest, а я далёк от этой темы, по этому такие вакансии для меня закрыты. Хочется понимать достаточно для работы с протоколом, но не мусолить до уровня битов-байтов протокола, своих сериализаторов писать не собираюсь.

 ,

normann
()

O_NONBLOCK + write(сокет). Почему EWOULDBLOCK?

Я не слабо разбираюсь во внутреннем устройстве ОС, системному программированию не обучен, по этому адресую свой вопрос грамотным людям.

Допустим у меня сетевой сокет с флагом O_NONBLOCK. Для более широкого охвата примера возьмём два разных случая, пусть в одном из них записываемые в сокет данные отправляются получателю в виде датаграмм, а в другом в виде гарантированных TCP пакетов.

Собственно вопрос, что должно произойти под капотом write() на этом сокете там, на стороне операционной системы и/или библиотеки, что бы он вернул мне EWOULDBLOCK? Меня интересует конкретные вещи, не абстрактное типа «что-нибудь, что не позволит запись», а конкретно что там происходит и в каком виде это может явиться причиной EWOULDBLOCK.

Может быть ещё найдутся ссылки на литературу или иные источники, о которых вы знаете, что там эти вещи хорошо описываются, желательно не для создателей операционных систем, а для прикладных программистов.

Спасибо.

 ,

normann
()

Как прервать бустовый asio acceptor::accept() из другого потока?

Пытаюсь немного освоить Boost.Asio, и при написании серверной части возник вопрос. Вот допустим у меня отдельный рабочий поток и в нём в цикле крутится tcp::acceptor::accept(…), вопрос, как мне из другого потока прервать ожидание на вызове accept(), что бы завершить работу цикла?

 ,

normann
()

thunderbird как служба

Товарищи, существует ли средство для или в thunderbird, позволяющее отслеживать наличие новых входящих писем без запуска самого приложения thunderbird, которое при обнаружении нового письма уведомляло бы пользователя и предлагало запустить основной клиент? Интересует в первую очередь возможность отслеживать письма без загрузки в память всего относительно тяжеловесного функционала приложения в угоду постоянно работающей легковесной службы. Что можете посоветовать в этом направлении? Спасибо.

 

normann
()

Веб-камера под Linux

Имеет ли на сегодняшний день значение, какую веб-камеру выбирать для полноценной работы под линукс, или сегодня все камеры имеют полную совместимость с этой ОС? Если имеет значение, то поделитесь, будьте добры, кто разбирается, какую лучше выбрать?

 

normann
()

Btrfs на домашний компьютер, стоит ли?

Друзья, кто-нибудь ставит на домашний компьютер Btrfs? Если есть такие, расскажите, какие преимущества (а так же недостатки) даёт эта система на домашнем ПК. Собираюсь стаить ОС, но пришёл в замешательство при выборе ФС. Знаю, что Btrfs чуть медленнее чем Ext4. У меня свежий ssd (nvme) на терабайт, собираюсь разбить его отдельно на корень и домашний каталог. Похоже что ФС ставлю на диск очень на долго, по этому не хочу ошибиться с выбором на долгосрочную перспективу и хочу понять, есть ли смысл стаить Btrfs, или сегодня можно оставить Ext4. В перспективе ещё хочу приобрести жёсткий диск тоже на терабайт.

UPD. А вот вопрос, можно ли как-то осуществить миграцию диска с Ext4 на Btfs без переустановки ОС?

UPD. По итогу обсуждения: Вот что, парни, я решил. Почитав вас, почитав тред, по ссылке приведённой товарищем @cocucka, почитав интервью небезызвестного Эдуарда Шишкина, я пришёл к выводу, что для пользования Btrfs мне потребуется А - выучить всю теорию по этой ФС и полное руководство по её обслуживанию на разные случаи, Б - изучить негативные опыты пользователей и истории успеха по выходу из плохих ситуаций. И как минимум А я должен выполнить до установки ФС и на это требуется время, а я хочу всё-таки уже установить операционную систему на свой новый долгожданный компьютер (который, к слову, был куплен как распоследняя модель распоследнего поколения и валялся у меня в виде комплектующих полтора года и уже успел устареть :D). Так, что я понимаю, что прямо сейчас я не готов к Btrfs, но не говорю ей прощай, а только до свидания. Возможно набью шишек в виде потерянных данных из-за невозможности отката, и тогда с воодушевлением скажу - всё, хочу Btrfs. Парни, большое вам спасибо за отзывчивость и советы.

 , ,

normann
()

Кто-нибудь встречал книгу Скотта Мейерса в цветном формате?

Речь идёт о книге Скотта Мейерса «Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14» на русском языке. Видел PDF-ку на языке оригинала, там были разноцветные текст, разметка и подсветка синтаксиса. Как по мне, ну очень приятно выглядит, и читать приятно. Мне вот интересно, существует ли эта книга (бумажная) на раусском языке в таком же цветном формате. Ни кому такое не попадалось?

 , ,

normann
()

Как отвязаться от std::future, что бы не ждать завершения потока.

C++. Есть объект std::future на стэке, полученный от std::async(), функция завершается, и при возврате из функции деструктор объекта std::future ждёт, пока завершится, отслеживаемый им поток, что вызывает неприемлемые задержки. Как можно отвязать этот объект от потока, что бы при его уничтожении не ждать, когда завершится поток?

 , , ,

normann
()

Thread local storage в cgo (на Си из Go)

Есть необоходимость использовать thread local storage в функциях написанных на Си и вызываемых из кода на языке Го. Я ни в го, ни в thread local storage не умею (последнее предстоит освоить). Есть ли знатоки темы, возможно ли вообще применение локалных для потока данных для функций вызываемых из го, и какие средства для этого подходят? Могу ошибаться, но кажется для применения такого хранения данных требуется pthread, однако собранная программа на Го не импортирует pthread, в зависимостях такая не значится, будет ли работать TLS, если явно подключить эту библиотеку?

 , ,

normann
()

Странное поведение sscanf()

В коде на Си спользую sscanf(), что бы распарсить строку вида «<0x7fb2a00010a0|1779>» (два числа, шестнадцатеричное и десятичное) шаблоном «<%p|%zu>», и оно то работает, то не работает. Может в форме входной строки или шаблоне что-то не так, но что интересно, что sscanf всегда работает по разному, сегодня он данные принимает и распознаёт, а завтра уже говорит «ничего не вижу», а после завтра видит только одно из двух чисел, и от чего его настроение зависит мне не понятно. Вызов выглядит вот так:

int atk_memfile_from_specresid( const char *residual,
                                char const **bufpp,
                                size_t *szp )
{
    int result = sscanf(residual, "<%p|%zu>", bufpp, szp);
    if( result == EOF )
    {
        return 0;
    }
    if( *bufpp < (const char*)0x100 )
    {
        return 0;
    }
    if( result )
    {
        return 1;
    }
    return 0;
}
Передаётся аргументом residual строка, допустим (из реального примера) «<0x7fb2a00010a0|1779>». Сегодня на моих глазах на одной машине находит, а на другой машине этот текст не принимается, функция возвращает 0. У меня два вопроса:

  • Что не так с входными данными и шаблоном?
  • И почему поведение каждый раз меняется?

 ,

normann
()

Отладчик указывает позиции в коде, не соответствующие действительности.

  • GNU gdb (GDB) Fedora 12.1-1.fc35
  • g++ (GCC) 11.3.1 20220421 (Red Hat 11.3.1-3)
  • cmake version 3.24.2 (by Kitware)
  • Qt Creator 9.0.0 based on Qt 6.4.1
  • Проект на C++, собирается c со строкой в симейклисте set(CMAKE_CXX_FLAGS «-std=c++17 -O0 -Wall -fmessage-length=0»)

Проект полностью очищен, cmake с нуля, сборка с нуля. Во время отладки среда тычет не в те строки в тексте, в стэке вызовов одно, а курсор (номер строки в том же стэке вызовов) указывает в другое. Из под самостоятельного запуска gdb пишет, что «Missing separate debuginfos …». За день до этого всё работало отлично, сегодня включил машину и такое. Не знаю как исправить эти отладочные символы, куда смотреть.

 , ,

normann
()

Линковка при сборке, линковка при запуске. Всё сложно.

Есть библиотека, которая может собираться в двух исполнениях, статической или динамической. Назову её условно libseveral. libseveral.so установлена в операционной системе. Есть разделяемые библиотеки (.so), установленные в операционной системе, они ссылаются прямо или косвенно на libseveral.so в динамическом исполнении и тянут её в память за собой, назову их - libanother1.so, libanother2.so и libanother3.so. Есть мой проект разделяемой биллиотеки (назову libroot.so), которая: а) линкует libseveral.a в статическом исполнении, б) линкует системные libanother1.so, libanother2.so и libanother3.so. В результате, libseveral.a в бинарник не попадает, а тот оказывается слинкован с libseveral.so через остальные библиотеки. Я приблизительно понимаю почему, но не уверен.

libseveral.a
libseveral.so

libanother1 -> libseveral.so
libanother2 -> libanother3.so
libanother3 -> libseveral.so

libroot.so -> libseveral.a
libroot.so -> libanother1.so
libroot.so -> libanother2.so

Вопрос. Существует ли способ сделать так, что бы к libroot.so было прилинковано всё содержимое libseveral.a, а остальные библиотеки, libanother… которые линкуются в рантайме не загружали за собой libseveral.so, а вызывали вместо этого libseveral.a, слинкованный в libroot.so? Менять библиотеки, лежащие в операционной системе нельзя, так же как и устанавливать в систему ничего, кроме libroot.so - требование. Мне необходимо, что бы всё прилинкованное к libroot.so вызывало исключительно libseveral.a, т.к. libseveral.a это мой форк. Как-то так.

 , ,

normann
()

Предекларация функции в анонимном пространстве имён C++

Доброго времени, коллеги.

namespace abc
{
	void f1(void);
}

void abc::f1(void)
{
	wprintf(L"abc::f1()\n");
}

namespace
{
	void f2(void);
}
Видим, что abc::f1() реализована вне тела пространства имён abc, с предварительным объявлением в теле пространства.

Как сделать то же самое для f2() так же вне границ пространства имён?

 ,

normann
()

Можно ли сделать доступным ввод-вывод файла только для текущего процесса?

Как-то так.

 , ,

normann
()

Можно ли сделать фиктивный файл с произвольным доступом в буффер памяти вместо диска.

Или как обмануть библиотеку и подсунуть ей буфер вместо файла.

Есть библиотека, менять код которой, по условиям задачи не следует. По указанному ей пути она открывает файл для произвольного доступа на запись (использует fseek() и всё такое). Существуют ли какие-нибудь средства, дающие возможность сделать фиктивный файл, отображаемый в адресном пространстве файловой системы, но по сути являющимся буфером в памяти, что бы можно было передать путь к нему библиотеке и получать её вывод без использования реального файлового ввода вывода на диск? mkfifo() отметается, т.к. позволяет только последовательный доступ, pipe() и fmemopen() не имеют файловых имён.

 

normann
()

RSS подписка на новые темы