Задать вопрос
  • Как разобраться в api php Binance?

    @rPman
    Installation

    composer require binance/binance-connector-php

    composer есть в поставке любой linux либо скачай с офф сайта последний (тогда запускать composer.phar, он написан на php)

    p.s. есть библиотека ccxt ставится так же через composer, поддерживает кучу бирж (наверное все имеющие смысл) для бинанса там помню максимум проблема будет с coin-m futures и то это было несколько лет назад, когда они только только появились

    хорошая документация, и главное унификация, написал код для одной биржи, с минимумом телодвижений переносишь на другую
    Ответ написан
    Комментировать
  • Можно ли настроить сеть от одного абонента к другому посредством wi fi направленных антенн?

    @rPman
    Гигабитный wifi не дешевое удовольствие - направленные антены от 5 тысяч рублей (нужна пара) и это 'типа слабые' решения (даст 300мбит). Более высокие скорости там организуются направленным излучением сразу нескольких антен, и я не уверен, можно ли купить к примеру 4 направленные антены и подключить к 4 штатным портам антен роутера (если есть, так как 5G роутеры могут не иметь внешних антен именно потому что технология подразумевает программируемую направленность).

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

    p.s. в дождь и снег связь будет хуже

    p.p.s. самое обидное, если ваше решение вдруг помешает работе аналогичного оборудования провайдеров - вам погрозят пальчиком или даже штрафанут, ибо негоже самим становиться провайдером, но что то мне говорит что не ваш случай
    Ответ написан
    Комментировать
  • Как сделать круглое видео?

    @rPman
    ffmpeg
    гугли использования overlay, maskmerge или alphamerge [mask]

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

    пример с overlay мне кажется тебе подходит лучше всего (тут цвет заменяется на изображение)

    гугл находит более сложные примеры, типа таких или таких
    Ответ написан
    1 комментарий
  • Как установить веб сервер на линуксе?

    @rPman
    Первое умение современного айтишника, который должен освоить каждый - умение гуглить, все ответы в интернете уже есть.

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

    Веб сервер нужно настроить, указать в каком каталоге находится файлы бакэнда, включить поддержку языка бакэнда (например модули php или asp, или это fast cgi протокол, или настроить tomcat java... в общем что там тебе нравится), указать какой домен или ip адрес у сайта, настроить ключи для работы шифрованного https протокола и ограничения доступа, к примеру чтобы хитрые пользователи не смотрели списки файлов в каталоге и не загружали конфигурационные и вспомогательные файлы

    p.s. настоятельно рекомендую не kali linux а более приземленный вариант - ubuntu server (да любой ubuntu/xubuntu/kubuntu/...) так как проблем он создает сильно меньше, решений в интернете готовых больше
    а вот kali - прямой признак кулхацкера, который хочет казаться крутым не будучи таковым
    Ответ написан
    1 комментарий
  • Как заполнить таблицу в цикле Mysql?

    @rPman
    Дано:
    product_attr_id - растет непрерывно по 1
    attr_7 - растет по 1 через три
    attr_29 - растет по 1 но через 3 записи (или при превышении 1099) возвращается к 1097

    итого:

    делаем один единый цикл по product_attr_id - for ... step 1
    увеличиваем attr_29 на 1 каждый шаг и проверяем выход за границу >1099 присваиваем 1097, так же в этот момент увеличиваем attr_7 на 1
    Ответ написан
    Комментировать
  • Деление внешнего носителя для файлов и для linux, как это сделать?

    @rPman
    сделать ровно то что ты написал

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

    в зависимости от того какой способ загрузки в биосе выбран и какая разметка диска (mbr и gpt видны и там и там):
    * efi загрузка требует/рекомендует gpt разметка, legacy - mbr
    * если выбрана gpt разметка но legacy режим то потребуется 1мб раздел biosboot
    * если выбран efi режим, то нужен раздел ~100мб efiboot (отформатировать в обычный fat но с пометкой что он efi)
    * если выбран legacy режим загрузки и mbr разметка, то для linux хватит 1 раздела /
    (иногда требуется /boot раздел, обывателю это не нужно, это актуально для нетипичных конфигураций файловых систем)

    Итого 1-2 раздела для linux и 1 раздел ntfs для windows, который прекрасно виден и в windows и в linux, без каких либо настроек.

    Но есть совет, windows начиная с 8.1 версии и по сей день по умолчанию включает hibernate режим и использует его даже когда ты выбираешь обычное выключение компьютера (оно делает logout, закрывая все приложения, и включает гибернацию) - чтобы показывать рекорды моментального включения компьютера. К сожалению в этом режиме файловые системы на флешках и дисках считаются некорректно извлеченными, и в редких случаях работа с таким 'некорректно отключенным' диском из linux (любой другой ОС, тут важен факт гибернации) может привести к повреждению данных

    Поэтому рекомендую отключить гибернацию, если важно постоянно переключаться между ОС.
    Ответ написан
    4 комментария
  • Как правильно хранить image на сервере (в mysql)?

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

    Так же для удобства обслуживания действительно больших баз (миллионы изображений) можно раскидывать их по подкаталогам, считая имя каталога как некоторые биты от идентификатора, к примеру имя файла 00f1b3f3.png но хранить его в подкаталоге 00f1/b3f3.png в этом случае один каталог не будет содержать файлов больше некоторого лимита (в данном случае 2^16 - 65536, с таким объемом вполне сносно работают почти любые утилиты)

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

    p.p.s. бонус от хранения в блобах можно увидеть как унификация обслуживания базы данных, не нужно синхронизировать файлы и базу данных (расхождения возможны при сбоях) а так же можно настроить штатную репликацию БД и получить красивую репликацию данных на лету на ноды кластера...
    Ответ написан
    Комментировать
  • Как убедиться что сжатые изображения является продуктами исходного?

    @rPman
    Исключительно ради стеба.

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

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

    Пример использования - криптовалюта zcash, в ней для анонимных монет использовано было именно это шифрование.

    На хабре недавно была статья о компиляторе C (сильно упрощенный) который позволяет писать такой код относительно свободно. Библиотек под разные языки полно, правда они не так красивы как прямо целый компилятор.

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

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

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

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

    p.s. понятно что такие базы как mysql или postgres это умеют, но есть даже решения для sqlite (форки типа dqlite, rqlite и даже какие то внешние инструменты типа через фаловую систему litefs, сам не трогал но читал и запоминал возможности)
    ------------

    самому можно конечно что то пилить, но трудоемкость процесса будет очень большой, ведь придется делать двойную работу.

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

    @rPman
    Мне кажется, в твоем случае, лучше обратиться к специалисту.

    Но если все же хочется самостоятельно покопаться то гугли:
    sysinternals process explorer
    sysinternals autoruns

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

    Да, очень редко встречаются даже дрйвера (помню приложение от realtek sound не имело подписи, ставилось вместе с драйверами на материнскую плату) но такие случаи проще запомнить.

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

    Если приложение установлено не в c:\program files а к примеру в профиль пользователя c:\users\... то это уже подозрительно, особенно если его не устанавливал - смело удаляй. Злономеренные приложения могут предлагать ненастоящую штатную утилиту удаления, которая только временно скрывает приложение, оставляя следы в системе для возвращения в будущем.

    p.s. настоятельно рекомендую сделать резервную копию системного диска перед этими экспериментами, по незнанию можно много что сломать. Для быстрого создания копии диска и его восстановления рекомендую clonezilla (загрузочный диск/usb флешка)
    Ответ написан
    Комментировать
  • Как вывести PHP ошибки в свой лог файл?

    @rPman
    прописать это в php.ini или так:
    ini_set("log_errors", 'on'); // 'on' а не true как многие пишут
    ini_set('error_log', 'errors.log');


    еще можно свой обработчик ошибок задать
    https://www.php.net/manual/en/function.set-error-h...
    https://www.php.net/manual/en/function.set-excepti...
    Ответ написан
    2 комментария
  • Шанс выпадения на python?

    @rPman
    если шансы выбора файла одинаковые и ты можешь переименовывать файлы, сделай имена файлов - числами
    тогда код станет совсем простым
    num=random.randint(1,10) # от 1 до 10 включительно
    filename=str(num)+'.png' # просто пример имени файла 1.png
    Ответ написан
    Комментировать
  • Как решить многокритериальную задачу о назначениях?

    @rPman
    Строки - работники, колонки - критерии?
    В общем случае тебе нужно составить метрику, самая тупая - это расстояние в евклидовом пространстве до нулевой точки - т.е. квадратный корень из суммы квадратов значений (в твоем случае критериев)

    Если нужно сравнивать двух работников, то тогда квадратный корень из суммы квадратов разностей их критериев, но осторожно, эта метрика не транзитивна, т.е. если работник A лучше B, а B лучше C, то A не обязательно будет лучше C.

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

    Предполагается что критерии имеют одинаковый смысл - чем больше значение тем лучше, так же рост значимости - линейный, т.е. увеличение значения критерия в два раза и в четыре означает буквально улучшение в 2 раза и в 4 соответствено. Бывает, когда значение критерия обратное и не ограничено, т.е. чем меньше тем лучше, тогда его переворачивают 1/(X+1) в этом случае значение критерия станет на интервале 0-1 (правда не линейное но это более сложный разговор, к примеру экспоненту в линейный превращают логарифмом)

    Итого формула: Xi=sqrt(SUMj((Aj*Yij)^2))
    Где i - номер строки, j - номер колонки, Xi - значение метрики для i-го работника, Yij - значение критерия j для работника i, Aj - коэффициент значимости критерия j

    upd. существуют другие алгоритмы, например - критерии сортируются по убыванию значимости, сначала сотрудники сортируются по важнейшему критерию, берется некоторое их количество сверху (например половина), и сортируются по второму по значимости критерию, берется некоторое их количество (от остатка первого критерия) сверху и так далее. Этот способ подходит когда значения критериев дискретны (вырожденный случай - да/нет, т.е. к примеру знает ли работник язык программирования, женщина ли с риском уйти в декрет и т.п.)

    Скорее всего придется сочетать эти алгоритмы, т.е. сначала исключить работников, которые в принципе не соответствуют критериям (зачем тебе программист, не умеющий программировать) а затем оставшихся выбирать по метрике выше
    Ответ написан
    Комментировать
  • Как узнать потребляемую от батарее мощность в Windows?

    @rPman
    Вероятность нормальной поддержки этой информации драйверами близка к нулю
    попробуй по собирай информацию через powershell

    смотри FullChargeCapacity, а так же EstimatedChargeRemaining в процентах
    по скорости его уменьшения можешь оценить сколько ватт потратилось

    p.s. в linux так же информация estimated
    Ответ написан
    Комментировать
  • На чем лучше написать Desktop приложение?

    @rPman
    Нужно больше информации, что именно за приложение и какие из 'аспектов десктопности' ему нужны.

    Например, если нужно много формочек, к примеру для работы с данными в базе данных (наполнение, поиск, просмотр, анализ), без особой стилизации интерфейса, то я рекомендую (как бы я не ненавидел майкрософт) - microsoft visual studio + .net + WinForms. Запросы в базу данных лучше создавать в других инструментах (благо есть соответствующие ... студии). Есть разные фреймворки и среды разработки для данной задачи но такого удобного и эффективного (по затратам времени на разработку) лично я не видел. Благодаря некоторым усилиям сообщества и слабого противодействия майкрософт, такой код оказывается еще и кроссплатформенным, т.е. мало того что приложения можно запустить на win/linux/mac (с оговорками, особенно лицензионная чистота, например установщика приложения) так еще и сама среда позволяет создавать так же удобно приложения для веб (.net asp, но я это направление настоятельно не рекомендую). Что касается версии, то если изначально приложение писать для 3-ей версии .net фреймворка, то оно сможет запускаться даже на winxp (с оговорками можно 4-ую). Еще момент, про который многие забывают, приложения .net могут разрабатываться (и это поддерживается visual studio) не только на c# но и на .net managed аналогах как vb.net, c++.net, f# и даже python.net (но нужно помнить что это языки, синтаксически совместимые с оригиналом, но подключить какой то модуль без портирования и пересборки не получится). Есть недостатки, попробуй любого разработчика .net попросить решить проблему мерцающего контрола (например грид или ричедит), плюс это не самый шустрый фреймворк и clr виртуальная машина дает о себе знать а еще многословность как в java...

    Для c++ безоговорочный лидер рекомендаций - qt, кроссплатформенный и очень быстрый и удобный фреймворк (не только интерфейс). Конечно не получится лениво возекаться с мышкой как в ms vs.net но результат тоже будет хорошим.
    Ответ написан
    1 комментарий
  • Могу ли я как то получить список папок по айпи?

    @rPman
    Это дефолтный веб сервис apache для раздачи файлов а папках

    С ним умеет работать wget (например может пройтись по ссылкам и скачать список файлов с учётом exclude условий и ограничений по ссылке и количеству вложенностей переходов

    P.s. точно помню с таким сайтом умел работать far commander (win) но криво
    Ответ написан
    Комментировать
  • Как запретить Internet Explorer перенаправлять на Microsoft Edge?

    @rPman
    Нужно для этого отключить надстройку IEtoEdge BHO, в настройках IE отключение не доступно, но можно вручную удалить ключи, ссылающиеся на ie_to_edge_bho (там будут и для 64бита и для 32 бита), кажется 4 или 5 мест поиском находит (там по ситуации смотреть, класс нужно удалять не сам найденный ключ а его подуровень с именем - id класса) и перезагрузиться

    p.s. что же за нужда такая заставляет пользоваться IE на win10/11?
    Ответ написан
  • Как сделать из комптютера прокси для планшета?

    @rPman
    проблема в том что настройки прокси в android подключении - это рекомендация, т.е. если приложение не желает/не умеет работать с прокси сервером, оно не будет его использовать

    для гарантий что подключение идет через твою машину, используй vpn (настрой vpn сервер на своем ПК)

    p.s. если речь только о браузере, то советую установить firefox, и вручную в about:config настроить прокси
    Ответ написан
    Комментировать
  • Обновлять базу данными, затирая первые старые данные?

    @rPman
    Это худшая задача для реляционных баз данных, что там будет происходить с foreign_key я вообще молчу, все решаемо но скорости будут не очень

    Если нет связанных таблиц (что логично, твой id на самом деле не идентификатор, не вводи народ в заблуждение и назови по другому) в твоем случае скорее всего можно схитрить, можно key_id считать на лету, т.е. ключевое поле с autoincrement, но назови его по другому, например key_id_orig
    1+key_id_orig-min(key_id_orig)

    но это сработает только если удаление возможно только самой старой записи, если же будут удаления из середины, то порядок придется пересчитывать по другому, через сортировку всей таблицы по key_id_orig и подсчету колонок функцией row_number
    Ответ написан
    5 комментариев