Задать вопрос
  • Хэш sha1 разный в зависимости от того в каких кавычках строка?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    В приципе, в комментариях уже всё разжевали, но на всякий случай
    Выполняем простой код
    var_dump("{\"order_id\":\"FACTPRECHR152632\",\"amount\":\"8300.00\"}");
    var_dump('{\"order_id\":\"FACTPRECHR152632\",\"amount\":\"8300.00\"}');

    и смотрим на результат

    после этого выполняем ещё один простой код
    $json = json_encode(["order_id"=>"FACTPRECHR152632", "amount"=> "8300.00"]);
    var_dump($json);
    var_dump(addcslashes($json, '"'));

    смотрим на результат
    сравниваем его с предыдущим

    И после этого идем с вопросами к тому, кто придумал написать здесь addcslashes
    Ответ написан
    Комментировать
  • Как заблокировать доступ к ресурсу для конкретного региона?

    @Everything_is_bad
    Недавно проверял состояние сервера и заметил в логах много неудачных попыток входа на сервер (В основном через ssh)
    ну как первый раз в интернет вышел, уже сто лет такое, ssh вообще постоянно долбят, ставишь fail2ban, а еще лучше меняешь дефолтный порт и ставишь логин только по ключу. А регион блокировать, так себе идея.
    Ответ написан
    9 комментариев
  • Как ускорить процесс загрузки файлов в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорость канала на сервере — 200 Мбит/с
    Вангую что это скорость на выход, на вход будет совершенно другая скорость, не указанная в рекламном буклете, или написанная где-то под звездочкой оооочень мелким шрифтом.
    Есть вероятность что в вебсервере стоит ограничение на скорость загрузки на клиента, но это можно выяснить и через просмотр конфигов, если таковые доступны.

    Что делать?
    1) Пнуть провайдера и спросить про скорость аплоуда.
    2) Если молчат - проверить самостоятельно, например замерить скорость загрузки файла курлом.
    3) Проверить загрузку через фтп/сфтп
    4) Много думать, ругаться с провайдером
    5) Профит
    Ответ написан
    Комментировать
  • Отказоустойчивость на уровне контроллеров СХД через multipath?

    @SunTechnik
    Multipath - способ подключения Одного клиента к Одному устройству несколькими путями.

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

    2.Raidix - платный софт по построению raid массивов. Презентовать блочное устройство можно и через обычный scsi-target.
    Multipath - это совсем не о том.

    3. Raid контроллер можно перевести в режим jbod и увидеть просто набор дисков.
    Из них можно собрать raid. (zfs и еще куча способов. Сборки для NAS)
    А вот построить из этого дела отказоустойчивый кластер, да с приличной производительностью - не тривиально.
    Собственно это решение и продает raidix но оговаривая на каком оборудовании они это проверяли, так как там граблей раскинуто - куча..
    Ответ написан
    Комментировать
  • Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    И не будет, ведь такая команда будет исполняться в одном shell, а не в двух разных. После первого exit дальше уже всё, остаток будет проигнорирован.

    Способы есть:

    1. Из суперпользователя убить shell пользователя. Некрасиво и неудобно, но закроет оба шелла.

    2. Переключение в суперпользователя оформить сразу с выходом, тогда выход из внутреннего сделает выход и из внешнего, например:

    sudo -i; exit

    Недостаток - если не удастся правильно ввести пароль - сразу же и выкинет. Ну, можно поразбираться с кодами возврата, чтобы не делать exit.

    3. Вместо предыдущего можно сделать exec, тогда запускаемая команда заместит текущий shell, а не будет запущена как дочерний процесс:

    exec sudo -i

    Недостаток тот же - если не ввести правильно пароль, то выкинет.

    Но в целом я не вижу во всём этом смысла. Выход можно делать комбинацией Ctrl-D. Нажать дважды Ctrl-D ничто не мешает, это даже удобнее.
    Ответ написан
    2 комментария
  • Можно ли разветвить патч корд на 2 wifi роутера?

    Провайдер тебе даёт всего 1 IP адрес, по тому именно разветвить тебе не получится, как ни старайся (как правило)

    Вставляй кабель от провайдера в wan-порт первого роутера.
    От первого роутера потом тащи кабель до второго.
    Второй роутер переведи в режим точки доступа.

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

    (сделано допущение, что "роутером" названо домашнее устройство с функциями маршрутизатора и wifi-точки доступа)
    Ответ написан
    Комментировать
  • Каков уровень надежности подключения SSD дисков по NVMe?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    строго говоря - такой же среднестатистический, как и по всей больничке ;)
    Ответ написан
    Комментировать
  • Ошибка при использовании grep на сервере?

    fzfx
    @fzfx
    18,5 дм
    У меня стойкое ощущение, что ваш греп залип на работе с каким-то устройством или FIFO-буфером. Можете попробовать добавить параметр --devices=skip, чтобы пропускать (игнорировать) всё, кроме файлов и симлинков.
    Ответ написан
    1 комментарий
  • Объясните пожалуйста как работает пинг?

    @SunTechnik
    Ping замеряет время прохождения пакета от Вас до точки назначения и обратно.

    По пути пакеты передаются от одного маршрутизатора - другому.
    Примерный путь от Вас до точки назначения можно оценить с помощью команды traceroute/ tracert.

    Каналы между маршрутизаторами имеют разную скорость, загрузку, разную величину задержки.

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

    Основной - скорее цена канала и его загрузка.

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

    И да, у интернета нет единого хозяина.
    Поэтому даже Ваш провайдер не всегда модет повлиять на маршрут прохождения пакетов.
    Ответ написан
    Комментировать
  • Как выяснить, какая служба/программа/скрипт генерирует SNMP-запросы во вне?

    hint000
    @hint000
    у админа три руки
    sudo netstat -upnc | grep ":161 \|:162 "
    161\UDP и 162\UDP - это порты, которые использует SNMP
    здесь sudo требуется, чтобы увидеть информацию о процессах, без sudo команда показывает остальную информацию, кроме номеров и имён процессов.
    -с нужно для постоянного обновления, т.к. на момент запуска может не быть трафика по указанным портам; прерываете команду, когда заметите полезный вывод.
    пробел после 161 и 162 нужен, чтобы не было мусора в выводе.
    Ответ написан
    Комментировать
  • Как в linux запускать скрипт только после перезагрузки?

    @pfg21
    ex-турист
    создаешь сервис анонса и в нем прописываешь в параметре After сервисы, запуск которых необходимо ждать, через пробел
    After= ... that the listed unit is fully started up before the configured unit is started.

    к примеру
    After=Apache.service
    и тогда сервис анонса запустится только после запуска Apache.service

    тип прописываешь однократный запуск
    Type=oneshot
    в ExecStart прописываешь строчку исполнения для отправки анонса
    и ок
    Ответ написан
    5 комментариев
  • Nginx возвращает 404 при запросе на существующий маршрут. Что делать?

    smilingcheater
    @smilingcheater
    location /{                                                                                                             
        try_files $uri $uri/ =404;

    Вы говорите NGINX'у - попробуй сначала запрошенный урл, потом его же со слешем, потом выдай 404. NGINX делает точно то, что вы сказали.
    Если у вас собранное реакт-приложение, то скорее всего у него точка входа index.html
    Замените указанное правило на
    location /{                                                                                                             
        try_files $uri $uri/ /index.html;

    тогда по запрошенному (но не существующему реально на файловой системе) урлу /poll вам вернутся содержимое Index.html, и запустится реакт, и реакт-роутер обработает указанный урл.

    https://nginx.org/en/docs/http/ngx_http_core_modul...
    Ответ написан
    1 комментарий
  • Как запретить вход на сайт по ip через nginx?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Слушать порт не для 0.0.0.0, а только для localhost
    Ответ написан
    Комментировать
  • Возможно ли закрыть папку паролем, но разрешить доступ без пароля с определенных ip?

    @dodo512
    Директива Satisfy по умолчанию All. Если переключить на Any, то будет поведение как нужно.
    Например, IP 192.168.1.2 и файл паролей /var/www/.htpasswd
    AuthType Basic
    AuthName "Restricted Resource"
    AuthUserFile /var/www/.htpasswd
    Require valid-user
    
    Order Allow,Deny
    Allow from 192.168.1.2
    
    Satisfy Any


    В Apache 2.4 есть <RequireAll> и <RequireAny>
    https://httpd.apache.org/docs/2.4/howto/auth.html#...
    By default all Require directives are handled as though contained within a <RequireAny> container directive. In other words, if any of the specified authorization methods succeed, then authorization is granted.

    По умолчанию для всех Require используется <RequireAny>.
    AuthType Basic
    AuthName "Restricted Resource"
    AuthUserFile /var/www/.htpasswd
    
    Require valid-user
    Require ip 192.168.1.2
    Ответ написан
    Комментировать
  • Ошибка при скачивании pdf-файлов, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Легко проверить. Ты делаешь:
    url = "https://file.11klasov.net/index.php?do=download&id=16985" # замените на URL файла, который вы хотите скачать
    response = requests.get(url)

    Затем посмотри атрибут response.history, и ты увидишь там два ответа: [<Response [302]>, <Response [301]>]. Все коды 3XX - это перенаправления, т.е. сайт тебя перенаправляет на другую страницу, вместо того, чтобы отдать контент.
    Итог этих перенаправлений можно узнать из response.url, который будет равен
    'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'

    Т.е. сайт задетектил бота, и отправил тебя на страницу учебника. Так обычно борятся с хотлинкингом, когда кто-то ставит прямую ссылку на файл на твоём сайте.
    Также можно проверить response.headers['content-type']. Он будет 'text/html; charset=utf-8', т.е. это HTML страница а не PDF файл. Разумеется, если ты HTML страницу запишешь в файл с расширением .pdf, она от этого не станет валидным PDF.

    Обычно проверяются две вещи: User-Agent и Referer. Первый описывает браузер пользователя, второй - с какой страницы был переход по этой ссылке. Но для данного сайта, похоже, достаточно добавить только Referer вот так:
    response2 = requests.get(url, headers={
        'referer': response.url,  # ну или 'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'
    })

    То получишь желаемое - response2.history будет пустой, а response2.headers['content-type'] будет равен 'application/pdf'.

    С учётом этого можешь поправить свой код, чтобы он детектил редирект и делал второй запрос с заголовком Referer.
    Ответ написан
    Комментировать
  • Как пустить трафик контейнера1 через контейнер2 в proxmox?

    @Drno
    включить на нём NAT, и указать его шлюзом для другого контейнера
    Ответ написан
    Комментировать
  • В чем отличие ngnix от golang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну раз с фронта пересели, то аналогию понять должны: В чëм отличие Google Chrome от JavaScript?
    Ответ написан
    3 комментария
  • Как настроить nginx под статический сервер с автоматическим подбором страниц по существованию таких файлов?

    Maksclub
    @Maksclub
    maksfedorov.ru
    index index.html;
    root /app;
    
    location / {
            try_files $uri $uri/ /index.html =404;
    }


    Если файл есть в /app — отдаст, если нет — index.html
    Ответ написан
    2 комментария
  • Как указывать имя пингуемого устройства чтобы к нему не дописывался домен отправителя?

    @d-stream
    Готовые решения - не подаю, но...
    Для nslookup и подобных - точку в конце имени
    nslookup pc1.
    Ответ написан
    Комментировать
  • Как с помощью смартфона проверить ширину лазерного реза?

    GavriKos
    @GavriKos
    С такой точностью не каждая линейка справится. Смартфон с его погрешностями и переменной средой с тонной преобразований и подавно.

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