[Moscow.pm] Видео с декабрьского Moscow.pm
Denis Evdokimov
evdokimov.denis на gmail.com
Сб Янв 11 06:51:31 PST 2014
11 января 2014 г., 16:15 пользователь Михаил Монашёв <
postmaster на softsearch.ru> написал:
> Здравствуйте, Denis.
>
> > Доклад больше о чтении кода и нахождения в нём ошибок, чем о
> > директориях.
>
> В итоге идеальный код так и не родился, ибо не пробовали другие
> подходы, а только решали проблемы в лоб. Тоже поход конечно.
>
Вначале задача казалась настолько тривиальной, что решилась за 10 минут и
работала года 1.5-2 без сбоев. Потом изменились внешние условия, а потом
ещё раз.
>
> Я просто в декабре решал ровно такую же задачу на node.js и понял ,
> что вполне можно обойтись mkdir-ами.
>
Да, уверен что можно.
Тем более, mkdir работает быстрее, чем -d
> > P.S. Мы пообщались с Монсом за пиццей, он рассказывал о своих
> > граблях при работе с ФС.
>
> Ну вот, например, интересный вопрос, например: пишем два связанных
> файла по мере поступления данных и тут кончается память или место на
> диске или количество открытых файлов превышено или ещё какая-то
> ошибка. Один файл без другого не имеет смысла. Нужны они всегда только
> оба. И хорошо бы такие не полностью сохранённый файл и второй файл,
> который может ещё писаться, кстати, удалить. Как это правильно
> сделать? :-)
>
> Насколько я знаю, такая задача не имеет нормального решения.
Мой дальнейший ответ будет немного не про то, но всё же может пригодиться.
Я всегда работаю с записью на диск через временный файл и переименование.
Это гарантирует целостность одного файла.
Когда нужно гарантировать, что несколько файлов будут соответствовать
друг-другу, я помещаю их в одну директорию, и переименовываю её, у этого
варианта есть очевидные минусы, но для моих задач они не критичны.
Вот код из Makefile, в котором это происходит:
rm -rf $@.tmp
./ip_from_regs.pl $@.tmp
rm -rf $@.bak
[ -d $@ ] && mv -f $@ $@.bak
mv -f $@.tmp $@
rm -rf $@.bak
> --
> С уважением,
> Михаил mailto:postmaster на softsearch.ru
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20140111/275f2b0e/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm