LINUX.ORG.RU

Сообщения hobbit

 

Какой программой учёта личных финансов вы пользуетесь?

 , , ,

Несколько пожеланий голосующим.

  1. Если выбираете пункты «другой свободной», «другой проприетарной», «мобильным приложением», «онлайн-сервисом», «self-hosted сервисом» — пишите в комментариях, какой/каким именно.

  2. Комментарии от авторов самописных программ, если у нас такие есть, тоже приветствуются, планета должна знать своих героев. :)

  3. Если вашим учётом занимаетесь не вы, а кто-то из членов семьи (жена, муж, родители…), не надо писать "где пункт «Всё считает жена?». Лучше поговорите с ними и выберите в опросе их вариант, возможно они тоже используют какую-то программу, файлы или пишут в тетрадке. Опрос не о том, кто в семье финансами рулит, а о том, какие технические средства используются.

  4. Если не занимаетесь учётом личных финансов потому, что просто не нашли подходящую для вас программу – напишите, что именно в существующих программах вас не устроило.

Мультивыбор добавил, в частности, потому, что применение локальных файлов, например, может сочетаться со специальной программой учёта. Скорее всего, то же относится и к банк-клиентам.

P.S. В опрос, к сожалению, не попала любопытная GTK-программа Home Finances от ЛОРовца @St_Junker, снимки которой автор выкладывал в галерею ЛОРа аж в 2009 году, и которая по идеологии сильно схожа с проприетарной программой «Домашняя бухгалтерия». Репозиторий на sourceforge, кстати, живой, поборники упрощённой модели учёта «приход – расход – перенос» могут ознакомиться, только надо уточнить, какая версия GTK там используется, скорее всего – достаточно древняя.

  1. не занимаюсь учётом личных финансов 198 (44%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. держу в голове 107 (24%)

    ****************************************************************************************************************************************************************************

  3. статистикой банк-клиентов 84 (19%)

    ***************************************************************************************************************************************

  4. вбиваю в файлы (текст, электронные таблицы и др.) 68 (15%)

    *************************************************************************************************************

  5. записываю на бумаге 31 (7%)

    **************************************************

  6. мобильным приложением (без привязки к онлайн-сервису) 15 (3%)

    ************************

  7. онлайн-сервисом (в т.ч. через мобильный клиент) 12 (3%)

    *******************

  8. GnuCash 10 (2%)

    ****************

  9. самописной 9 (2%)

    **************

  10. KMyMoney 6 (1%)

    *********

  11. HomeBank 6 (1%)

    *********

  12. другой проприетарной для ПК 5 (1%)

    ********

  13. ledger 4 (1%)

    ******

  14. другой свободной для ПК 3 (1%)

    ****

  15. self-hosted сервисом 3 (1%)

    ****

  16. Skrooge 2 (0%)

    ***

  17. Money Manager Ex (mmex) 2 (0%)

    ***

  18. hledger 2 (0%)

    ***

  19. Grisbi 1 (0%)

    *

  20. 1С с самописной конфигурацией 1 (0%)

    *

  21. Eqonomize! 0 (0%)

  22. 1С:Деньги 0 (0%)

Всего голосов: 569, всего проголосовавших: 446

hobbit
()

Посоветуйте бюджетного регистратора

 ,

Привет, ЛОР.

Ру-центр в последние несколько лет стал отличаться в первую очередь совсем уж конским ценником. Основной домен я оттуда выводить вряд ли буду, но вот что-то новое там регистрировать совсем неохота.

Какого регистратора можете посоветовать, если понадобится завести домен (желательно в .org или .io, но возможны варианты) для сайта заведомо некоммерческого небольшого технического проекта?

Цена – чем дешевле, тем лучше. Варианты с халявой тоже рассматриваю, если там не придётся 20 раз приседать а-ля «Dear PVS Studio».

География не особо важна, но принципиально важна безгеморройная оплата из России. С криптой связываться неохота, с маскировкой своего географического положения тоже.

Обновление: всем спасибо, выбрал Beget. В гугле не забанен, но в силу не слишком большого опыта (кроме ру-центра, дел особо больше ни с кем и не имел) могу не отличить маркетинговые обещания и проплаченные обзоры от реальной экономии. Поэтому ЛОРовцам с опытом поверю больше, чем гуглу. :)

hobbit
()

Отключили EnableAUR

 ,

Привет, ЛОР.

Мне перед отпуском в манжару прилетел новый pamac.conf.pacnew, но руки до него дошли только сейчас. В основном, мелочь, но я заметил, что EnableAUR закомментирован.

Кто знает, почему?

hobbit
()

Аппаратные текстовые процессоры

 , ,

Привет, ЛОР.

Все мы знаем, что певец Льда и Пламени Джордж Мартин пишет свои романы в WordStar 4.0 для MS-DOS, а классик киберпанка Нил Стивенсон (написавший, помимо прочего, книгу «В начале была командная строка») – так вообще в GNU Emacs.

Но оказывается, бывает ещё круче. Я тут зашёл на Википедию почитать библиографию Кобо нашего Абэ и набрёл на следующее:

Абэ был первым японским писателем, который стал сочинять свои произведения, набирая их в аппаратном текстовом процессоре (начиная с 1984 года). Абэ пользовался продуктами фирмы NEC модели «NWP-10N» и «Бунго» (яп. 文豪).

К сожалению, ни Гугл, ни Яндекс ничего внятного про NWP-10N не говорят, почти все содержательные ссылки ведут на тексты, посвящённые биографии Кобо Абэ.

…Ну и понятно, что с массовым развитием ПК подобная продукция сошла на нет…

А если пофантазировать? Я бы вот не отказался от электронной записной книжки в формате нетбука. Аппаратная клава и экран. Заманчиво выглядело бы с экраном e-Ink, но они слишком тормозные, по крайней мере, недавно такими были.

И оснастить всё это дело операционкой, которая грузится за 2-3 секунды. Появилось вдохновение – включил и начал строчить. Пора прерваться – сохранил и выключил.Либо сильно оптимизированный линукс, либо вообще какой-нибудь EmBox. Кроме редактора, можно добавить ещё пару-тройку приложений типа органайзера, но не в ущерб быстродействию. Полноценная многозадачность и многооконность не нужна, вполне устроит переключение задач по типу PalmOS.

Wi-Fi желателен, но не обязателен, меня бы вполне устроило, чтобы оно подключалось по проводу по UMS как обычная флешка (и режим хоста как альтернатива). Впрочем, сильно возражать не буду если и с вайфаем, он просто слишком много технологий за собой потянет, как аппаратных, так и программных.

Скажите, я чего-то совсем нереального хочу?

P.S. Да, разумеется, это уже не аппаратный текстовый процессор, а аппаратно-программный. Но я про применяемость, а не про то, что под капотом.

hobbit
()

Debian GNU/Hurd 2025

 ,

Группа Debian

Параллельно с Debian 13 представлен выпуск дистрибутива Debian GNU/Hurd 2025, сочетающего программное окружение Debian c ядром GNU/Hurd. Репозиторий Debian GNU/Hurd включает примерно 72% пакетов от общего размера архива Debian, в том числе портированы Firefox и Xfce. Установочные сборки сформированы (364МБ) для архитектур i386 и x86_64. Для ознакомления с дистрибутивом без установки подготовлены готовые образы для виртуальных машин. Платформа GNU/Hurd не входит в число официально поддерживаемых архитектур Debian, поэтому релизы Debian GNU/Hurd формируются отдельно и имеют статус неофициального выпуска Debian.

( читать дальше... )

ISO-образы для amd64 и i386

>>> Подробности (OpenNet) (opennet.ru)

hobbit
()

Ищу роутер для самостоятельной установки OpenWrt в 2025 году

 , ,

Привет, ЛОР.

Что из доступного в российских магазинах посоветуете? Чтобы гарантированно ставился ванильный OpenWrt (самостоятельно, не ограничиваясь прошивкой от поставщика роутера).

Из прочих требований:

  • LAN - не менее 4 портов;
  • WAN - щобы был (хотя мне кто-то говорил, что с OpenWrt можно любой порт назначить WAN-ом, не знаю, правда ли, матчасть ещё не курил, но обязательно буду);
  • Wi-Fi - специальных требований нет, но наличие требуется.

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

Личный опыт по прошивке рекомендованной вами модели КАТЕГОРИЧЕСКИ ПРИВЕТСТВУЕТСЯ.

hobbit
()

Стиль отображения в Roundcube

 ,

Привет, ЛОР.

Недавно я перенёс свою почту на другой VDS. Сказать, что новый вид Roundcube мне сильно не понравился – ничего не сказать.

Ну ладно. Решил посмотреть, можно ли его как-то потюнить. Во всех руководствах написано, что Roundcube поддерживает разные стили оформления, и даже на официальной странице со скриншотами есть примеры, тема Larry сильно напоминает старую и меня бы вполне устроила…

Но почему-то у меня в настройках такого не наблюдается. По идее это должно быть Settings -> Preferences -> User interface. Но я там наблюдаю только выбор языка и несколько галочек («Pretty dates» я, разумеется, тут же злобно отключил, на мой взгляд, все эти «пн» вместо даты и времени совсем не Pretty).

Версии пакетов:

ii  roundcube                        1.6.9-70-deb11                        all          skinnable AJAX based webmail solution for IMAP servers - metapackage
ii  roundcube-core                   1.6.9-70-deb11                        all          skinnable AJAX based webmail solution for IMAP servers
ii  roundcube-mysql                  1.6.9-70-deb11                        all          metapackage providing MySQL dependencies for RoundCube
ii  roundcube-plugins                1.6.9-70-deb11                        all          skinnable AJAX based webmail solution for IMAP servers - plugins
ii  roundcube-plugins-extra          1.4.10+1-3                            all          skinnable AJAX based webmail solution - extra plugins

Все пакеты, кроме последнего, были предустановлены на VDS. Последний я сам поставил с горя (разумеется, из репы, через apt-get), но это не помогло (и номер версии намекает, что с ним не всё так просто).

Куда копать?

P.S. додумался сделать обновление системы из реп, перегрузил сервер. Roundcube минорно обновился до 1.6.9-79, но моей беде это не помогло…

P.P.S. Оказалось, у меня сборка Roundcube от ispmanager. Что с этим делать, пока не решил, второй переезд подряд затевать сразу как-то неохота. Интересно, параллельно с ней «ванильный» поставить получится?..

hobbit
()

Сюрпризы сборки Qt 5.15 на GCC 15 (Qt5 EOL Official Edition посвящается...)

 , ,

Привет, ЛОР.

Пытаюсь собрать Qt 5.15.4 с GCC 15.1.1. Часть граблей знакомые, обошёл. Но выявились новые. Причём ругань не на сам кутешный файл, а на заголовочник из ICU, который у меня в системе стоит. Вызывает его подпроект в qtlocation/src/3rdparty/mapbox-gl-native.

Текст ошибки (даже двух, но вторая, вероятно, наведённая):

/usr/include/unicode/localpointer.h:561:26: ошибка: «auto» параметр недопустим в данном контексте
  561 | template <typename Type, auto closeFunction>
      |                          ^~~~
/usr/include/unicode/localpointer.h:573:76: ошибка: некорректный аргумент шаблона 2 [-Wtemplate-body]
  573 |     explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)

Кусок самого localpointer.h:

template <typename Type, auto closeFunction>
class LocalOpenPointer : public LocalPointerBase<Type> {
    using LocalPointerBase<Type>::ptr;
public:

Подозреваю, конечно, что компилятор шарашит по либо слишком старому, либо слишком новому стандарту C++. В файле mapbox-gl-native.pro на себя обращают внимание строки

CONFIG += qt c++14 exceptions warn_off staticlib object_parallel_to_source
CONFIG -= c++1z

А рядом лежит свеженький Makefile, который qmake из этого проекта сгенерировала, и там в переменной CXXFLAGS присутствует -std=c++1y.

Как связать концы этого клубка?

hobbit
()

Запуск sberbankPDF2Excel.py в Linux: благодарность micronekodesu и ещё раз о Питоне

 , ,

Привет, ЛОР.

С некоторых пор Сбербанк-онлайн выпилил «физикам» возможность сохранения выписок в структурированных форматах, оставил только PDF. Разработчик, публикующийся на Гитхабе под именем Ev2geny, создал программу на Питоне, конвертирующую этот PDF в форматы xlsx и csv. К сожалению, внятную сборку он сделал только для Windows, а инструкция по запуску под линуксом у меня не заработала.

К счастью, @micronekodesu откликнулся на мою проблему и написал мини-инструкцию по запуску sberbankPDF2Excel.py в виртуальном окружении. Я её протестировал – работает, в CSV сохраняет.

Однако на вопрос по ссылке (заданный в контексте дискуссии о лучшем способе распространения программ на Питоне)

просто из-за того что я питоняша у меня не возникает проблем?

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

Ещё раз спасибо @micronekodesu! Ну и автору программы, конечно, хотя я не уверен, что он читает ЛОР.

P.S. Та тема уже в архиве и отвечать там нельзя. Иначе я бы просто оставил там комментарий. С другой стороны, я уверен, что я не единственный линуксоид, пользующийся Сбербанком, поэтому дополнительный пиар способу обхода его закидонов :) не помешает.

P.P.S Под firefox Сбербанк-онлайн создаёт битые PDF. Под chromium всё прекрасно работает. Это замечание, конечно, уже не по тематике нашего форума, хотя… как мы радовались когда-то, что монополии IE пришёл конец… Эхъ…

hobbit
()

Потыкайте мой AppImage, пожалуйста

 ,

Привет, ЛОР.

Вооружившись appimagetool и башем, я склепал AppImage для DoubleContact с условным номером версии 0.2.5beta2. Собирал под Ubuntu 18.04, по идее на практически любом x86_64-дистрибутиве моложе 7 лет должно работать. Кому интересен мой проект – просьба потыкать и отписаться, что за дистрибутив и каков результат. В отличие от предыдущей статической сборки, рут не требуется.

Не получилось добавить в программу Appstream. Проблема очень похожа на описанную в крике души по ссылке: сначала она предупреждает, что Id должен быть в формате обратного доменного имени, когда я делаю его таким, склоняет переименовать сам файл, когда я это делаю, не видит файл метаданных вообще. Если кто-то знает, что с этим делать – добро пожаловать в комментарии. Но на работоспособность самой программы это не влияет, только на предупреждение при вызове appimagetool.

Скачать с гитхаба

Основная тема по DoubleContact

hobbit
()

Можно ли определить (хотя бы примерно) искажённый байт в JPEG?

 , ,

Привет, ЛОР.

Возникла нетривиальная задачка уровня «шлакоблокунь». :) Есть кучка JPEG-файлов, вытащенных из MJPEG-потока с довольно большим количеством битых участков. Оригинальный поток тоже имеется и связать позиции файлов с позицией потока я могу. Нужно определить закономерность, с которой возникают сбои.

Со сбоями в растровых изображениях я сталкиваюсь не в первый раз, даже написал простенький алгоритм, который на раскодированном битмапе считает разности цветовых компонентов и определяет строку, с которой начался искажённый фрагмент. Немножко усложнив алгоритм, можно и пиксель определить (хотя там уже есть нюансы). Так вот, а получится ли, зная X и Y, определить, какой байт в JPEG-е виновен в его подтверждении?

На самом деле да, я понимаю, что этих байт может быть несколько, поскольку JPEG собирается из нескольких таблиц. Но если на выходе у меня будут несколько «подозреваемых», это тоже поможет сложить пазл.

Битые байты, разумеется, могут попадать не только на «количественные» поля. Но если в сигнатуре «JFIF» или «AVI1» вместо I будет Q или что-то вообще нечитаемое – тут сразу понятно, кто виноват. Если в таблице смещений попадётся смещение, выкидывающее за пределы файла – тоже. К сожалению, не все искажения такие легко определяемые.

Уже вижу, как мне пишут про проблему XY. Да, методически я занимаюсь не совсем правильными вещами, надо искать сам источник искажений. Но доступ к нему у меня не слишком регулярный, а вот анализ потока помог бы понять, периодические эти искажения или нет? И если да, то с каким периодом? Байты только искажаются или добавляются/пропадают? В зависимости от этого уже можно определиться, кого пинать – канал связи, сервисы, через которые этот поток проходил до меня и др.

hobbit
()

Как правильно включить поддержку ICU в SQLite

 , ,

Привет, ЛОР.

Столкнулся с тем, что в SQLite не работают upper() и прочие регистрозависимые строковые функции для нелатинских символов. Долго искал, думал, я дурак, но оказывается, это поведение по умолчанию, давным-давно и много где описанное.

Почитал. В статье на Хабре предлагают либо пересобирать SQLite с включённым SQLITE_ENABLE_ICU, либо загрузить расширение. Ну, думаю, пересобрать и захламить систему я всегда успею, давай попробуем сначала второй путь.

Ссылка из статьи не работает, но в актуальных исходниках SQLite искомый icu.c находится без труда. Качаю. Собираю. Получаю libsqliteicu.so. Гружу его из SQLite CLI – LIKE и upper() начинают прекрасно работать.

Теперь пытаюсь подгрузить это в своей кутешной программе. Сначала вызываю sqlite3_enable_load_extension(), потом sqlite3_load_extension(). Первое проходит успешно, во втором получаю ошибку:

/usr/lib/libsqliteicu.so: undefined symbol: sqlite3_sqliteicu_init

Лезу в исходник: там вместо указанной присутствует функция sqlite3_icu_init(). Ну, хитрожопый я, конечно же, попробовал её переименовать. Добился только того, что текст ошибки поменялся на «error during initialization:».

По совету @utf8nowhere стал указывать другое имя точки входа третьим параметром sqlite3_load_extension() – тот же самый error during. Двоеточие намекает, конечно, что у ошибки должна быть дополнительная расшифровка, но где её искать, не очень понятно.

Подобного рода разночтения, конечно, первым делом наводят на мысль о несовместимости версий. Начинаю потрошить кутешный драйвер БД. Иду в /usr/lib/qt/plugins/sqldrivers (у меня он соответствует Qt5) и делаю ldd libqsqlite.so. Получаю, в числе прочего:

libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x0000728bea28f000)

В свою очередь, libsqlite3.so.0 является симлинком для libsqlite3.so.3.49.1. То есть «библиотечная» SQLite той же версии, что и sqlite3 CLI. Но во втором загрузка расширения работает, а в первой нет.

Куда копать? Можно, конечно, вернуться к варианту с пересборкой, но там свои вопросы будут…

P.S. Попробовал вариант с пересборкой, теперь кутешный драйвер верещит «Driver not loaded», а это может означать что угодно…

Обновление: как выяснил @utf8nowhere, загрузка расширения не работает, если есть открытые запросы к БД. Необходимо либо вызвать у них метод finish(), либо проследить, чтобы соответствующие объекты завершили работу (вызван деструктор).

hobbit
()

В mcedit сломались неюникодные кодировки

 ,

Привет, ЛОР.

С обновлением системы прилетел mc 4.8.33. И при попытке отредактировать файлы в кодировках, отличных от UTF-8, часть заглавных букв в mcedit начинает отображаться точками. Грешил на шрифт – но mcview тот же самый текст отображает нормально, проблема именно при редактировании, когда я начинаю переключаться между кодировками в mcedit по Alt+E.

К примеру, в koi8-r сбивается отображение заглавных букв с А по П, в cp1251 – с А по О.

Скорее всего, придётся засучить рукава и написать в багтрекер, но прежде чем этим заниматься, я хочу понять, есть ли такая проблема у кого-нибудь на ЛОРе, и вообще, проблема ли это самого mc или какой-нибудь используемой библиотек.

Система Manjaro KDE с актуальными обновлениями, mc запускается из konsole. Шрифт – Terminus 12 (но как я уже сказал, mcview он нормально работать из той же konsole не мешает).

P.S. Я обычно не модерирую темы, которые сам создаю. Но если кто-то очень захочет подкинуть флуда на тему «азаза, какие ещё неюникодные кодировки в 2025 году» – буду сносить не глядя, по 17 пункту. Если вам лично не нужно – проходите мимо. А тут разговор про штатную и для многих очень удобную функцию mcedit.

hobbit
()

Manjaro затыкается на обновлении

 , ,

Привет, ЛОР.

В отличие от истории двухлетней давности, графическая обновлялка, она же pamac-manager, обещает мне 7 ГБ обновлений. Даю добро, получаю:

не удалось удовлетворить зависимости:
- невозможно удовлетворить зависимость «libcap=2.71», необходимую для lib32-libcap
- невозможно удовлетворить зависимость «libffi=3.4.6», необходимую для lib32-libffi
- невозможно удовлетворить зависимость «pcre2=10.44», необходимую для lib32-pcre2
- невозможно удовлетворить зависимость «expat=2.6.4», необходимую для lib32-expat
- удаление qxlsx-qt6 нарушает зависимость «qxlsx-qt6», необходимую для stellarium

Библиотеки серьёзные, от lib32-expat, в частности, судя по выхлопу pactree -r, зависят steam и blender.

Ладно, запускаю sudo pacman -Syu:

 core is up to date
 extra is up to date
 community.db failed to download
ошибка: не удалось получить файл 'community.db' из mirror.truenetwork.ru : The requested URL returned error: 404
ошибка: не удалось получить файл 'community.db' из mirror.kamtv.ru : The requested URL returned error: 404
ошибка: failed to synchronize all databases (не удалось получить некоторые файлы)

После этого я уже начал искать в гугле упоминание проблем с community.db, и наткнувшись на эту тему, понял, что его просто объединили с extra.db.

В теме по ссылке много буков про то, как отредактировать /etc/pacman.conf разными редакторами, удалив оттуда секцию [community], но я просто-напросто обнаружил у себя в /etc файл pacman.conf.pacnew, который специально для нас, козлов, подготовили на замену оригинальному. Вот интересно, он должен был сам заменить оригинальный, но что-то не сработало? Или это принципиально ручная операция? Ладно, переименовываю его, то же самое проделываю с pacman-mirrors.conf. Ругань поменялась, теперь козлом отпущения оказался stellarium. С болью в сердце удаляю его, запускаю pamac-manager… и обновление, наконец, пошло.

Закончится – отпишусь, мало ли, может, не я один такой.

hobbit
()

ReactOS 0.4.15

 

Группа Open Source

После долгого перерыва разработчики Windows-совместимой операционной системы ReactOS, исходные тексты которой доступны по лицензии GPL, выпустили версию 0.4.15.

В этом выпуске:

  • исправления Plug and Play;
  • исправления в аудиостеке;
  • исправления в управлении памятью;
  • улучшение работы реестра;
  • улучшения в работе системных утилит, включая Notepad, Paint, RAPPS и Input Method Editor.

ReactOS разрабатывается группой энтузиастов с 1998 года и по-прежнему находится в альфа-стадии.

>>> Подробности (reactos.org)

hobbit
()

Карта указателей, ссылок и for по диапазону

 , ,

Привет, ЛОР.

Тут такая задачка возникла. Поступает на вход массив неких структур, которые в чём-то схожи, а в чём-то различны и обрабатывать их надо и как единое целое, и по типам (записи разных типов перемешаны). Чтобы не копировать данные туда-сюда и вообще не нарушать целостность, я подумал «а давай-ка сделаю три контейнера ссылок и пусть они ссылаются на оригинальные структуры». Важно: структуры в процессе обработки меняются, т.е. константными я их делать не могу.

Попробовал примерно так:

struct AnyS {
    int a, b, c;
};

std::list<AnyS> anyList;
std::map<int, AnyS&> refs0, refs1;

    AnyS any;
    any.a = 0;
    anyList.push_back(any);

    int i=0;
    for (AnyS& yaAny: anyList) {
        if (yaAny.a==0)
            refs0[i] = yaAny;
        // Тут м.б. рациональнее было бы сделать switch, но не суть, это демо
        i++;
    }

На строке с присвоением получаю ошибку

/usr/include/c++/11/tuple:1824: ошибка: value-initialization of reference type ‘AnyS&’

Т.е. оно пытается присваивать по значению, хотя я хотел явно противоположного, и у него это не получается.

А что самое смешное? А то, что если я отказываюсь от ссылок и работаю по старинке с указателями, то всё прекрасно работает! Примерно так:

// ...
std::map<int, AnyS*> refs0, refs1;
//...
    for (AnyS& yaAny: anyList) {
        if (yaAny.a==0)
            refs0[i] = &yaAny;
        i++;
    }

Но нельзя ли всё-таки как-то заставить работать вариант со ссылками? Они, типа, безопаснее, и красивее и вообще сейчас считается, что работа с указателями это фи.

Я, конечно, догадываюсь, что я как-то неправильно использую range-based for… но вот как правильно…

P.S. GCC 11.3.1, если это важно.

hobbit
()

Хочу Live Flash с двумя разделами

 ,

Привет, ЛОР.

Я вот о чём задумался. Часто, загружаясь с лайва, надо иметь возможность что-то записать с компа на сменный носитель. Понятно, можно воткнуть две флешки в разные порты и смонтировать вторую руками.

А ведь, наверное, можно было бы сделать готовый лайв с двумя разделами: с одного грузится система, другой автомонтируется при входе как rw. И телодвижений меньше, и экономится один порт USB (ситуация, когда доступно только одно гнездо, не самая частая, но иногда бывает).

Интересно, такое кто-нибудь уже сделал?

hobbit
()

А как комфортно работать со строками в современном C++?

 , ,

Привет, ЛОР.

Старый добрый std::string, как мы знаем, это по сути char* на стероидах. А во многих случаях надо работать со строками именно как со строками текста.

К примеру, в библиотеке QtCore, входящей во фреймворк Qt, есть класс QString. Её часто ругают за изобретение велосипедов. Но именно благодаря этой «фабрике велосипедов» я могу написать, например, так:

QString s;
QStringList sl;
...
if (sl.contains(s, Qt::CaseInsensitive)) {
    ...
}

И оно мне проверит наличие строки в списке, причём регистронечувствительным (второй параметр) способом. И не только для латинских символов. То есть если в списке есть «Капибара», в строке подойдёт как «Капибара», так и «капибара». Ещё есть split(), join() и дофига полезного.

А как такое сделать без QtCore, на голом STL? В C++20 появился некий std::u8string, он мне поможет, например?

hobbit
()

Линус Торвальдс пояснил свою позицию в отношении приёма изменений на Rust

 ,

Группа Ядро Linux

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

Линус раскритиковал действия Кристофа Хелвига, мэйнтейнера подсистем DMA, KVM, Slab Allocator и архитектуры PowerPC. По мнению Линуса, Кристоф превысил свои полномочия и попытался повлиять на код, который не затрагивал код подсистемы DMA, был реализован в отдельном подкаталоге и не влиял на код, за который отвечает Кристоф. Кристоф попытался контролировать то, для чего используется подсистема DMA, и его действия можно сравнить с попыткой запрета использования DMA в каком-то драйвере, лишь потому, что ему не понравился этот драйвер. Итог: несмотря на то, что сопровождающие отвечают за свой код, они не отвечают за то, кто и как использует результат работы этого кода.

>>> Письмо Линуса

>>> Подробности (OpenNet) (opennet.ru)

hobbit
()

Как распарсить версию ffmpeg из программы

 ,

Привет, ЛОР.

Не секрет, что в библиотеках ffmpeg неоднократно ломали API. Поэтому важно проверять их версию на этапе компиляции.

В libavutil есть ffversion.h. Однако вместо понятных XXX_VER_MAJOR и XXX_VER_MINOR там определяется строка. Например, для старенького ffmpeg 3.2 написано:

#define FFMPEG_VERSION "3.2

А для более новых, так и вообще с буковками:

#define FFMPEG_VERSION "n4.4.5"

или

#define FFMPEG_VERSION "n7.1"

Как вы думаете, как в таких условиях написать #if для препроцессора, что код ниже действителен, например, для ffmpeg 4 и выше? Например, в совсем древних ffmpeg-ах была функция avcodec_register_all(), потом её выкинули, а потом выкинули и av_register_all(). И это только одна из «мутаций».

Обновление: всем спасибо за ответы, видимо, самый надёжный метод – проверять версию не FFMPEG в целом, а библиотек из его состава. Для этого соответствующие определения есть, см. комментарий ниже.

FFMPEG API changes log

hobbit
()