LINUX.ORG.RU

Сообщения Goganchic

 

Что использовать для разработки на Java вместо Idea Ultimate

Форум — Development

Сейчас достаточно сложно с легальной покупкой Idea Ultimate на территории России, поэтому возникает справедливый вопрос: что использовать вместо Idea для разработки типового ынтырпрайз-приложения на Spring? Рассматривал разные варианты, начиная от Idea Community и заканчивая VS Code. Все они имеют свои плюсы и минусы. Хотелось бы услышать у опытных ЛОР-овцев что выбирают они.

 , ,

Goganchic
()

Как связаны колонки shared и cache в выводе free

Форум — Admin

Смотрю состояние памяти на виртуалке:

[user@server ~]$ free -h -w
              total        used        free      shared     buffers       cache   available
Mem:          7,5Gi       385Mi       138Mi       4,1Gi       0,0Ki       7,0Gi       2,8Gi
Swap:         1,0Gi       140Mi       883Mi

На виртуалке запущен PostgreSQL, который использует 4Гб shared_buffers. Пытаюсь интерпретировать вывод free.

  • total — объем физической памяти;
  • used — память, выделенная через malloc (used = total - free - shared - buffers - cache);
  • free — свободная память;
  • shared — память под tmpfs и shmget/mmap; buffers — память, используемая для буферизации ввода/вывода;
  • cache — файловый кеш;
  • available — сколько памяти можно получить с учетом free и освобождения части cache.

Возникает вопрос: как связаны колонки shared и cache в выводе? Изначально я думал, что shared никак не пересекается с cache и used + free + shared + buffers + cache должны давать в сумме total. Но в представленном выше листинге видно, что это не так.

 , ,

Goganchic
()

Странности с восстановлением PostgreSQL из бекапа

Форум — Admin

Есть кластер PostgreSQL 15. ОС хоста Rocky 8. Конфигурация кластера: master + реплика. Репликацию настраивал через repmgr. В кластере настроены бекапы с помощью PgBackRest на внешнее S3 хранилище. WAL льется с мастера, файлы данных — с реплики. Все как здесь написано: https://habr.com/ru/articles/518232/.

Если грохнуть базу и восстановить последнее состояние с помощью sudo -u postgres pgbackrest --stanza=cluster restore, то всё отрабатывает как положено.

Хочу протестировать кейс с Point in Time Recovery.

  1. Создаю базу данных.
  2. Наполняю её тестовыми данными.
  3. Делаю полный бекап sudo -u postgres pgbackrest --stanza=cluster --log-level-console=info --type=full backup. Запоминаю время окончания бекапа.
  4. Дропаю таблицу. PostgreSQL делает чекпоинт и отправляет WAL в S3. Хочу восстановиться на момент, когда таблица не была удалена (т.е. WAL, который после бекапа из п.3 восстанавливать не надо).
  5. Останавливаю master и replica systemctl stop postgresql-15.
  6. Удаляю все файлы с master и replica sudo -u postgres find /var/lib/pgsql/15/data -mindepth 1 -delete.
  7. Смотрю в какое время завершился бекап с помощью sudo -u postgres pgbackrest --stanza=cluster info.
  8. Запускаю команду вида sudo -u postgres pgbackrest --stanza=cluster --type=time --target="время-завершения-бекапа" restore.
  9. Запускаю master.
  10. Вижу, что master находится в recovery, поэтому выполняю на select pg_wal_replay_resume();.
  11. С помощью repmgr standby clone наливаю реплику.
  12. Запускаю реплику и повторно регистрирую ее в master: repmgr standby register -F.

Вижу предупреждение вида

WARNING: following issues were detected
  - WAL replay is paused on node "192.168.1.126" (ID: 2) with WAL replay pending; this node cannot be manually promoted until WAL replay is resumed

Вопросы:

  1. Что я делаю не так?
  2. Как поднять реплику после восстановления из бекапа?

 pgbackrest, , repmgr

Goganchic
()

Зависает Redis Sentinel, куда копать?

Форум — Admin

Внезапно обнаружил, что на виртуалке с Rocky 8 завис Redis Sentinel (ставил пакет @redis:6). Выглядит это так:

$ ps ax | grep redis-sentinel
   1209 ?        Dsl   14:09 /usr/bin/redis-sentinel 192.168.1.2:26379 [sentinel]

Статус D — Uninterruptible sleep (usually IO).

Решил посмотреть с помощью lsof что происходит. Теперь у меня есть еще несколько процессов lsof в состоянии D:

sudo ps ax | grep lsof
  51819 ?        D      0:00 lsof
  51820 ?        Z      0:00 [lsof] <defunct>
  51864 ?        D      0:00 lsof
  51865 ?        Z      0:00 [lsof] <defunct>
  51957 ?        D      0:00 lsof -b
  52971 ?        D      0:00 lsof
  52972 ?        Z      0:00 [lsof] <defunct>

Вопрос: как понять на каком именно IO подвис Redis Sentinel и что бы это могло быть?

 ,

Goganchic
()

Почему journalctl потребляет так много места

Форум — Admin

Хочу посмотреть сколько места занимает Systemd лог:

$ sudo journalctl --disk-usage
Archived and active journals take up 9.7G in the file system.

Дамплю все логи в файл и смотрю его размер:

sudo journalctl > logs.txt
ls -lh logs.txt
-rw-rw-r--. 1 user user 679M Dec  4 16:34 logs.txt

Почему так?

 ,

Goganchic
()

В чем фишка Qt Quick

Форум — Development

Изучаю Qt. Вижу, что есть два подхода к разработке приложения: Qt Widgets и Qt Quick. Судя по всему за Qt Quick активно топят. На официальной странице нашел сравнение этих технологий. И вроде как пишут, что Qt Quick для стильных модных молодежных, а Qt Widgets если не Deprecated, то для старперов. На всяких Reddit-ах тоже активно нахваливают QML.

Интуитивно кажется, что Quick потянет за собой либо какой-то встроенный интерпретатор JavaScript, либо какой-то хитрый компилятор, но в любом случае добавит накладные расходы на взаимодействие между JavaScript и C++ кодом. Кажется, что это будет работать медленнее, чем если всё написано сразу на C++.

С другой стороны, если хочется быстрой разработки, чтобы раз-два и в продакшен - это же точно не про C++. Для этого есть Electron или Web в браузере. C++ для GUI, на мой взгляд, имеет смысл выбирать только если хочется максимальной производительности и минимального расхода ресурсов, а сроки разработки не особо важны.

Вижу что Qt пытается запрыгнуть в мобильную разработку, но это тоже как-то странно, когда есть нативные библиотеки, дающие максимальную производительность или Flutter, дающий кроссплатформу.

Поэтому возникает вопрос: какой практический смысл в Qt Quick?

 , ,

Goganchic
()

HAProxy балансировка PostgreSQL не работает external-check

Форум — Admin

Хочу настроить High Available кластер PostgreSQL. Использую repmgr и логическую репликацию. Перед кластером ставлю HAProxy, чтобы клиент цеплялся всегда к одному адресу, а дальше его уже перебрасывало на текущий Master. Использую такой скрипт для определения кто сейчас Master:

#!/bin/bash

PG_MONITOR_USER=haproxy
PG_MONITOR_PASS=qwerty123
PG_MONITOR_DB=haproxy

PG_PSQL=/usr/bin/psql

VIP=$1
VPT=$2
RIP=$3

echo "We are here" >> /tmp/logs.txt

if [ "$4" == "" ]; then
  RPT=$VPT
else
  RPT=$4
fi

STATUS=$(PGPASSWORD="$PG_MONITOR_PASS" $PG_PSQL -qtAX -c "select pg_is_in_recovery()" -h "$RIP" -p "$RPT" --dbname="$PG_MONITOR_DB" --username="$PG_MONITOR_USER")

if [ "$STATUS" == "f" ]; then
  # Master
  exit 0
else
  exit 1
fi

Пользователя в базе создал, при запуске скрипта вручную всё работает.

HAProxy сконфигурировал следующим образом:

global
    log         /var/lib/haproxy/dev/log local0

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM
    external-check

defaults
    log                     global
    option                  dontlognull
    retries                 3
    timeout queue           1m
    timeout connect         10s
    timeout check           10s
    timeout client          5000s
    timeout server          5000s
    maxconn                 3000

frontend pg_frontend
        log global
        mode tcp
        bind *:5432
        default_backend pg_backend

backend pg_backend
        log global
        mode tcp
        option tcplog
        option external-check
        external-check command /tmp/check_postgresql_master.sh
        server pg1 192.168.56.2:5432 check inter 30s fall 3 rise 3
        server pg2 192.168.56.3:5432 backup check inter 30s fall 3 rise 3

Если попытаться подключиться на адрес HAProxy, то сервер сразу закрывает соединение и ничего не пишет в логи. Если закомментировать external-check, то все работает.

Почему такое может быть? Дистрибутив Rocky 8, PostgreSQL 14, HAProxy из репозиториев. SELinux отключал - не помогло.

 ,

Goganchic
()

Зачем нужен метод roleNames в Qt

Форум — Development

Изучаю Qt по книге Mastering Qt 5 за авторством Guillaume Lazar. Дошел до третьей главы. Автор предлагает реализовать класс AlbumModel для отображения списка альбомов с помощью QListView. Для этого необходимо реализовать два метода rowsCount и data. С помощью этих методов QListView может получить общее количество строк в списке и для каждой строки получить данные для отображения на экране. Абстракция понятна и логична, но возникает вопрос: зачем в модели нужен метод QHash<int, QByteArray> roleNames() const override? Для отображения данных метод судя по всему не используется. Возможно он нужен для какой-то интроспеции, но какой? В документации Qt есть короткий комментарий, который не добавляет ясности:

Returns the model’s role names.

 ,

Goganchic
()

Как правильно устанавливать Qt и QtCreator в Linux?

Форум — Development

Долгое время разрабатывал на JavaScript. Несмотря на то, что во многих дистрибутивах Linux есть какие-то версии Node.JS в репозиториях, обычно разработчики ставят инструменты через специализированные утилиты, типа asdf. Это позволяет установить именно ту версию, что будет в продакшене, а также установить одновременно несколько версий, чтобы иметь возможность использовать разные версии в разных проектах.

Недавно начал посматривать на C++ и Qt. Подскажите, как правильно устанавливать Qt и QtCreator в Linux (Ubuntu 22.04)? Достаточно ли сделать что-то вроде sudo apt install -y qtcreator qtbase5-dev qt5-qmake cmake или есть какой-то более правильный способ?

 ,

Goganchic
()

Почему Redis ест память

Форум — Admin

Есть Redis 6 (Oracle Linux 8). В нем 1.5Гб данных (проверил по размеру дампа и с помощью суммирования значений serializedlength в DEBUG OBJECT по каждому ключу в каждой базе). При этом в памяти он занимает 15Гб. maxmemory и maxmemory-policy в конфиге не указаны. Почему такое может быть и как с этим бороться?

 

Goganchic
()

btrfs на десктопе

Форум — Desktop

Кто пользуется btrfs на десктопе? Подскажите, насколько оно стабильно?

 

Goganchic
()

Что случилось с Amarok?

Форум — Desktop

На днях смотрел какая ситуация с аудиоплеерами в Linux и внезапно обнаружил, что куда-то пропал Amarok: в свежих версиях Ubuntu его нет, на сайте проекта последний релиз датируется 2021 годом. Вроде одно время был самый популярный плеер в KDE. Что с ним стало?

 ,

Goganchic
()

Docker Registry health check

Форум — Admin

Разбираюсь с настройками self-hosted Docker registry. Вижу, что есть опция health для периодических проверок различных подсистем. Результат проверок можно получить по пути /debug/health.

Вопрос: есть ли какой-то смысл во включении этих проверок, если внешнего мониторинга на путь /debug/health нет? Быть может в случае обнаружения проблем Registry как-то пытается их исправить или переходит в какой-нибудь read-only режим, чтобы уменьшить возможные последствия? Или же health check имеет смысл использовать только с внешним мониторингом?

 ,

Goganchic
()

Linux и доменные машины

Форум — General

Часто сталкиваюсь с Linux-доменом, реализованным с помощью OpenLDAP или FreeIPA из некоторого количества Linux-серверов. Это позволяет централизовано создать пользователей и политики доступа. Сервера чаще всего статичны, т.е. имеют фиксированное место в корпоративной сети, а есть ли у кого-то опыт объединения набора пользовательских машин в единый домен, как это делают в коропрациях с Windows-машинами? В отличие от серверов пользовательские машины могут быть мобильны (например, ноутбук, который может забрать домой) и периодически могут не иметь подключения к контроллеру домена. Как в этом случае осуществляется логин на машину?

В общем, тема достаточно обширная. Был ли у кого-нибудь опыт реализации такого? Какие статьи почитать? На какой софт обратить внимание?

 , ,

Goganchic
()

Настройка внешнего Docker Registry в GitLab

Форум — Admin

Пытаюсь разобраться как настроить внешнее Docker Registry в GitLab. Судя по докам Docker Registry можно использовать GitLab как Auth-провайдер. Для этого нужно сгенерировать закрытый ключ и сертификат. При этом GitLab будет подписывать закрытым ключом токены, а Docker Registry с помощью сертификата сможет проверить, что токен действительно сгенерирован GitLab-ом. В доке GitLab-а пишут про пару ключ-сертификат как данное:

A certificate-key pair is required for GitLab and the external container registry to communicate securely. You need to create a certificate-key pair, configuring the external container registry with the public certificate (rootcertbundle) and configuring GitLab with the private key.

При этом не говорят как именно эту пару сгенерировать.

У меня уже есть настроенный предыдущим админом GitLab, в котором уже сгенерированы приватный ключ и сертификат, но я нигде не могу найти ответы на следующие вопросы:

  • как сгенерировать ключ и сертификат?
  • как посмотреть какую-нибудь инфу про ключ и сертификат (возможно с помощью openssl, все мои наивные команды типа openssl x509 -text -noout -in /etc/gitlab/registry-auth.key говорят, что я что-то делаю не так)?
  • как проверить, что сертификат действительно от этого ключа? быть может можно как-то сгенерировать новый сертификат по ключу?
  • есть ли у сертификата и ключа какой-то срок действия? нужно ли мне будет через какое-то время перегенерировать пару заново?

Буду признателен за наводки и полезные ссылки.

 ,

Goganchic
()

Стоит ли ставить Lingeage OS

Форум — Mobile

Недавно узнал о существовании Lineage OS — открытом дистрибутиве Android без Google-сервисов. В интернетах пишут, что Lineage OS дает возможность пользоваться более новой версией Android на телефонах, которым вендор не выпускает обновлений, а также предоставляет ванильную версию системы, без всяких рекламных приложений, которые нельзя удалить (привет Xiaomi). Вот думаю, ставить ли ее на свой 3-летний Xiaomi или нет? Какие могут быть подводные камни кроме отсутствия Google-сервисов? Что там с безопасностью? Не получится ли так, что теперь вместо Google мои данные сливаются какому-нибудь васяну?

Перемещено hobbit из general

 ,

Goganchic
()

HiDPI на 14" экране

Форум — Desktop

По моим ощущениям, в большинстве сред рабочего стола Linux нормально работает только целочисленное масштабирование. Если указать дробное (например, 125%), то возникают разного рода проблемы и артефакты. Устал от этой проблемы на 14" 1080p. Решил, что надо поменять ноут на что-нибудь с экраном, на котором можно задать целочисленный масштаб. Вижу, что на 14" наиболее распространены разрешения 2560х1600 и 2880х1800. Как считаете, какое разрешение лучше подойдет для 200% масштаба? Сейчас на 1080p ставлю 125% масштаб и размер шрифтов и элементов управления устраивает. Давным давно сидел на 13.3" Macbook Pro с 1280х800 и такое разрешение казалось нормальным для данной диагонали. Значит ли это, что надо брать 2560х1600? Или же 2880х1800 для 14" подойдет получше? Или это все очень субъективно и надо самому пробовать и то и то и уже после этого делать какие-то выводы?

 ,

Goganchic
()

Rocky Linux и EAR

Форум — General

Сегодня я зашел на страницу загрузки образов Rocky Linux и увидел там следующее:

By downloading Rocky software, you acknowledge that you understand all of the following:

Rocky software and technical information may be subject to the U.S. Export Administration Regulations (the “EAR”) and other U.S. and foreign laws and may not be exported, re-exported or transferred (a) to a prohibited destination country under the EAR or U.S. sanctions regulations (currently Cuba, Iran, North Korea, Syria, and the Crimea Region of Ukraine, subject to change as posted by the United States government); (b) to any prohibited destination or to any end user who has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government; or (c) for use in connection with the design, development or production of nuclear, chemical or biological weapons, or rocket systems, space launch vehicles, or sounding rockets, or unmanned air vehicle systems.

Зашел на страницу Legal Notice AlmaLinux и обнаружил там +/- такое же с одной интересной припиской:

AlmaLinux OS software in source code and binary code form are publicly available and are not subject to the EAR in accordance with §742.15(b).

На странице Export Compliance Information дистрибутива Fedora такая же приписка как и для AlmaLinux.

Насколько вообще EAR применим к Open Source?

Пытаюсь понять как это все работает. Есть Rocky, про который на странице лицензирования указано, что он распространяется по BSD 3-Clause license, то есть его можно распространять свободно, при этом согласно EAR никто не запрещает использовать его в Китае, а Китай сам решает чьи законы он соблюдает, а чьи нет. Таким образом какой-нибудь предприимчивый бизнесмен из Китая может сделать зеркало Rocky и предоставлять его для той же Кубы.

Так это работает или нет?

 , ear, ,

Goganchic
()

Лучшие практики по настройки почтового сервера для компании

Форум — Admin

Хочу настроить self-hosted почтовый сервер (IMAP/POP3 + SMTP) для компании на 100 - 200 пользователей. Что сейчас для этого модно использовать? Как и раньше postfix + dovecot + roundcube или имеет смысл посмотреть что-то типа iRedMail?

 , ,

Goganchic
()

Коммутация аудио для занятий на гитаре

Форум — Desktop

Хочу настроить коммутацию аудио для занятий на гитаре с преподом по Skype/Zoom. Хочу чтобы препод слышал:

  • звук с микрофона, подключенного к Scarlett 2i2 gen 3
  • обработанный звук гитары с Yamaha THR
  • звук из браузера (метроном, минусовка)

Хочется чтобы весь этот звук был синхронизированный: не хочу, чтобы мне говорили что я играю мимо метронома, хотя фактически это не так.

Возможна ли такая коммутация? Пока думаю пойти по такому пути: локально установить Jack или Pipewire, создать там виртуальное устройство, в которое запихнуть несколько источников звука, а у Skype/Zoom указать источником это самое устройство. В обратную сторону взять звук из Zoom и браузера и отправить их в Yamaha THR, который подмешает туда обработанную гитару.

Может быть кто-то заморачивался с такими коммутациями? Или даже пытаться не стоит, ибо адская задержка убьет весь пользовательский опыт?

 , , ,

Goganchic
()

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