Написать письмо
 

Ваш е-майл

Ваше имя

Ваше сообщение


 
новое! собираю для себя и для других:
команды и скрипты на bash

шаблон документа word для различной документации

Моя биография в компьютерах и технологиях

О распознавании образов

новое! О юзабилити

My Wishlist

Алиев Рауф, РБК

резюме | фото | жж | программы | проекты | новости
iway.ru

Кто хочет — тот ищет способ, кто не хочет — ищет причины...

все для PM | рисунки
ArtPublishing


Разработка языка программирования ArtPublishing и CMS ContentRIGHT

К моменту моего появления в качестве координатора отдела программирования компания «Студия дизайна Artstyle», в которой я тогда работал, активно использовала в качестве центральной технологии собственную разработку ArtPublishing. Это был процессор шаблонов, написанный на языке Perl, обеспечивающий сайту административный интерфейс для изменения содержимого центральной части страниц, рубрик и шаблонов.

В принципе, в корне лежала достаточно известная концепция, которую, насколько я знаю, ещё использовали в dot.ru — некоторое развитие SSI, включающее в себя SQL-запросы и обработку результатов их работы, циклы и вставку других шаблонов с параметрами.

Этот механизм был достаточно медлителен, шаблоны редактивались через веб-интерфейс, каждый экземпляр системы подготавливался специально для каждого проекта и исправлять централизованно находящиеся ошибки в процессоре шаблонов было невозможно.

Это вызывало очевидные трудности в поддержке проекта и разработке на основе этого ядра новых проектов.

Первым мини-проектом нашего отдела была разработка специального FTP-сервера, который работал с базой данных проекта. Это был интересный опыт — FTP-сервер работал с таблицами базы данных ArtPublishing как с файловой системой — разделы представлялись папками, шаблоны, содержимое которых хранилось в базе данных представлялись файлами. При авторизации сервер заглядывал в таблицу администраторов, при попытке чтения каталога возвращал содержимое поля таблицы с содержанием шаблона, а при записи этого файла обратно на FTP обновлял эту информацию.

Первый прототип сервера я написал за вечер — и сразу столкнулся с интересной проблемой: все FTP-клиенты по-своему истолковывали протокол, описанный в RFC.

Разработанный нами сервер значительно упростил и убыстрил работу верстальщиков — теперь, вместо того, чтобы копировать из формы HTML-код в HomeSite или подобный редактор и обратно, появилась возможность прямо из редактора открывать по FTP шаблоны и править их. Кроме HomeSite её поддерживали из редакторов ещё Ultraedit и какой-то с неизвестным мне названием и, конечно, все менеджеры файлов: Far, Windows Commander, Midnight Commander.

Параллельно мы начали работу над новой версией языка с реализацией фактически такого же функционала на C. Были взвешены все плюсы и минусы текущей версии, разработан план создания нового продукта, набрана команда разработчиков. Правда, это громко сказано — команда, т.к. она состояла по сути из двух человек — меня и Сергея Шклярова.

Разработка всей системы велась 3 месяца. Принцип создания продукта был «послойный». Результатом каждого этапа был функциональный модуль, вот только этой самой функциональности в нем было очень мало. Но это был законченный продукт, который можно было (но весьма ограниченно) использовать.

Сначала мы разработали ядро. Все было просто — запросы преобразовывались в путь на сервере и в браузер возвращался соответствующий файл. Полезности в этом ноль, но позволило уже тестировать серверно-браузерное взаимодействие.

Вторым этапом было введение в язык операции вставки &{templatename}; Это был первый шаг к написанию парсера — он выдергивал из исходного текста файла такие конструкции и вставлял вместо них содержимое из файла, название которого указано в фигурных скобках между амперсандом (&) и точкой с запятой (;)

Таким образом, внутри HTML можно было уже вставлять конструкции типа &{tem}; &{/tem}; &{/absolutepath/tem}; &{relativepath/tem}; Это уже позволило сделать простой-простой сайт и продемонстрировать его работу руководству. И, заодно, начать параллельный процесс по отлаживанию и тонкой «заточке» ядра по скорости отработки на тестовых примерах.

Так шаг за шагом появлялись новые конструкции, пока мы не повторили полностью функционал предыдущего продукта на Perl, убрав из него явные недоработки по части концепции и добавив некоторые небольшие полезности.

В принципе, язык был удобен для разработчиков как для создания сайта, так и для его поддержки. Но всем было ясно, что для заказчика нужен более удобный инструмент для управления сайтом. Задача создания системы управления контентом стояла с самого начала разработки языка.

Если сам язык разрабатывался в сжатые сроки с явным началом и концом проекта, то CMS ContentRIGHT активно развивалась все последующее время. Фактически, это был интерфейс для управления модулями, которые разрабатывались отдельно. Модули устанавливались и деинсталлировались с помощью специально разработанного инструментария. Вся система управления контентом была написана на языке ArtPublishing и частично — на уровне отдельных функций на языке C.

В целом проект можно назвать удачным. Бюджет на его создание был небольшим, и в рамках этого бюджета нам удалось создать продукт, с помощью которого мы выигрывали тендеры, т.к. на том сегменте рынка, который занимала «Студия дизайна Артстайл», только мы представляли разработку на С и собственный язык. Для многих клиентов это вызывало симпатию и почти все оценивали её как весьма удобную и оригинальную.

Тем не менее, шло время и на рынке активно появлялись продукты, перекрывающие достоинства системы. Отвечать им было нечем, т.к. специальной группы по разработке и развитию системы выделено не было. В конце концов и я покинул компанию и сейчас, очень хочется надеяться, в «ArtStyle Group» есть собственные перспективы развития. Приятно сознавать, что с какого-то момента благодаря заложенным за годы работы функциональным возможностям в ядро и в набор устанавливаемых сервисных модулей создание сайтов вообще не стало требовать высококвалифицированных программистов.

В процессе мы ставили несколько экспериментов: в частности, в процессор шаблонов добавлялся кэш, проводилась работа по оптимизации отдельных функциональных модулей с замером времени отработки ряда тестов, родилась версия под Windows, создан был компакт-диск, на котором стартовал веб-сервер Apache и сервер БД MySQL и запускался проект на ArtPublishing.

Последней идеей, которую я почти довел до конца по части проектирования, было создание транслятора исходных текстов ArtPublishing в код на C/C++, которые впоследствии компилировались бы в подключаемые модули (shared). Это позволило бы достичь максимального уровня производительности, т.к. логика сбора шаблонов была бы не интерпретируемой, а компилируемой в быстродействующий код.

Сайты, выполненные по технологии ArtPublishing:

Сайт iway.ru выполнен целиком на этой технологии без использования баз данных.