Spectator: evolution
Эволюция «Спектатора» в картинках, или «выдавливая из себя по капле дизайнера».
...
«Дизайн» в пошлом, то есть в самом распространенном его понимании («оформительство»), — вещь часто вредная из-за своей неуместности. Время от времени, глядя на очередной «дизайн», я вспоминаю фразу из анекдота про такси: «Вам шашечки или ехать?».
...
Нам, все-таки — ехать, поэтому я вовремя упустил свой шанс стать хорошим дизайнером. Зато стал хорошим гражданином, прилежным семьянином и страстным любовником. Ха-ха, про гражданина было шуткой.
...
Рассмотрю в качестве примера четыре базовые «мутации» «дизайна». Желающие проследить всю историю, могут пойти на Web.Archive и поискать там сначала spectator.nsk.su, потом spectator.rulez.net и потом spectator.ru
...
Номер один. «Шапка — это наше все». 1998-99 год.
...
На рисование шапки ушло несколько часов. Еще несколько часов ушло на то, чтобы сообразить, как с помощью html делаются тени. Несколько дней ушло на борьбу с Netscape Navigator’ом, чтобы он отображал все верно.
...
Типичные ошибки: при создании дизайна думали обо всем, кроме навигации и текста. Огромное количество пользователей так и не сообразило, что стрелочки в шапке — это не украшение. К тексту — абсолютно никакого внимания: заголовок делался просто болдовым выделением, почти полное отсутствие полей.
...
Технология: голимый html.
...
Минусы: внезапно оказалось, что кроме кнопок «вперед-назад», нужны и другие пункты в навигации. Помещены они были на первую страницу сайта, на остальных же страницах места им не нашлось.
...
Номер два. «Куда же деть все эти заметки?»... 1999-2000 год.
...
Текстовый дизайн — несомненный плюс. Все, что накопилось, пошло в правую колонку: навигация, рекомендованные ссылки и прочее. Стало понятно, что красивая шапка — это хорошо, но занимает слишком много места. Самый большой недостаток данного дизайна бросается в глаза сразу же: номера заметок справа предоставляют возможность перемещаться по заметкам только «в режиме гадания» и никак больше: номера ничего никому не говорят. Текущая заметка также никак не выделяется, главным образом потому, что я просто не мог это сделать. Ибо глуп был.
...
Технология: html+ssi+javascript. С помощью javascript’а, например, расставлялась ссылки на следующую-предыдущую заметки.
...
Минусы: непонятный список номеров слева. Совершенно ненужный и нелепый. Тем не менее, даже это неудачное решение бездарно клонировали. Чем больше было заметок, тем очевиднее становились видны недостатки данной навигации. Кроме того, внезапно пришло осознание того невероятного факта, что любимые цвета не всеми воспринимаются одинаково, и лучше всего читать черные буквы на белом фоне.
...
Номер три. «And here comes PHP». Что-то около 2001.
...
Идея автоматизации настолько понравилась (переход на SSI был вообще в свое время прорывом), что захотелось сделать «движок» сайта. Были приняты попытки выучить Perl. Не вышло. Совершенно случайно наткнулся на PHP.
...
Была придумана навигация «вы находитесь здесь», реализацию которой регулярно передирали. Основное меню вынесено наверх, вспомогательные вещи — в правую колонку. Опять же с помощью PHP были сделаны комментарии, кавычки «елочкой» и прочие полезные вещи.
...
Технология: PHP.
...
Минусы: красивая, но нефункциональная шапка, — во мне снова проснулся «дизайнер». Графические ушки были совершенно неинформативны и впоследствии были заменены на текстовые.
...
Номер четыре. Closer to perfection.
...
Шедевр минимализма. Графическая шапка отсутствует как класс. Шапка с верхнем меню занимают минимум места. Из графики — только иконки, остались как память. Появились «заметки по теме», хотя рубрик все еще не было, и заметки были упорядочены по номерам.
...
Минусы: найдите сами.
...
Текущий дизайн.
...
При каждой смене дизайна находилось огромное количество людей, которым старый дизайн нравился больше. И я их не виню. Текущий «дизайн» был создан за полчаса в текстовом редакторе edit+, чтобы отразить возможности нового движка, который создавался пару месяцев. Поэтому я могу только улыбнуться, когда снова слышу рассуждения на тему о хорошести или нехорошести этого дизайна.
...
Так вам шашечки или ехать?
(еще 42 слова)
Определение
Запас провианта, оставленный научной экспедицией в скрытом месте для обратного пути или для других экспедиций (чаще всего о первых арктических экспедициях).
...
Вот так вот переводится одно хорошее английское слово (думаю, что вы догадались, какое). И почему в словаре нет в качестве перевода тоже хорошего русского слова — «заначка»?..
(еще )
Простое кэширование страниц
Простое кэширование страниц. Для чайников. На PHP.
...
Кэширование — замечательная вещь. Часто (теперь — почти всегда) страницы на сайтах генерятся динамически. Это теперь модно. Однако же — в реальности — почти всегда страница собирается заново гораздо чаще, чем она изменяется. Грубо говоря, мы опубликовали новый документ, и при каждом обращении к нему он заново считывается, скажем, из базы данных, заново прогоняется через шаблон и прочее и прочее. Мы снова и снова делаем одну и ту же работу.
...
А можно просто один раз сделать, а потом сохранить результат этой работы. И при каждом запросе выдавать готовый результат, а не делать все заново. Это и есть кэширование.
...
Оно позволяет, снизить нагрузку на сервер и на базу данных. Непонимание принципов работы кэша иногда приводит к забавным курьезам.
...
Единственная проблема — это устаревание кэша. Допустим, что данные на странице изменились, а кэш страницы — еще нет, и пользователю будет выдаваться старая версия страницы. Способы борьбы:
...
1. Выставлять более-менее приемлимое время устаревания кэша. Например, через 10 минут страница устаревает и кэш генерится заново. Минусы: возможна ситуация, когда пользователю 9 минут будет показываться старая страница.
...
2. Кнопка «очистить кэш». В некоторых системах вообще нет кнопки «очистить кэш», вместо нее есть кнопка «перегенерить сайт целиком». Нажимаем на эту кнопку — и весь сайт генерится в статичные файлы, то есть, фактически, в кэш. Минусы: стрельба по воробьям из пушки. Мы поменяли одну страницу, а перегенерить приходится весь сайт.
...
3. «Умная» очистка кэша. Очищается только кэш той страницы, которую мы изменили. Минус: часто изменение одной страницы затрагивает и несколько других. Главное — понять, каких именно и очистить кэш у них тоже.
...
Лично у меня реализованы все три метода.
...
...
А теперь — в двух словах, как сделать себе кэш. Чудесные функции PHP — ob_start и иже с ней позволяют не выводить страницу в браузер, а, например, сохранить ее в переменную. Про это я уже писал.
...
Это вставляем в начале страницы:
...
$url=$GLOBALS['REQUEST_URI'];
$crc=md5($url);
...
$modif=time()-@filemtime ("cache/$crc");
...
if ($modif
...
ob_start ();
...
Как это работает:
...
Берем адрес страницы, вычисляем из него md5. Это будет использоваться, как идентификатор страницы. Например, для УРЛа technology/php/caching md5 будет всегда одим и тем же. Этим мы и воспользуемся.
...
Файлы кэша будут лежать в директории cache. Смотрим, сколько секунд (filemtime) исполнилось файлу с кэшэм данной страницы. Если он не очень старый (меньше 600 секунд) и вообще есть — выводим его (include).
...
Если нет — то включаем ob_start и продолжаем дальше.
...
Это вставляем в конец страницы:
...
$cache = ob_get_contents();
ob_end_clean ();
echo $cache;
...
$fp = @fopen ("cache/$crc", "w");
@fwrite ($fp, $cache);
@fclose ($fp);
...
Как это работает:
...
Считываем содержимое буфера (ob_get_contents). Получаем в переменной $cache то, что должно было выводится в браузер. Выводим в бразуер, раз должно (echo).
...
Записываем содержимое буфера ($cache) в директорию cache в файл $crc.
...
Все. Теперь при следующем обращении к странице с этим адресом скрипт (смотрите первую часть) будет смотреть, есть ли соответствующий файл в кэше и если он еще не устарел — просто выводить его и прекращать обрабатывать страницу (exit).
...
Примерно так оно и работает. Таким образом, страница выводится из кэша где-то за 0.001-0.004 секунды. Выигрыш процессорного времени налицо.
...
Разумеется, я описал только общий принцип, у меня сделано несколько по-другому.
(еще 18 слов)