воскресенье, 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 г.

CSS для Blogger под 14pt

Выкладываю свой CSS для Blogger под размер шрифта 14pt.

суббота, 14 января 2012 г.

Mercurial Queues

В этой статье пойдёт речь про одно из дополнений к Mercurial~--- Queues (далее просто MQ). Это дополнение распространяется вместе с Mercurial, поэтому для начала использования достаточно включить его, добавив следующие строки в .hg/hgrc:

[extensions]
hgext.mq =

понедельник, 5 декабря 2011 г.

Первая статья на хабре

Опубликовал свою первую статью на хабре. В статье проводится разбор исходного кода утилиты yes из набора GNU Coreutils. Моей целью было посмотреть, как программируют бородатые дядьки на C, чему-то научиться у них. Статью приняли хорошо, намного лучше, чем я ожидал. Многие добавили статью в избранное, что особенно приятно.

четверг, 24 ноября 2011 г.

ANTLR и java.lang.OutOfMemoryError

Если при разработке парсера с помощью ANTLR у вас появилась ошибка java.lang.OutOfMemoryError, то проверьте, нет ли у вас "пустых" правил. То есть таких правил, которые порождают пустые строки. Например, можно сделать ошибку в часто встречаемом правиле для пробелов и табуляций:

WS: (' ' | '\t')*        { $channel = HIDDEN; };

понедельник, 12 сентября 2011 г.

Храним TeX документы в Mercurial репозитории

TeX plus Mercurial

Недавно я переехал с Subversion на Mercurial. И похоже, что добровольно назад не вернусь :). Я действительно проникся той идеей, что поскольку процесс разработки ПО является сам по себе распределённым процессом, то и система контроля версий должна быть распределённой. И ещё тем, что начало работы с VCS должно быть максимально простым. Это позволяет использовать мощь VCS в любом проекте, не задумываясь, как в случае с централизованными системами, окупятся ли усилия по поднятию и/или созданию репозитория. И ещё... а, ладно, на тему CVCS vs. DVCS написано предостаточно ...