LINUX.ORG.RU

Сообщения curbar

 

Доступ к сервисам docker извне LAN

Форум — General

Привет, ЛОР.

Дано: локалка 192.168.77.0/24 с роутером, на котором поднят wireguard 10.70.80.0/24. На роутере настроен NAT и форвардинг так, чтобы подключившиеся пиры wireguard извне локалки имели доступ к локалке. Я могу с телефона через LTE подключиться, например, к KODI на 192.168.77.12.

Проблема: при всем описанном, я не могу подключиться ни к одному докер сервису на сервере 192.168.77.30. На нем несколько сервисов, в т. ч. Vaultwarden, Miniflux и т. п. По tcpdump я вижу, что запросы на порт приходят, но, видимо, не уходят обратно. Правила файрвола дефолтные докеровские. Форвардинг разрешен. Не знаю, есть ли смысл правила эти приводить, их много. Из локалки все сервисы доступны.

Вопрос: что нужно, чтобы пиры wireguard могли получить доступ к сервисам docker извне локалки? Какую еще информацию предоставить для диагностики?

 , , ,

curbar
()

Перенос данных в docker volume

Форум — General

Привет, ЛОР.

Хочу перенести данные, которые использует контейнер, из директории, которую я монтирую в docker-compose, в volume, который создам для этого контейнера. Основная причина - проще делать бэкап и разворачивать его. Раньше этого не понимал, поэтому делал бинды практически для всех своих контейнеров.

Вопрос: как правильно перенести данные? Достаточно ли будет просто указать контейнеру на созданный volume, поднять контейнер и rsync’ом загнать туда все данные с бывшей mount point? Или лучше создать новый контейнер и перебрасывать данные между контейнерами? Какие неочевидные нюансы есть у этого процесса? Предварительный бэкап данных сделаю, разумеется.

 , ,

curbar
()

Помощь с кодом на python (flask) и возможно js

Форум — Job

Flask точно, js не точно.

Суть работы - помочь исправить одну проблему с кодом веб-приложения, связанную с редиректами и поиском. Я думаю, для любого мидл+, а может и опытного джуна, помощь особого труда не составит. Деньги по договоренности после того, как объясните что, как и почему и все это заработает как надо. Сумму обсудим, пока даже не знаю, сколько нужно предлагать. Пусть пока будет 1000 р.

Связь через почту thatisunfortunate собака posteo дот net или напишите контакты сюда. Дальше перейдем в удобный мессенджер. Отвечу после 19 по Москве.

 , ,

curbar
()

Как в emacs notmuch отключить превью изображений и документов

Форум — General

К сожалению, emacs не умеет лениво загружать медиаконтент и грузит его весь. Когда в письме одно или несколько больших картинок или PDF, окно зависает на несколько секунд, а бывает и крашится. Как отключить предпросмотр медиафайлов? Смотрел переменные notmuch- и gnus-, нашел только gnus-inhibit-images, который стоит в t, но на превью никак не влияет. Есть встроенные способы?

 ,

curbar
()

Что происходит с bitwarden в последнее время?

Форум — Talks

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

Подробнее можно посмотреть, конечно же, в github, но вот, что задело меня:

  1. Десктопные приложения (deb/appimage) во всех версиях как минимум с нового года имеют баг с сохранением настроек, в том числе настроек блокировки приложения с разблокировкой по пинкоду (выбираешь в настройках блокировку, вводишь пароль, а по факту остается обычный мастер-пароль).
  2. Все версии с апреля.2 имеют баг с каким-то JWT токеном, в результате чего, вы не можете синхронизировать кошелек или изменять записи. Это же коснулось пакетов snap/flatpak и как-то связано с использованием libsecret.
  3. Все версии с апреля.0 имеют баг с рандомным логаутом из приложения, что касается также расширения для барузеров firefox/chromium. Бывает я буквально на каждый ввод пароля заново ввожу все данные, включая почту.

Кого еще это задело? Что происходит с командной bitwarden? До этого тоже, конечно, было баги, но они были или малозаметные, или их очень быстро устраняли. Сейчас история тянется месяцами. Уже думаю, не расчехлить ли старый-добрый keepassxc…

P.S. Тега bitwarden нет.

 

curbar
()

Посоветуйте приложение календарь

Форум — General

Для работы с сервером radicale (caldav). Только GUI. Тулкит не важен.

Пробовал:

  1. Gnome calendar - постоянные глюки при добавлении повторяющихся событий. Событие, которое должно происходить раз в месяц каждый месяц, растягивается на весь месяц, при этом если редактировать это событие, все детали правильные, а отображает все равно неправильно. Бывают неудаляемые события.
  2. Evolution - отличный почтовик, но календарь тоже глючный. От нажания хоткея/кнопки добавления события до появления окна с заполнением деталей проходит несколько секунд и еще несколько десятков секунд при сохранении события.
  3. Thunderbird/Plasma’вский календарь - ужас юзабилити.

Пока приходится обходиться добавлением на смартфоне, где, внезапно, это намного удобнее, чем на ПК, но каждый раз за смартфоном лезть, чтобы добавить задачу или события… Надоедает.

 , ,

curbar
()

Удаление lockfile при завершении программы python (аналог trap в bash?)

Форум — Development

TL;DR: Как правильно по-питонячьи реализовать аналог trap или что-то, что будет делать тоже самое для запуска функции при завершении программы вне зависимости от результата, в т. ч. при ошибке?

Пишу программу, которая, конечно, может падать. Программа работает с файлами, в т. ч. принимает файлы на загрузку, их обрабатывает, сохраняет и прочее. Для программы предусмотрен lockfile, чтобы случайно не запустили второй+ раз, т. к. это приведен к неправильной обработке файлов. В случае ошибки в работе программы lockfile, конечно, должен удаляться, чтобы при следующем запуске программы прошла проверка на отсутствие lockfile.

Вопрос: как по-питонячьи этот lockfile удалять при завершении программы вне зависимости от причины завершения (удача/неудача) с учетом того, что программа работает как сервис, т. е. один запуск предполагает длительной взаимодействие с разными файлами - интерактивная программа?

try...except...finallу в скрипте обертке запуска программы? Какой-то хитрый декоратор или хук? Желательно решить это средствами стандартной библиотеки. Поясните для newbie.

 ,

curbar
()

Как составить оптимальный запрос в sqlite

Форум — Development

Привет, ЛОР.

Есть таблица table1 в базе sqlite вида

| id | id_parent | date | id_status |

В колонке id_parent неуникальные значения. Я хочу получить все id_parent, для которых самая новая запись на основе date имеет статус 2. В колонке date даты не в хронологическом порядке.

Пример

| id | id_parent | date       | id_status |
| 1  | 1         | 2024-03-17 | 2         |
| 2  | 2         | 2020-01-01 | 2         |
| 3  | 1         | 2023-10-12 | 2         |
| 4  | 1         | 2023-12-31 | 1         |
| 5  | 3         | 2020-03-07 | 1         |
| 6  | 3         | 2018-01-01 | 2         |

Для такой таблицы в результате запроса должно быть

| id_parent |
| 1         |
| 2         |

потому что у id_parent 1 самая большая указанная дата 2024-03-17 и статус на эту дату - 2, а для id_parent 2 запись только одни и она со статусом 2. id_parent 3 не попадает в выборку, у него самая большая дата со статусом 1.

Использую такой запрос

SELECT id_parent FROM table1 AS t WHERE date = (SELECT MAX(date) FROM table1 WHERE id_parent = t.id_parent) AND id_status = 2;

Вопрос в том, правильный ли он и насколько он оптимальный для использования при большом кол-ве записей (десятки тысяч).

 , , ,

curbar
()

Не работает DNS

Форум — General

Привет, ЛОР. Помоги диагностировать проблему.

Провайдер - Ростелеком. Нет доступа к DNS. Перепробовал с десяток разных, в т. ч. российский, вроде adguard. Пинги есть, а ответа от DNS серверов нет.

~$ ping -c 2 1.1.1.1
PING 1.1 (1.0.0.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=37.2 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=59 time=36.3 ms

--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 36.330/36.770/37.211/0.440 ms

~$ dig @1.1.1.1 linux.org.ru

; <<>> DiG 9.16.48 <<>> @1.1.1.1 linux.org.ru
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

~$ dig @8.8.8.8 linux.org.ru

; <<>> DiG 9.16.48 <<>> @8.8.8.8 linux.org.ru
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

~$ ping -c 2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=107 time=46.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=107 time=47.4 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 46.754/47.052/47.350/0.298 ms

tcpdump во время одного из запросов

tcpdump -i wlan0 udp port 53
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:01:13.459426 IP 192.168.7.122.46620 > 1.1.1.1.domain: 14924+ [1au] NS? . (40)
10:01:18.459656 IP 192.168.7.122.46620 > 1.1.1.1.domain: 14924+ [1au] NS? . (40)
10:01:23.460342 IP 192.168.7.122.46620 > 1.1.1.1.domain: 14924+ [1au] NS? . (40)
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

dig с +trace ничего дополнительного не показывает.

Сетью управляет network-manager. Локальных DNS серверов нет. Адреса, насколько я могу понять, не подменяют. Если включаю VPN, все отрабатывает без проблем. В настройках соединения NM DNS 1.1.1.1,1.0.0.1,9.9.9.9. Фолбеки не трогал.

Проблема на моей стороне или нет? Как диагностировать?

 ,

curbar
()

emacs 29.2 use-package как работает секция :hook ?

Форум — General

Привет, ЛОР.

Перешел на 29.2 с нативной компиляцией. До этого был 28.2. Переписываю понемногу свой конфиг на use-package (до этого не использовал его) и не понимаю, каким образом исполняется код в секции (макросе?) :hook. Например,

;; python setup
(use-package python
    :hook ((python-ts-mode . eglot-ensure)
           (python-ts-mode . company-mode))
    :mode (("\\.py\\'" . python-ts-mode)))

(use-package company
    :ensure t
    :config
    (setq company-idle-delay 0.1)
    (setq company-minimum-prefix-length 2))

Простой, казалось бы, сетап для питона. Только вот открытие файлов с расширением py включает eglot, но не включает company-mode. Ручная активация M-x company-mode срабатывает без проблем.

Почему? Как исправить? Как отдебажить? В лиспе не силен. Старт с debug-on-error никаких трейсов при открытии emacsa или открытии питоновских файлов не дает.

 , ,

curbar
()

Посоветуйте свободные и бесплатные библиотеки для go

Форум — Development

Привет, ЛОР.

Изучаю go, сразу делаю какие-то практичные программы. Меня интересуют два направления: 1) легкий и переносимый (кроссплатформенный linux+windows) GUI для представления данных из БД (таблицы, графики, взаимодействие с ними), 2) работа с PDF (водяные знаки из текста + нарисованные по координатам в программе вроде pymupdf/fitz на python).

По №1 вообще не знаю, что выбрать, т. к. раньше с GUI дела не имел (в интернете советуют fyne), а по №2 нашел только платную unidoc.

 , ,

curbar
()

Работа venv и pip в debian 12

Форум — General

Привет, ЛОР.

Debian 12.4. Делаю проект на python. Установил venv, засорсил aсtivate, поставил туда через pip несколько пакетов. Все работает. Структура директорий:

.venv/
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── Activate.ps1
│   ├── flask
│   ├── fonttools
│   ├── pip
│   ├── pip3
│   ├── pip3.11
│   ├── pyftmerge
│   ├── pyftsubset
│   ├── py.test
│   ├── pytest
│   ├── python -> python3
│   ├── python3 -> /usr/bin/python3
│   ├── python3.11 -> python3
│   └── ttx
├── include
│   └── python3.11
├── lib
│   └── python3.11
├── lib64 -> lib
├── pyvenv.cfg
└── share
    └── man

Было несколько обновлений дебиана, не отслеживал. Возвращаюсь к проекту, сорсю activate, чтобы попасть в терминале в venv проекта, а дальше начинаются странности. Во-первых, я не могу запустить проект, потому, что установленные ранее через pip библиотеки не видит - command not found. Во-вторых, я не могу установить заново эти библиотеки или установить другие, потому что выскакивает дебиаоновское предупреждение, когда я в venv:

error: externally-managed-environment

Хотя

/home/user/projects/myproject/.venv/bin:/home/user/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

и

which python3
/usr/bin/python3

which pip
/usr/bin/pip

При этом же, прямое обращение к python в venv срабатывает

.venv/bin/python3 -m venv pip instal somepackage

...лог успешной установки...

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

Как пофиксить?

 , ,

curbar
()

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