Задать вопрос
  • Какой платный сервис использовать для аудио и картинок?

    @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. В случае возврата товара ненадлежащего качества, приобретенного потребителем за счет потребительского кредита (займа), продавец обязан возвратить потребителю уплаченную за товар денежную сумму, а также возместить уплаченные потребителем проценты и иные платежи по договору потребительского кредита (займа).


    все потому что продавец обязан предоставить для замены товар равного качества/ценности
    Ответ написан
  • Если бы в компьютере было 3 уровня напряжения, то формула информации имела место быть?

    @rPman
    Эта формула как мера, не предполагает конкретное значение, а описывает ее порядок/степень для оценки зависимости,
    та же самая ситуация с трудоемкостью
    , вас не сильно волнует (пока до конкретики не дойдешь) какая константа N у формулы N*x*log(x), вас волнует только X*log(x) ибо точно описывает на сколько алгоритм сложный


    Так вот у логарифма есть свойство, что логарифм любой степени можно свести к логарифму любой другой степени, умножив на константу потому что logA(b)=logC(b)/logC(A), т.е. если у тебя основание 3 то log3(b)=log2(b)/log2(3) ~ 0.6309*log2(b) , константу убирают из рассмотрения и все сводится к тому же логарифму двойной степени

    Т.е. при переходе от 2 к 3 битам количество информации изменится на константу, а не в степень, а значит незначительно и может быть исключено из рассмотрения
    Ответ написан
  • Почему команда не работает?

    @rPman
    Потому что строки так не сравнивают, == сравнит только указатели (что смешно, если сравнивать константы, то компилятор их соптимизирует и указатели станут равны, т.е. константы так сравнить получится)

    Совет, включи в настройках компилятора проекта показ ВСЕХ варнингов, ключ компилятора /Wall (вторую опцию не обязательно хотя подход полезный)
    spoiler
    4fktybmw4dhmwr8oiyimvddthli.png

    тогда компилятор на твои if-ы ругнется и ты о проблеме узнаешь заранее
    Ответ написан
  • Как понять чего не хватает системе при сборке wine?

    @rPman
    astra-linux основана на дебиане
    попробуй установить необходимые зависимости средствами apt
    apt-get build-dep wine

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

    @rPman
    Скорее всего под перебор файлов подразумеваеся получение списка всех файлов на диске

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

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

    @rPman
    за это по головке могут настучать

    Кто именно и за что?

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

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

    Есть предположение,
    где то 2013 году у меня был аккаунт у них и я майнил криптовалюту Burstcoin (самая первая с proof of capacity с майнингом на жестких дисках) на одной единственной машине с 3 или 4 дисками (т.е. по мелочам) считанные 2-3 месяца. Затем прекратил, само собой все оплачивалось, больше с ними не работал (не требовалось, пользовался услугами других провайдеров), да и вообще не майнил ничего у других провайдеров (это если подумаете что мог купить виртуалку у реселеров)

    Чтобы понимали, Burstcoin это не недавний скам Chia, это очень щадящая для оборудования криптовалюта, первичное заполнение - линейная запись на диск на максимуме его скорости, чуть чуть использует процессор, а сам майнинг ресурсы не затрагивал
    Ответ написан
    Комментировать