Задать вопрос
  • Как реализовать авторизацию при запуске программы?

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

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

    Процесс авторизации можно воспринимать как выдачу ключа активации (например при покупке своей копии программы).

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

    @rPman
    Есть разные типы датчиков:
    * гироскоп (гиродатчик) - определяет положение
    * акселерометр (g-сенсор) - определяет ускорение

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

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

    @rPman
    За их нарушения наказывать будут тебя и все другие аккаунты, которые ты создашь, наивно думая что гугл ничего не знает про тебя
    Ответ написан
    Комментировать
  • Что происходит при создании объекта класса(при наследовании) в PHP?

    @rPman
    Боюсь у вас все как то переусложнено.

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

    Соответственно виртуальных методов нет, точнее они работают так автоматически, т.е. можно считать все методы виртуальными.

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

    Деструктор будет вызван если закончится работа приложения, закончатся ссылки (это кстати не факт, висячие могут жить до конца приложения, и даже unset не вызовет деструктор если есть ссылки на объект) и закончится область видимости переменной в которую поместили объект.
    пример:
    class A
    {
    	public $a;
    	function __construct(){echo '{C}';}
    	function __destruct(){echo '[';unset($this->a);echo 'D]';}
    }
    
    echo 1;
    $a=new A();$b=new A();
    $b->a=$a;$a->a=$b; // закоментируй, тогда деструктор будет вызван до вывода 2 иначе после
    unset($a);unset($b);
    echo 2;

    если есть ссылки:1{C}{C}2[[D]D]
    если ссылок нет: 1{C}{C}[D][D]2
    Ответ написан
    Комментировать
  • Как сделать ssl для другого порта на сервере?

    @rPman
    Хз что не так, nginx точно позволяет на нескольких портах поднимать сервера с https протоколом, первый же результат из гугла
    Ответ написан
    Комментировать
  • Почему происходит конфликт камеры и микрофона в Windows?

    @rPman
    Нужно разобраться что за приложение блокирует камеру, вполне возможно что идущее в комплекте довеском к одной из камер неправильно находит 'свою' и подключается к первой попавшейся.

    Т.е. удаляешь из системы все лишнее
    Ответ написан
    Комментировать
  • Как отредактировать HTML блок, который содержит переменная в JS?

    @rPman
    Это называется шаблонизатор, для javascript их миллион и маленькая тележка, можете даже простым string replace подменять какие то метки в текстовом определении вашего блока на переменные значения.
    Ответ написан
    Комментировать
  • Возможно ли отменить действие стороннего скрипта при клике?

    @rPman
    Пересоздай элементы DOM, удалив старые, но уже без настроек событий
    Ответ написан
    4 комментария
  • Как выбрать тему для статьи на Хабр, которую будут читать?

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

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

    Пишешь об этом статью таким образом чтобы метрики попадали

    профит

    p.s. https://habr.com/ru/company/luxoft/blog/153995/
    Ответ написан
    Комментировать
  • Можно ли в работающем RAID-10 уменьшить количество физических дисков?

    @rPman
    Не понимаю что именно у вас там виртуальное.

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

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

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

    @rPman
    Если почтовый клиент поддерживает расширения (например Mozilla Thunderbird) то можно написать такой
    Ответ написан
    Комментировать
  • Как повысить fps при записи obs?

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

    upd: может потому что битрейт низкий?
    Ответ написан
    Комментировать
  • Установить Win/Linux на одно устройство или на разные?

    @rPman
    Загрузчик linux лучше размещать на устройстве, на котором нет загрузчика windows. Конечно можно и совместить но проблем будет не мало, были примеры когда при абсолютно верных настройках, windows при очередном обновлении затирало загрузчик Linux, ошибетесь, затрете загрузчик windows и т.п.

    Куда ставить - стороннее устройство, позволит работать одновременно а не последовательно, это же логично

    Как использовать диски hdd и ssd, особенно если ssd маленький (64..128гб):
    1. сделать ssd диск кеширующим (не обязательно весь, можно выделить раздел) для большого но медленного hdd.
    В linux есть отличная технология - bcache (там еще и другие есть с той же задачей, bcache универсальнее и проще), поддержка из коробки во всех современных дистрибутивах, никаких проблем с загрузкой, простое как валенок. в ней медленный раздел форматируется make-bcache как bcache backing device, а раздел на ssd как cache device, регистрируешь первый, а второй подсовываешь как кеш для первого (это можно делать на лету позже выключая и включая), даже поддерживается кеш записи.
    Кеш сохраняется между перезагрузками и это главная фича, т.е. прогретый кеш сделает работу с hdd такой, будто он весь ssd (точнее не придется вручную решать и перемещать файлы кому лежать на hdd а кому на ssd).
    я размещал на закешированном 64гб ssd диске
    расшаренный образ с помощью iscsi с тяжелой игрой ark survivial, она в минималке под 500гб требует, и все летает, притом что сервером работала машина 2013 года и древние hdd диски

    2. разместить своп на ssd диске (размер обычно сравним с объемом ram или чуть больше - туда linux будет делать hibernate, если надо)
    3. Не разделяй систему на разделы типа / /home /var /usr ... этот пережиток прошлого имел смысл когда диски были мизерные, если системой пользуются несколько человек, для /home наверное имело бы смысл выделять отдельный раздел или лучше subvolume (при использовании файловой системы btrfs например) но только чтобы можно было на уровне диска выставлять квоты (вообще то linux позволяет выставлять различные лимиты на уровне пользователя), иначе не стоит заморочек.

    Сам linux, в смысле его корень можно размещать где угодно, вся крутость linux именно в этом, хоть в в файле-образе диска, размещенном на ntfs на системном windows диске, в сети, в памяти GPU видеокарты (да да, когда то давно для теста настраивал туда своп),... ей будет пофиг

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

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

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

    итого:
    ssd (gpt диск):
    * efi boot - 100mb (нужен если загрузка будет использовать uefi, можно установить только если установщик в режиме uefi)
    * bios boot - 1mb (нужен если gpt а не dos разбиение)
    * linux /boot - 512mb, нужен если рут linux размещен в bcache или еще где то нестандартно, если же просто ext4/btrfs/... то не нужен
    * swap
    * ssd cache - bcache
    hdd:
    * ssd cached device - bcache (причем даже не нужно создавать разделы)

    Поверх bcache разместить btrfs файловую систему, с корнем linux в subvolume по умолчанию (он так и зовется /)

    В настройках /etc/fstab использовать не имена дисков а их UUID=xxxxxxxxx (узнать можно lsblk - удобная утилита тогда все будет автоматически подцеплено и примонтировано и не важно какой порядок дисков)
    Ответ написан
  • Как подсчитать количество нажатий на кнопку за определенное время?

    @rPman
    Среднее? Поделить общее количество нажатий за это время, на (прошедшее время в секундах разделить на 30 секунд)

    Если нужно именно за последние 30 секунд, то придется сохранять последние нажатия в массиве (время их нажатия), удаляя из него при каждом добавлении те записи, которые старее 30 секунд (они будут в начале массива, если новые добавлять в конец) - тогда количество записей в массиве и будет искомое количествов нажатий за последние 30 секунд.
    Ответ написан
    2 комментария
  • Тупой вопрос. На ios не приходят смс, что делать?

    @rPman
    топать к своему оператору сотовой связи, если после сброса до заводских настроек не заработало - это не на вашей стороне трабла

    p.s. у опсосов есть услуги, ею пользуются чтобы спам не получать, отказ от получения сообщений с коротких номеров, делается соответствующим заявлением, там как раз пишут что от банков пуши приходить не будут
    Ответ написан
    3 комментария
  • Можно ли получить файл по URL в РНР? Нужно ли для этого писать модуль на другом языке?

    @rPman
    php имеет штатный инструмент работы с файлами по ссылкам http/ftp во всех своих методах типа fopen или file_get_contents

    Протоколов много, можно регистрировать собственные

    Расширения для php пишут на c и с++, вы конечно можете извратиться и писать на любом другом языке, главное чтобы он был компилируемый, но работа эта бессмысленно сложная
    Ответ написан
    Комментировать
  • Как сделать переход по несуществующей ссылке на существующую страницу?

    @rPman
    Да, нужно разработать скрипт который сделает подстановку 'имя новости -> id' и настроить мапинг адресов на веб сервере с помощью RewriteRule

    p.s. что будете делать, если новость будет иметь вид заголовок: 100-далмантинцев
    Ответ написан
    Комментировать
  • Как восстановить подключение через ssh?

    @rPman
    ssh: connect to host port 22: Operation timed out
    по ssh уже никак

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

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

    @rPman
    Пинайте хостера, если панель администрирования сервера лагает то это уже не ваша вина

    p.s. не включен ли своп и нет ли сильных трат оперативной памяти что тот своп используется по полной?
    Ответ написан
    2 комментария