Agandar Donald Kingsbury Psychohistorical Crisis
Shadowkill
Aghirnamirr Jo Clayton
Примитивнейший способ решения данной задачи заключался бы в написании вручную HTML-кода для необходимого внешнего представления. Таким образом, каждый раз, когда потребуется добавить новое имя, придется вручную писать еще один набор тегов
Внешне разумный способ решить данную проблему заключался бы в том, чтобы внести данные в трехстолбцовую таблицу в базе данных, а затем использовать некоторую причудливую CGI-методику71 или поддерживающий базы данных шаблонный процессор, например, РНР для создания страницы на лету. Однако, предположим, разработчику известно, что список не будет изменяться очень часто, и не требуется запускать сервер баз данных для того, чтобы отображать данные, а также нежелательно загружать сервер излишним CGI-трафиком.
Существует простое решение: поместить данные в файл в простом табличном формате, см. пример 9.7.
Пример 9.7. Модель таблицы звезд
Aalat :David Weber
Aelmos :Alan Dean Foster
Aedryr :Steve Miller/Sharon Lee
Aergistal :Gerard Klein
Afdiar :L. Neil Smith
Agandar :Donald Kingsbury
Aghirnamirr :Jo Clayton
The Armageddon Inheritance The Man who Used the Universe Scout's Progress The Overlords of War Tom Paine Maru Psychohistorical Crisis Shadowkill
Можно было бы обойтись без явного использования двоеточия в качестве разделителя полей, используя модель, содержащую в качестве разделителя два или более пробела. Однако явный разделитель предохраняет от ошибок, связанных со случайным двойным нажатием пробела в процессе редактирования значений полей.
Затем создается сценарий в shell, Perl, Python или Tel, который преобразовывает данный файл в HTML-таблицу. Сценарий запускается каждый раз после добавления новой записи. Способ старой школы Unix был бы связан с почти нечитаемым вызовом
sed -е 's/,
или, возможно, с несколько более очевидной
awk -F: ' {printf ("%s%s \n"( ^ $1, $2, $3)}'
Если какой-либо из данных примеров вызывает интерес, но непонятен, то следует прочесть документацию на программу
Решение новой школы может основываться на приведенном ниже коде на Python или эквивалентном коде на Perl.
for row in map(lambda x:x.rstrip().split(':'),sys.stdin.readlines()) : print "
Написание и отладка данных сценариев занимает примерно 5 минут, несомненно, меньше, чем потребовалось бы для создания первоначального HTML-кода вручную или создания и проверки базы данных. Комбинация таблицы и данного кода будет
Автор этой книги в настоящее время использует данную технику для сопровождения Web-страницы, на которой перечислены тестовые