Статистика запросов на основе логов Bind

На работе руководство захотело посмотреть статистику DNS-запросов за сутки. Скачал логи к себе, да бы лишний раз не тревожить сервер. Коллега попытался запихнуть их в Excel, но каждый из двадцати пяти лог-файлов имеет размер в 1 (один) гигабайт (это логи работы bind'а чуть меньше, чем за полдня). Excel что-то показал и молча скончался. Первое, что пришло в голову, так это написать небольшой скрипт, который переработает эти 25 гигабайт информации и выдаст вполне себе удобный для просмотра файла.

В принципе, ничего сложного в этом shell-скрипте нет, буквально пишется на «коленке» за пять минут. Изначально написал однострочник, с помощью которого и получил итоговый файл. В итоге, чуть расширил возможности этого однострочника и получил такой вот скрипт.

В самом начале задаём пару переменных: путь хранения логов, каталог temp и количество строк в результирующем файле.

#!/bin/bash
# Каталог, где лежат логи
LOG_DIR=~/tmp/bind_log

# Промежуточные варианты будет складывать в каталог temp
TEMP_DIR=~/tmp/temp
# Количество строк в результирующем файле
COUNT_LINES=1000

Проверим, существует ли каталог temp по указанному пути. Если не существует, то создадим его.

if ! [ -d $TEMP_DIR/ ]; then
    mkdir $TEMP_DIR
fi

В логах необходимая нам информация находится в восьмом поле (разделитель пробел). Извлекаем домены из всех лог-файлов и помещаем в один.

for file in $LOG_DIR/*; do
    awk '{print $8}' $file >> $TEMP_DIR/domains.txt
done

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

sort -n $TEMP_DIR/domains.txt | uniq -cd | sort -nrk 1 | head -n $COUNT_LINES > $TEMP_DIR/domains_result.txt

В конце скрипта произведём небольшую чистку.

if [ -f $TEMP_DIR/domains.txt ]; then
    rm $TEMP_DIR/domains.txt
fi

Итоговый файл, который и был отправлен руководству.

14748927 dns.msftncsi.com
10333977 a.root-servers.net
7906481 www.google.com
3328788 ya.ru
2535493 mail.ru
2441392 google.com
2299573 graph.facebook.com
2039593 e6858.dsce9.akamaiedge.net
1777954 mc.yandex.ru
1766014 play.googleapis.com
1725436 rosenberg.appmetrica.yandex.net
1677673 googleads.g.doubleclick.net
1647791 www.youtube.com
1606237 yandex.ru
1527312 www.googleapis.com
1371390 google.ru
1317138 vk.com
1280393 time.nist.gov
1265357 graph.instagram.com
…

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

При желании полученный итоговый файл можно засунуть в тот же Excel и получить красивые диаграммы, если кому-то простые цифры покажутся не очень наглядными.

Плагины для wordpress

Прочитал у StraNNicK'а заметку «Плагины для wordpress». Делюсь списком своих плагинов:

  • ВП Типограф Лайт — Легкая версия типографа только с основной функциональностью — обработка кавычек, тире, спецсимволов вне безопасных блоков (pre, code, samp, textarea, script), правка кавычек внутри code, кликабельные ссылки в комментариях. Также правится неправильное форматирование TinyMCE.
  • Anti-XSS attack — Защита/предупреждение XSS-атак
  • belavir (php MD5) — Проверка целостности файлов
  • Google Analytics for WordPress — Аккаунт есть и работает уже продолжительное время, но всё времени нет сесть и основательно проанализировать
  • Google XML Sitemaps — Тут тоже понятно, генерируется карта сайта в формате xml. Гуглу нравится 🙂
  • highlight.js — Автоматическая подсветка синтаксиса кода.
  • Invisible Captcha — После глюков кеша и графической капчи, перешёл на эту. Ложных срабатываний пока не заметил.
  • Lightbox Plus — Отображение полноразмерных картинок из превью.
  • nginx Compatibility (PHP5) — У хостера стоит nginx, вот только не знаю даёт это что-нибудь или нет...
  • Russify Comments Number — Нормальное отображение окончания слова «комментарий» — то есть, «2 комментария», «5 комментариев» и так далее.
  • RusToLat — Транслитерация русских символов URL в английские.
  • Simple Tags — Вывод и управление тегами. Гораздо больше понравилось, нежели встроенная функция.
  • Subscribe To Comments — Тут всё просто. Подписка на комментарии.
  • TinyMCE Advanced — Визуальный редактор аля «Ворд». Зачем поставил не знаю, наверное, «на посмотреть», т.к. совсем им не пользуюсь.
  • WordPress Database Backup — Периодически приходится делать бекапы базы, особенно при обновлении версии Вордпресса.
  • WP-CommentNavi — Постраничная разбивка комментариев.
  • WP-Noindex — Заключает ссылки в комментариях в теги , что запрещает их индексацию Яндексом.
  • WP-PageNavi — Постраничная разбивка заметок. По мне так удобнее, чем вперёд-назад...
  • WP Super Cache — Тут тоже понятно из названия, кеширование контента.

Тест производительности браузеров

На сайте opennet.ru прочитал новость «Неожиданные результаты теста браузеров на скорость работы с Javascript». Статья заинтересовала, сходил по указанной ссылке и проверил браузеры установленные на моём рабочем компьютере (P4 2.7GHz, RAM 757MB).

ArchLinux 0.7.2, kernel 2.6.17.7-1, Gnome 2.14.3
Opera 9.00 build 344
Opera
Firefox 1.5.0.5
Firefox
Internet Explorer 5.50.4807.2300 (через wine)
Internet Explorer 5.5
Internet Explorer 6.0.2800.1106 (через wine)
Internet Explorer 6.0
Konqueror 3.5.4
Konqueror
FireFox 1.5.0.5 Safe Mode
Firefox - Safe Mode
 
Windows XP Pro RUS SP2
Opera 9.01 build 8552
Opera
Firefox 1.5.0.6
Firefox
Internet Explorer 6.0.2900.2180
Internet Explorer 6.0
Firefox 1.5.0.6 Safe Mode
Firefox - Safe Mode

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

Раскрытие данных в WordPress

Уязвимость позволяет удаленному пользователю получить доступ к важным данным. Уязвимость существует из-за того, что подробное сообщение об SQL ошибке возвращается пользователю. Злоумышленник может указать некорректное значение параметра «paged» в сценарии index.php и получить данные об используемом префиксе таблиц. Пример:

http://[host]/index.php?paged=-1

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

Источник: SecurityLab.ru

UPD: Решение этой проблемы. Может быть сам метод и не идеален, но зато работает. Итак, в файле wp-admin/classes.php находим строку (примерно 618 ):

// Paging
if (empty($q['nopaging']) && ! $this->is_single && ! $this->is_page) {
    $page = $q['paged'];
    if (empty($page)) {
        $page = 1;
    }

И после фигурной строки добавляем:

elseif(isset($page) && !intval($page) || $page < 0) {
    $page = 1;
}

Всё! Сохраняем файл и проверяем волшебной строкой.

Задайте вопрос президенту

В предверии интернет-конференции, которая состоится 6-го июля сего с президентом России, на сайте president.yandex.ru стартовал проект «вопросы президенту». Как сказано на сайте, президенту будут отправлены самые популярные вопросы. Я думаю, что сейчас в рунете всего одна популярная тема — эта. 🙂 Ах, ну да, про жильё и армию забыл. 😉

UPD: Немцы обыграли Аргентину!

Из ЖЖ

Девушка собирается ехать в отпуск на юг и желает написать немного скриптов на PHP как в дороге, так и на месте отдыха. Ноутбук брать с собой не хочет, желает программировать на мобильнике или коммуникаторе. Смеялся долго, подробнее читайте здесь.

1 мая и мысли о WordPress

Для начала хочу поздравить всех жителей экс-СССР с праздником 1 мая! В моём детстве 1-е мая действительно был праздником: светлым, тёплым, солнечным и весёлым настроением. Сейчас же… Сейчас — это просто лишний выходной день в череде серых будней (дом-работа-дом). 🙂 Ну да ладно, продолжим и ещё раз всех с праздником, с лишним выходным.

А теперь некоторые мои мысли о WordPress.

Прежде, чем начну ругать и брюзжать 🙂 напишу немного положительного, так кратенько. Итак. Как для начинающего блоггера (ох, и словечко, но по-другому не сказать более кратко и ёмко) в качестве стартапа персонального блога о себе любимом и т.п. лучше и не придумать. Относительно прост в установке, прикручивается практически для любой скин, как взятый у кого-нибудь, так и собственноручно нарисованный. С WordPress знание основ программирования на PHP почти не обязательно, конечно лучше знать хотя бы основы. Всех возможностей не опишешь, да и цель данной заметки немного другая, поэтому мой совет, скачате, установите на своём компьютере и посмотрите что и как. Благо всяких советов и рецептов по настройке WordPress можно найти при великое множество, как в рунете, так и в англоязычном секторе. 🙂

А теперь собственно, что лично мне не нравится в WordPress. Особо сильно в коде я не ковырялся, но всё же смотрел, что там и как.

Начнём собственно с дистрибутива. Архив размером в 615 kB разворачивается почти в 1.7 MB. Многовато. Изначально русский не поддерживается, приходится качать ещё и ленг-пак. В целом перевод сделан не плохо, но местами некоторые фразы глаз режут. Не по-русски как-то звучит. Теоретически можно сесть и перевести самому, но не так всё просто. Не буду заострять внимание на механизме, просто посмотрите, в каком формате файлы и попробуйте найти в инете (информации масса, сам как-то искал) соответствующие программы.

Дополнительная функциональность за счёт плагинов. В принципе такой подход к наращиванию функциональности продукта вполне нормальный и оправдан, но… Но практически нет единого места, где эти плагины можно найти в одном месте. Я не спорю, что на сайте разработчика можно найти кучу ссылок, на сайты и страницы с плагинами, но некоторые страницы кроме Error 404 ничего не показывают, часть плагинов написана для старой версии и автор не собирается переписывать под новую и т.д. Если вы знаете PHP и у вас есть свободное время, можете сами написать нужный для вас плагин, но… Но для этого вам придётся ознакомиться с документацией (на русском, к сожалению, нет) по написанию плагинов. К тому же, никто не гарантирует, что с выходом новой версии WordPress ваш плагин будет корректно работать.

Так же хочу заметить, что большинство плагинов исключительно англоязычные и переводить придётся их вам, либо тупо забивая русский текст прямо в скрипты, либо искать и настраивать программы для редактирования файлов .po. По мне, так проще держать слова, предложения в отдельном каталоге или файле, например, russian.php. Почему так? Да просто удобно редактировать и изменять в любимом текстовом редакторе, не прибегая к другим программам, с которыми надо не только разобраться, но ещё и настроить. Так же необходимо понимать, что большинство плагинов очень плохо уживаются с русским, отсюда непонятные глюки и накладки.

Не совместимость версий. Все наверняка помнят переход с версии 1.5.х на версию 2.0.х. Полная не совместимость всех написанных ранее плагинов. Поэтому многие очень долгое время оставались на старой версии. Выжидали, когда авторы плагинов адаптируют свои скрипты под новую версию, либо появится новая альтернатива.

Редактор ввода заметок. После установки WordPress редактор ввода заметок имеет вид WYSWIG-редактор. Лично мне он не удобен, поэтому сразу же был отключен. Но после отключения визуального редактора, у меня пропала возможность закачивать картинки. Такой вот парадокс. Выход один, либо искать альтернативный плагин для закачки картинок, либо обратно включать визуальный редактор. Пришлось искать плагин. Нашёл, поставил, работает.

Настройки WordPress. Настроек не много, но как-то они расположены не так. Иной раз приходится долго искать ту или иную опцию, хотя они и разбиты на категории. Так же хочу обратить внимание, что практически каждый установленный плагин добавляет свою страницу с настройками, в которых может быть ещё куча страниц с дополнительными настройками. С одной стороны это хорошо, правильно и удобно. Но с другой стороны, половина настроек на русском, половина на английском. Ужасно не удобно. А теперь что касается так называемого ЧПУ. Если в старой версии я ещё мог что-то отредактировать и изменить в файле .htaccess, то в вресии 2.0.х он вообще пустой. Искать и ковырять скрипты нет никакого желания. Либо можно воспользоваться советами, опубликованными на сайте mywordpress.ru. К сожалению, на момент написания заметки сайт находился в дауне, т.е. лежал, выдавая стандартную wordpress'овскую страницу с ошибкой. Вот ещё одна причина. Очень часто движок валит сервер (на старом хостинге у меня такое было постоянно) и взорам посетителя открывается страница с сообщением об ошибке подсоединения к базе данных и т.п.

Кеширование страниц. Вроде бы как во второй версии было заявлено кеширование не то страниц, не то запросов к базе. Но вот что-то я не замечаю того, что у меня на блоге что-то кешировалось. Никаких настроек я тоже что-то не встречал. Не понятно. В целом же почему-то лично у меня возникает стойкое ощущение, что запросы к базе просто не оптимизированы, хотя это может быть только моё субъективное ощущение.

ИМХО, но в версии 2.0.х разработчики WordPress уж слишком увлеклись так называемым Web 2.0. Если в Firefox'е всё выглядит более менее, то в Opera вообще кошмар (тем более, что визуальный режим работает наредкость криво). Не верите, смотрите скриншот.

Opera 8.54 и режим написания заметки
Opera 8.54 и режим написания заметки

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

Textpattern — сайт разработчика — textpattern.com, русскоязычное сообщество — textpattern.ru. В целом движок мало подходит для ведения блога, но если постараться, то можно и заточить его под свои нужды. Что больше всего не понравилось, так это то, что textpattern хранит всё в базе: скины, плагины и т.п... Неудобно, слишком много запросов к базе получается. Ну и для доведения под себя надо освоить язык textpattern'а. Язык хоть и не сложный, но, положа руку на сердце, ломает и лень. 🙂 Да и многих фич, которые есть в WordPress'е либо просто нет, либо сделаны, но немного не так. Кстати, разработчики вообще не включили такую функцию, как Trackback. Мотивация проста — много неконтролируемого спама. Меня он уже достал, хотя и стоит плагин Spam Karma, а вас?

Serendipity — сайт разработчика — s9y.org. Это уже нормальный, полноценный движок для блога. Понравилось, что все плагины находятся исключительно на сайте разработчика. Можно даже поставить один специальный плагин, который будет синхронизировать ваш список плагинов со списком на сайте разработчика. Очень удобно. Языковые файлы находятся в отдельном каталоге, а в случае с плагинами, просто создаётся необходимый файл в каталоге плагина. Скины так же можно получить с сайта разработчика, а можно и написать свой. Правда в этом случае вам придётся ознакомиться с возможностями Smarty. Вот это мне понравилось меньше всего, хотя и универсально.

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

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

Вышла новая версия WordPress 2.0.2

10 марта вышло обновление WordPress до версии 2.0.2. В основном изменения в этой версии коснулись в исправлении безопасности (2.0.2 Security Release). Скачать свежую версию можно на этой странице с официального сайта. Инструкцию по обновлению версии 2.0.1 на версию 2.0.2 можно найти на этой странице.

К сожалению, русская версия WordPress 2.0.2 на сайте MyWordpress в данный момент времени пока не доступна.

WordPress 2.0.1

Без шуму и пыли вчера вышел очередной релиз WordPress за версией 2.0.1. Как написано на официальном сайте, было пофиксено порядка 114 багов, которые были найдены в версии 2.0. Скачать последнюю версию как всегда можно здесь. Качаем и обновляемся.

Регулярные выражения в примерах

На этой странице представлен неплохой справочник по регулярным выражениям. Все примеры регулярных выражений преставлены примерами, которые вполне могут пригодиться в повседневном использовании. Хоть весь текст и на английском язык, но понять что к чему можно.