• Почему в разных версиях PHP разный уровень ошибок trim()?

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

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если знать точные даты начала и конца то легко:
    awk '/router.php/' example.com.log | awk '/\[16\/Nov\/2021:15:15:56 -0500\]/,/\[17\/Nov\/2021:15:15:56 -0500\]/' | wc -l


    п.с.
    если делать конкретно через date, а не тупо обрабатывать как строки что проще но нужно знать конкретный диапазон, то необходимо учитывать некоторые нюансы, ту же локаль, так как у вас или кого-то другой кто будет у себя запускать данную команду может быть отличная локаль для даты чем в самом логе
    сравните
    $ date -d now
    $ LANG=ru_RU.UTF-8 date -d now
    $ LANG=en_US.UTF-8 date -d now

    сами локали естественно должны быть доступны в системе, проверить можно утилитой localectl:
    $ localectl list-locales
    en_US.UTF-8
    ru_RU.UTF-8


    также +0300 это не просто так, и если обрабатывать скрипт находясь в другом часовом поясе то может произойти смещение по времени в ту или иную сторону
    так что если внести поправки на часовой пояс( %z) + локаль, получим:
    LANG=en_US.UTF-8 date -d 'now-24hours' +'[%d/%b/%Y:%H:%M:%S %z]'


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

    cat example.ru.log  | awk -F'[][/:]' '/router.php/{"date +%s -d \""$2"-"$3"-"$4" "$5":"$6":"$7"\"" | getline z; print z" "$0}'

    здесь мы преобразовали к понятному date формату, а потом перевели в юникс время( +%s) и получившейся результат просто добавили к началу строки.
    результат

    1637320437 212.193.33.123 - - [19/Nov/2021:14:13:57 +0300] "GET /router.php HTTP/1.0" 301 445 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637320437 212.193.33.123 - - [19/Nov/2021:14:13:57 +0300] "GET /router.php HTTP/1.0" 301 445 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637320438 212.193.33.123 - - [19/Nov/2021:14:13:58 +0300] "GET /router.php HTTP/1.0" 301 449 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321647 212.193.33.123 - - [19/Nov/2021:14:34:07 +0300] "GET /router.php HTTP/1.0" 301 449 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321647 212.193.33.123 - - [19/Nov/2021:14:34:07 +0300] "GET /router.php HTTP/1.0" 301 447 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321648 212.193.33.123 - - [19/Nov/2021:14:34:08 +0300] "GET /router.php HTTP/1.0" 301 446 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321650 212.193.33.123 - - [19/Nov/2021:14:34:10 +0300] "GET /router.php HTTP/1.0" 301 445 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321650 212.193.33.123 - - [19/Nov/2021:14:34:10 +0300] "GET /router.php HTTP/1.0" 301 451 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637321651 212.193.33.123 - - [19/Nov/2021:14:34:11 +0300] "GET /router.php HTTP/1.0" 301 445 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637324092 212.193.33.123 - - [19/Nov/2021:15:14:52 +0300] "GET /router.php HTTP/1.0" 301 449 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637326108 212.193.33.123 - - [19/Nov/2021:15:48:28 +0300] "GET /router.php HTTP/1.0" 301 447 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    1637327153 212.193.33.123 - - [19/Nov/2021:16:05:53 +0300] "GET /router.php HTTP/1.0" 301 446 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"


    дату 1 день(24 часа) назад можно узнать так:
    date +%s -d 'now-1day'
    или даже так
    echo $[`date +%s` - 24*60*60]
    просто отняв от текущего количество нужных секунд

    в итоге получим:
    cat example.ru.log |awk -F'[][/:]' '/router.php/{"date +%s -d \""$2"-"$3"-"$4" "$5":"$6":"$7"\"" | getline z; print z" "$0}' | awk -v t=$[`date +%s` - 24*60*60] '$1>=t'


    теперь при желании можно легко расширить и указывать диапазон поиска от(t1) и до(t2)
    cat example.ru.log |awk -F'[][/:]' '/router.php/{"date +%s -d \""$2"-"$3"-"$4" "$5":"$6":"$7"\"" | getline z; print z" "$0}' | awk -v t1=`date +%s -d '19-Nov-2021 15:00:00 +0300'` -v t2=`date +%s -d '19-Nov-2021 16:00:00 +0300'` '$1>=t1 && $1<=t2'

    здесь ищем в диапазоне одного часа
    от 19-Nov-2021 15:00:00 +0300
    до 19-Nov-2021 16:00:00 +0300
    результат
    1637324092 212.193.33.123 - - [19/Nov/2021:15:14:52 +0300] "GET /router.php HTTP/1.0" 301 449 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +www.google.com/bot.html)"
    1637326108 212.193.33.123 - - [19/Nov/2021:15:48:28 +0300] "GET /router.php HTTP/1.0" 301 447 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 (compatible; Googlebot/2.1; +www.google.com/bot.html)"
    Ответ написан
    4 комментария
  • Есть ли lazy mode в регулярных выражениях AWK?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ ip -j l | jq -r '.[] | select(.address=="185.230.140.160") | .ifname'


    можно даже в столбик вывести все соответствия - ip-адрес и интерфейс
    $ ip -j l | jq -r '.[] | "\(.address) \(.ifname)"'
    Ответ написан
    2 комментария
  • Как добавить несколько ipv4-to-ipv6 туннелей?

    @none7
    Он скорее всего ругается на существование default маршрута с той же метрикой, с какой Вы пытаетесь добавить. Маршруты добавленные через ip route не наследуют метрику интерфейса.
    Ответ написан
    7 комментариев
  • Как перевернуть кривую линию на оси ординат?

    hint000
    @hint000
    у админа три руки
    https://ru.wikipedia.org/wiki/Матрица_поворота
    Координаты каждой точки графика (в виде вектора (X, Y)) умножаем на матрицу поворота, получаем новый вектор (X1, Y1).
    Ответ написан
    1 комментарий
  • Куда поступать программисту для свободного времени?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Так вы попробуйте взять заказы на фрилансе - это очень отрезвляет. Наличие профильной вышки хоть и не обязательно для успеха, но очень облегчает жизнь.
    Ответ написан
    2 комментария
  • Можно ли отправлять кому то копии всех страниц паспорта?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нашла вакансию где сначала в проходишь бесплатное обучение ( 2 недели удаленно) и потом с 30% шансом после этого обучения могут взять в штат.

    Само по себе выглядит как развод. Я бы таким не доверился.
    Ответ написан
    7 комментариев
  • Как раскодировать файл в неизвестном формате?

    @ne0dim
    Это архив .lha . Если распаковать, то можно увидеть вот такое содержимое:
    þõæÑ
    Xandroid/Lenovo/A2010-a/A2010-a:5.1/LMY47D/A2010-a-t_S255_151022.151022:user/release-keysçPZLenovo A2010-a`
    Ответ написан
    2 комментария
  • Как настроить Ubuntu, чтобы использовать подсеть /64 ipv6?

    @none7
    В /etc/network/interfaces должно быть, что то вроде
    iface eth0 inet6 auto #если есть такая строчка, то просто добавить строки ниже.
        up ip addr add $выбранный_адрес dev eth0
        down ip addr del $выбранный_адрес dev eth0

    Хотя я не ручаюсь, что имя интерфейса именно eth0. Смотрите ip link show
    Ответ написан
    Комментировать
  • Как записываются в логи апача хосты, которых нет на моем сервере?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Это логируется тот заголовок, который передаёт клиент - а ему ничего не стоит туда подставить абсолютно что угодно. Также возможен вариант, что кто-то использует для А-записи своего домена в DNS ваш айпишник - особенно часто такое случается на хостингах, когда новым клиентам может попасться адрес старого, уже отвалившегося.

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

    @rPman
    Потому что это stderr и его перехватить можно либо с помощью пайпов и proc_open либо меняйте командную строку запуска nodejs так чтобы она возвращала ошибки в стандартный вывод или куда вам удобно простым перенаправлением в файл:
    exec("capture-website https://yandex.com --output=img.jpg 2>capture-website.err", $out);
    $err_str=file_get_contents('capture-website.err');
    Ответ написан
    Комментировать
  • Как результат вызова команды php exec поместить в переменную или файл?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    exec("capture-website https://yandex.com --output=img.jpg 2>&1", $out);
    Ответ написан
    Комментировать
  • Как побороть сонливость и апатию в течение дня?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Мне помогла ипотека, автокредит, трое детей и неработающая жена.
    Ответ написан
    9 комментариев
  • Как побороть сонливость и апатию в течение дня?

    @MechanID
    Админ хостинг провайдера
    Возможно вам стоит обудмать зачем вы работаете, если нет глобальных целей (аля накопить денег на машину или построить дом) то сложнее заставить себя работать.
    Ответ написан
    7 комментариев
  • Безопасно ли подгружать конф для nginx из директории пользователя?

    Sanes
    @Sanes
    Редактирование Nginx нельзя разрешать пользователю.
    Ответ написан
    Комментировать
  • Безопасно ли подгружать конф для nginx из директории пользователя?

    lokki00003
    @lokki00003
    Web developer
    Только свои шаблоны.
    Например:
    Пользователь хочет сделать сжатие сайта,настроить редирект или что то еще.(нажимает на кнопку) твой скрипт видоизменяет конфиг nginxa (правильно видоизменяет)
    Ответ написан
    4 комментария
  • Безопасно ли подгружать конф для nginx из директории пользователя?

    sim3x
    @sim3x
    Если "пользователю" дано право туда писать - нет, не безопасно

    Пользователю вообще не нужно хотеть менять настройки веб-сервера

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

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

    Там же, где смена разрешения и выбор монитора. Там ещё должно быть окно с картинками мониторов (1 и 2 в кружочке). Вот один из них переместите направо или налево.
    Ответ написан
    1 комментарий
  • Не стабильная работа mysql сервера?

    sashkets
    @sashkets
    Прекратил отвечать после 24.02.2022
    несколько мыслей по Вашему вопросу
    1. я бы вернулся на дифолтный конф для начала. в дистре (по крайней мере во freebsd) есть примеры конфигов для таблиц разного размера, а потом наворачивал все, что касается кеша. Но опять же, если мало памяти, то кеш складывать некуда
    2. mysql прекрасно работает при наличии большого кол-ва памяти независимо от движка
    3. рассмотреть возможность перехода на mariadb или percona, обычно безкровный
    4. mtop покажет "грузящие" запросы
    5. рефакторинг коды сайта (или что там у Вас), каждый коннект в бд считается
    6. на стороне сайта настроить кеширование всего, что только возможно. Опять же нужна память

    Ну как-то так
    Ответ написан
    5 комментариев
  • Не стабильная работа mysql сервера?

    twix007
    @twix007
    mysqltuner оптимизация
    Ответ написан
    Комментировать