• Почему Google Translate даёт неправильный перевод в ряде случаев?

    xotkot
    @xotkot
    Мне надо собрать небольшой словарь английских слов с переводом. Использую для этого Selenium...

    мне надо посадить дерево, для этого я взял трактор, экскаватор и строительную бригаду в придачу
    $ curl -s "https://translate.googleapis.com/translate_a/single" --data "client=gtx&dt=t&sl=en&tl=ru" --data-urlencode "q=runoff" | jq -j '.[0] | .[] | .[1]," ",.[0]'
    runoff	сток
  • Как посчитать число строк в файле по условию?

    xotkot
    @xotkot
    если делать конкретно через 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)"
  • Как посчитать число строк в файле по условию?

    xotkot
    @xotkot
    Vincent1,
    Как awk понимает, что это диапазон?

    эта принятая форма записи для вывода всего что между строк в которых есть указанные подстроки, для sed кстати примерно также будет:
    awk '/str1/,/str2/'
  • Как посчитать число строк в файле по условию?

    xotkot
    @xotkot
    Vincent1, плюс(+) тоже нужно экранировать
    awk '/router.php/' example.ru.log.1 | awk '/\[19\/Nov\/2021:14:13:58 \+0300\]/,/\[19\/Nov\/2021:14:34:10 \+0300\]/' | wc -l
  • Как исправить ошибку unexpected EOF while looking for matching `"'?

    xotkot
    @xotkot
    Dert1x,
    elif [ cd savdir/"$i" ]
    savdir тут явно переменная, не указали знак доллара - $savdir

    c=${file#$stub"}
    выглядит как какое-то инородное тело
    переменной file выше по тексту я не наблюдаю, есть тока fil и files
    $stub нету такой переменной
    кавычка " в конце тоже не к месту

    п.с.
    и еще
    elif [ -f "$i" ]
    -->
    elif [ -f "$i" ]; then
  • Linux не запускается, что делать?

    xotkot
    @xotkot
    $ cat clamtk.log
    ...
    Вирус заблокирован. Сопоставление сигнатуры по базе ... "homo_sapiens".
  • Как приложения используют Wayland?

    xotkot
    @xotkot
    Слышал, что firefox не адаптировали к нему.

    в смысле не адаптировали ? это первый браузер который боле менее нормально заработал с вяленый, хотя всё еще осталось что пилить для улучшения работы под ним
    добавляете в переменные окружения:
    MOZ_ENABLE_WAYLAND=1
    и вуаля
    чтобы легко проверить работает ли gui программы под вайланд, а не через X вернее прослойку xwayland, запустите в консоли команду:
    xwininfo
    после чего щелкнете мышкой по нужной программе, если xwininfo выдаст кучу информации и завершится то значит работает через прослойкуо xwayland, если же ничего не произойдет то это чистый wayland

    в сам Хром тока год назад добавили флаги --enable-features=UseOzonePlatform --ozone-platform=wayland для работы с вяленым и по началу работало так себе, и вот тока недавно полностью допилили прослойку ozone и стали использовать по умолчанию.
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith, перестаньте ёрничать, вы же прекрасно поняли о чем идёт речь
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith, не нужно сверх гиперболизировать и приписывать собеседнику слова которых он не говорил, ведь ни о каком "вреде свопа" речи не шло, если изначально вспомнить чаяния автора вопроса то у него спустя какое-то время происходят фризы из за переключения на другую программу, а это явно происходит из за того что часть данных свернутой программы улетела в своп и когда он переключается на нее вновь то подгрузка данных со свопа на медленном носителе и приводит к фризам, также автор в комментах ниже писал что:
    в моем случае при критической нагрузке оперативы потребляется около 48% (почти 16гб из 32гб доступных)

    выходит что максимальная загрузка оперативы не превышает 50%, то есть, задачи автора которые он решает на своем компе не столь ресурсозатратны по памяти, поэтому самым простым вариантом будет отключить swap или если есть лишние деньги купить nvme с которого бы данные свопа грузились быстро, про что я и написал в своем первом комментарии, вот он:
    уберите swap и будет всё быстро переключатся, либо купите шустрый nvme чтобы быстро подгружались данные с диска

    также я выше писал что:
    если у вас не специфическая задача требующая своп то он нафиг не нужен.

    не секрет что потребность в свопе для десктопа за последние десятилетия сильно изменилось, раньше например, во времена написания статьи того же Руссиновича 2008 года царствовала XP, 32 бита и 4 гб оперативы которых "хватит всем", а сам win 7 тока анонсировали и дали пощупать избранным. Сейчас же царство win10/11, 64 бит, 16/32 гиг оперативы и следовать калькам давно минувших дней не всегда рационально. Ведь даже в одной из вышеприведенных вами статей говорится - "Если вы установили себе 64GB, а используется 4-8GB, то таки да, ФП вам не нужен"
    у ТС-а результаты чуть скромнее, но он всё равно не выбирает в пиках даже половины своей ОЗУ, тогда вопрос - зачем нужен своп из за которого у автора наблюдаются фризы при переключении ? а шоб було ? чтобы при каких-то там гипотетических условиях лихой конь в вакуме не сожрал несколько десятков гиг оперативы и система не встала колом ? но ведь это не гарантия что вакумному коню хватит вашего своп-стога и система также не встанет колом при том еще изрядно не посношая ваш диск.
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith,
    первая ссылка
    смотрим - автор Mark Russinovich - единственно значимое достижение это - "написал драйвер файловой системы NTFS под DOS" да и то на сколько я понял делал он это находясь в компании Sysinternals и после поглощение в 2006г компанией Microsoft эти 'инструменты' просто выкинули на свалку за ненадобностью.
    Commercial NTFSDOS packages become abandonware
    Winternals was acquired by Microsoft on July 18, 2006. Microsoft has removed any traces of NTFSDOS, NTFSDOS Tools and NTFSDOS Professional from the new internal site of Microsoft's Winternals' utilities.

    сейчас работает тех директором в Microsoft Azure и пописывает развлекательные книжки про хацкеров, в юности он конечно что-то пытался толковое писать но такой макулатурой в магазинах были завалены тогда многие полки так как авторов которые хотели поднять баближка на волне хайпа того времени было предостаточно.
    ладно, что-то я отвлёкся
    и так, вместо того чтобы дать нормальную отсылку на полезную информацию от того кто хоть немного связан с внутренней кухней по данной тематике, так как явно намекали что владеете неким инсайдом что позволяет вам отделять дядек от гуру - "И я как-то больше доверяю тому, кто эту подсистему управления памяти писал", а вместо этого выдаёте одну замшелую статью от хрена с горы времён XP и в придачу еще три мусорные ссылки. Браво, нет слов.
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith,
    И я как-то больше доверяю тому, кто эту подсистему управления памяти писал

    хорошо, давайте для начала вы покажите статью про то что своп необходим от дядьки который действительно написал "эту подсистему управления памяти" виндовс
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith, советовать они могут всё что угодно, это их хлеб, но ведь лучше не верить незнакомым дядькам, а проверять всё самому, не так ли ? при том что проверить ТС при желании может всё довольно легко, просто отключив на день свой своп, чай небо на землю не рухнет.
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    John Smith, виндой не пользуюсь уже лет 10 наверное так что вы там со своей виндой твикерите не в курсе; свопом же не пользуюсь еще дольше так как памяти хватает, а когда не хватало пользовался тем же zram(под линь). Так что с моей колокольни если у вас не специфическая задача требующая своп то он нафиг не нужен.
  • Как узнать размер директории, исключая некоторые директории?

    xotkot
    @xotkot
    Сергей Карбивничий, можно сказать что я просто немного уточнил ответ Рональда
  • Как узнать размер директории, исключая некоторые директории?

    xotkot
    @xotkot
    Сергей Карбивничий,
    похоже внутри --exclude не распознаётся знак домашней директории ~
    указывайте либо полный путь либо $HOME
    du -sh ~ --exclude=$HOME/.cache --exclude=$HOME/.config/google-chrome

    или чуть проще
    du -sh ~ --exclude=$HOME/{.cache,.config/google-chrome}
  • AMD или Intel для программиста и (иногда) игрока?

    xotkot
    @xotkot
    Ноутбук с core i7 6700HQ более чем справляется, хотя иногда есть фризы, например, если открыть пхпшторм, который я уже 2 часа не открывал, или резко перейти с него на фотошоп.

    уберите swap и будет всё быстро переключатся, либо купите шустрый nvme чтобы быстро подгружались данные с диска
  • Чем можно открыть большой файл csv?

    xotkot
    @xotkot
    тогда уж лучше ripgrep для этого использовать, быстрее будет, плюс если под виндой то можно запускать без прослоек в нативном виде