11 января 2014 г., 16:15 пользователь Михаил Монашёв <
[email protected]> написал:

> Здравствуйте, Denis.
>
> > Доклад  больше  о  чтении  кода  и  нахождения  в  нём ошибок, чем о
> > директориях.
>
> В  итоге  идеальный  код  так  и  не  родился, ибо не пробовали другие
> подходы, а только решали проблемы в лоб. Тоже поход конечно.
>
Вначале задача казалась настолько тривиальной, что решилась за 10 минут и
работала года 1.5-2 без сбоев. Потом изменились внешние условия, а потом
ещё раз.



>
> Я  просто  в  декабре решал ровно такую же задачу на node.js и понял ,
> что вполне можно обойтись mkdir-ами.
>
Да, уверен что можно.
Тем более, mkdir работает быстрее, чем -d


> > P.S.  Мы  пообщались  с  Монсом  за  пиццей,  он рассказывал о своих
> > граблях при работе с ФС.
>
> Ну  вот,  например,  интересный  вопрос, например: пишем два связанных
> файла  по  мере поступления данных и тут кончается память или место на
> диске  или  количество  открытых  файлов  превышено  или  ещё какая-то
> ошибка. Один файл без другого не имеет смысла. Нужны они всегда только
> оба.  И  хорошо  бы такие не полностью сохранённый файл и второй файл,
> который  может  ещё  писаться,  кстати,  удалить.  Как  это  правильно
> сделать? :-)
>
> Насколько я знаю, такая задача не имеет нормального решения.

Мой дальнейший ответ будет немного не про то, но всё же может пригодиться.

Я всегда работаю с записью на диск через временный файл и переименование.
Это гарантирует целостность одного файла.

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

Вот код из Makefile, в котором это происходит:
rm -rf [email protected]
./ip_from_regs.pl [email protected]
rm -rf [email protected]
[ -d $@ ] && mv -f $@ [email protected]
mv -f [email protected] $@
rm -rf [email protected]




> --
> С уважением,
>  Михаил                          mailto:[email protected]
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить