VITRAGE: Практика
· Немного о стилях парсинга
· Примеры использования
· Работающие сайты
· Хостинги
· Вопросы и ответы
· Задать вопрос
· E-mail
 
Теория
· Компиляция и установка
· Идеология VITRAGE
· Оптимизация HTML
· Создание виртуальных хостов
· Создание структуры доменов
· Ваш собственный язык гипертекстовой разметки
 
О модуле
· Что такое VITRAGE
· История модуля
· Загрузить модуль
· Документация целиком
· Загрузить документацию в формате MS Word
· Слово автора
· English version
 
Технология VITRAGE
Один из витражей города Иркутска
Исходный код
· VHTML-код этой страницы (в новом окне)
· VHTML-код файла vitrage (в новом окне)
 
· Вопросы и ответы

Вопрос. Как эффективнее всего научиться верстать сайты с помощью VITRAGE и быстрее перейти на VHTML?

Ответ [04.08.02]. Автору модуля видится оптимальным обучение VHTML при помощи примеров. Идеология VITRAGE довольно проста, и таким способом VHTML может быть освоен легко и быстро. Примеры приведены в специальном разделе документации. Кроме этого, каждая страница сайта модуля вместе с конфигурационным файлом vitrage может быть просмотрена в виде исходного VHTML-кода, а это, вероятно, очень неплохой пример.

Вопрос. При создании виртуальных хостов с помощью ключевого слова VGMultiSitePath возникают проблемы при запросах вида "http://host1.domain.ru/catalog", то есть когда после имени каталога сайта не ставится "/" (слэш). Проблема заключается в появлении ошибки "файл не найден", хотя подкаталог catalog в каталоге host1.domain.ru есть. Как быть?

Ответ [08.10.02]. Веб-сервер Apache при отсутствии слэша пытается понять, запрашивается каталог или файл. В том случае, если соответсвующий файл не существует, Apache посылает браузеру директиву о необходимости переадресации на каталог (со слэшем). При этом имя хоста автоматически заменяется веб-сервером на то, которое указано в конфигурации Apache ключевым словом ServerName. То есть с большой долей вероятности запрашиваемым хостом станет вовсе не host1.domain.ru, что естественным образом повлечет за собой ошибку "файл не найден". Проблема решается добавлением строки "UseCanonicalName Off" в конфигурационный файл веб-сервера httpd.conf. Более подробную информацию о ключевом слове UseCanonicalName вы можете прочесть в документации по веб-серверу Apache.

Вопрос. VITRAGE и Apache 2.x. VITRAGE и платформа Windows. Есть ли решения для таких связок?

Ответ [14.10.02]. Модуль VITRAGE (в том виде, в котором он существует в настоящее время), скорее всего, не будет работать со второй версией веб-сервера Apache. Во второй версии разработчики Apache внесли значительные изменения в Apache API и в саму идеологию создания модулей. Версия VITRAGE для Apache 2.x, вероятно, будет когда-нибудь создана, а пока речь идет только об Apache 1.3.x. Вопрос об Apache 1.3.x под Windows немного сложнее. Автор не имел опыта компиляции модуля под Windows, поэтому в настоящее время не возьмется делать заявлений относительно того, будет ли работать VITRAGE с Apache 1.3.x под Windows.

Вопрос. Я захотел описать собственные тэги для комментариев <rem> и </rem> таким образом, чтобы конструкция "<rem>Комментарий</rem>" преобразовывалась модулем в "<!-- Комментарий -->". Пытаюсь сделать это так:

<rem><!--$%space%$</rem>
</rem>$%space%$--><//rem>

Не работает. Вернее, как-то работает, но явно не так, как мне нужно. Что делать?

Ответ [06.11.02]. Все очень просто: VITRAGE в большинстве случаев весьма чувствителен к вложенности знаков "<" и ">", а в приведенном описании эта вложенность явно нарушена. Вместо "<!--" и "-->" следует написать "$%lt%$!--" и "--$%gt%$" соответственно, и проблема разрешится.

Вопрос. Какие описания нужно сделать в конфигурационном файле vitrage, чтобы после парсинга VHTML все комментарии вида "<!-- Комментарий -->" не отображались?

Ответ [06.11.02]. Нужно описать тэг <!-->:

<!--></!-->

Поскольку описание тэга пусто, все комментарии при парсинге будут логично опущены. Отметим, что это произойдет только в том случае, если между "<!--" и началом комментария есть хотя бы один пробел. В противном случае VITRAGE воспримет комментарий вида "<!--Комментарий -->" как совершенно другой тэг (тэг <!--Комментарий>), который надо описывать дополнительно.

Вопрос. Может ли тэг из своего описания вызывать сам себя?

Ответ [10.11.02]. По умолчанию в модуле VITRAGE подобные рекурсивные вызовы запрещены. Существует два способа разрешить такие вызовы. Во-первых, перед компиляцией можно закомментировать в исходном тексте модуля строку "#define VG_RECURSE_CHECK", при этом рекурсивные вызовы окажутся разрешенными по умолчанию. Во-вторых, при вызове тэга можно воспользоваться специальными атрибутами %recurse% и %norecurse%:

<mytag %recurse%="1">
<mytag %norecurse%="">

При этом в описании тэга обязательно следует предусмотреть выход из рекурсивного цикла, воспользовавшись одним из атрибутов условия - %parse% или %noparse%. Например:

<mytag>
$a$<%dec% var=a>
<%vitrage% p=$a$><%emptyd% p=0>
<mytag %parse%="$p$" %recurse%="1">
</mytag>

Вопрос. Что означает параметр компиляции VG_SAFE в исходном тексте модуля? Нужно ли его раскомментировать?

Ответ [13.11.03]. В том случае, если данный параметр раскомментирован, для работы с некоторыми переменными веб-сервер будет дополнительно выделять "новую" память. То есть, грубо говоря, уже хранящиеся в памяти данные будут копироваться во вновь выделенную веб-сервером память, и дальнейшие операции будут выполняться уже с ней. Обычно в такой "перестраховке" нет никакой необходимости.

Дополнение [04.01.05]. При выпуске версии 1.24 модуля VITRAGE (и, соответственно, всех последующих версий) от этого параметра компиляции было решено вообще отказаться.

Вопрос. Я обновил версию модуля VITRAGE, после чего у меня перестали работать операции записи файлов. Почему? Что делать?

Ответ [04.01.05]. С версии 1.24 из соображений безопасности был введен запрет на запись файлов по умолчанию. Дело в том, что ранее пользователь модуля мог беспрепятственно записать файл в любое место файловой системы, куда разрешен доступ на запись для пользователя, от имени которого запускается веб-сервер (например, в каталог /tmp). Это могло вызвать определенные проблемы на недостаточно грамотно настроенных серверах. Чтобы разрешить операции записи файлов для всего сервера, для виртуальных хостов или для отдельных каталогов, в конфигурационном файле Apache httpd.conf необходимо использовать ключевое слово VGFileOperations со значением "Full": "VGFileOperations Full".

Другие значения ключевого слова VGFileOperations: "On" (по умолчанию) - разрешены только операции чтения файлов, "Off" - запрещены любые операции с файлами, кроме <%include%>. Это ключевое слово нельзя употреблять в файлах .htaccess. Таким образом, с помощью ключевого слова VGFileOperations вы можете обезопасить сервер от несанкционированной записи или даже чтения файлов пользователями модуля VITRAGE.

Вопрос. Как задать свой вопрос?

Ответ. Вы можете задать любой интересующий вас вопрос о технологии VITRAGE по адресу elk@elk.ru. Обычно ни одно электронное письмо не остается без ответа. Помните: чем конкретнее будет ваш вопрос, тем быстрее вы получите на него ответ.