вебдев
15 заметок
терапия
Сейчас этот блог в основном про психотерапию.
как правильно
Слушайте меня, я вас научу правильно жить.
психология
Буржуазная лже-наука, пытающаяся выявить закономерности в людях.
практика
Случаи и выводы из психотерапевтической практики.
кино
Фильмы и сериалы.
книги
Это как кино, но только на бумаге.
nutshells
«В двух словах», обо всем.
дорогой дневник
Записи из жизни (скорее всего, не интересные).
беллетристика
Мои литературные произведения и идеи.
духовный рост
Когда физический рост кончается, начинается этот.
дивинация
Как предсказывать будущее.
половой вопрос
Про секс и сексуальность.
заяижопа
Творческий дуэт с моей женой.
магия
«Магическое — другое название психического».
Карл Юнг
игровой дизайн
Раньше я делал игры.
игры
Компьютерные игры.
язык
Слова там всякие.
людишки
Уменьшительно-ласкательно и с любовью.
культ личности
Про великих людей (то есть, в основном про меня).
hwyd
Уникальная Система Прививания Привычек.
буклет
я
идеи
блоги
spectator.ru
дети
wow
вебдев
музыка
контент
программирование
религия
дейтинг
диалоги
яндекс
кулинария
coub
fitness
символы
йога
шаманизм
tiny
ребенок

Skinnable-cacheable

20 лет назад в категориях вебдев php

Придумал неболшую идею. Наверняка не я первый.


Идея заключается в том, что страницы кэшируется. Но при этом хочется сделать их Skinnable. То есть чтобы можно было «шкурки» менять. Как кэшировать в таком случае — не совсем понятно.

Простой и забавный (полу)выход. Везде в документах пишем и документы, естественно, кэшируем полностью. И выдаем кэш. А вот css.php — нет, не кешируем и выдаем в нем нужную css-ку в зависимости от содержимого cookies-ов.

0

ЧПУ и PHP (revisited)

21 год назад в категориях вебдев php

ЧПУ — это термин, придуманный командой НовоКиберска, обозначает он «Человекопонятный УРЛ». Термин нигде широко не употреблялся, пока я не написал 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 работать не будет.

0

Save changes?

21 год назад в категории вебдев

Вот еще идея: есть админский интерфейс — или любая форма — и в ней есть Критичные Поля (КП). После того, как содержание КП изменилось (т.е. было отредактировано) пользователь не может уйти со страницы по любой ссылке, потому что выскакивает диалог «Вы не сохранили изменения. Действительно хотите уйти отсюда?».

А то у многих такая проблема: либо при редактировании случайно уходишь по ссылке, либо забываешь — постил ты изменения или не постил.

Народ уже вовсю обсуждает. Я представляю, как это сделать, но в javascript я совсем не программирую.

0

Картинки возвращаются-2

21 год назад в категориях mysql вебдев

«When using a normal web server setup, images should be stored as files. That is, store only a file reference in the database. The main reason for this is that a normal web server is much better at caching files than database contents. So it it’s much easier to get a fast system if you are using files». (С) Официальная документация MySql, «5.2.12 Other Optimisation Tips».

Господа, вы, извините, заебали... удивляете своей тупостью и особенно — упрямством. Когда с вами спорят, должно же хотя бы закрасться подозрение, что вы не правы, или нет?.. Не надо говорить всякие вещи, которые вы не понимаете, про «а вот ext2fs занимает столько-то, а MySql — это три файла» и прочее. И не надо говорить, что 10000 файлов не кэшируется, а если это запихать все в одну базу данных — оно сразу же отчего-то начнет кешироваться. Следуя вашей логике, нужно завести Специальную Базу Данных и хранить все маленькие файлы именно в ней, одним файлом — чтобы рабтало все быстрей. Ну так заведите ее на своем компьютере. И вообще, не храните у себя много файлов — система будет тормозить. Точно говорю.

Перечитайте еще раз главу пять (MySQL Optimisation) и плюс к этому механизм работы BLOB’ов — чтобы понять, какие они тормозные.

PS. Тесты MySql vs Files

0
«Таро как инструмент самопознания», курс от создателя spectator.ru

Картинки возвращаются

Продолжая про картинки в базе. Вот это сообщение. Народ, однако, упорно комментирует, наглядно показывая выскоий уровень своего непонимания: «К тому-же у картинок могут быть другие атрибуты, которые нужно читать/менять (например счетчики)». Господа, блин, возьмите и почитайте ДОКУМЕНТАЦИЮ. (еще 131 слово)

MySql vs Files

Ну, если про хранение текстовой информации еще можно поспорить — и совершенно справедливо — то некоторые вещи меня удивляют. Использовать MySql для хранения картинок... и выдавать их так... $data = @mysql_result($result, 0, «imageinfouser»);
header(«Content-type: $type»);
echo $data; Мне даже сказать по этому поводу нечего..

Файлы vs Базы Данных

Дима Киселев (наш админ) перевел статистику на файлы www.livejournal.com/talkread.bml?journal=kiselev&itemid=29545 Он молодец. Говорит, что нагрузка резко упала. Еще бы. Сам я большой сторонник файлов, ибо — ... ---- из аськи Salvatore: Я же сделал сбор статистики в файл. Нагрузка упала до нуля :) Ненарадуюсь.
Spectator.ru: Дык :) Мне давно пора бы писать заметку «почему и как базы данных сосут». (еще 199 слов)

Что такое RSS?

Уже стало доброй традицией писать раз в месяц нечто на тему «Чего-то-там для чайников». Итак, аббривиатура дня: RSS. Это такой Web content syndication format. (Ничего, что я по-английски?)
RSS — это сокращение от Really Simple Syndication, что в переводе на русский звучит, как Действительно Простая... (еще 351 слово)

Правильноё ё

Мода на «правильные кавычки» прижилась. Теперь надо вводить моду на правильное ё. Написать скрипт, который в текстах сам расставляет правильное ё где надо. Только для этого словарь ё-слов нужен. Типа, её, ёж, ёлка, неебёт. Проблема — различение слов, типа все — всё..

Дерево, падающее в лесу

Когда проматываешь вниз страницу, на которой крутится GIF-мультик, так что он уходит вверх и исчезает с экране, продолжает ли он там крутиться?

Pngcrush

По наводкам читателей — Pngcrush: «Pngcrush is an excellent batch-mode compression utility for PNG images. Depending on the application that created the original PNGs, it can improve the file size anywhere from a few percent to 40% or more (completely losslessly)». Pngcrush — утилитка, работающая из командной строки и заметно сжимающая файлы PNG практически без потери качества изображения. (еще 123 слова)

Денвер

«Джентльменский набор Web-разработчика» («Д.н.w.р», читается «Денвер» — по названию города) — набор дистрибутивов, необходимый Web-программисту и дизайнеру для работы на локальной или «домашней» Windows-машине без выхода в Интернет. Денвер — это набор apache+php+perl+mysql (все это в слегка покоцанном виде), который а) занимает всего 2 мегабайта, б) без проблем и очень быстро устанавливается, в) легок в управлении и настройке. (еще 262 слова)