Задать вопрос
  • Посчитать итоговую сумму итого?

    @rPman
    есть только числа и нужна их сумма? нет скобок или вызова функций например?
    $str='200 - 100 - 50 ';
    if(preg_match_all('/\s*([+-]?)\s*(\d+)/',$str,$m))
    {
    	$sum=0;
    	foreach($m[0] as $i=>$v)
    		$sum+=($m[1][$i]=='-'?-1:1)*$m[2][$i];
    	echo 'Сумма: '.$sum;
    } else
    {
    	echo 'Синтаксическая ошибка';
    }
    решение не фонтан, кучу ошибок тупо проигнорирует и ты об этом даже не узнаешь
    Ответ написан
    Комментировать
  • Как сделать ярлык для подключения ssh по паролю?

    @rPman
    есть утилита sshpass, пример:
    sshpass -p "password" ssh user@site.com
    осторожно, пишут что хоть sshpass и пытается скрыть от других пользователей пароль на этой машине, все же его как то можно вытащить из командной строки

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

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

    @rPman
    Если тебе надо играть в майнкрафт самому и с друзьями на своем сервере, бери нормальную java edition версию с сайта minecraft.net

    Если прямо ну очень надо и нет аккаунта (или есть но тебе хочется свою сборку без лишних усилий), бери tlauncher.org (лучший лянчер с возможностью собрать свою сборку из модов, подгружаемых с curseforge) правда там вырезана нормальная игра по сети (каждый запуск нужно будет вручную прописывать ip и порт, так как не работат поиск локальной игры) но никто не мешает использовать этот лянчер как основу для тестирования сборок а потом вручную их перекинуть на офф версию
    Ответ написан
  • Возможно как то сделать что бы nextlcoud работал в "дубле"?

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

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

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

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

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

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

    @rPman
    Если цель - уменьшить трафик, то сжатием пусть занимается веб сервер, собственно так и есть по умолчанию, все происходит прозрачно для пользователя.

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

    Ну и в догонку, указанный код слегка повысит нагрузку на процессор, незначительно но все же.
    Ответ написан
    Комментировать
  • Доступ в сеть одному приложению с Андроид при помощи Миротик, есть ли смысл?

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

    настройки этого прокси прописываешь в телеграм (настройки - данные и память - прокси)

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

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

    @rPman
    начиная с некоторого объема, готовые сторонние службы типа amazon s3 становятся очень дорогими
    поэтому поднимаешь свою vps-ку и на нем свой собственный сервис со своим api (почему то люди думают что свой s3 на минималках это сложно, в подавляющих случаях это несколько часов работы среднего программиста)

    google: self hosted s3 compatible storage software
    Ответ написан
  • Могут ли p2p сети работать, если все пользователи имеют серые IP?

    @rPman
    Вообще без каких либо опор с белыми ip.
    тогда не смогут
    tcpip требует чтобы кто то к кому то по ip адресу подключился

    но возможна ситуация когда с однократно с помощью белого ip клиент подключился к другому клиенту, который открыл порты на роутере с помощью upnp, запомнил всех таких клиентов и передал весь их список (id_client:ip:port) всем клиентам.

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

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

    p.s. udp подключение позволяет подключиться к чужому подключению без наличия на роутере поддержки upnp
    Ответ написан
    Комментировать
  • Как ограничить полномочия скрипту на запись (легковесный chroot)?

    @rPman
    запускать скрипт под специально созданным пользователем backup и выдать права на каталог с бакапами только там где это допустимо
    Ответ написан
    Комментировать
  • Как правильно создать бесплатный музыкальный сервис?

    @rPman
    Чтобы вас не заблокировали - у вас не должно быть места хранения информации, буквально.

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

    Так что технически реализовать можно, вопрос в мелочах.
    Ответ написан
    1 комментарий
  • Как собрать сервер на устаревшем ПО?

    @rPman
    Одно слово - вииртуализация.

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

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

    ОС FreeBSD 7.2
    уходи от этого, на linux, рекомендую для новичков - на ubuntu, сама freebsd может и норм но настраивать что то нестандартное будет новичкам тяжелее на порядок

    С высокой вероятностью Lighttpd и MySQL подойдут новых версий, и большая часть проблем создаст код, написанный под старую версию php, т.е. почему бы не попробовать установить на современную ОС только его (но придется собирать из исходников, я не видел бакпортов php такой старой версии под новые) т.е. вся возня, найти максимально высокую версию ОС для запуска в виртуалке, для которой есть php4

    Для установки старой версии ubuntu можно использовать архив old-releases.ubuntu.com и указав их репы в debootstrap собирать какую угодно старую версию минисборки в каталог, которую уже можно виртуализировать хоть chroot хоть lxc хоть полноценной виртуалкой
    Ответ написан
    2 комментария
  • Как передать содержимое в переменную PHP?

    @rPman
    Отвечу максимально полно

    Чтобы скрипт php что то 'получил', он должен быть как минимум запущен, подавляющее большинство стратегий создания приложений на php это когда клиент (браузер) либо чистый html либо javascript делает запрос на сервер, а сервер запускает на короткое время php скрипт чтобы тот вернул ответ (готовый html или данные в каком то виде, например json чтобы javascript обработал)

    Общение между браузером и сервером происходит по http короткими запросами вопрос-ответ, поэтому фраза 'установить переменную' немного некорректна в этом случае, ведь установив переменную в результате запроса, таковой она будет только тот короткий момент, пока этот запрос обрабатывается (например все что идет в http запросе как GET или POST параметры, веб сервер автоматически прописывает в глобальные переменные $_GET и $_POST соответственно, бери и читай). Для отправки запросов из браузера на сервер есть готовые библиотеки, гуглить ajax (на чистом javascript без библиотек для этого можно использовать XMLHttpRequest)

    Поэтому есть способ передачи данных через заголовки запроса, с помощью cookies, браузер устанавливает куки, которые автоматически в дальнейшем добавляются к любому запросу с данного домена на сервер. На сервере в php доступ к ним можно получить из переменной $_COOKIE. Так же есть способ установить куки со стороны сервера. С точки зрения эффективности это не самый лучший способ, так как данные получаются не сохраняются где то на сервере, а транслируются повторно с каждым запросом, поэтому большие объемы хранить там не рекомендуется.

    Существует подход, когда php приложение не короткоживущий скрипт а сам веб сервер, обработка запросов, чтение get/post параметров, куки и прочее, в этом случае обрабатывает это приложение (есть библиотеки, например асинхронный php react), но зато, так как приложение не завершает свою работу после запроса, прочитав переменную из запроса ее можно сохранить в памяти приложения. Этот подход на порядок ускоряет работу приложений по сравнению с классическим http-rest подходом (ведь скриптам не нужно на каждый запрос восстанавливать состояние серверного приложения, загружая нужные данные откуда-то, например из базы данных) т.е. из коробки более быстрый но сложнее к масштабированию.

    В качестве бонуса у этого подхода появляется удобная возможность использовать websocket, когда запросы отправляются не в виде отдельных а как пакет данных внутри уже открытого соединения (если что веб серверы и браузеры поддерживают и для типичного http rest незакрываемые соединения, но они заголовки так или иначе передаются, занимая время и ресурсы), и не только клиентское приложение сможет отправлять запросы от браузера на сервер но и сервер сможет слать сообщения клиенту
    Ответ написан
    Комментировать
  • Если злоумышленник узнаёт мою сид фразу от Ethereum кошелька, то я не смогу её сменить?

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

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

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

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

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

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

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

    @rPman
    а хватает ли локальной сети ip адресов, которые выдает роутер/dhcp сервер? так же вариант - в сети есть машины со статическим ip адресом, и как только машине по dhcp выдается этот адрес - у обоих машин начнутся проблемы с сетью (через какое то время адреса будут выданы новые машинам, и проблема будет у другой)
    Ответ написан
    Комментировать
  • Как удаленно проверить наличие пароля на BIOS из Windows 7?

    @rPman
    С некоторыми мизерными шансами можно снять копию биоса и посмотреть в дампе (сам пароль не узнаешь), гуглить - снять пароль дамп биоса, добавив материнскую плату и версию биоса.

    Не все производители материнских плат дают утилиту работы с дампами биос под windows (требуют наличие dos)
    Ответ написан
    Комментировать
  • Как получить доступ к файлам в папке Users на USB HDD на другом ПК с Windows 10 Home?

    @rPman
    Первое - не пользоваться проводником, именно он подменяет все что касается папки Users и создает другие проблемы (например с символическими ссылками), советую использовать такие приложения как Far Commander или Total Commander (windows commander)

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

    Поэтому права доступа можно добавить, хоть в проводнике, в свойствах этого диска, вкладка безопасность (если ее нет, то ее нужно включить в настройках проводника).
    Ответ написан
    Комментировать
  • Можно ли через CURL получить имя файла без скачивания?

    @rPman
    читай заголовки и ищи Content-Disposition

    Заголовки парсить вручную, добавив их в вывод curl_setopt($ch, CURLOPT_HEADER, 1);
    заголовки в текстовом виде, по строке на заголовок (разделитель \r\n), между именем и значением разделитель ': '

    p.s. если content-disposition нет, то имя файла исторически берут из url, отсекая все до конца начиная с ? и до первого '/' если читать с конца (никто не гарантирует что там будет желаемое в принципе)
    Ответ написан
    Комментировать
  • Возврат денег за ноутбук?

    @rPman
    www.consultant.ru/document/cons_doc_LAW_305/81db2a...
    4. При возврате товара ненадлежащего качества потребитель вправе требовать возмещения разницы между ценой товара, установленной договором, и ценой соответствующего товара на момент добровольного удовлетворения такого требования или, если требование добровольно не удовлетворено, на момент вынесения судом решения.
    так еще и переплата по кредиту должна быть возвращена
    5. В случае возврата товара ненадлежащего качества, проданного в кредит, потребителю возвращается уплаченная за товар денежная сумма в размере погашенного ко дню возврата указанного товара кредита, а также возмещается плата за предоставление кредита.
    6. В случае возврата товара ненадлежащего качества, приобретенного потребителем за счет потребительского кредита (займа), продавец обязан возвратить потребителю уплаченную за товар денежную сумму, а также возместить уплаченные потребителем проценты и иные платежи по договору потребительского кредита (займа).


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