XML+XSLT при разработке сайта RSSNews часть 1

среда, 26 декабря 2007 г. | Ярлыки: , , | 0 коммент. |

Когда в воздухе витала идея создания сайта rssnews.org.ua первым делом надо было выбрать базовые методы разработки данного сайта. В тот момент как раз начал делать первые применения технологии XML, XSLT на работе, и мне показалось что данная связка будет наиболее удачной для данного проекта. Ведь если подумать RSS ленты это в принципе XML который только следует привести к нужному виду в XHTML.

Организовывать хранилище лент было решено в XML файле, так как планировался небольшой обьем и простая организация данных. Таким образом получил структуру XML (База лент) -> XSLT -> XHTML
Тоесть в рузультате обработки базы одним XSLT файлом получим готовый сайт. Заманчиво ? Мне именно так и показалось.

Создал простенький PHP файлик в котором было только несколько вещей, а именно:

  1. Выполнение XSL трансформации
  2. Открытие удаленной ленты. Обработка случаев, когда удаленная RSS лента не доступна + кеширование + проверка валидности RSS ленты.
  3. Передача параметров XSL трансформации (ведь единственный XSL файл должен знать показывать папку или предпросмотр ленты)
Идем дальше в наши дебри :) Рассмотрим процесс когда пользователь открывает папку к примеру /news/ php передает в XSLT параметры что нужно вывести рубрику. XSL файл выбирает из базы раздел с именем news проходится по лентам которые есть внутри и выводит их списком расставляя по пути нужные ссылки на конечные ленты. Вывод меню справа делается вообще просто, берем из XML файла, список рубрик, считаем сколько узлов внутри и выводим список с количеством лент рядышком. Красота! Ну и конечно же не забываем выделить текущую рубрику в менюшке. Список лент показали, меню тоже, страница фактически готова ;) Все получается очень просто - берем файл, обрабатываем его в соответствиями с условиями и ТУТ ЖЕ выводим. Буквально несколько десятков строк и мертвый XML файл базы оживает и уже есть по чему щелкать и что смотреть.
А что же происходит если мы нажимаем на просмотр ленты ? Собственно следующее ... XSLT вызывает php функцию которая решает скачивать ли ленту или показать из кеша. И возвращает DOM обьект на базе RSS ленты которую мы собираемся смотреть. Проходимся по узлам RSS ленты и выводим их, тоесть за один проход. Ставим ссылочки на ленты источника, выводим текст, смотрим есть ли еще какая-то дополнительная информация для выводи и при необходимости тоже ее выводим. Ну и не забываем подсветить в менюшке в каком разделе мы находимся. В принципе вот и все ;) Если бы мне рассказали что если все делается именно так, я бы не поверил, но это правда. Разработка становится простой и приятной, данные есть нужно только вывести никаких тебе запросов к БД, они заменены простым выражением XPATH. Честно сказать верстка самого дизайна заняла больше времени чем написание основы на которой все это должно вертеться.
Если вы спросите о скорости работы сайта, то честно признаюсь теста показали около 30-35 запросов в секунду. Кто-то скажет мало, но когда узнают что на сайте нет БД, то удивляются и говорят что неплохо.

Ну и напоследок, хотите посмотреть живые исходники сайта ? Точнее сказать тот файл который все выводит - можете посмотреть, а если вам и показалось что много всего написано, то учтите что процентов 30 написаного там - просто HTML ;)

Разрядный лазер.tea laser

| Ярлыки: | 0 коммент. |


Накопал в инете про разрядный тип лазеров, которые работают при атмосферном давлении и не отличаются особой сложностью. Может кого-то заинтересует такая интересная штука. пробовал сделать, особо хороших результатов не получилось, после нового года попробую снова повторить попытку. Уж больно хочется такую штуку

Немного о моем сайте rssnews.org.ua

| Ярлыки: | 2 коммент. |

Изначально идея сайта для просмотра RSS лент была немножко другая. Хотел просто читать свои любимые ленты с работы и с дома, не устанавливая различных ридеров и других примочек. Изначально RSS ленты читал при помощи браузера Flock и первая версия дизайна сайта была подобна отображению лент в Flock'е. Но отображение это не так важно, хотелось чтобы сайт который я создал изначально для себя был полезен другим. Немного помучавшись решил изменить внутреннюю структуру сайта, сделал безтабличную верстку, накидал около 100 лент, сделал форму добавления ленты и стал ждать, когда же ко мне придут люди :)
Кое-как, скрипя, начали тянуться люди, начали добавляться ленты. Самое приятное было наблюдать как ссылки на мой сайт расползаются по интернету и появляются в блогах и различных сайтах. После появления в блогах, блоггеры просто сошли с ума, в день по 60 новых лент. Много мусора конечно было, но модерировать стало сложнее, зато было приятно осознавать что процесс пошел, мой сайт заметили и мой труд не прошел даром! Останавливаться не собираюсь, хочу доделать еще много вещей по сайту в том числе регистрацию пользователей и выбором своих лент для просмотра и многое многое другое. PDA версия сайта уже в работе, правда с посещаемостью напряг.
В общем буду развивать то, что начал, по-моему более 2000 лент для сайта данной тематики это довольно неплохо и останавливаться не стоит.