В данной статье рассказывается о том, как заставить BibTeX форматировать список использованной литературы (библиографический список) в соответствии с ныне действующим ГОСТ 7.0.5-2008, а также о том, почему нужно использовать именно этот ГОСТ и что делать пользователям Microsoft Word.
воскресенье, 20 мая 2012 г.
среда, 28 марта 2012 г.
Как проверить, что memcached работает
Установка memcached на Debian подозрительно проста: всего одна команда
sudo apt-get install memcached
и получаем работающий memcached. Оказалось, что развеять все сомнения насчёт того, работает ли кеш на самом деле, нисколько не сложней! Достаточно запустить memcached в режиме "повышенной многословности":
memcached -vv -u USER_NAME
В этом режиме memcached ведёт лог в stdout обо всех операциях с кешем. Если паранойя совсем одолела, то можно раскомментировать соответствующую строку в конфиге /etc/memcached.conf:
# Be even more verbose (print client commands as well)
# -vv
Затем перезапустить демон и наблюдать за теми же логами через файл:
/etc/init.d/memcached restart
less /var/log/memcached.log
вторник, 13 марта 2012 г.
Подсчёт строк в репозитории Mercurial
Иногда хочется посмотреть на красивые циферки, даже если большого смысла они не несут. Например, посчитать число строк в проекте. Если вы используете Mercurial, то сделать это можно одной командой:
$ hg locate -0 | xargs -0 wc -l
Хотя, наверняка в других VCS есть аналог hg locate
. Этот метод отлично работает для репозиториев без бинарных данных и переваривает файлы с пробелами в именах благодаря аргументу -0
. Если же у вас вдруг в репозитории имеются какие-то бинарники, картинки или шрифты например, то их можно исключить с помощью аргумента -X
:
$ hg locate -0 -X website/static | xargs -0 wc -l
Ещё один метод исключения, более гибкий:
$ hg locate | grep -Eiv '\.(png|jpg|tiff)' | tr "\n" "\0" | xargs -0 wc -l
Вместо пространного объяснения использованных опций в предыдущем однострочнике приведу его копию с длинным ключами:
$ hg locate \
| grep --extended-regexp \
--ignore-case \
--invert-match \
'\.(png|jpg|tiff)' \
| tr "\n" "\0" \
| xargs --null wc --lines
Также, может пригодиться явное задание ревизии для locate
с помощью стандартного для Mercurial аргумента -r
.
В конце пример работы приведённых команд:
воскресенье, 5 февраля 2012 г.
Интернационализация URL в Django
Интернационализация URL, или, проще говоря, возможность в зависимости от языка подсовывать разные URL, появится в Django 1.4. Эта возможность вряд ли как-то повлияет на пользовательский опыт работы с сайтом, но и создавалась она не для людей. Её цель — поисковая оптимизация. Посмотрим, как мы можем получить такую функциональность в Django 1.3.
Проблема
Сейчас в Django есть LocaleMiddleware
, которая определяет текущий язык на основании данных пользовательской сессии, cookies и HTTP заголовков (именно в таком порядке). Используя LocaleMiddleware
ничего не стоит выдавать по одному и тому же адресу контент на разных языках в зависимости от языка пользователя. Это удобно для пользователя, но это также может стать причиной неполной индексации сайта. Действительно, ведь поисковый робот проиндексирует ваш сайт только на одном языке.
воскресенье, 29 января 2012 г.
Как поменять кодировку файла в Emacs
Чтобы открыть файл в нужной кодировке, нужно перед открытием файла выполнить:
C-x <RET> с <имя-кодировки> <RET>
Эта комбинация устанавливает кодировку, которая будет использоваться следующей командой. Пример открытия файла в кодировке cp1251
:
C-x <RET> с cp1251 <RET> C-x C-f smth.txt <RET>
Если вы уже открыли файл в неправильной кодировке, то эту же команду можно применить для переоткрытия уже открытого файла в другой кодировке. При переоткрытии все не сохранённые изменения потеряются:
C-x <RET> с cp1251 <RET> M-x revert-buffer <RET> yes <RET>
Очевидно, что такая ситуация встречается очень часто, поэтому предусмотрен более короткий способ:
C-x <RET> r cp1251 <RET> yes <RET>
Для преобразования открытого файла в другую кодировку предназначена комбинация
C-x <RET> с cp1251 <RET>
Эта комбинация задаёт кодировку, в которой следует сохранять файл.
четверг, 26 января 2012 г.
Переполнение буфера: теория и практика
Переполнение буфера (Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.
Во многих источниках переполнение буфера называют самой распространенной уязвимостью программного обеспечения. Переполнение буфера присуще не только обычному ПО для PC, но также и программному обеспечению ряда аппаратных средств. Примером может служить уязвимость принтера HP LaserJet 4500, обнаруженная в 1999-ом году. Ниже будет немного теории и пример уязвимости переполнения буфера в программе.
суббота, 21 января 2012 г.
суббота, 14 января 2012 г.
Mercurial Queues
В этой статье пойдёт речь про одно из дополнений к Mercurial~--- Queues (далее просто MQ). Это дополнение распространяется вместе с Mercurial, поэтому для начала использования достаточно включить его, добавив следующие строки в .hg/hgrc
:
[extensions]
hgext.mq =