«WEB-мастерство для каждого»

  «Мой профиль»  

Уважаемые Посетители!

Я хочу рассказать вам о средстве, которое придумал и использую уже более года при разработке и поддержании ряда WEB-проектов. Это специальный язык, расширяющий возможности HTML в плане автоматической обработки. Но все подробности ниже.

Alex_soldier
(alex_soldier@mail.ru)
Лаборатория FAQ Ноу-Хау Эффекты Мнения

20.06.2006: Ноу-Хау «Технология AML»

Справка:
AML - Automative / Additional Markup Language - Язык Автоматизированной/Альтернативной Разметки.

Такое обозначение введено мной - автором спецификации языка и разработчиком AML-редактора.

Не спешите морщиться те, кто привык презирать любые редакторы! Также призываю остаться тех, кто недолюбливает копаться в громоздком коде! Не исключено, что это решение предназначено именно для вас!


Введение в AML:

Основная идея этой технологии проста - автоматизировать однотипные действия, повторяющиеся на каждой странице созданного или еще только разрабатываемого сайта. Представьте такую ситуацию: вы показываете заказчику выполненный сайт. И тут он заявляет: "Пожалуй, вот этого пункта меню не будет, вместо него поставьте то-то и то-то"!

Разумеется, заказчик - образное выражение. Весьма вероятнее, что это вы сами решили к корне изменить концепцию представления информации на своей домашней страничке. В любом случае, вам остается одно - вносить одну и ту же правку во все страницы. Сколько это займет времени, зависит от их количества. Мне самому приходилось так делать не раз - на втором десятке начинаешь проклинать все и вся. Так почему бы не перепоручить это какой-нибудь программе?

Примечание: пока я намеренно не затрагиваю "тяжелые" средства вроде CGI и SSI. О них будет сказано отдельно.


Что делать?

Как научить программу делать что-то за вас? Объяснить ей это с помощью своеобразного языка! Подавляющую часть всех проблем составляет сборка странички из статических частей, т.е. подстановка информации из другого файла в определенное место нашего документа (макроподстановка).

Дабы не делать программу, которая просто тупо заменяет одну последовательность символов другой, я решил реализовать поддержку тегов специального вида (если угодно - скриптов). За прототип синтаксической части был взять PASCAL и родной HTML. Концепция получилось следующей:

{ИМЯ_ТЕГА  ПАРАМЕТР1="значение1" ПАРАМЕТР2="значение2" ... }

Фигурные скобки указывают на вероятное начало и конец очередного AML-тега, параметры - хранят значения или указывают тип действия (все как в старом-добром HTML). Со скобками я, конечно, прокололся - возможна путаница с внедренными программами на JavaScript. Но менять что-либо уже поздно!


Теги, поддерживаемые версией AML 1.0:

Итак, основной упор с самого начала делался на устранение избыточности данных. Для этого предлагается повторяющиеся фрагменты текста/кода "прятать" в переменные или подключаемые файлы (в зависимости от его длины). Кроме того, у переменных предполагается динамическая составляющая - простейшие операции числовой обработки хранящихся данных.


Тег EXEC - задуман как служебный, задает параметры компиляции
Атрибут TARGET - указывает имя конечного файла (*.htm)
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Пример использования:
{exec target="../news/index.html" title="Архив новостей"}

Здесь указывается, что компилируемый далее код будет сбрасываться именно в этот файл. Параметр TITLE рекомендуется использовать в каждом теге как комментарий, чтобы элементарно не забыть, что же вы такое хотели сделать!



Тег USE - вставка указанного файла
Атрибут SRC - указывает имя включаемого файла
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Пример использования:
{use src="elements/head.txt" title="Шапка страницы"}

Включаемый файл, в свою очередь, тоже может содержать вставки и другие AML-теги. По мере прохождения компиляции они будут итерационно выявляться и заменяться статическим текстом. На выходе получится самый обычный HTML-файл.



Тег VAR - использование переменной
Атрибут NAME - задает имя переменной
Атрибут VALUE - присваиваемое значение (1 строка символов)
Атрибут ACTION - действие, в ыполняемое над текущим значением
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Вот здесь-то и проявляется вся гибкость и "коварство" языка! Пока, в силу нехватки времени и высокой сложности алгоритма, реализована только часть запланированных функций:

- именами переменных могут быть только цифры от 0 до 9;
- значение обрабатывается только в символьном виде (нет чисел);
- пока ACTION = WRITE и только (команда ВЫВЕСТИ НА ЭКРАН).


В связи с этим выделяется 2 типа использования. Первый пример - присвоение начального/нового значения:
{var name="0" value="../" title="Путь к корню сайта"}
{var name="1" value="Главная" title="Заголовок страницы"}


Второй пример - когда надо напечатать какую-либо специальную надпись в данной позиции:
{var name="1" action="write" title="Заголовок текущей страницы"}


Коренное отличие использования подключаемых файлов от переменных - возможность подстановки многострочного текста. Т.е. Длинные фрагменты, содержащие другие подстановки и спецсимволы, нужно вызывать через USE, а короткие надписи или числа - через VAR!


Правила синтаксиса:

1. Значение параметра обязательно заключается в двойные кавычки
2. Ключевые слова пишутся только маленькими буквами (см. примеры)
3. Прочая информация компилируется в HTML без изменений
4. Порядок перечисления параметров в теге - произвольный
5. Две фигурные скобки {{ в начале тега полностью "выключают" его




Недостатки существующих средств:

Так, наконец-то теперь пройдемся по недостаткам существующих средств CGI и SSI. Ну во-первых, знаете ли вы, что примерно 90% страниц сайта никогда не обновляются? Т.е. созданные раз, они так и лежат, накапливаясь в своих разделах (например, архив статей). Применение CGI или SSI, единственно дает экономию дискового пространства, временами весьма существенную. Зато генерация страниц на стороне сервера создает постоянную нагрузку на сервер.

У каждого провайдера и сайта даже есть определенный порог количества посетителей, одновременно присутствующих на сайте. Так что на перспективу, при высокой посещаемости все чаще будет вылетать ошибка или сообщение "Сервер перегружен". С бесплатными хостингами, так вообще не забалуешься, лимит там крайне небольшой, а хостящихся WEB-мастеров прилично. Вот и делят они сервер между собой.

Другая сторона проблемы - надо быть достаточно квалифицированным WEB-программистом, чтобы суметь корректно реализовать всю задуманную сборку с помощью данных средств (готовые CMS - не в счет). Здесь же возникает вопрос тестирования: устанавлявать и настраивать Apache или Денвер? Дополнительные трудности для начинающего разработчика.

На этом фоне весьма симпатично смотрится перспектива просто добавлять в код страниц специальные текстовые вставки, аналогичные обычным HTML-тегам, а потом откомпилировать весь проект парой щелчков мыши! И всего-то нужна небольшая програмка, умешающаяся на дискете вместе со всеми исходниками сайта!


Руководство к действию:

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

На файлы исходников тоже никаких особых ограничений не накладывается. По-умолчанию проектым файлом считается *.aml, а все подключаемые - *.txt, но никто не заставляет вас строго придерживаться этого правила. Вы можете использовать любые другие расширения: htm, css, php, ssi, ... - главное не забудьте прописать эти имена файлов в исходниках!

Вот, собственно, и все. Работа сводится к следующему: запуск редактора, загрузка проектного файла, пункт меню "Компиляция" (этот процесс занимает от нескольких секунд до пары минут), далее либо появится системное окошко "Компиляция прошла успешно!", либо процесс прервется на первой допущенной ошибке. В случае благоприятного исхода остается обновить страничку для просмотра в браузере.


Дальнейшие перспективы:

Уже около полутора лет официально существует версия 1.1. От 1.0 отличается только тем, что поддерживает много файлов в одном проектном. Эта версия проверена мной на корректность уже на нескольких успешно реализованных проектах.

Основными направлениями дальнейшего развития AML является сокращение объема повторного кода в исходниках. Так пока не поддерживается применение шаблонов в чистом виде. Хотя очень многие вещи можно реализовать обходным путем (далее рассмотрим примеры). Но все еще впереди!

Уже сейчас имеется версия 1.2, написанная буквально только что одним из моих студентов в рамках Бакалаврского диплома. Поддерживается считывание данных из потока (файла), арифметические значения и операции над ними, условная конструкция и динамически настраиваемый шаблон. Но всех возможностей и степени корректности работы я пока не знаю, поэтому в свободном доступе эта версия появится чуть позднее.


Ссылки:

Вы можете скачать AML-редактор 1.1 с моего сайта:
http://www.alex-world.ru/aml/

Или же я могу прислать по e-mail: отправить запрос




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

Список выпусков  > Следующий выпуск  >>>

∙ Форумы ∙
∙ Космос ∙
∙ Игры ∙
∙ Heroes ∙
∙ WEB ∙
∙ AML ∙
∙ Delphi ∙
© Copyright 1998 – 2009 by Alex_soldier
Сайт сделан по технологии AML

РАЗДЕЛЫ САЙТА

Главная страница Мира Идей
Лаборатория WEB-мастера
Уголок Программиста
Игровая Зона
Статьи о Космосе и Вселенной

РАССЫЛКИ САЙТА
(Content.Mail.Ru)

Обзор интересных рассылок

Web-мастерство для каждого

Космос: Новости Вселенной

Чего нам не хватает в играх?

Heroes: только Новые Идеи

HTML, CSS, JS в примерах

Самые-самые убойные
анекдоты сети




Получить архивы на e-mail (RAR ~ 2 Мб)