Задать вопрос
  • Как подключится по SSH к серверу с динамическим IP?

    @rPman
    Есть разные формы отсутствия белого ip

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

    Если вы за NAT, т.е. даже ваш роутер получает для выхода в интернет адрес из локальной сети (видел такое у мобильных провайдеров) то да, это приговор. Тут варианты только vpn или к примеру reverse ssh port forwarding:
    На вашем ноутбуке настраивается автоматическое циклическое подключение ssh к удаленному серверу с белым ip, с настройкой перенаправлений порта вашего уже лкального ssh сервера на тот удаленный. В этом случае для подключения вам достаточно подключиться к удаленному серверу и подключение будет перенаправлено. Развитие вариантов - можно не делать порт удаленный доступным из интернета, и для подключения по ssh нужно будет подключаться сначала к ssh того сервера, так же с настроенным перенаправлением портов, и уже тогда подключиться к своему серверу.
    Ответ написан
    Комментировать
  • Как лучше спроектировать облачный сервис?

    @rPman
    Все так, но.

    Разделение по инстансам по факту не сильно увеличивает надежность, ведь они будут однотипные, а значит уязвимость на них будет на всех сразу, если говороть о классических 0day уязвимостях... т.е. что в монолитном варианте что в рапределенном, если ломанут то скорее всего все сразу.

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

    @rPman
    Операционную систему ставить придется, тут вариантов нет. Вопрос только какую именно.

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

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

    К сожалению начиная со школ, да и после, по ряду причин люди ставят windows, покупают а скорее воруют платные приложения (логично, когда 'редактор фото' стоит пол сотни тысяч рублей на год), не желая изучать альтернативы (особенно смешно, когда начинают сравнивать бесплатные с платными, придираясь к мелочам), попадают в замкнутый круг, ты умеешь только windows, друзья только windows, в школе/университете/на работе только windows, вырваться из него очень сложно.
    Ответ написан
    Комментировать
  • Стоит ли писать статью о разработке собственного программного решения в области pro audio?

    @rPman
    Какие проблемы, пиши в черновик, по окончанию проекта или доведению до какого-то промежуточного результата запустишь серию публикация 'как я провел лето', гадать стоит ли писать или не стоит - глупо, если хочется пиши!

    Если цель проекта не просто собрать лайки, а получить фидбек - то однозначно писать стоит. И если получишь отрицательный отклик - это будет тоже полезный результат, стоит рассматривать это именно в таком ключе.
    Ответ написан
    Комментировать
  • Холодный кошелек на андроид?

    @rPman
    Кошелек Electrum имеет готовые инструменты по работе оффлайн и трансляции подписанной транзакции например с помощью звука. Не уверен правда что все эти прелести работают именно на android версии, но на desktop да.
    Ответ написан
    Комментировать
  • Поможете с кодом пожалуйста?

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

    В твоем случае формат простой, на столько, что достаточно читать файл пострчно file.readlines() и делить строку с помощью string.split(символ-разделитель)
    Ответ написан
  • Как в андроиде запретить ребенку делать откат приложения до более старой версии?

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

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

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

    @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 - удобная утилита тогда все будет автоматически подцеплено и примонтировано и не важно какой порядок дисков)
    Ответ написан