Archive for Декабрь 2008

XHTML победил

Сейчас разбирал завалы rss-подписок и прочитал в блоге Алекса Москалюка крайне интересную заметку. В ней говорится о том, что Facebook запустила программу Facebook Connect, позволяющую сайтам авторизовать пользователей через эту крупнешую в мире социальную сеть.

Но интересным для меня стало не это, а тот факт, что для работы требуется в html-коде страницы написать “<fb:login-button></fb:login-button>”.

Казалось бы, ничего удивительного, если не заметить двух вещей: 1) это XML; 2) не используется быстрая форма пустого тэга (<fb:login-button />).

Начну с конца. Короткая форма тэга, оказывается, применена потому, что FireFox некорректно обрабатывает их и, хотя в DOM документа этот узел присутсвует, редактировать его не представляется возможным.

Теперь самое интересное. Использование разметки именно Xhtml для задействования сервисов сайта масштаба Facebook говорит о том, что про html-разметку можно начинать забывать. В любом случае, сейчас переходить на xhtml ломанётся огромная толпа мелких сайтов (благо различные Wordpress-ы и так уже давно размечены в xhtml, о чём красноречиво заявляет каждый подвал любой мало-мальски приличной темы).

Кроме того, Facebook Connect уже поддержали такие монстры, как TechCrunch, CBS и CNN.

И под конец ещё один не менее примечательный факт: FC не работает в IE6 и Facebook отвечает на это просто: обновите браузер. Но это уже так, вишенка на коктейле.

Цензура им. Халявина

Имел нескромность в недавно развязавшейся дискуссии о спаме в жж Никиты Халявина (Профессионалы.ру) задать прямой и честный вопрос о том, как удалиться нафиг из сервиса.

Халявин даже ответил, но вопрос вместе с ответом стёр. Привожу его тут:

Вот теперь сижу и пытаюсь понять, зачем удалять вопрос и ответ? Нежто боится, что народ ломанётся пользоваться предложенным способом?

Когда интерфейсы не помогают

Уже некоторое время пытаюсь решить простую, казалось бы, задачу (на php, естественно).

Есть у меня несколько классов, расходящихся веткой от одного базового. Например: ПростаяСтраница <- SmartyСтраница; ПростаяСтраница <- БдСтраница; ПростаяСтраница <- ЗащищённаяСтраница. Все классы — абстрактные.

Невооружённым глазом видно, что это расширение в разные стороны функциональности одного и того же базового класса.

Для работы в конкретном месте я делаю финальный класс, который наследует один из абстрактных (в зависимости от того, что нужно).

Всё бы было хорошо, если бы только я мог в финальном собрать нечто вроде ЗащищённаяSmartyБдСтраница (то есть, набрать поведений из разных веток иерархии, в зависимости от сиюминутной потребности).

Однако, как известно, в пхп ни о каком множественном наследовании речи-то и нет.

Большинство людей, с которыми я пробовал обсудить эту тему, задают один и тот же вопрос: «А интерфейсы тебе тут не помогут?»

Нет, дорогие мои друзья, не помогут. Интерфейсы мне как раз в данном случае пофигу, мне нужно наследовать реализацию.

Наверняка я где-то рядом с решением, но в упор его не вижу. Кто видит?