Задать вопрос
  • Возможно ли узнать время, за которое запрос приходит на сервер?

    @rPman
    Логирование и синхронизация точного времени на сервере и клиенте.

    Точный момент (миллисекунды), когда запрос 'пришел' на сервер зависит от точки, в которой происходит замер, например если замерять средствами nginx (запущенный на сервере) и к примеру момент, когда запустится cgi скрипт (первой строчкой которого поставить запись времени в лог) - будут отличаться на десяток миллисекунд.

    Причина в том, как именно запрос обрабатывается, асинхронно или нет (скрипт может принять его либо в тот момент как пришел первый сетевой пакет, или же с последним).
    Ответ написан
  • Как отправить POST запрос?

    @rPman
    а почему ждешь именно 201 статус?
    раз есть отклик в консоли значит fetch отработало, смотри код сервера, пропиши там отладочной информации
    Ответ написан
    2 комментария
  • Оптимизация работы с апи, что использовать?

    @rPman
    Причина тормозов - неправильно оформленный запрос, то что можно посчитать на sql сервере, почему то считаешь на бакэнде.

    Даже не изучая код, видно что вместо того чтобы делать 100500 запросов, по одному для каждого $this->room[$cart_min]->Room_id, достаточно собрать эти идентификаторы в список и сформировать один запрос на выгрузку сразу всех room_images (так как работа списка не зависит от ответа от sql сервера)

    Если количество идентификаторов меньше тысячи, то это можно сделать с помощью select ... from ... where id in (1,2,3,4,5,...)
    если больше, то подумать, может пусть списком идентификаторов сам сервер сразу и заведует, храня их в какой-нибудь табличке
    Ответ написан
  • Аналоги RDP в винде?

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

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

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

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

    @rPman
    нет, но можно открыть доступ только на чтение, а каждый пользователь при открытии будет получать копию таблицы (меню файл - сделать копию)
    Ответ написан
    Комментировать
  • Возможно ли сделать прокси-сервер который использует другие прокси? Или делать через VPN?

    @rPman
    Если на машине, чей ip авторизуется в прокси, есть возможность настройки iptables или любого другого фаервола, то можно настроить простой nat port mapping, пропиши в правилах фильтрацию входящих ip адресов чтобы ограничить доступ к прокси только с них.

    И совсем простой вариант, любой ssh умеет настраивать проброс портов в любую сторону (от клиента к серверу или от сервера к клиенту, ключи -L и -R соответственно), т.е. настраиваешь беспарольную авторизацию, и простым скриптом (его можно как службу прописать)
    while(true);do ssh xxx@yyy -L ..... -N;sleep 1;done

    делаешь автопереподключение (в конфиге ssh сервера советую прописать keepalive на случай нестабильного интернета)
    Ответ написан
    2 комментария
  • Почему не получается обновить до php7.3 на Ubuntu 16?

    @rPman
    Потому что 16-ая версия ubuntu xenial устарела на два lts релиза, а через месяц уже будет три
    В указанном ppa нет сборок под xenial

    есть неофициальные архивы, так что с осторожностью:
    https://launchpad.net/~sergey-dryabzhinsky

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

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

    @rPman
    Что и главное от кого защищаешься? от этого зависит ответ и он будет сильно разный.

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

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

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

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

    Само собой правильно - администратор должен не настройкой заниматься, а создавать и настраивать инструменты автоматического развертывания (например образ docker или конфиги ansible), т.е. минимум два человека - один делает всю работу но не имеет доступа к паролям, только тестовые данные, другой только проверяет работу и запускает в бой.

    Разделяй и властвуй - не держи все в одном месте, разделяй сервис на несколько, чтобы критичная информация могла быть размещена отдельно от основной логики в виде простого и дубового модуля, требующего минимального и редкого обслуживания
    Ответ написан
    Комментировать
  • Как связаться с DHCP сервером после переезда ПК:)?

    @rPman
    Создала новое подключение через набор номера, все ок, но интернета нет.
    Что? набор номера это подключение с помощью модема, очнись, ты в 2021 году а не 2000. Этого делать не нужно в принципе, удали это подключение.
    Если подключение к интернету идет через ethernet провод, то ничего создавать не нужно, если в системе установлены все необходимые драйвера то сетевое подключение уже есть и по умолчанию оно в режиме - автоматическая настройка.

    Если ранее настройки были не стандартные (не автоматическое определение параметров) то значит нужно вернуть этот режим назад.
    -----------------------------

    Как именно производится подключение к интернету? варианты:
    1. напрямую через провод, который приходит из подъезда (оборудования провайдера)
    2. у тебя в доме установлен роутер (приобретен или предоставлен провайдером), и компьютер проводом подключен к этому роутеру (или по wifi)

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

    Если вариант 2 то все сложнее, ведь сначала нужно настроить роутер
    Ответ написан
  • Как получить всю БД в виде csv?

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

    Вторая проблема - денормализация, вот это объединение записей. Причина простая - реляционные базы данных по определению не хранят достаточно информации для понимания, чем является данные. В некоторых случаях можно что то вытащить из типа индексов (fk и pk) и ограничений constraints но в общем нет. Как понимать связь М-1-М? какую таблицу брать за базовую а какую второстепенной, т.е. что выбирать left join, right join или inner join? Да, для простых справочников, когда таблица является лепестком в графе связей 1-М можно 'смело' связывать такую таблицу, дублируя данные справочника по foreign key индексам, но опять - зачем? ведь при чтении уже не будет видно что использовался справочник.

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

    в c# есть унифицированный инструмент по подключению к базам данных - ado.net (вся возня - в построителе connection string, плюс таскать с собой по больше драйверов от разных бд), плюс есть системный odbc (уже устарел но для старых баз данных это иногда единственный способ подключения) для которого есть поддержка ado.net
    Ответ написан
    1 комментарий
  • Настройка репликации между двумя веб серверами?

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

    Существует способ организации работы, когда синхронизация идет на блочном уровне файловой системы. Например DRBD (когда несколько блочных устройств в сети настраиваются как raid1 mirror). Или файловые системы типа glusterfs, когда сетевое хранилище организуется на базе файловой системы, в догонку еще варианты типа lustre или ceph.

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

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

    @rPman
    Нужно собрать посылки со складов. Если посылка весит больше 5, то посылка должна быть отправлена со склада "foo", иначе "bar". Но если на складе нет необходимого количества, то это условие нужно опустить и исходить из наличия. Вес посылки становится известен только при обращении к складу.

    Единственное условие выбора склада у вас - 'вес посылки больше 5', не зная веса посылки принять решение невозможно.

    В данной задаче необходимо топать в оба склада одновременно или по очереди и запрашивать посылку.
    Ответ написан
  • Как убрать кнопку "Другой пользователь" на доменом ПК?

    @rPman
    Можно выдать последнего залогиненного
    если я верно понимаю, эту политику, выбери disabled
    If this policy is disabled, the full name of the last user to log on is displayed, and the user’s logon tile is displayed. This behavior is the same when the Switch user feature is used.
    Ответ написан
    Комментировать
  • Как запускать exe файл по расписанию через cmd?

    @rPman
    schtasks create
    есть менее функциональная устаревшая at
    Ответ написан
    Комментировать
  • Какую недорогую сборку ПК можно собрать для программиста?

    @rPman
    30т.р. это приговор, только устаревающее и слабое железо, банально на оперативную память 32g денег не хватит так что понижай требование до 16 (докупишь позже).

    Так же требование двух мониторов может сильно подгадить, так как не часто материнки содержат два видеовыхода. Да и наличие встроенной видеокарты уполовинивает выбор.

    Попробуй с этого начать поиски
    https://www.e-katalog.ru/GIGABYTE-A520M-DS3H.htm (само дешевое из нормального что я нашел с поддержкой аж трех не dsub мониторов)

    Были бы деньги,
    посоветовал бы Rysen 7 5700g (3310 single thread rating, 16mb l3 cache) но у него цена 30т+
    Решение по проще AMD Ryzen 5 Raven Ridge 2400G (2162 single thread) ~17т.р.

    Осторожно с выбором оперативной памяти, внимательно читай саппорт лист как процессора так и материнки

    У интеля можно наверное на это обратить внимание
    Intel Core i5 Rocket Lake i5-11400 (3052 single thread rating) ~17т.р. (что то странное с этой ценой, слишком дешево для такого железа сейчас)

    https://www.e-katalog.ru/ASUS-PRIME-H510M-R.htm ~6т.р.

    На оперативку 16gb уйдет порядка 6-10т.р. Бери одной планкой, не гонись за dual channel, это не стоит того, и докупить позже проще будет

    Блок питания еще 5т.р. и по мелочи
    Ответ написан
    Комментировать
  • Фронт и бэк на локалхосте. Как обмениваться данными?

    @rPman
    Отладка и логирование на бакэнде
    Еще смотри что за заголовки у тебя уходят (ты из видишь в инспекторе), может ошибся и не ожидаемые отправляешь?
    Ответ написан
    Комментировать
  • Как подключить Realtek 8811CU к VBOX KALI LINUX?

    @rPman
    Проброс оборудования в виртуалках из windows-хост ограничен, и с высокой вероятностью не работает
    VirtualBox плохо пробрасывает оборудование даже под linux (где с этим гораздо проще), что уж говорить про windows
    И хотя для usb есть инструменты, работа этого не гарантируется.

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

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

    Так же номер можно паковать в другую систему счисления с основанием больше 10 (добавив большие маленькие буквы, как это делают в base64)

    В этом случае имя файла не превысит 4-5 символов плюс расширение (от него тоже можно избавиться, если сборка будет подготавливать конфиг для вебсервера, чтобы статика возвращала правильные заголовки content-type, но это кстати часто и не требуется)
    Ответ написан
    Комментировать
  • RTX после майнинга и рендеринга. Есть ли разница?

    @rPman
    Корень всех проблем с видеокартами - это система охлаждения. Если максимальная и постоянная температура не будет подниматься выше 70 градусов, то проблем скорее всего не будет.

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

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

    Рендеринг не нагружает так сильно железо, профиль нагрузки в рендеринге смещен в сторону процессора
    Ответ написан
    1 комментарий