Задать вопрос
  • Где найти бесплатную программу для объединения нескольких png в один с сохранением прозрачности без интернета?

    @rPman
    Если речь про командную строку, что в комбинации с минимальными знаниями программирования (очень минимальными) решают ну практически любые задачи, то:
    imagemagic - это законодатель в функционале по работе с изображениями, примерно то же самое как ffmpeg - законодатель в функционале по работе с мультимедиа (адио и видео).

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

    Для объединения четырёх PNG-изображений с сохранением прозрачности и указанием конкретных координат, можно использовать команду composite из пакета ImageMagick. Вот пример команды:
    # Определите входные изображения и их координаты.
    input_image1="image1.png"
    input_image2="image2.png"
    input_image3="image3.png"
    input_image4="image4.png"
    output_image="output.png"
    
    # Координаты для каждого изображения: (x1, y1), (x2, y2), (x3, y3), (x4, y4)
    coords1="0,0"
    coords2="100,100"
    coords3="200,200"
    coords4="300,300"
    
    # Создайте пустое изображение, которое будет служить холстом.
    convert -size 500x500 xc:none base.png
    
    # Объедините все изображения в одном холсте.
    composite -geometry +${coords1} $input_image1 base.png temp1.png
    composite -geometry +${coords2} $input_image2 temp1.png temp2.png
    composite -geometry +${coords3} $input_image3 temp2.png temp3.png
    composite -geometry +${coords4} $input_image4 temp3.png $output_image
    
    # Удалите промежуточные файлы, если они больше не нужны.
    rm temp1.png temp2.png temp3.png base.png

    p.s. это скрипт для linux bash, если хочешь для windows cmd то замени rm на del, а сверху установка значений переменных добавить в начало set имя=значение, и с осторожностью пробелы в названиях файлов, лучше без них
    Ответ написан
    Комментировать
  • Опасно ли передавать клиенту параметр _id полученный из БД mongodb?

    @rPman
    Нет не опасно, но пользовательский ввод все равно нужно валидровать
    Ответ написан
    Комментировать
  • Как обойти лимит ТГ на количество ботов?

    @rPman
    Реляционная схема у тебя такая?:
    Много клиентов, у каждого клиента много заведений, каждый клиент_заведение свой список объектов (музыка?)

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

    @rPman
    Для пространственного арбитража (выравнивание цен между биржами) тебе нужны только ask и bids, т.е. для этого тебе нужны только depth запросы.

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

    Но есть потоковые api (в криптоэкономике его реализуют на основе websockets), когда бот подписывается на определенный класс событий (прописывая интересующий список валютных пар в т.ч.) и получает информацию сразу в тот момент, когда она появляется на бирже. К сожалению, в большинстве случаев depth при этом придется восстанавливать на основе периодических (не частых) запросов depth и вручную обновлять их у себя в памяти на основе информации о лимитных ордерах (а так же торговых событиях, потому что некоторые биржи не дублируют информацию об отмене лимитного ордера, если этот ордер был съеден торговой сделкой).

    Т.е. только так можно оперативно получать информацию о стаканах, и уже на основе ее делать поиск пересечений bids/asks с разных бирж.

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

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

    p.s. оценка ликвидности это сложный алгоритм, который дает какую то вероятностную и временную оценку возможности валютной пары здесь и сейчас обработать определенный объем валюты по указанной цене, оперируя только лимитными сделками. В отличии от сделок по маркету, такие сделки могут никогда не быть исполненными.

    Оценка ликвидности по важности даже ценнее и сложнее чем попытки предугадать движение цены, точнее это задачи одного уровня. Готовых алгоритмов тут нет, и практика показывает, любой алгоритм, успешно предсказывающий искомые параметры, не будет работать продолжительное время.

    p.p.s. Возможна комбинация подхода, после оценки динамики ликвидности валютной пары, на бирже удерживается пара лимитных buy/sell с такой ценой, чтобы ее исполнение могло бы позволить получить доход с арбитражной сделкой по маркету на другой бирже, с отслеживанием их частичного или полного исполнения с помощью websocket. в этом случае можно будет пытаться ловить резкие движения, когда рынок на столько резко меняется, что исполняет ордера по достаточно выгодным ценам...

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

    @rPman
    Предпологаю что речь идет о веб бакэнде - приложении, запускаемом на веб сервере по запросу из браузера. И главное, предполагаю что используется cgi подход, когда на каждый запрос из браузера запускается отдельный процесс php (даже если это модуль веб сервера, он конечно оптимизируется до асинхронных потоков) но содержимое памяти каждый раз пустое.

    Если у тебя mainpage.php и poisk.php это разные запросы, то через глобальные переменные данные между ними не передать.

    Нужна какая-нибудь база данных, чем бы она не являлась, например:
    * хранить в специальных заголовках запроса - cookies, эти данные как мяч будут автоматически передаваться между клиентом и сервером, т.е. все запросы от клиента будут содержать копию всех установленных cookies, до истечения их времени жизни
    * переменные сессии (используются cookies автоматически)
    сессия доступна сразу после session_start() а данные через ассоциативный массив $_SESSION (автоматически сохраняется по окончанию скрипта, учти это при параллельных запросах), идентификатор сессии автоматически поддерживается в заголовках запроса (сессия стартует когда пользователь открывает сайт, и единая для других окон, адже после перезапуска браузера, время жизни опция cookie_lifetime)
    Очень часто идентификаторы сессии или специально созданное значение в ней используется как идентификатор для поиска данных в других местах (например БД)
    * можно использовать файлы, в которых данные хранятся в сериализованном виде, в php штатно работает var_export/eval, serialize/unserialize, json_encode/json_decode - текстовые и бинарный igbinary_serialize/igbinary_unserialize (очень эффективный формат) или свой собственный, по желанию
    * можно использовать базу данных, начиная с sqlite (размещается в файле но работа с помощью sql), настоятельно рекомендую PDO - универсальная прослойка для работы с реляционными БД
    * есть еще всякие memcache, apcu, или к примеру самописный сервер данных (на сокетах и не только) но применимость - отдельный разговор

    p.s. есть иной подход, когда на php пишется полноценный веб сервер, принимающий http запросы (его напрямую редко пускают в интернет, обычно ставят еще какой-нибудь nginx для поддержки ssl и других тонкостей), в этом случае php приложение скорее всего - один инстанс (один процесс), который не завершается по завершению запроса, обрабатывает запросы клиентов асинхронно, в этом случае глобальные переменные будут доступны между запросами.
    Ответ написан
    3 комментария
  • В чем причина разницы в скорости интернета?

    @rPman
    Скорее всего причина комплексная, комбинация железа и настроек на роутере.

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

    Отсюда совет, найди на роутере настройки стандарта подключения и понизь их до 802.11aс. Так же попробуй изменить канал (хотя этот совет из разряда вредных), зафиксировав его принудительно на другом, вполне возможно соседи мешают.
    Ответ написан
    3 комментария
  • Как настроить необходимые разрешения для запуска проекта?

    @rPman
    ты забыл настроить права для /var/www/html/
    если продолжать твою идею с 777 то нужно:
    sudo chmod -R 777 /var/www/html/

    Но вернее выдать права не всем, а только пользователю, под которым запускается сервис:
    chown -R username:username  /var/www/html/
    chmod -R u+rw  /var/www/html/
    Ответ написан
  • Корпоративная замена ЯндексДиску?

    @rPman
    Вам нужно сетевое хранилище, подключаемое к диску, с настройками прав доступа - чем не устраивает штатная майкрософтовская сеть, если пользователей десяток и более то домен контроллер? Дорого майкрософтовский сервер покупать? установить бесплатный linux samba в качестве домен контроллера (у меня был конфиг где он запускался в виде виртуальной машины, теперь это можно сделать в wsl), настроить файловое хранилище, с этим он прекрасно справляется
    Ответ написан
    Комментировать
  • Почему не безопасно использовать LXC-контейнеры?

    @rPman
    google: (lxc or lxd) (breakout or escape) container, первая же ссылка с описанием и примерами готовых утилит

    docker основан на lxd с теми же уязвимостями.

    Эти технологии не подходят для запуска злонамеренного кода, только доверенного.
    lxc используется для удобной изоляции конфигураций различных версий пакетов из зависимостей приложений. А так же изоляции от выбранной ОС (внутри она как бы своя), например какой-нибудь snap/flatpack пользуются той же основой.
    Ответ написан
  • Какой ноут взять для разработки игр (Юнити, С#)?

    @rPman
    Формфактор ноутбуков не подходит для разработчика. Ноутбуки - это мобильные устройства потребления контента.

    Нутбук это компромис, а скорее жертва, между производительностью и мобильностью (вес и продолжительность работы). Для игр нужна дискретная видеокарта (если это конечно не 2d аркады, хотя современные разработчики и тут умудряются довести требования до абсурда), а это значит нужна адекватная система охлаждения и много электроэнергии, т.е. автономно работать такой ноутбук будет считанные 2-3 часа (а скорее всего 1 час уже через год работы).

    p.s. И главное, я не видел чтобы люди именно работали за ноутбуком где то в поле. Работать 'в кафе' с розеткой - сомнительное удовольствие (шум, неудобно). Зато я видел чтобы народ платили 3х..5х от аналогичного по производительности стационарного компьютера, подключали к ноутбуку монитор,.. превратив ноутбук в стационарный компьютер и так мучались...

    p.p.s. те кто говорит что в комнате нет места для компьютера, продумайте вариант установить компьютер в соседней комнате/на потолке/на балконе (до 10м кабели без повышения цены, 30м - легкое повышение стоимости), вдогонку еще и бесшумно будет все работать.
    Ответ написан
    Комментировать
  • Как подписать большое множество папок УКЭП?

    @rPman
    тут пишут что штатно нельзя но можно написать программу на javascript, там ссылка на документацию.

    Универсально - для не программистов (точнее начинающих программистов или тех кто понимает общую идею но никогда не автоматизировал деятельность) рекомендую автоматизировать нажатия на клавиатуру и мышку с помощью autoit, сделав это таким образом чтобы последовательность действий была одинаковой, а данные к примеру брались из эксель таблички (буквально с клавиатуры выделяешь ячейку, копируешь в буфер, переключаешься на программу, вставляешь, затем когда все вставишь - переходишь на следующую строку).
    С помощью auRecord можно буквально сгенерировать код autoit нажатий клавиатуры и движений мыши, а затем окружить его циклом for с нужным количеством итераций
    Ответ написан
    Комментировать
  • Здравствуйте! Пытаюсь перезаписать файл, но в результате файл пустой. Как я могу это исправить?

    @rPman
    Очень странно, код у автора выглядит верным.
    Точно никаких ошибок выполнения не происходит? Оберни весь код в try catch и выводи exception
    у меня есть смутные подозрения - русские имена в пути и наличие в них onedrive, так как включенное облачное хранилище может делать с файлами в каталоге свою магию. Проверь работу с файлом в другом месте

    Одно время активно пользовался именно этим способом, потому что нужно было автоматизировать работу с чужими документами с формулами, и за адекватное время и усилия делать все можно было только средствами офиса, и именно так все делали из c# (vbs никто не любил хотя благодаря автозаписи макросов, написание кода часто было еще проще).
    Ответ написан
  • Как синхронизировать 2е папки на одном ПК?

    @rPman
    rsync - синхронизация по команде
    Для онлайн синхронизации - syncting (он для сети но можно настроить и в пределах
    Ответ написан
    Комментировать
  • Как создать системный раздел EFI?

    @rPman
    А материнка умеет загружаться в режиме EFI?

    EFI раздел это раздел, с меткой EFI BOOT, с файловой системой FAT32, собственно больше ничего (есть еще требования к gpt таблице разделов но я не нашел информации что это обязательно, кажется EFI можно использовать и при старой dos таблице разделов).

    В linux grub2 умеет самостоятельно работать с EFI разделом (но не всегда сам его монтирует, т.е. можно вручную его перед запуском смонтировать в /boot/efi) но важное замечание, текущая установка linux, из которой запускается grub-setup или gru-install должна быть запущена в режиме EFI.

    Помимо того что grub прописывает efi загрузчик в EFI Boot, он еще делает запись в EFI биосе (доступ есть только если запущено в режиме EFI, а вот в legacy mbr доступа не будет), это так же можно сделать с помощью утилиты efobootmgr
    Ответ написан
  • Каким образом и где можно разместить аудиофайл с расширением mp3 чтобы доступ на прослушивание к нему был, но возможность скачивания не была доступна?

    @rPman
    Браузеры поддерживают проигрывание DRM контента, это не дает 100% гарантию но создает некоторые трудности для скачивания
    p.s. я не нашел красивого примера, стандарты на это дело еще не стабилизировались

    Еще пример, так же не защищает но создает сложности - обфускация содержимого. Достаточно от сервера передавать 'испорченное' содержимое, в неизвестном формате, а на клиенте перед проигрыванием его исправлять. Это может быть к примеру тупое шифрование, пароль скрыть в обфусцированных исходниках и постоянно менять...

    Бой этот вечный, усилия на обфускацию будут сравнимы или больше чем потребуются усилия для деобфускации этого кода и извлечение аудиопотока.

    Ну и само собой, даже DRM защищенный контент можно будет записать, запустив браузер в виртуальной машине.
    Ответ написан
    Комментировать
  • Какую архитектуру парсинга маркетплейса выбрать?

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

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

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

    Отсюда архитектура - отдельно дубовые парсеры-загрузчики (их можно размещать буквально где угодно, они получают команду на загрузку и молотят, выдавая json-чики пакетами в виде результата), отдельно узлы-обработчики, которые на каждый пакет данных от загрузчиков делает нужные запросы в базу данных (или заранее кеширует в памяти, но тут нужно считать, что дешевле - апгрейдить сервер базы данных или держать на дисках кеш-дампы запросов и обновлять их параллельно БД, в этом случае кстати БД остается как конечное хранилище и аналитики). Ну и про базу данных, они на запись медленные только если там индексы распиханы по максимуму, хороший способ, если загрузка в базу редкая (например раз в сутки длится час) то можно отключить на это время индексы, провести загрузку, вернуть индексы - это кратно ускоряет процесс ЗАГРУЗКИ но не проверки целостности и поиск данных, т.е. подходит именно когда анализ проводится не в БД.

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

    p.s. у меня крутился сервис, годами собирающий терабайты данных на скорости 4к-10к событий в секунду (time series), хранить это в классической базе я не стал, а организовал хранилище на файлах, поверх которых в базе данных собирается аггрегированная выжимка и индексы.

    Это было оправдано, так как разработка аналитического сервиса шла уже в процессе загрузки и это была суть работы, т.е. нельзя заранее определить, что из этих данных и как может понадобиться, база данных строилась каждый раз под задачу, проходом по всем данным (больше времени занимала их распаковка - json с упаковкой zstd)
    Ответ написан
    Комментировать
  • Как открыть флешку в терминале линукса?

    @rPman
    Если на флешку была команда - безопасное извлечение (кнопка ^ в интерфейсе файлового менеджера) то такую флешку смонтировать уже нельзя, пока физически не извлечь из usb и обратно не подключить (формально можно это сделать манипуляциями с /proc файловой системой но это не просто).

    В зависимости от ОС и настроек, автомонтирование флешек может быть отсутствовать, так же путь к автомонтированию может быть разный. Обычно флешки монтируются в /media/имя_пользователя/метка_диска но вручную их можно смонтировать с помощью команды mount

    И главное, в linux должна быть установлена поддержка файловой системы, используемой на носителе. Например если там exfat то поддержку нужно устанавливать вручную (по лицензионным соображениям ее нельзя поставлять в готовом виде, лучи поноса отправлять майкрософту, которые уже на fat32 успели миллиарды наварить на отчислениях).
    Например установка поддержки exfat в ubuntu/mint/debian/...:
    sudo apt install exfat-fuse
    Ответ написан
    6 комментариев
  • Как вывести список всех компьютеров в пределах диапазона из Active Directory?

    @rPman
    Лучше использовать для этого штатные утилиты командной строки или скрипт powershell (код будет проще), например
    $ip = "192.168.1.1"
    
    # получить dns имя по ip
    [System.Net.Dns]::GetHostEntry($ip).HostName
    
    # получить операционную систему по ip
    # права у текущего пользователя должны быть достаточными
    $creds = Get-Credential
    
    Invoke-Command -ComputerName $ip -Credential $creds {
        Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version
    }

    p.s. по уму wmi есть и для python но код точно будет многословным (попроси chatgpt он тебе нарисует или нагугли)
    p.s.
    wmi
    или ldap3
    Ответ написан
    Комментировать
  • Как найти endpoint у H2O GPT?

    @rPman
    вот же дока с примерами https://github.com/h2oai/h2ogpt/blob/main/docs/REA...
    Ответ написан
    Комментировать
  • Как предоставить приложению максимум ресурсов?

    @rPman
    Не получится, гуглится что эта утилита однопоточная, т.е. занимает одно ядро и на несколько не паралелится.
    С другой стороны, разве эта утилита не упирается в своей работе в возможности дисковых накопителей? т.е. ее тормоза могут быть обусловлены низкой скоростью дисков.
    Ответ написан
    3 комментария