Список пяти
В «Друзьях» был эпизод: пары договорились, что у каждого есть список 5-и кинозвезд, с кем они переспали бы, при этом вторая половина обязуется не ревновать при словах «Я бы переспал с....».
Идея мне понравилась, и я начал составлять свой список. Из актрис это было бы что-то типа:
1. Элизабет Херли (В «Ослепленный желаниями» дьявола играла)
2. Салма Хайек (За танцевальную сцену в «От закада до рассвета», разумеется)
3. Анжелина Джоли («Tomb Raider» ну и, ествественно, «The Hackers»)
4. Мила Йовович («Пятый элемент», куда ж без него)
5. Николь Кидман (ну пусть и она будет).
Оказывается, трудное дело — составить такой список. Не потому, что глаза разбегаются, а потому что, оказываеться, набрать пять любимых звезд — проблематично. Да, можно было бы по приколу переспать бы с актрисой, которая Марлу играла.
Если можно было бы выбрирать и из певиц, то я, разумеется, выбрал бы Мадонну. И Кайли Мино(у)г.
Если кого пропустил — добавляйте, не стесняйтесь. Со ссылками, пожалуйста.
Update. Новый список:
1. Элизабет Херли
2. Дженифер Энистен
3. Анжелина Джоли
4. Мила Йовович
5. Дженнифер Коннели
Battle Royal
Возвращаясь к фильму. Начнем с того, что фильм просто великолепный. Я, кажется писал об этом: после просмотра фильма мы с Катей сразу же спросили друг у друга: «А если бы мы остались вдвоем, ты бы меня убил?». Сразу же сошлись на том, что мы бы друг друга, разумеется, убили бы, лишь бы уцелеть самому, а все эти сопли «я готов пожертвовать жизнью ради тебя...», — для людей, мягко говоря, не совсем честных друг с другом*.
Напоминаю, что интрига фильма в том, что «должен остаться только один». Любовь, однако, все равно побеждает, и остаются двое — Он и Она. Разумеется, это режиссерский ход, который, разумеется, идет в разрез с «правилами», которые устанавливаются в начале. Но на то он и режиссер, чтобы нарушать правила.
Но а вообще, фильм — хороший повод задуматься «а на что ты готов ради чипсов Lays?». Если вы не задумались и «не поняли» фильм — то вы не честны сами с собой. Не надо только тут говорить про сопереживание: первым делом-то все примеряешь на себя.
Хотя фильм, разумеется, вовсе не о том. Фильм о любви.
* — есть, разумеется, люди, связывающие свое выживание с выживанием другого человека. (Про это в «Трансформации» было даже что-то написано,в частности — что заставляет людей погибать «за Родину»). Например, если для вас выживание — это выживание ваших потомков, а девушка, скажем, беременна, — тогда вполне понятно, если вы пожертвуйте собой ради нее. Хотя — тоже сомнительно.
Что же такое постмодернизм?
«Что за постмодернизм такой?», — спрашивают в комментариях. Для тех, кто слышал, но не знает, советую очень хорошую книжку «для чайников»: Вадим Руднев. «Словарь культуры XX века». Интересно написана. Все базовые понятия культуры 20 века потятно разжеваны. Must-read для поднятия общего уровня. lib.ru/CULTURE/RUDNEW/
В частности,в главе про постмодернизм есть, конечно же, замечательная цитата из замечательного Эко, в которой максимально доходчиво объясняется на пальцах один из основных принципов постмодернизма. Кстати, лучше этот кусочек (если я не ошибаюсь, то это пояснительная записка к «Имени Розы») найти и прочитать целиком.
Да-да, именно оно — «Заметки на полях к „Имени Розы“». lib.ru/UMBEKO/ekopolo.txt
Вот там очень хорошо про постмодернизм. А самое «Имя Розы» не читайте, лучше начните с «Маятника Фуко» — вот это действительно вещь! lib.ru/UMBEKO/
Если хотите тонко поприкалываться, то «Внутренние рецензии» почитайте, они коротенькие. lib.ru/UMBEKO/umbeko.txt
Вот, собственно, и все.
Простое кэширование страниц
Простое кэширование страниц. Для чайников. На PHP.
Кэширование — замечательная вещь. Часто (теперь — почти всегда) страницы на сайтах генерятся динамически. Это теперь модно. Однако же — в реальности — почти всегда страница собирается заново гораздо чаще, чем она изменяется. Грубо говоря, мы опубликовали новый документ, и при каждом обращении к нему он заново считывается, скажем, из базы данных, заново прогоняется через шаблон и прочее и прочее. Мы снова и снова делаем одну и ту же работу.
А можно просто один раз сделать, а потом сохранить результат этой работы. И при каждом запросе выдавать готовый результат, а не делать все заново. Это и есть кэширование.
Оно позволяет, снизить нагрузку на сервер и на базу данных. Непонимание принципов работы кэша иногда приводит к забавным курьезам.
Единственная проблема — это устаревание кэша. Допустим, что данные на странице изменились, а кэш страницы — еще нет, и пользователю будет выдаваться старая версия страницы. Способы борьбы:
1. Выставлять более-менее приемлимое время устаревания кэша. Например, через 10 минут страница устаревает и кэш генерится заново. Минусы: возможна ситуация, когда пользователю 9 минут будет показываться старая страница.
2. Кнопка «очистить кэш». В некоторых системах вообще нет кнопки «очистить кэш», вместо нее есть кнопка «перегенерить сайт целиком». Нажимаем на эту кнопку — и весь сайт генерится в статичные файлы, то есть, фактически, в кэш. Минусы: стрельба по воробьям из пушки. Мы поменяли одну страницу, а перегенерить приходится весь сайт.
3. «Умная» очистка кэша. Очищается только кэш той страницы, которую мы изменили. Минус: часто изменение одной страницы затрагивает и несколько других. Главное — понять, каких именно и очистить кэш у них тоже.
Лично у меня реализованы все три метода.
А теперь — в двух словах, как сделать себе кэш. Чудесные функции PHP — ob_start и иже с ней позволяют не выводить страницу в браузер, а, например, сохранить ее в переменную. Про это я уже писал.
Это вставляем в начале страницы:
$modif=time()-@filemtime ("cache/$crc");
if ($modif<600) ob_start ();$url=$GLOBALS['REQUEST_URI'];
$crc=md5($url);
{
include ("cache/$crc");
exit();
}
Как это работает:
Берем адрес страницы, вычисляем из него md5. Это будет использоваться, как идентификатор страницы. Например, для УРЛа technology/php/caching md5 будет всегда одим и тем же. Этим мы и воспользуемся.
Файлы кэша будут лежать в директории cache. Смотрим, сколько секунд (filemtime) исполнилось файлу с кэшэм данной страницы. Если он не очень старый (меньше 600 секунд) и вообще есть — выводим его (include).
Если нет — то включаем ob_start и продолжаем дальше.
Это вставляем в конец страницы:
$fp = @fopen ("cache/$crc", "w");$cache = ob_get_contents();
ob_end_clean ();
echo $cache;
@fwrite ($fp, $cache);
@fclose ($fp);
Как это работает:
Считываем содержимое буфера (ob_get_contents). Получаем в переменной $cache то, что должно было выводится в браузер. Выводим в бразуер, раз должно (echo).
Записываем содержимое буфера ($cache) в директорию cache в файл $crc.
Все. Теперь при следующем обращении к странице с этим адресом скрипт (смотрите первую часть) будет смотреть, есть ли соответствующий файл в кэше и если он еще не устарел — просто выводить его и прекращать обрабатывать страницу (exit).
Примерно так оно и работает. Таким образом, страница выводится из кэша где-то за 0.001-0.004 секунды. Выигрыш процессорного времени налицо.
Разумеется, я описал только общий принцип, у меня сделано несколько по-другому.