«КАРЛОС КАСТАНЕДА — переставлю буквы: КАЛ РОС, К САТАНЕ АД»
После выхода в Магадане в 2001 и в 2003 годах первых фрагментов записей, многие читатели говорили мне, что записи похожи на тексты К. Кастанеды. В связи с этим вынужден указать на то, что упорно не замечают «кастанедоведы»: тексты Кастанеды очень похожи на диалоги Сократа в изложении Платона. При этом в текстах Кастанеды нет никакого плагиата. Он просто описывал взаимодействие и беседы со значимым для него человеком, как это делал и Платон. Это определило сходство стилей.
(еще 100 слов)
ЧПУ и PHP (revisited)
ЧПУ — это термин, придуманный командой НовоКиберска, обозначает он «Человекопонятный УРЛ». Термин нигде широко не употреблялся, пока я не написал 5 сентября 2000 года заметку «ЧПУ и PHP». За эти три года термин довольно неплохо раскрутился.
За эти годы очень многие ссылались на эту заметку, поэтому я взял на себя труд переписать ее, добавив еще несколько способов сделать ЧПУ и убрав всякий мусор. Итак...
В принципе, ничего нового и оригинального в идее понятного УРЛа нет. Про это писал и Лебедев, и другие товарищи. Вообще, мне всегда нравились УРЛы такого, например, вида: php.resourceindex.com/Complete_Scripts/Guestbooks/
Итак, как это сделать в домашних условиях?
Способ раз
Вообще, самая первая мысль — это создавать для каждой заметки поддиректорию с соответствующим именем и помещать в нее index.html, то есть сделать так, чтобы по адресу spectator.ru/technology/php/user_friendly_urls лежал бы реальный файл. Разумеется, так дело не пойдет.
Способ два
Думаем дальше. Раз страница не существует, то она выдает 404. Так что вторая идея — прописать в фале .htaccess страницу, которая будет выдаваться при ошибке 404, а уже эта страница будет смотреть на текущий УРЛ и выдавать нужный документ
То есть, в .htaccess пишем:
------------------------------------
ErrorDocument 404 /index.php3
ErrorDocument 401 /index.php3
------------------------------------
Пользователь набирает spectator.ru/technology/php/user_friendly_urls, такая страница не найдена, и загружается файл index.php3. Дальше — все просто. Переменная $REQUEST_URI дает нам адрес вызываемой страницы (в данном случае это будет /technology/php/user_friendly_urls), вывести на экран соответствующий документ — дело техники.
Этого мало. В некоторых браузерах и с поисковиками такой фокус не пройдет: страница 404 будет выдавать соответствующий код, и страницы индексироваться не будут. Поэтому надо, чтобы страница, которая грузится в случае ошибки 404, изменяла бы код ошибки и сигналила, мол, все ОК, есть такая страница:
Итого: прописываем в .htaccess страницу, которая, собственно, за все отвечает (у меня это index.php3). В этой странице пишем php-скрипт, который работает с $REQUEST_URI, шлет заголовок «http/1.0 200 Ok» и отображает то, что надо.
Плюсы: Очень простой способ. Работает почти везде.
Минусы: При таком способе нельзя постить содержимое формы на несуществующие псевдоурлы. И если в Апаче ведется лог 404-ых ошибок, то он будет забит.
Способ три
Для этих (и не только) целей есть специальный модуль в Апаче, который называется mod_rewrite. Он позволяет «переписывывать урлы», то есть, преобразовывать их «на лету» по правилам, которые вы ему опишите.
Это очень мощный модуль, и если вы в нем разберетесь, то сможете творить чудеса. Сам я до сих пор довольно мало с ним работал, поэтому читайте документацию, благо, что ее полно.
Module mod_rewrite URL Rewriting Engine.
A Users Guide to URL Rewriting with the Apache Webserver.
Модуль Apache mod_rewrite.
Mod_rewrite для чайников.
Плюсы: Очень мощный способ.
Минусы: Может не хватить мозгов. На хостинге может быть не установлен этот модуль.
Способ четыре
Основан на директиве FilesMatch, которая в Апаче является core feature. Все просто. Пишем опять же в .htaccess
Action throw /index.php
ForceType throw
ForceType application/x-httpd-php
После этого все УРЛы, которые подпадают под условие «^([^.]+)$», (то есть все урлы, в которых не содержится точка) будут передаваться на index.php. Вы можете написать свое условие, разумеется.
Подробности: тут, тут или тут.
Плюсы: Простой и удобный способ.
Минусы: Говорят, что для того, чтобы ForceType работал, php должен быть подключен к апачу в виде модуля. Если php вызывается, как обыкновенный CGI — ForceType работать не будет.
Spectator: evolution
Номер три. «And here comes PHP». Что-то около 2001.
(еще 532 слова)
12 monkeys
Люди делятся, как известно, на тех, кто сидит на трубе и тех, кому нужны деньги. (© «Игла», the movie). Люди вообще имеют свойство делиться на как им чорт на душу положит: на гуманитариев и технарей, мальчиков и девочек, тварей дрожащих и право имеющих, на Дедов Морозов и Снегурочек (вот так вот мягко и ненавязчиво — с наступающим вас), на «плохих» и «хороших», то есть тех, кто с нами и тех, кто против нас.
Принадлежность к «нашим» и «не нашим» каждый раз определяется по все новым и новым признакам, давая почву для очередных классификаций. Конечная прагматическая ценность любого деления состоит в том, чтобы отделить
мух от котлет и зерна от плевел. Любое деление, разумеется, субъективно — как и все в этом мире.
На сей радостной ноте и перейдем о очередному делению на.
Можно научить ездить обезьяну на велосипеде. Но ей никогда не придет в голову поехать на нем в ближайшие джунгли за бананами.
© Саша Ларьяновский, много лет назад.
(Саша, в натуре, ты когда на кофе позовешь?)
В Programmers’ Stone люди делятся на паковщиков и картостроителей. А на самом деле они делятся на обезъян, велосипедистов и дрессировщиков. Что, в принципе, почти одно и тоже.
Но есть нюанс.
Для сначала — поучительная история из жизни, которую я вспоминаю с содроганием и содрогаюсь тем сильнее, чем больше времени проходит с ее начала. Я ходил к отцу на работу «чинить» компьютер. Не считая штук семь разных червей, в целом все работало. Поставил «Касперского» и все вылечил. Но он, как обычно, начал с чем-то конфликтовать и при загрузке громко ругаться. Выход нашелся сразу — я просто объяснил секретарше, как каждый раз при (пере)загрузке отключать «Касперского». Это была моя little revenge за то, что меня заставили полтора часа моей жизни (считая дорогу) потратить на это.
Прошло два года...
Велика вероятность, что там ничего не изменилось, и секретарша все так же совершает эти магические действия — по нескольку раз за день.
Возвращаемся к нашим обезъянам... Не все так плохо, ибо бывает гораздо хуже. (Urban legends: я знал человека, который работал в IT фирме «менеджером» и форматировал тексты в «Ворде» пробелами). Так вот. При создании одного сайта дизайнер неосторожно упустил из виду некоторые очевидные вещи, как, например, прописать в CSS ссылки. В результате, если вы ставили в текст просто Вы не поверите, но вот реальный пример того, что нужно было написать, чтобы получить работающую ссылку:
Я это увидел и прикинул, как в течение лет двух человек, который обновлял этот сайт регулярно, (и при этом не являлся секретаршей) ставил ссылки только таким образом. После чего я пережил сильнейшее экзистенциальное потрясение в моей жизни.
Иными словами, я просто охуел.
«Обезъяна» — это всего лишь метафора. Но иногда я в этом сомневаюсь.
Итак, «обезъяны» — это люди, которые делают так, потому что дрессировщик показал («научил») именно так. Слово «научил» я специально взял в кавычки, потому что это не научение/наука/понимание, а что-то типа рефлекса или мышечной памяти.
Вопрос «почему так?» если и возникает, то его полностью удовлетворяют типа «потому что так надо» или «потому что так оно работает/будет работать». А вот уже вопросы «а почему оно так работает?» или «а как оно может работать по-другому?» уже полностью выходят за границы мира «обезъян».
«Делай, как я/делай, как я сказал» — оптимальная форма обучения обезъян.
«Велосипедист» — коль мы будем продолжать эту метафору с велосипедом — это человек, которого научили кататься на велосипеде, и он совершенно осознанно получил в свое распоряжение способ быстрого передвижения и стал ездить не только в цирке, но и за бананами.
«Велотренер» — это человек, который может учить других велосипедистов.
«Дрессировщик» — это человек, который может учить «обезьян» кататься на велосипеде.
То, что мы называем «менеджер» — это комбинация дрессировщика с «велотренером» — в зависимости состава руководимого коллектива. И уровня «менеджера».
Еще бывают «Велосипедисты — самоучки» и «Изобретатели велосипедов». Несмотря на такое ироничное название, мы должны отдавать себе полный отчет в том, что все равно кто-то изобрел первый велосипед...
Главное, на мой взгляд, в этой жизни — не быть обезъяной. То есть не опускаться до уровня шаблонной деятельности, особенно когда это мозговая деятельность. Сам я себя приписываю, конечно же, к «самоучкам-изобретателям велосипедов». По природе очень ленивый во всем, что касается монотонного труда, и не верящий в людей, я предпочитаю не валить что-то на других, а долго думать, как что-то оптимизировать. «Лучше весь день потерять, зато потом за пять минут долететь» © мультик. На практике же, как правило, выходит, что время на оптимизацию все равно меньше времени, которое мы сэкономили.
(Верх оптимизации — это когда после рассмотрения чего-нибудь оказыватся, что данная задача настолько ненужная, что ее делать вовсе необязательно).
К тому же сам процесс оптимизации чего-то — это помимо всего прочего процесс оптимизации оптимизации (т.е. мы набираемся опыта в оптимизации и в следующий раз можем оптимизировать что-то уже более оптимально).
Смотрите также: Programmers’ Stone, деление на паковщиков и картостроителей.
