Задать вопрос
  • Можно ли как-то отследить прогресс добавления колонки в БД?

    @rPman
    загляни в файловую систему и посмотри с какой скоростью растет tablespace файлы, так же можно с помощью запроса
    select pg_tablespace_size ('new_tablespace');
    так как в момент добавления колонки таблица копируется (это потому что default значение прописано) значит места должно потребоваться приблизительно в два раза больше чем было изначально, соответственно оценивай приблизительно по скорости роста файла

    https://habr.com/ru/company/yandex/blog/435880/
    Ответ написан
    Комментировать
  • Можно ли бесконечное число планет выпрямить в бесконечную плоскость?

    @rPman
    У данной задачи есть проблема в формулировке (скорее всего ее либо ты не полностью ее выдал либо, скорее всего, составитель задачи не учитывал особенности строения вселенной, по современным (последние десятилетия) представлениям.

    Во первых, мы не знаем сколько планет во вселенной, но можно взять приближение сверху - берем все видимое вещество минус темная материя и темная энергия, берем 90% от остатка - будем считать что это водород (сколько там еще от черных дыр надо отнять)

    1. топаем на вики и смотрим плотность Критическая плотность (космология)

    Затем задаемся вопросом, какова минимальная толщина, в который мы будем вещество плющить и какой ширины получится лента. Водород может стать твердым (заморозить) смотрим его плотность, плющим до размера молекулы, делим, умножаем считаем.

    В общем чья плотность в итоге будет больше - сферы с радиусом Р или твоей ленты из вещества той же длины

    Бредовая задача ;)
    Ответ написан
  • Как в Linux открыть ссылку в определенном браузере через терминал?

    @rPman
    xdg-open $(xclip -o)
    xdg-open откроет дефолтный браузер, точнее приложение, соответственно строке, которая будет в буфере - для файлов будет их дефолтный просмотрщик, для url - браузер
    Ответ написан
    Комментировать
  • Создание классов в цикле?

    @rPman
    humoured исчерпывающе ответил на это вопрос.
    Автор, тебе лучше сформулировать свою задачу а не пытаться искать способ реализации предполагаемого тобой (возможно неверное) решение.

    Если есть задача динамического формирования кода (например нужно 100500 классов, отличающихся незначительно но if-ы по коду заметно замедляют его работу и усложняют чтение), особенно крупного, настоятельно рекомендую генерировать файлы и делать их include (имя файла можешь делать по хешу содержимого, если вариантов содержимого много, или по именам атрибутов, определяющих изменения). Так как include отлаживать удобнее, сообщения об ошибках будут понятны и легко проверяемые, а так же сервер такие файлы кеширует и при наличии ускорителей - еще и оптимизирует, eval же компилируется каждый раз при вызове.
    Ответ написан
    4 комментария
  • Почему dartvm называют виртуальной машиной?

    @rPman
    Исторически, когда то это был интерпретатор
    Ответ написан
    Комментировать
  • Троян не удаляется с андроида, что делать?

    @rPman
    Перепрошить, официальную прошивку, для этого не нужен ни рут ни какие то телодвижения

    Такие трояны легко получить если покупаешь с рук на площадках типа Авито, АлиЭкспресс, геарбест и т.п.
    Ответ написан
    Комментировать
  • Как в mysql выбрать ближайшую бОльшую и ближайшую мЕньшую запись из базы в 1 запрос?

    @rPman
    В комментариях тебе уже ответили вариант с order by. Запрос order by и limit очень тяжелый для sql сервера, его очень сложно оптимизировать.

    Есть еще min max но тебе нужны id, значит вложенный запрос по timestamp, не уверен что это будет быстрее (лучше поэкспериментируй)
    select * from xxx where
       timestamp=(select min(timestamp) from xxx where timestamp > ...)
    or timestamp=(select max(timestamp) from xxx where timestamp < ...)
    p.s. я заметил что ничего не сказано про одинаковые значения timestamp в разных записях, если брать limit 1 то будет выбираться случайная запись (точнее 100500 раз одна но в какой то момент другая - undefined behavior), этот запрос выдаст все записи с одинаковыми timestamp

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

    В каких то ситуациях можно очень СИЛЬНО оптимизировать задачу, если есть какое то знание о том как данные записываются в таблицу. Например если известно гарантированное окно времени, в течении которого поступают данные, и их не сильно много можно просто сделать
    select * from xxx
    where timestamp > date - const_interval
      and timestamp < date + const_interval
    а затем уже среди этих данных выбирать по выше определенным алгоритмам или даже на бакэнде

    Если изменений данных значительно меньше запросов на чтение (особенно если модификации не предполагаются и есть только добавления), то можно складывать искомые значения сразу в момент создания записи (добавлять id новой записи в предыдущую, и тут же ее id в новую), делать это можно как тригерами так и на бакэнде, накладных расходов на такую запись мало зато на чтение данные доступны за константное время, максимально быстро
    select p2.*,p3.* from xxx p1
      left join xxx p2 on p1.id=p2.previous_id
      left join xxx p3 on p1.id=p3.next_id
    where p1.timestamp=...
    в данном случае строчка будет одна, данные раскиданы по колонкам p2.* и p3.*

    В каких то ситуациях можно даже завести отдельный сервис, службу, дающую нужный ответ на порядок быстрее чем любой sql (например за счет того что данные хранятся в оперативной памяти), очень часто этим сервисом может стать тот же бакэнд (если это не cgi приложение), дабы не множить сущности, но если речь идет не об одной физической машине а о кластере, то там есть варианты и сложности.
    Ответ написан
    1 комментарий
  • Можно ли использовать внешний накопитель для установки программ?

    @rPman
    флешка и ssd, по сути оба класса устройств одно и тоже - твердотелые накопители, но так устоялось что флешки это медленные и дешевые устройства, часто с небольшим объемом, подключаемые по usb, без таких фишек как trim и диагностика по smart.

    А ssd это более быстрое и емкое полнофункциональное устройство, очень часто с подключением не по usb, а значит для работы использует отдельный контроллер (может вносить тормоза), я встречал такой usb контроллер, что понижал возможности устройства (sata команда trim) что негативно сказывается на возможности внутреннего контроллера оптимизировать работу, а так же закрывало доступ к smart

    Т.е. подключая нормальный ssd по usb ты понижаешь скорость его работы (и незначительно уменьшаешь срок его службы).

    Еще подключение по usb для windows - это отдельный класс устройств removable device, с такими дисками система работает немного по другому, например нельзя разместить файл подкачки (помню в windows 8 был какой то специальный механизм оптимизации работы с оперативной памятью именно на флешках, не уверен что он остался).
    -----------------
    Рекомендую. файловую систему exfat, она проще и быстрее (разрабатывалась для ssd). Но есть программы, использующие sparse files для эффективного хранения огромных разряженных матриц (визуально огромный файл физически занимает место ровно столько, сколько реально данных в него записали), так вот у exfat как я помню поддержки таких файлов нет а у ntfs есть. Понять заранее это можно либо из документации (маловероятно) либо провести эксперимент.

    Я не встречал программ, которым бы не понравилось работать с usb устройства, обычно все они не обращают внимание где хранятся. Но возможна ситуация, когда вставляя несколько разных usb устройств система будет назначать разделам разные буквы, т.е. пример - ты вставил первый раз диск, ему назначили букву D:, ты установил программу, затем извлек диск, вставил другую флешку, которой система выдала ту же букву D:, затем ты вставил первую флешку с программой и система выдаст ей другую букву, например E: и уже запустить установленное приложение из прежнего места не получится, нужно переустанавливать.

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

    p.s. очень важно для такого диска извлечение с предварительным использованием одноименного меню в ОС, т.е. сначала выбираешь безопасное извлечение и только потом, когда выскакивает уведомление, отключай устройство физически. Иначе можно получить кучу проблем и потерю данных.
    Ответ написан
    Комментировать
  • Как разрешить ChatGPT генерировать 18+ фото?

    @rPman
    гуглить: stable diffuson webui
    Клонируешь с github, читаешь доку, запускаешь батник (если видяха nvidia 3гб ram то добавь ключ --lowvram), если видяхи нет или она совсем плохая, то ключ --use-cpu auto и смотри вывод может какие еще ошибки полезут (там подскажет что надо).
    Если запустится без ошибок, то интерфейс открывай в браузере (адрес оно в консоли напишет)

    подробно https://habr.com/ru/company/selectel/blog/712316/

    Нудсы вроде бы рисует и оригинальная сетка, можешь загрузить модели от сюда civitai.com там народ выкладывает свои дообученные модели, если говорить не про 18+ мне понравилась dreamlikePhotoreal20

    Осторожно, сеть генерит тонны кринжа. Лишние конечности, страшные морды, может легко пригнорировать запрос или его часть (мне кажется там от сида зависит, если его фиксировать и менять запрос, баги иногда сохраняются).

    Коротко про текстовый запрос:
    * только английский
    * (часть фразы:вес), вес число меньше больше 1, десятичная точка, больше, например 1.1 выше важность условия, ниже - соответственно ниже
    * количество чего-либо можно указать числом 2box, 3girl и т.п.
    * старайся описывать все содержимое картинки, иначе сеть придумает за тебя (она и при описании может проигнорировать, но результат качественнее получается)
    * управление позой, левая/правая рука, полный вид или только лицо и прочее - контроль отсутствует, заставить сеть генерировать людей которые что то делают кроме как 'сидят стоят или идут'.. сложно, иногда что то получается

    p.s. поковырял inpainting режим, позволяющий указать исходную картинку, маску замены и текстовое описание, что в эту маску попадает (лучше всю картину описывать) и на что должна сеть заменить. Т.е. можно закрасить маской машину на дороге, описать что вместо нее должно быть и сеть заменит машину на это.

    Ради прикола, исполнил свою детскую мечту - сеть может раздеть человека на фото, просто выделив одежду приблизительной маской, на попытки можно потратить тьму часов но результат реальный.

    p.p.s. если тебе нужны нудсы, не мучай себя, зайди на порносайты, гугли порно картинки, тем же duckduckgo (там safe search отключается без регистрации)
    Ответ написан
    Комментировать
  • Какой Линукс подойдет для этого компьютера?

    @rPman
    какая именно модель? а то пентиумы разные были
    Процессоры Pentium 4 на ядре Prescott получили поддержку нового дополнительного набора команд — SSE3, а также поддержку технологии EM64T (в ранних процессорах поддержка 64-битных расширений была отключена). Кроме того, была оптимизирована технология Hyper-threading (в частности, в набор SSE3 вошли инструкции, предназначенные для синхронизации потоков)

    собственно этот момент определит, будет ли принципиальная возможность запуска последних версий готовых debian/redhat или придется собирать gentoo/linux from scratch (между прочим лучший способ собрать ОС под ограниченные задачи и чтобы современный код был)

    Если поддержки нет, то можно подобрать нужную версию 32-bit дистрибутива той же ubuntu (настоятельно рекомендую выбирать xubuntu/lubuntu/edubuntu с легковестными DE, можно вручную поставить какой-нибудь openbox или даже awesome.

    Самая большая проблема, после невероятных тормозов, это браузер, мало кто заморачивается сборкой свежих версий браузера под старые платформы. Я помню похожую по скорости машину использовал для просмотра 480p и 720p видео (плеер mpv/ffplay/vlc), gentoo+awesome занимало 50мб ram, все остальное под браузер по ситуации.

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

    p.s. проверить совместимость очень легко, скачиваешь iso образы последних (потом постепенно уменьшаешь версию) linux начиная с ubuntu и пробуешь запустить (кстати с флешки загрузка в старых машинах может быть проблемной, используй 4гб флешки и пиши в режиме клонирования dd)
    Ответ написан
  • При движении мыши скачет нагрузка gpu. С чем связано?

    @rPman
    Выглядит как аппаратная проблема. Если бы не было речи о том что работа со внешним монитором не глючит можно было бы предположить что проблема в системе охлаждения.

    Проверь какая температура у видеокарты, возможно проблема решится обслуживанием ноутбука прочистить кулеры и заменить термопасту
    Ответ написан
    1 комментарий
  • Как работать с большими данными в MySQL или как создать удобную структуры базы данных?

    @rPman
    Да.
    Есть момент, твой объём данных ничтожно мал.

    У хранения данных в базе данных есть два основных подхода - хранить ключ-атрибут-значение, где на атрибут будет отводиться одна строка таблицы, называется eav, и хранение данных в полях, где на один объект отводится одна запись в таблице атрибуты хранятся в колонках.

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

    Второй подход всем хорош и рекомендуется, мало того можно разрабатывать интерфейс приложения с оглядкой на первый способ с возможностью добавления новых атрибутов не как новые записи в базе а как вызов ddl sql модификации таблицу, т.е. добавлять колонки на лету, таким образом получить достоинства eav и скорость аналитики. Недостаток подхода, в общем случае удаление и изменение колонок медленное в базах данных, так как пересоздаётся вся таблица, Но это проблема будет заметна когда объектов сотни тысяч.

    То есть я рекомендую хранить объекты в строках а атрибуты в колонках, даже если их сотни. Старайся отделять разные объекты по разным таблицам.
    Ответ написан
    2 комментария
  • Полный бекап VPS на внешний FTP средствами CentOS?

    @rPman
    tar + встроенное в базу данных средства резервного копирования (так как копирование файлов базы данных не гарантирует ее корректное восстановление)
    закачивать файлы на ftp можно хоть curl хоть консольным ftp да хоть скриптом на 5 строчек

    p.s. если конвертировать файловую систему vps (это возможно для виртуалок типа kvm) в btrfs то можно воспользоваться штатным инструментом инкрементального копирования на основе снапшотов (он быстрее на пару порядков, так как копируются буквально только изменения средствами файловой системы ОС а не косвенно через полный рескан, как это делают rsync)

    очень большие базы данных можно копировать, настроив master->slave репликацию (реплика и будет эта копия), при необходимости реплику можно приостанавливать, делать ее копию (тем же snapshot backup) и возобновлять работу.. в итоге интервалы между бакапами могут стать абсурдно маленькими (например минуты), Осторожно с инкрементальными бакапами, не копи их большое количество, лимитируй разумным интервалом и веди стартовое состояние на сервере хранения резервных копий, иначе к примеру храня миллион инкрементальных diff-ов можно очень долго из них восстанавливать последнее состояние
    Ответ написан
    Комментировать
  • Как распокавать многотомный архив при помощи TAR в windows?

    @rPman
    у tar нет поддержки многотомных архивов, идеологически если ее и реализуют то делят итоговый архив просто на части без какого либо формата (порядок в именах файлах)

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

    Почему современные 'программисты' пасуют перед очень простыми задачами и при этом пилят достаточно сложные приложения. Эту задачу должны делать как курсовая в на первом курсе обучения - создать свой архиватор без поддержки сжатия, только имена файлов и несколько томов. Кода тут кот наплакал. А если допустить хранение списков файлов и порядка разделения на тома в отдельном файле (тебе же без разницы) то формат становится ну очень простым.

    Предлагаю запилить такой формат как сериализованная метаинформация об архиве (количество и размер томов с именами файлов в нужном порядке + список файлов в архиве, для каждого файла crc+список кусков где он находится - это номер тома + смещение+размер куска, да это избыточно но просто). А файлы хранить просто линейно друг за другом, разделяя по окончанию места в томе.
    Ответ написан
  • Как зашифровать на PHP строку в токен 32 символа?

    @rPman
    возможность его расшифровать
    это о чем? восстановить исходную строку из 64 символов? если изначальная строка будет не больше этого размера то это возможно обычным шифрованием с ключом, алгоритмов тьма, популярный - асимметричное шифрование

    Если изначальная строка длиннее, то либо нужно ее упаковать (алгоритмов тоже тьма, включая тех что работают с использованием прошлых данных, например diff возвращает разницу между двумя текстовыми файлами, построчно)

    Ну и само собой невозможно любые данные упаковать в фиксированный объем. Где то нужно хранить изначальные данные и тогда твой токен будет просто идентификатором
    Ответ написан
  • Как сделать бесконечное цикл запуска приложения ubuntu?

    @rPman
    запускать так
    while true;do my_cool_program;done
    лучше добавить sleep 1, чтобы не за ддосить машину в случае проблем
    Ответ написан
    Комментировать
  • Какую выбрать мат. плату для i5-12400f?

    @rPman
    эту, удивлен что стоит всего 10т.р.

    ну или смотри самую дешевую с чипсетом b660

    p.s. проблемы ВСЕГДА будут, неожиданные, случайные, странные
    почитай отзывы к этой материнке что я указал
    Ответ написан
    5 комментариев
  • Какой ноутбук до 20000 выбрать?

    @rPman
    На яндекс маркете до 20т.р. есть только это или это, несколько похожих моделей отличаются экраном

    На оценку не смотри, там нет отзывов. Настоятельно рекомендуется докупить карту памяти к нему и все приложения ставить на нее.

    Эти железки скорее всего хрупкие, а из-за win11 еще и тормозные (такова селяви). Лет 7 назад у меня была Похожая железка (digma citi e400 с экраном fullhd) были хорошие впечатления (только памяти emc для win не хватило), к сожалению такая железка сейчас стоила бы под 30 (тогда 13т.р.), можно найти аналоги на али.

    Нормальные ноуты с windows по цене начинаются от 50т.р. все что меньше это набор компромисов. Но киллер фичей того что я указал является сенсорный экран и отстегивающаяся клавиатура.
    Ответ написан
    Комментировать
  • Как сравнить 2 больших csv файла в питоне?

    @rPman
    Если сами файлы в память не влезают, то попробуй сохранять хеш от сравниваемых значений (в т.ч. всю строку, особенно это ускорит процесс, если знаешь что в csv файлах нет строк содержащих \n это часть этого извращенного стандарта) так как грузить файл построчно быстрее чем парсить csv

    А дальше простая задача, первый файл грузишь в память в словарь (лучше множество set как я помню оно быстрее), второй файл построчно проверяешь наличие хеша в первом (если надо знать в обе стороны, то загрузи хеши обоих и бери пересечение)
    Ответ написан
    Комментировать
  • Как в php с помощью curl отправить многомерный массив вместе с файлом?

    @rPman
    Финский Мачо все прекрасно расписал
    добавлю от себя, так как у тебя принимающая сторона php то можно создавать массивы через именованные параметры GET или POST multipart/form-data в формате name[] или name[key], например:
    curl -X POST http://example.org/test.php -d a[]=1 -d a[]=2
    на сервере создаст переменную
    $_POST['a'] = [1,2]
    или так
    curl -X POST example.org/test.php -d a[xxx]=1 -d a[zzz]=2
    $_POST['a'] = ["xxx"=>1,"zzz"=>2]
    Ответ написан
    Комментировать