parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Разницы - никакой

Luzhnikovskiy 19.01.2003 01:11

Дело лишь в том, что этого можно избежать.
Как? В данном случаем можно сделать hash, в котором ключами служат адреса страниц (они же уникальны, да?), а значениями - 1, в сучае, если есть перевод. Если перевода нет - нет и ключа.
А дальше банальный ^if(def $langHash.$pageID){yes}{no}...
И это не единственный вариант.
Просто я не вижу необходимости еще раз дублировать уже известные данные.

С другой стороны, это действие (проверку файлов) надо делать каждый раз при загрзке страницы, что не всегда оправдано. Например, в случае, когда файлы могут только добавляться (но не удаляться). Тогда имеет смысл воспользоваться ^table::create в теле которого променюшить таблицу и проверить, есть ли нужный файл, если в соответствующем столбце стоит 0. А потом записать это дело на диск. При следующей загрузке число файловых проверок сократится... Делать, например, так:
$newData[^table::create{id -> name -> is_trans
^oldData.menu{$oldData.id -> $oldData.name -> ^if(-f '.....'){1}{0}}[
]}]
Это, конечно, не лучший вариант, (есть еще и ^file:list[]) но он практически единственный, если файлы "раскиданы по всему диску", а не лежат в одной папочке.
Если они все в одном месте, решение очевидно:
$list[^file:list[dir;mask]]
$liasHash[^list.hash[name][name]]
а дальше - по первому методу (лукап по имени файла).

Можно и скомбинировать:
$list[^file:list[dir;mask]]
$listHash[^list.hash[name][name]]
$newData[^table::create{id -> name -> is_trans
^oldData.menu{$oldData.id -> $oldData.name -> ^if(def $listHash.[$oldData.id]){1}{0}}[
]}]
^newData.save[на место старого]
Надеюсь, не перемудрил и идея ясна ;-)