// codeart.ru / Pet projects / Про defaceit.ru Форум

Про defaceit.ru rss подписка

Автор: Evgeniy Sergeev

Придумал для себя новую игрушку — defaceit.ru. Смысл сводится к тому что defaceit — это сайт который можно изменять по своему желанию. Судя по названию должно быть понятно, что основная идея такая же как и при дефейсе любого сайта — подгрузить свой JavaScript, который изменит вид страницы соответствующим образом. Только в моем случае добавление JS-скрипта — это вполне себе документированная возможность.

Конечно, правила функционирования сайта немного сложнее, чем просто добавил скрипт и сломал все нафиг. Попытаюсь максимально внятно разъяснить что к чему. Во-первых, на defaceit в принципе не существует 404-ой ошибки, на абсолютно любой урл можно повесить свой JS и создать таким образом новую страницу и стать владельцем этой страницы. Кстати, это и есть первое определение «владелец страницы — это человек, который первый прицепил свой скрипт на страницу». Во-вторых, на любую существующую страницу можно прицепить дополнительный скрип. И здесь рождается второе определение, «референт — это человек, который добавил свой скрипт к уже существующей странице».

Теперь конкретно о правилах. Самый смак заключается в порядке загрузки страниц. В обязательном порядке загружается только скрипт владельца страницы, адреса остальных скриптов находятся в глобальном массиве «urls» и могут быть загружены по желанию владельца страницы. За одним исключением — если человек попал на defaceit.ru с другого сайта, то кроме скрипта владельца в обязательно порядке грузится скрипт референта у которого домен совпадает с тем сайтом с которого осуществлен переход на defaceit. Другими словами, если Вы добавили скрипт к уже существующей странице на defaceit, то он будет загружен в обязательном порядке только если переход на defaceit.ru был произведен с Вашего сайта.

Думаю, что я всех уже окончательно запутал, поэтому приведу небольшой пример. Допустим, я создал простую форму обратной связи на defaceit.ru, таким образом я стал владельцем страницы «/email». Теперь, кто-то захотел немного изменить эту страницу под себя, для этого этот кто-то написал скрипт, который добавляет логотип в левом правом верху страницы и разместил этот скрипт на своем домене some-domain.ru. Теперь, если зайти на страницу обратной связи напрямую, то этот логотип не будет отображаться. А вот если зайти по ссылке размещенной на странице some-domain.ru, то логотип отобразится, так как в данном случае скрипт референта подлежит обязательно загрузке.

Почему сделано именно так? Основная идея в том, что если владелец страницы хочет, чтобы его страница включала изменения от всех референтов, то он просто берет глобальную переменную «urls» и грузит из нее все скрипты, а если не хочет, то ничего не грузит и имеет страницу, которой управляет только он. НО! Если кто-то захочет изменить вид страницы для посетителей, которых направил со своего сайта, то независимо от владельца страницы он будет иметь такую возможность Проще объяснить не могу, поэтому надеюсь, что хоть что-то понятно.

Осталось добавить немного конкретики. А именно — как добавить скрипт? Берем все тот же пример с формой обратной связи, чтобы добавить к ней скрипт нужно перейти по урлу http://www.defaceit.ru/email/edit. Так же отмечу, что корневая страница, которая сопоставлена домену www.defaceit.ru имеет имя «main», поэтому чтобы добавить скрипт на главную страницу нужно перейти по адресу http://www.defaceit.ru/main/edit.

На мой взгляд правила немного сложны для объяснения, но довольно просты для понимания. И благодаря простоте правил можно добиться разных интересных следствий, когда несколько небольших скриптов от разных авторов могут создавать интересные результаты. Вообще, defaceit задумывался как развлечение, но он имеет и практическую ценность — научить писать скрипты таким образом, чтобы в них было легко добавить новый функционал. Ведь, владелец страницы может написать свой скрипт таким образом, что в него будет очень сложно вклиниться, а может сделать так, что новые функции будут ложиться легко и непринужденно. Второе поведение, конечно, предпочтительнее…

Вот как-то так. Если есть вопросы, то милости прошу в комментарии.

И не забудьте: онлайн бронирование авиабилетов
  1. На defaceit сделана авторизация через OpenId (Yandex)

Leave a Reply

« »