Задать вопрос
  • Как с помощью mPdf в PHP на один лист добавить две картинки?

    @rPman
    Сделай одну картинку, скомпоновав их с помощью, да хотя бы модуля gd или с помощью консольной утилиты imagemagic (она так же умеет формировать pdf из серии картинок)
    Ответ написан
    Комментировать
  • Вирусы это частое или редкое явление?

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

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

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

    @rPman
    можно конечно гадать, долго и бессмысленно, а можно в catch выводить информацию об exception, в 99% случаев там полезная информация
    Ответ написан
    2 комментария
  • Как получить число?

    @rPman
    (текущее_значение - минимальное_значение) / (максимальное_значение - минимальное_значение)=[0..1]
    Ответ написан
    3 комментария
  • Может ли условный зловред на нерутованном Android седьмой-восьмой версии обходить vpn соединения?

    @rPman
    Напрямую без рута - нет
    vpn прописывает роуты, для обхода которых нужен именно рут доступ

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

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

    p.s. интересно, что произойдет с открытым udp подключением за nat к смартфону, в момент подключения vpn, это подключение останется открытым или закроется?
    Ответ написан
    Комментировать
  • Объясните, пожалуйста, этот пример в побитовых операциях, зачем тут Math.pow?

    @rPman
    возведение в степень 2^x это побитовый сдвиг единицы влево на x бит, отсчет начинается с 0 (2 в степени 0 = 1, 2 в степени 1 - 010, 2 в степени 3 - 100,..)
    Ответ написан
    1 комментарий
  • Почему возникает ошибка при запуске файла exe Python через excel?

    @rPman
    Твой скрипт на питоне умеет запускаться с любым текущим каталогом?

    Может в коде запуска не указан текущий каталог, и используется тот, что последним использовался в excel (когда вызывается диалог открытия файла на сколько я знаю меняется текущий каталог)?

    Установи его перед вызовом с помощью WScriptShell.CurrentDirectory = "....."
    Ответ написан
    8 комментариев
  • Как добавить логотип токена в Метамаск?

    @rPman
    https://github.com/MetaMask/metamask-extension/tre... и смотри по коду где они используются, там почему то много мест где список регистрируется, лень код изучать

    если на клиенте через api регистрировать то
    https://docs.metamask.io/guide/registering-your-to...
    Ответ написан
  • Чтение excel файла в облаке?

    @rPman
    По твоей ссылке не выдается excel файл, а html страничка с авторизацией.

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

    p.s. ищи webdav доступ к файлам, на сколько я знаю у того же яндекс он есть
    еще лучше - используй amazon s3 или аналоги
    ну или идеальней (дешевле) всего, подними свой сервер и раздавай по своим протоколам и правилам
    Ответ написан
    Комментировать
  • Авторизация пользователя по устройству(смартфону)?

    @rPman
    Храни токен сессии авторизации в куках браузера, тогда авторизация понадобится однократная.

    Какую именно авторизацию выбрать правильно?

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

    https://developers.google.com/identity/protocols/o...

    Для пользователя в этом случае, обычно этот процесс это пару тапов по экрану, без ввода логина и пароля

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

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

    p.p.p.s. самое красивое (ничьи персональные данные никуда не уйдут) предложить пользователю использовать Time based One Time Password, один из популярных стандартов (от google authenticator rfc6238), гугл к примеру показывает эту реализацию. Пользователю потребуется на смартфон поставить соответствующее приложение (их тьма помимо самого гугла, есть встроенные в парольные менеджеры, например keepass2droid) но нигде регистрироваться и давать свой номер не придется, и владельцу сервера ни за что платить так же не понадобится.

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

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

    @rPman
    python биндинги для libtorrent идут в поставке почти с любой современной linux, например в ubuntu - python3-libtorrent, так же есть в pipy (для установки через pip)

    первый же пример из гугла
    Ответ написан
    Комментировать
  • Лимиты сервисного аккаунта google?

    @rPman
    https://cloud.google.com/free/docs/gcp-free-tier/

    Осторожно, сегодня бесплатно а завтра насчитают десяток другой килобаксов за пару часов

    Не рекомендую пользоваться постоплатными системами, без прямого контроля и ограничений, Гугл и Амазон такие, могут и тариф сменить и деньги скушать сильно выше твоих ожиданий, и юридически само собой они будут правы
    Ответ написан
  • Как сделать клон Windows partition с Linux машины?

    @rPman
    clonezilla умеет все включая кажется восстановления windows mbr boot sector (утилита ms-sys или mbr, для копирования), можно вручную с помощью partclone, но разделы создать самостоятельно (указать те же типы что на исходном)

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

    Если загрузка legacy boot mbr то нужно будет обязательно склонировать загрузочный сектор (утилита mbr), пометить загрузочный раздел как active

    p.s. если на второй диск поставить grub после клонирования разделов windows, он обнаружит и добавит в меню пункт для ее загрузки
    Ответ написан
    Комментировать
  • На что смотреть при выборе материнской платы?

    @rPman
    до кризиса с товарами, для оффисного компьютера я выбирал бы машины на основе mitx плат со встроенным процессором intel (так как другие производители в такие материнки обычно встраивали ну совсем шлак) и можно было собрать офисную машину или микросервер за 12-13т.р.

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

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

    При выборе таких машин к сожалению gpu acceleration (просмотр hd+ видео в браузере) адекватно сможет работать только в windows (и с некоторыми шансами в android), это сделано специально, это а так же лимит оперативной памяти в 8гб - искусственный, чтобы эти неплохие машины не конкурировали с другим секторами, где аналогичное по возможностям железо дороже.

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

    @rPman
    select ... from ...
    union
    select ... from ...
    union 
    ...
    выдаст уникальные строки, если использовать union all то нет
    Ответ написан
    Комментировать
  • Как реализовать хранение файлов в памяти, используя репозиторий?

    @rPman
    DIP из SOLID
    не уверен, на сколько глубоко ты готов залезать в проблему, так как в зависимости от этого будет и подход к разработке. Выбор - поддержка или нет практически любого из этих пунктов будут менять структуру и алгоритм чуть ли не полностью.

    1. имена файлов и пути, а кодировки?
    в разных ос разные правила, разные символы разделители, значимость больших/маленьких букв в именах
    2. symbolic и hardlink свихнуться можно
    это огромная головная боль для любых кто занимается копированием данных, поведение разнится к примеру, попадает ли путь в пределах каталогов, входящих в копию или нет
    3. фичи типа sparce files или reflink (этакий hardlink но не для файла а на его сектора)
    существуют задачи, в которых не сохранение и учет этих вещей могут невероятно усложнить восстановление данных (например если данные хранятся в дырявых файлах, логически петабайтового размера, в реальности же занимающие на порядки меньше, восстановить да и скопировать без учета этого будет практически нереально)
    4. extended attributes
    этим мало кто пользуется (но если пользуются то на столько глубоко, что не сделать резервную копию будет фатально), но помнить об этом надо, особенно когда нужно абстрагироваться от их реализации в ОС
    5. права доступа
    очень мало кто заморачивается с резервированием этой информации, а она зачастую не менее важна чем сами данные, так как иначе, при восстановлении данных со сложной структурой прав и большим количеством пользователей может превратиться в ад, и даже нести опасность утечки важных данных
    6. инкрементальное хранение бакапов
    это конечно не обязательно, но системы хранения резервных копий без этой фичи неудобны либо слишком дороги
    7. работа с сетевыми nas, инструменты выборочного восстановления, поиск данных
    Хранить бакапы локально - это фатальная ошибка, значит доступ к хранилищу должен быть удаленный
    А еще, вероятность что понадобится восстановить весь бакап на столько низкая, по сравнению с другими сценариями, и заставлять человека извлекать петабайтовые архивы ради мегабайтового файлика, который удалили по ошибки и решили восстановить из бакапа...

    p.s. не придумывай сам, спроси своего руководителя, на сколько глубока кроличья нора, так как к примеру все правильно сделать может тянуть на диплом или еще круче.

    p.p.s. совет, не изобретай форматы хранения данных, храни все в файлах, пусть контейнером будет сама файловая система (не вздумай файлы хранить к примеру в БД), но вот за имена файлов придется чтобы отвечал кто то другой (вот тут БД), причем не рекомендуется полностью исключать имена файлов и каталогов из архива, достаточно составить список разрешенных символов (общих для большинства ос и основной кодировки) но это может наложить лимит на структуру данных (например в разных ос разный лимит глубины вложенности или длины символов в пути к файлу), тут же храни extended attributes (так же в виде файлов со своими именами)
    Все остальное (настройки, структуру инкрементальных бакапов, права доступа, наличие дыр, symlink/hardlik, reflink и т.п.) так же храни в базе данных, может не так удобно как кажется с первого взгляда, но будет легче восстанавливать.
    Ответ написан
  • Стоит отправлять запросы с ssl в Binance?

    @rPman
    Если отключаешь ssl контроль, значит допускаешь возможность атаки mitm (провайдер или публичный wifi), но так как api binance содержит дополнительное поле с цифровой подписью на основе секретного ключа, навредить тут возможности не будет (при подмене запроса binance его не примет и выдаст ошибку), максимум подсмотреть, какие операции выполняются
    Ответ написан
    Комментировать
  • Как мониторить интернет-соединение на дропы?

    @rPman
    mtr (консольный, linux) или попроще winmtr
    пингует не только цель но и промежуточные сервера в сети, позволяет выявить точнее где именно проблема
    Ответ написан
  • Проблема установки GRUB на линукс?

    @rPman
    ты загрузился в режиме EFI (в биосе это может называться secure boot, а старый способ legacy mbr), grub автоматически это обнаруживает и пробует настроить efi загрузку

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

    p.s. чтобы поставить grub, chroot не обязателен, можно просто указать каталог с рутом системы (/dev /proc и прочие монтировать не придется, но /boot нужен) grub-install /dev/sda --root-directory=/mnt
    Ответ написан