Есть сервер. На нём крутятся PostgreSQL, Mongo, самописные числодробильные микросервисы, Keycloak и ActiveMQ, через который они все координируются. Когда пользователей много, запускается много экземпляров микросервисов. Память подходит к концу.
Вопрос: угадайте, кого прибьют первым по OOM?
Ответ: ActiveMQ (1G), затем Keycloak (500M). Все остальные потребляют меньше памяти.
Есть сервер ActiveMQ Classic. На нём висит очередь из 1000 сообщений. Требуется просмотреть их и вдумчиво разобраться, отчего некоторые вводят сервер приложений в ступор.
Но одновременно нужно продолжать работать. Для этого надо срочно всё удалить.
Можно руками скопировать каждое сообщение из веб-интерфейса. Можно вдумчиво прочитать всю тысячу (в веб-интерфейсе они выглядят как длиииннная строка JSON) и скопировать только нужные. Можно слепить скрипт, чтобы скопировать все эти сообщения.
А существует ли готовый инструмент для этой цели? Прочитать все сообщения в заданной очереди (не отмечая их как доставленные, либо наоборот, отмечая) и сохранить в текстовый файл.
Чем вы пользуетесь для чтения книг со смартфона? Требуется масштабирование в широких пределах и поддержка основных форматов: FB2, EPUB, DJVU, PDF, CBZ. Совсем хорошо, если есть CBR, MOBI, AWX3 и reflow в PDF.
Ebook Droid ограничивает увеличение шрифта.
FBReader имеет неотключаемую фичу – добавляет дефис при переносе строк. Очень коварная вещь в математических формулах и текстах программ.
Есть программа, которая иногда ест много памяти. Потребление памяти ею можно отслеживать командой top -b -d60 -o +%MEM -c | grep memory_eater | grep -v grep > memory.log & disown Но иногда она быстро отрабатывает – за несколько минут, и файл остаётся пустой. В чём проблема? Слишком малый объём текста зависает в кеше и не сбрасывается? Можно ли как-то ускорить сбрасывание?
P.S. Если увеличить частоту опроса top до -d1 или -d0.1, всё важное фиксируется, но лог увеличивается на 2-3 порядка. Реально достаточно писать раз в минуту. Вопрос не в том, как отслеживать память, а как записать этот лог в файл.
Гружу большой архив файлов (копившийся лет 30) в веб-форму. Всё сразу нельзя – слишком большой, бэкэнд захлебнётся и упадёт (пробовали). Нужно по одной директории, которых десятки. После каждой приходит предупреждение:
Are you sure you want to upload all files from “<директория>”? Only do this if you trust the site.
Не то, чтобы мешает, но надоело. Как-то убрать это предупреждение можно? Firefox 129.
Сабж. Есть самописный клиент для работы с облаком Амазона, использующий рекомендованную Амазоном библиотеку. Когда пользователь прописал неверный сервер в клиенте, сервер возвращает статус 301. Обязан ли клиент автоматически перейти по указанному адресу?
При подключении к виндовой машине по RDP с использованием KRDC можно расшарить директорию на линуксовой машине (по умолчанию – /media) для обмена файлами через неё. Но с последними апдейтами Windows 11 и Server 2022 новым пользователям это по умолчанию запретили. Соединение устанавливается и тут же отваливается. (Без /media работает нормально.) Чтобы обмениваться файлами с линуксом, нужно включить какие-то политики.
Что именно нужно включить? Или хотя бы по каким словам гуглить?
Есть набор текстовых дат вида «14.05.24 17:22:40.653». Нужно вычислить разности по времени между ними и вывести в наглядном виде «сутки:часы:минуты:секунды.доли».
Преобразовать текст в дату несложно: datetime.datetime.strptime(date_time_string, '%d.%m.%y %H:%M:%S.%f')
В секунды с начала эпохи аналогично: datetime.datetime.strptime(date_time_string, '%d.%m.%y %H:%M:%S.%f').timestamp()
Но есть ли готовая функция, чтобы преобразовать разность в секундах в сутки-часы-минуты?
Что разность двух datetime.datetime имеет тип datetime.timedelta – знаю. Но datetime.timedelta не имеет готовых методов для выделения часов и минут.
CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true');
SELECT * FROM files ORDER BY file COLLATE numeric;
Для sqlite3 пока нашёл только советы, как писать расширение на Си.
Или можно вычленить числа, преобразовать в числовой формат и сортировать по ним: SELECT * FROM files ORDER BY CAST(REPLACE(SUBSTR(file, 6), '.txt', '') AS int);
Есть закрыто-несвободная программа, которой можно управлять через REST API. Пробовал curl – POST не работал. Попробовал Insomnia (https://github.com/Kong/insomnia) – часть вариантов заработала. Судя по всему, принимает только если Content-Type установлен в «application/json», «application/xml», «text/plain». Проблема в том, что curl --data и curl --data-ascii задают «Content-Type: application/x-www-form-urlencoded», даже в случае curl --data-ascii @file.txt. То же для --data-binary, --data-raw и --data-urlencode.
Переопределять MIME-тип данных при помощи -H можно, но неудобно. Есть ли у curl команда, чтобы постить текстовые данные?
Или это похоже на баг в curl, и --data-ascii должно задавать другой тип?
Ответ: пока предложили --json, который подставляет в хедер "Content-Type: application/json" и "Accept: application/json"
На удалённой машине (подключаюсь по ssh, сессия часто рвётся) выполняется несколько экземпляров программы memory_eater. Требуется записать в файл, сколько какой потребляет памяти. Пока я пользуюсь командой:
Есть удалённая машина на сервере виртуальных машин VMWare. OpenSUSE Leap 15.5. Подключаюсь к ней через ssh, но соединение часто виснет и рвётся с ошибкой «client_loop: send disconnect: Broken pipe». Насколько я могу судить, это происходит от того, что сам собой меняется IP-адрес, каждые минут 5. Как это прекратить?
Погуглил – увидел упоминание увеличения DHCP lease. Дело в нём? Как увеличить это время? GUI отсутствует, yast только консольный, Wicked без NetworkManager.
И почему другие линуксы с DHCP в той же сети постоянно берут одинаковые IP?
Дополнение: Проблема возникает только когда в локальной сети более одной виртуальной машины из этого темплейта. MAC-адреса различаются. Имена машин различаются.
На сервере Windows Server 2022 открыта для всеобщего доступа без логина и пароля директория. \\192.168.3.4\shared Всё принадлежит пользователю Everyone с правами на чтение и запись.
Вопрос: как можно проверить её доступность из-под Линукса помимо sudo mount.cifs //192.168.3.4/shared/ ~/mountpoint/ ? С curl и mc ничего не получилось.
Ответ: Пока предложили smbclient (samba-client в RHEL, net-fs/samba[client] в Gentoo). Жду ответов от знатоков MC и cURL.
CREATE TABLE schema1.files (
t1 timestamp without time zone NOT NULL,
t2 timestamp without time zone NOT NULL,
name text NOT NULL,
size integer,
status integer DEFAULT 0
);
В каком часовом поясе будет показывать t1 и t2 в psql в консоли? В каком часовом поясе сохранит их pg_dump? Влияет ли на это значение LC_ALL?
Объясните, пожалуйста, правила для REST API. В каких случаях должно выдавать какие ошибки?
Есть сервер, на котором крутится задача, которая будет там крутиться ещё несколько минут. Или часов. Приходит команда изменить какие-то исходные данные. Так как команды прерывать текущие задачи не было, а изменяемые данные используются задачей, они будут изменены только по окончании текущей задачи. Поэтому сервер выдаёт ошибку 409 Conflict. Это правильно? Как принято поступать в подобных случаях?
Нужно в консоли посмотреть свойства, указанные в заголовках виндовых бинарников (EXE, DLL), желательно под Линуксом, не запуская виртуальные машины и не подключаясь к удалённой машине с оффтопиком. Требуется информация, которая в Windows показывается в окне Properties: имена и даты цифровых подписей, если есть, и версии. Плюс архитектура: x86, x86_64, Mono/.Net и пр.
file показывает только архитектуру. objdump и readelf – для других форматов. В nm ничего похожего не нашёл. Проводник WINE гуёвый. Что ещё посоветуете?