Про defaceit.ru 
Придумал для себя новую игрушку - 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 задумывался как развлечение, но он имеет и практическую ценность - научить писать скрипты таким образом, чтобы в них было легко добавить новый функционал. Ведь, владелец страницы может написать свой скрипт таким образом, что в него будет очень сложно вклиниться, а может сделать так, что новые функции будут ложиться легко и непринужденно. Второе поведение, конечно, предпочтительнее…
Вот как-то так. Если есть вопросы, то милости прошу в комментарии.
подписаться на блог
Leave a Reply