cashcashh, сяоми очень неровные (может попасться что угодно) плюс у многих моделей много проблем с перепрошивкой на OpenWrt, а это признак того, что в случае проблем с функционалом или глюками софта его даже не перепрошить.
Для всех таблиц в цикле. Можно, наверное, скрипт написать, но раз у нас всё равно приложение это делает, то ничто не мешает перебрать в нём.
По доке кажется, что ALTER TABLE ALL IN TABLESPACE public можно сделать только с операцией SET TABLESPACE, а жаль, я бы не против OWNER TO тоже так делать.
До кучи, можно при создании базы указать владельца:
CREATE DATABASE база OWNER владелец;
А потом законнектиться владельцем и уже им всё создавать.
Также иногда неплохим решением является выдать пользователю право CREATEDB, он сможет создавать себе новые базы (с любым именем, конечно), но не получит доступа к чужим.
shupike, вплне может быть. Когда этот новый инсталлятор вместо классического debian-installer сделали, я порядком помучился, особенно с сетевой установкой, при которой там полный iso качался с удалённого сервера ДВА РАЗА в оперативную память. А это ведь dvd, значит, памяти нужно было приличное количество...
Технически - да, будет работать, если usb3 и нет высоких требований по скорости доступа к диску. Ну там в браузере серфиться и файлики редактировать вообще не вопрос. Но оптимальнее иметь не переносной диск, а переносной компьютер.
Формулы в Excel это всегда лютый ад, в котором хрен разберёшься.
Алгоритм надо описать текстом или вразумительным кодом с комментариями. Чтобы будущие поколения могли его переписать на любой удобный язык, а не страдали вот этим антипаттерном во веки веков.
Можно констрейнты не удалять, а вместо этого делать каскадное удаление, чтобы база сама вытерла связанные записи. Но это, конечно, будет базозависимое.
Но скорее всего автора волнует, что 20 Тб скопировать это такое себе удовольствие.
rPman, если фильтровать по архитектурам и релизам - сильно уменьшится.
Ну и проксировать можно, как я уже говорил. В том числе с кэшированием пакетов на прокси, чтобы не перекачивать их каждый раз. Тогда можно достичь того, что только нужная часть репозитория осядет в кэше.
Что в репозиториях не последняя версия - это известное дело. Это так в любой репе. Даже в rolling-дистрибутивах сложно достичь настоящей актуальности - а ведь есть ещё вопрос стабильности и консистентности, который в релизах достигается именно через заморозку и массовое тестирование только выбранных сочетаний версий.
Когда нужно специфический софт определённой версии, его можно собрать отдельно, в виде пакетов, AppImage итд итп. В конце концов, контейнеры...
Бесплатная работа соцсетей никак не связана с работой VPN. Соцсети и другие сетевые сервисы были бесплатны (в рамках стандартного тарифа или дополнительных услуг) только при доступе к ним мимо VPN.
Стёпа, в коде в пблоке else делается отправка нескольких сообещений.
Надо начвать мыслить принципиально иначе. Бот не делает последовательные действия. Бот реагирует на СОБЫТИЯ, генерируемые пользователем. Пользователь нажал /start - событие. Пользователь ввёл текст - событие. Пользователь нажал на кнопку - событие.
В боте по ссылке так всё и есть. Пользователь вводит сообщение - а бот реагирует. Причём вся соль этого примера в том, что каждое следующее сообщение обрабатывается другим обработчиком. Который выставляется в предыдущем обработчике, обеспечивая пошаговую обработку ответов пользовтеляю
В зависимости от ответов пользователя можно выставлять разные следующие обработчики. Например, пользователь должен ввести город из числа известных боту. Можно в ответ на неправильный город сказать пользователю, чтобы он ввёл правильный город, и оставить обработаться следующему сообщению тем же обработчиком, что и текущее. Или выкинуть в начало цепочки. Или, в зависимости от выбора города/региона, спрашивать у пользователя город/район/акимат/воеводство/штат/итд...
И в обработчике кнопки тоже можно выставлять обработчик следующего сообщения.
А в куске кода в вопросе в блоке else просто выполняется сразу - не в ответ на события, а прям сразу - несколько противоречивых действий по отправке сообщений.
Причём и сама функция фиг знает чём. Там параметр call, а внутри функции есть ещё непонятно откуда message.
В общем, советую сначала разобраться с этим. Понять общий принцип работы. Написать пока просто часть без кнопок, которая спросит у пользователя все вопросы и примет заявку. И дальше уже потом усложня.
HightWolt, давно смотрел последний раз как там в графане алерты устроены, не помню, можно ли там вызывать скрипт или надо всё же webhook. Но в целом сделать маленький наколеночный сервис, который пошлёт сообщение, это дело вполне себе обычное и не нужно слишком сильно его бояться.
HightWolt, эту картинку по ссылке надо скачать и потом отправить её в Телеграм. В принципе, в Телеграм можно отправлять по ссылке, но эта ссылка должна быть открыта в интернет, а тут она на внутреннем хосте, и кажется не очень хорошей идея свою графану светить наружу.