Опубликовал свою первую статью на хабре. В статье проводится разбор исходного кода утилиты yes из набора GNU Coreutils. Моей целью было посмотреть, как программируют бородатые дядьки на C, чему-то научиться у них. Статью приняли хорошо, намного лучше, чем я ожидал. Многие добавили статью в избранное, что особенно приятно.
понедельник, 5 декабря 2011 г.
четверг, 24 ноября 2011 г.
ANTLR и java.lang.OutOfMemoryError
Если при разработке парсера с помощью ANTLR у вас появилась ошибка java.lang.OutOfMemoryError
, то проверьте, нет ли у вас "пустых" правил. То есть таких правил, которые порождают пустые строки. Например, можно сделать ошибку в часто встречаемом правиле для пробелов и табуляций:
WS: (' ' | '\t')* { $channel = HIDDEN; };
понедельник, 12 сентября 2011 г.
Храним TeX документы в Mercurial репозитории
Недавно я переехал с Subversion на Mercurial. И похоже, что добровольно назад не вернусь :). Я действительно проникся той идеей, что поскольку процесс разработки ПО является сам по себе распределённым процессом, то и система контроля версий должна быть распределённой. И ещё тем, что начало работы с VCS должно быть максимально простым. Это позволяет использовать мощь VCS в любом проекте, не задумываясь, как в случае с централизованными системами, окупятся ли усилия по поднятию и/или созданию репозитория. И ещё... а, ладно, на тему CVCS vs. DVCS написано предостаточно ...
вторник, 16 августа 2011 г.
Тормозит Django development server
Буквально ни с того, ни с сего начал жутко тормозить dev-сервер Django. Странички открывались по 5-8 секунд, что было само по себе раздражительным явлением и, кроме этого, очень тормозило разработку.
После первого подхода к гуглению выяснилось, что у некоторых людей dev-сервер тормозил на отдачи статики. Лечится это, по их словам, переносом статики на какой-нибудь взрослый web-сервер. Например, на nginx или даже Apache.
воскресенье, 17 июля 2011 г.
Установка django-photologue в virtualenv
Django
-поделках. Моё мнение насчёт virtualenv кратко изложено в лирическом отступлении в конце статьи, а сейчас я расскажу о проблемах, с которыми я столкнулся при установке django-photologue в virtualenv под Ubuntu 11.04.IOError: encoder jpeg not available
Итак, выполнив установив и подключив django-photologue:virtualenv --no-site-packages gallery && cd gallery
source ./bin/activate
pip install Django PIL django-photologue
# создаём сайт и подключаем в него django-photologue
пытаемся загрузить изображение (photologue.models.Photo), хотя бы даже через административную панель, получаем ошибкуIOError: encoder jpeg not available
суббота, 2 июля 2011 г.
DD не туда? Не беddа!
![]() |
Он самый |
dd if=boot.img.gz of=/dev/sdb1
, которой я хотел записать образ boot.img.gz на флешку. Но ВНЕЗАПНО оказалось, что флешка находится по адресу /dev/sdc, а /dev/sdb1 - это мой терабайтник со всеми бекапами, архивами фоток, проектов и т.п.Если вы попали в подобную ситуацию, то читать простыни текста - это меньшее, что вам хочется. Поэтому сразу решение, которое поправит потерянную ФС (в моём случае это один несистемный раздел ext3):
fsck -t ext3 -y /dev/sdb1
Ну а пока оно работает, можно почитать мою историю...среда, 27 апреля 2011 г.
GNU Make и автоматическая генерация зависимостей для файлов исходного кода C/C++
Итак, у нас имеется небольшой проект на C/C++, который собирается с помощью make. Пусть это будет программа под названием «program». В Makefile написано примерно следующее:
OUT = program
CXXFLAGS = -Wall -c -O2
SRC = $(wildcard *.cpp)
# Expand SRC wildcard and replace extension from .cpp to .o
OBJ = $(patsubst %.cpp, %.o, $(SRC))
$(OUT): $(OBJ)
$(CXX) -o $(OUT) $(OBJ)
Когда мы изменяем какой-нибудь файл исходного кода foo.cpp и собираем проект, всё работает как часы: make замечает изменение foo.cpp, заново его (и только его) компилирует и запускает линковщик. Но make не замечает изменений в заголовочном файле foo.h, который подключается из foo.cpp.