Проблемы WoW: сторона, классы, pvp/pve, damage/control
Простое кэширование страниц
Простое кэширование страниц. Для чайников. На 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 секунды. Выигрыш процессорного времени налицо.
Разумеется, я описал только общий принцип, у меня сделано несколько по-другому.
Дизайн и плагиат
Сейчас я постараюсь объяснить, почему нельзя воровать чужой дизайн. Объяснить не тем, кто ворует — как показала практика, таким людям объяснить что бы то ни было просто невозможно: глядят на тебя, «как в афишу — коза» и внезапно лишаются дара восприятия человеческой речи. Защитная реакция. Маскируются под неподвижную веточку.
Рассказать, почему нельзя воровать дизайн, хотелось бы тем, кто уже понимает, что делать этого нельзя, но все еще не понимает — почему.
Воровать дизайн нельзя по той же причине, по которой нельзя носить чужое нижнее белье: во-первых, негигиенично, во-вторых — не по размеру. То же самое — и с дизайном.
Гигиена.
Оставим сразу же в стороне вопросы морали и совести, по причине отсутствия у большинства таких феноменов, как мораль и совесть. Прибавьте хроническую нехватку мозгов (в России, как известно, две проблемы: дураки и дуры. Впрочем, нехватка мозгов — проблема общечеловеческая) и неприятие умственного труда вообще как труда, пришедшее с совковых времен. (Вот это уже чисто Российская проблема).
В результате человек упорно не понимает, что он украл. Верней, не понимает «что же тут плохого». От людей, укравших у меня дизайн, аргументов я слышал более, чем предостаточно, при этом все аргументы отличались просто детской непосредственностью. Что-то вроде этого: «Ты знаешь, самому мне дизайн делать долго, да и не умею я, а твой дизайн мне понравился»...
Авторские права в России — это все равно, что бананы на Северном полюсе. Было бы здорово, если бы они реально были, но каждый понимает, что это абсурд. Продукт умственного труда и продуктом-то почти никто не считает. Хотя «Закон об авторском праве и смежных правах», по идее, меня защищает, единственное, что я могу получить от этой защиты — гордится тем, что она у меня есть.
Поэтому «гигиеническую» сторону дела оставим в покое и поговорим о чем-нибудь более важном. Тем не менее, просто примите, как аксиому, следующее утверждение, понимать которое вы начнете только тогда, когда сами начнете тратить свои силы на создание дизайна:
Дизайн, который вы где-то увидели, не самозародился, а является продуктом творческой и трудовой деятельности какого-то человека. То, что этот человек умеет делать дизайн лучше вас, еще ни о чем не говорит. Вы ведь не воруете деньги у людей только потому, что они зарабатывают больше, чем вы. Человек этот тратил свое время и свои силы, чтобы сделать этот дизайн, и вполне вероятно, что ему чисто по-человечески не понравится, что вы воспользовались продуктом его труда.
Формат и дизайн.
Я пробовал написать про формат и дизайн в 131-ой заметке. Вышло совсем плохо, непонятно и сумбурно. Попробуем разобраться с этим заново. Для этого введем два понятия: «идея» и «реализация». Чем они отличаются, думаю, понятно? Идея — задумка, принцип. Например, идея писать заметки «a-la Spectator». Или идея делать сайты в две колонки.
Господин Лебедев в свое время написал статью Явление «формата» — «похоже» не значит «украдено», на которую тут же стали ссылать люди, грешащие плагиатом: дескать, Сам Лебедев говорил, что «заимствовать» (читай — «воровать») — можно! А ведь ничего подобного. Перечитайте, пожалуйста эту статью.
Но, с другой стороны, есть такая вещь как «формат» (назовем его так). Это набор правил, свойств и функциональностей, присущих какой-то теме. Например, мы всегда узнаем газету. Ее признаки — особая бумага, черно-белая печать (обычно), крупный логотип, верстка колонками, отсутствие скрепок, мелкий шрифт и т.д. Глупо утверждать, что «Известия» — это клон «Правды».
То, что г-н Лебедев называет «форматом» мы в дальнейшем будем именовать «идеей». Верней, формат — совокупность идей, неких базовых понятий, часто — устоявшихся и традиционных. Воспользовавшись любимым примером Миши Галушко, можно сказать, что:
Формат — это круглая сковородка.
К слову будет сказано, идеи не защищаются законом об авторском праве и смежных правах. Например, если я захочу написать картину о побежденном демоне, то не будет считаться, что я замыслил плагиат на «Поверженного Демона» Врубеля. Вовсе нет. Точно так же и вы можете совершенно спокойно эксплуатировать идею создания «заметочного» сайта a-la Spectator или даже a-la Cooler. Это не плагиат.
А проблема в реализации. Конкретная реализация некой идеи является объектом приложения авторских прав.
Если вы будете рисовать демона сами, никто вас ни в чем не обвинит, и мир, возможно, пополнится еще одним шедевром. Если же вы возьмете картину Врубеля и добавите к ней пару своих штрихов (или даже перерисуете по-своему, но близко к оригиналу), а потом скажете: сию картину нарисовал я — это будет плагиатом.
Плагиат — это несанкционированное использование чужой реализации какой-нибудь идеи. Даже если вы и укажите автора используемой реализации, мол, «дизайн я спер у того-то, авторские права принадлежат ему, а я только переработал слегка», — это все равно будет плагиатом, ибо автор не давал вам согласия.
Ближе к конкретным примерам. На скриншоте — элемент навигации «Спектатора». Вы его видели не раз. Раньше там просто выводилось 10 последних заметок, теперь во время навигации по заметкам отображается текущая заметка и ее соседи. Идея в этом.
И тут какой-нибудь человек (именуемый в дальнейшем Вася П.) решает делать свой сайт и обнаруживает, что моя система навигации ему ну просто очень нравится. Что он делает? Правильно, берет и ворует ее. Ворует на уровне реализации, то есть тупо выдирает кусок html-кода, вставляет его себе, после чего начинает оправдываться, что ему понравилась идея, что я такой умный и здорово придумал, изобрел «формат», а ему ничего не оставалось, как им воспользоваться. После моих объяснений Вася делает вид, что все понял, и начинает «делать непохоже». Это целое искусство — «делать непохоже». Берется все тот же мой кусок кода и начинаются изменения — меняем цвет, размер шрифта и прочее. Делаем «непохоже». Как ни странно, но это все равно плагиат. Потому что взяли мою реализацию и на основе ее сделали что-то свое.
А вот это — образец собственной реализации той же идеи. Никакого плагиата тут быть просто не может. Зайдите на Kalinin.ru. Это то, что я считаю хорошим дизайном.
Да, если начать придирчиво сравнивать эти два элемента навигации, то можно найти много общего. Например, и там и там используется черный и белый цвет. Но это — правильно. Белый цвет идеален для контент-проектов. А с белым идеально сочетается черный. Но об этом — позже.
Проблема еще в том, что Вася не может разграничить идею и ее реализацию. Хотя бы просто потому, что его мозг не научился рожать собственные идеи. (А руки — создавать собственные реализации). Заходя на хорошо сделанный сайт, Вася видит хорошую реализацию какой-то идеи. Вася видит реализованную идею. То есть он все равно видит идею, и это хорошо — авось, скоро и научится сам их придумывать, но не отделяет идею от реализации, и это плохо.
Поэтому когда Вася тоже хочет сделать себе «последние 10 заметок», он упорно ворует реализацию, продолжая не понимать, что же, собственно, тут не так.
Первую причину, по которой нельзя воровать дизайн, я описал — это нехорошо и даже чуть-чуть противозаконно. Вторая причина не менее важна, чем первая. Она называется
Не по размеру.
Давайте еще раз вспомним, что такое дизайн. Дизайн — это такая форма, которая наиболее точно и полно выявляет свойства содержания. Содержание (контент) детерминирует дизайн. Дизайн и контент — единство формы и содержания. (Контент (content) — очень подходящий термин в данном случае. Обозначает он не только «содержание», но и «суть, существо, сущность; значение, смысл» (англо-русский словарь)).
Таким образом, если вы целиком «заимствуете» дизайн, контент тоже должен быть заимствован. Иначе получается вот что:
Любой малоопытный юзер обычно смотрит — как такое делают мастера... и по мере своего вдохновения воплощает такое-же, но со своим контентом. Общая идея, переложенная на другой контент, вряд ли будет работать также полно, а мелочи (которые оживляют конкретную вещь) вообще исчезают. Паузы, пробелы, пятна, ритм — это все из гармонии соусов превращается в пластиковую кашу без маонеза. И шрифт тот же — ариал, и цвет тот же — #990000, а получается такая хрень, что ОЙ...
Чужой дизайн на своем контенте не работает. Примите это тоже, как аксиому.
В качестве примера: придумаем «чисто гипотетическую» ситуацию. Понравился Васе «Спектатор» и захотел Вася писать такие же заметки. Взял Вася html со Спектатора и начал чуть-чуть переделывать. Начал с шапки. Вместо «Spectator.ru» написал «Vasya». Добрался до ушек. С ушками надо что-то делать. Во-первых, чтобы ушки хоть как-то работали, нужно иметь минимум заметок 30. У Васи их нету. Кроме того, нужна ушкокрутилка. У Васи ее тоже нет. Ушки убираем, на их место собачим баннер. Баннер в два раза больше логотипа и начинает «забивать» его. Потом Вася добрался до меню. «эбаут», «архив» и «email» Вася в меню оставил, и остановился: больше ему нечего помещать в меню. И так далее... Поиск и подписку Вася тоже убрал... Сильно понравились новости на первой странице. Решил оставить. Только вот добавлять он их стал ручками и вдруг оказалось, что одна новость бывает раз в три дня и писать-то там фактически нечего... Вот и выходит — «Общая идея, переложенная на другой контент, вряд ли будет работать также полно, а мелочи (которые оживляют конкретную вещь) вообще исчезают. Паузы, пробелы, пятна, ритм — это все из гармонии соусов превращается в пластиковую кашу без майонеза. И шрифт тот же — ариал, и цвет тот же — #990000, а получается такая хрень, что ОЙ...»
Дизайн должен соответствовать контенту и развиваться вместе с ним. Самый грубый пример — рисует Вася свою домашнюю страницу. И прикидывает: вот будет у меня 10 разделов! И все будут обновляться! Раз в час! Вася в Фотошопе рисует 10 красивых кнопок и создает 10 страниц. На одной странице он пишет новости, на девяти других — «under construction», а все потому, что «дизайн» (10 кнопок) уже готов, а контента под него еще нету. И не будет.
Как-нибудь я опишу, как развивался «Спектатор». В самой первой версии, когда количество заметок исчислялось десятком-двумя-тремя, навигация была очень простая, (фактически — только стрелки следующая-предыдущая заметка) потому что большего и не требовалось. А выглядело все вот так. Спектатор-2 выглядел уже вот так. Прогресс, как говорится, налицо.
Одежда должна быть по размеру. Вот и все.
Ну а то, что человек, ворующий дизайн, расписывается в собственом бессилии создать что-то сам — это очевидно.
Технофетишизм
Вит написал чуть ли не манифест киберпанка. Вот тут.
Лет через десять — технологии могут быть предложены любому желающему. Хотите вы, допустим, взаправду встроить в свой ум небольшой 3D ускоритель памяти — пожалуйста. Или интерпретатор мыслей, позволяющий включать стиральную машину, просто подумав об этом — причем в любом месте и в любой отдаленности. И чуть позже, лет через тридцать, вас вообще никто не будет спрашивать о том, хотите ли вы этого, или не хотите. Это будет так же самоочевидно, как ношение очков при плохом зрении или использование слухового аппарата.
Поколение Net.
Все правильно так написал, логично так. Тем не менее, у меня наконец-то имеется полное основание поспорить с Витом, ибо его точку зрения я не разделяю. Вообще, про кибер-имплантанты был большой спор между Витом и Сашей. Чем кончился — не помню, но вроде сошлись на том, что имплантанты точно будут.
Меня в этот спор не позвали, поэтому выскажусь сейчас. Я не буду говорить: «Нет, ничего подобного! Никаких имплантантов!». Может быть, они и будут. Но может — и нет.
Хоть я и не являюсь читателем «Компьютерры», но как-то мне попалась там довольно интересная статья — по-моему, Кира Булычева (того самого). И писал он как раз про предсказание будущего. Мысль была такая: если какого-нибудь феодала 17 века спросили бы — какое оружие будет в будущем, то он ответил бы, что у рыцарей в будущем будет такая толстая броня, что их придется возить на телеге. То есть берется текущая реальность и умножается на n. Или возводится в степень. Получаем картину гипотетического будущего.
Вообще, я не видел ни одного футуристического прогноза, который сколько-нибудь напоминал бы действительность. Зато видел немало забавных вещей — вроде гравюры «Нью-Йорк в 21 веке», на которой изображены улицы, опутанные проводами так, что не видно неба. А все просто — телеграф тогда уже был. Изобретение — хорошее. Следовательно, в будущем все будут пользоваться телеграфом. Умножаем количество проводов на 100 — получается Нью-Йорк 21 века.
Вот, нашел-таки статью. Вот точная цитата:
Что же касается прогнозов научных, но общефилософского характера, то они обычно строятся по методу арифметической прогрессии. Если сегодня у нас компьютеры, то будут суперкомпьютеры, если у нас мини-маркеты, то будут супермини-маркеты. Этот метод хорош в историческом плане. Представьте себе: тысячный год. Каким будет вооружение рыцаря через тысячу лет?Ответ: доспехи станут такими тяжелыми, что рыцарей будут возить на телегах. Сто лет назад. Какими будут проблемы городского транспорта к концу XX века? Ответ: улицы будут завалены конским навозом да второго этажа. По такому принципу каждый может стать футурологом.
Через сто лет. Экраны телевизоров достигнут размеров теннисного корта. Юбки укоротятся до пяти сантиметров. Вилла среднего подполковника будет шестиэтажной с подземным ходом в лес. Прокладки. тут мое воображение отказывает.
Кир Булычев, «Темное будущее»
Есть такая вещь, которую я называю «технологический фетишизм». Встречается в 99% процентов фантастических романах — когда герой будущего имеет в кармане миниатюрный ядерный реактор, космический корабль, превосходящий по скорости свет и прочее. Если разобраться — сущая нелепица. Ибо создана как раз по формуле «берем то, что имеем сейчас и умножаем на десять».
Проблема в том, что будущее оказывается гораздо более «продвинутым», чем мы ожидаем. И вовсе не потому, что умножает действительность не на 10, а на 100 — все-таки Нью Йорк еще не опутан проводами до такой степени, что неба не увидать — а потому, что придумывает нечто абсолютно новое. Взять тот же банальный интернет. Несколько десятков лет назад ни один из футурологов не мог предположить нечто подобное. Ибо не было такого.
Так и мы, когда говорим: «Имплантанты будут! Будут встраиваться в голову SIMM’ы и DIMM’ы и GeForce’ы 2000’ые» уподобляемся «невежественным» — по нашим меркам — людям из прошлого, которые мечтали, что к 2000 году у каждого будет персональный дирижабль.
Это первое. Второе — это очередное торжество «материализма» и науки. Такое уже было, и не раз. В последний раз, если я не ошибаюсь, в начале 20 века. Изобрели кучу всего. Покорили воздух. Казалось еще чуть-чуть — и наука сможет объяснить все тайны мирозданья. Однако не объяснила. Началась депрессия и разочарование в науке. Народ вдарился в мистику. И было такое не раз — и во времена Ньютона, например, тоже. Наверное, раз в век наступает то время, когда наука и high-tech (по тем меркам) ставятся во главу угла и официально объявляются панацеей.
Меня, например, всегда забавляли попытки создать «искусственный интеллект» по принципу: в мозгу человека столько-то нейронов. Давайте возьмем столько же фиговинок (триггеров, логических элементов — называйте, как хотите), соединим их и они будут работать абсолютно также! До сих пор пытаются, кстати.
Думаю, что природа в очередной раз «обламает». При вживлении имплантатнов начнется гематома мозга. Ну, условно. К примеру. Да и потом — а кто вам сказал, что имплантанты в мозг вообще можно будет сделать? Ну да, вроде бы все легко: берем фиговинку, запихиваем в мозг, припаиваем к ней соответствующие нейроны... Казалось бы — вопрос техники. Но вот искусственный интеллект — тоже вопрос техники создать: берем кучу деталек и соединяем. А до сих пор не создали.
И потом — куда вживлять-то будем? Это вам не PCI-йная шина — в человеке лишних слотов нет.
«...доспехи станут такими тяжелыми, что рыцарей будут возить на телегах» — из цитатки выше — помните? «Так ведь это же танк!», — скажите вы. Ну, да. Почти танк. Так вот и имплантанты в будущем, возможно, будут. Но все равно не в том виде, в котором вы можете предположить.
Так что не люблю я предсказаний будущего. Особенно — в виде манифестов. Настанет ли «человекомашинное будущее»? Не-а.