Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Журнал Начинающего Программиста 21, 2010-10-05 04:38



Здравствуйте,

Помните что:
Правильно заданный вопрос значительно ускорит и упростит решение проблемы.

Установка и настройка Parser


Parser3 доступен в нескольких вариантах:
CGI скрипт (и интепретатор),  
модуль к веб-серверу Apache 1.3,  
ISAPI расширение веб-сервера Microsoft Internet Information Server 4.0 или новее.  



Дополнительно можно установить драйверы для различных SQL-серверов (сейчас доступны для MySQL, PgSQL, Oracle, ODBC).

Описание каталогов и файлов :
parser3[.exe] - CGI скрипт (и интерпретатор)
ApacheModuleParser3.dll - модуль к веб-серверу Apache 1.3
parser3isapi.dll - ISAPI расширение веб-сервера IIS 4.0 или новее

auto.p.dist - пример Конфигурационного файла


parser3.charsets/
- каталог с файлами таблиц кодировок

koi8-r.cfg

 - Cyrillic [KOI8-R]

windows-1250.cfg

 - Central europian[windows-1250]

windows-1251.cfg

 - Cyrillic[windows-1251]

windows-1257.cfg

 - Baltic[windows-1257]


Поскольку исходные коды являются открытыми, вы можете сами собрать Parser (см. Сборка Parser из исходных кодов) и написать свой SQL-драйвер.
Доступны скомпилированные версии Parser и его SQL-драйверов под ряд платформ (см. http://parser.ru/download/
).
Внимание: в целях безопасности они скомпилированы так, что могут читать и исполнять только файлы, принадлежащие группе пользователей, от которой работает Parser.

Как подключаются конфигурационные файлы?

Для CGI скрипта (
parser3[.exe]):
Конфигурационный файл считывается из файла, заданного переменной окружения
CGI_PARSER_CONFIG,
Если переменная не задана, ищется в том же каталоге, где расположен сам CGI скрипт.

Для модуля к Apache путь к конфигурационному файлу задается директивой:
#can be in .htaccess
ParserConfig полный_путь

Для ISAPI расширения (
parser3isapi.dll) конфигурационный файл auto.p ищется в том же каталоге, где расположен сам файл.


Конфигурационный файл


Пример файла включен в поставку (см. auto.p.dist).

Этот файл - основной, с которого начинается сборка класса
MAIN. Может содержать Конфигурационный метод, который выполняется первым, до метода auto, и задает важные системные параметры.

После выполнения конфигурационного метода можно задать кодировку ответа и кодировку, в которой набран код (по умолчанию в обоих случаях используется кодировка
UTF-8):

Рекомендуемый код:
@auto[]
#source/client charsets
$request:charset[windows-1251]
$response:charset[windows-1251]
$response:content-type[
   $.value[text/html]
   $.charset[$response:charset]
]

Примечание:
Для корректной работы методов
upper и lower класса string с национальными языками (в том числе русским) необходимо задание $request:charset.

Также здесь рекомендуется определить путь к классам вашего сайта:
$CLASS_PATH[/../classes]

И строку соединения с SQL-сервером, используемым на вашем сайте:
$SQL.connect-string[odbc://DSN=www_mydomain_ru^;UID=user^;PWD=password]

Советуем поместить сюда же определение метода unhandled_exception, который будет выводить сообщение о возможных ошибках в дизайне вашего сайта.

Внимание: конечно, Конфигурационный файл можно не использовать, а Конфигурационный метод поместить в файл
auto.p в корне веб-пространства, однако в разных местах размещения сервера (например: отладочная версия и основной сервер) конфигурации скорее всего будут различными, и очень удобно, когда эти различия находятся в отдельном файле и вне веб-пространства.



Конфигурационный метод


Если в файле определен метод conf,он выполняется первым, до auto, и задает важные системные параметры:
файлы, описывающие кодировки символов,  
ограничение на размер HTTP POST-запроса,  
сервер/программу отправки почты,  
SQL-драйвера и их параметры,  
таблицу соответствия расширения имени файла и его mime-типа.  


Рекомендуется поместить этот метод в Конфигурационный файл.

Определение метода:
@conf[filespec]
filespec
- полное имя файла, содержащего метод.

Всегда доступна и не нуждается в загрузке файла кодировка
UTF-8, являющаяся для Parser кодировкой по умолчанию.
Чтобы сделать доступными для использования Parser другие кодировки, необходимо указать файлы их описывающие, делается это так:
$CHARSETS[
   $.windows-1251[/полный/путь/к/windows-1251.cfg]
   …
]
См. Описание формата файла, описывающего кодировку.

Максимальный размер POST данных:
$LIMITS[
   $.post_max_size(10*0x400*0x400)
]

Параметр отправки писем (см.
^mail:send[…])…
…под Windows адрес SMTP-сервера
$MAIL[
   $.SMTP[mail.office.design.ru]
]

…под UNIX программа отправки письма
$MAIL[
   $.sendmail[/custom/mail/sending/program params]
]
По умолчанию используется эта…
   /usr/sbin/sendmail -t -i -f postmaster
…или эта…
   /usr/lib/sendmail -t -i -f postmaster
…команда, в зависимости от вашей системы.
При отправке письма вместо «
postmaster» будет подставлен адрес отправителя из письма из обязательного поля заголовка «from».

Также можно задать таблицу SQL-драйверов:
$SQL[
$.drivers[^table::set{protocol driver client
mysql   /
full/disk/path/parser3mysql.dll   /full/disk/path/libmySQL.dll
odbc /
full/disk/path/parser3odbc.dll
pgsql /
full/disk/path/parser3pgsql.dll /full/disk/path/libpq.dll
oracle /path/to/parser3oracle.dll   C:\Oracle\Ora81\BIN\oci.dll?PATH+=^;C:\Oracle\Ora81\bin
}]
]
В колонке client таблицы drivers допустимы параметры клиентской библиотеке, отделяемые знаком ? от имени файла библиотеки, в таком виде:
имя1=значение1&имя2=значение2&…
а также имя+=значение.
Эти переменные будут занесены(
=) или добавлены к имеющемуся значению(+=) в программное окружение (environment) перед инициализацией библиотеки. В частности, удобно добавить путь к Oracle библиотекам здесь, если этого не было сделано в системном программном окружении (system environment).

Таблица типов файлов:
#файл, создаваемый ^file::load[…],
#при выдаче в 
$response:body задаст этот $response:content-type
$MIME-TYPES[^table::set{ext mime-type
zip application/zip
doc application/msword
xls application/vnd.ms-excel
pdf application/pdf
ppt application/powerpoint
rtf application/rtf
gif image/gif
jpg image/jpeg
jpeg image/jpeg
png image/png
tif image/tiff
html text/html
htm text/html
txt text/plain
mts application/metastream
mid audio/midi
midi audio/midi
mp3 audio/mpeg
ram audio/x-pn-realaudio
rpm audio/x-pn-realaudio-plugin
ra audio/x-realaudio
wav audio/x-wav
au audio/basic
mpg video/mpeg
avi video/x-msvideo
mov video/quicktime
swf application/x-shockwave-flash
}]

Расширения имен файлов в таблице должны быть написаны в нижнем регистре. Поиск по таблице нечувствителен к регистру, т.е. файл FACE.GIF получит mime-тип image/gif.


Установка Parser на веб-сервер Apache, CGI скрипт


Parser3 самостоятельно выполняет необходимые перекодирования, так что для русской версии Apache добавьте в основной конфигурационный файл веб-сервера (обычно httpd.conf) строку:
CharsetDisable On
запрещающую использование возможностей перекодирования Русского Apache для вашего сервера.
Если возможности изменить основной конфигурационный файл веб-сервера у вас нет, добавьте эту строку в
.htaccess файл.

Поместите файл с исполняемым кодом Parser (в текущей версии,
parser3) в каталог для CGI-скриптов.

Добавьте в файл
.htaccess вашего сайта (или в httpd.conf в секцию <virtualhost …> вашего сайта, или вне ее - для всех сайтов) блоки:
# назначение обработчиком .html страниц
AddHandler parser3-handler html
Action parser3-handler /cgi-bin/parser3

# запрет на доступ к .p файлам. основной: auto.p
<Files ~ "\.p$">
    Order allow,deny
    Deny from all
</Files>

Если вас не устраивает расположение конфигурационного файла по умолчанию (см. Установка и настройка Parser3), вы можете задать его вручную (для чего необходим модуль mod_env, который по умолчанию установлен):

#
 задание переменной окружения с путем к auto.p
SetEnv CGI_PARSER_CONFIG /path/to/auto.p



Установка Parser на веб-сервер Apache 1.3, модуль сервера


Parser3 самостоятельно выполняет необходимые перекодирования, так что для русской версии Apache добавьте в файл httpd.conf строку:
CharsetDisable On
запрещающую использование возможностей перекодирования Русского Apache для вашего сервера.
Если возможности изменить основной конфигурационный файл веб-сервера у вас нет, добавьте эту строку в
.htaccess файл.

Под UNIX:
Необходимо собрать Parser из исходных кодов, задав ключ --with-apache13 у скрипта configure, при make на экране появится инструкция по дальнейшей сборке Apache из его исходных кодов.
Внимание: на некоторых системах стандартный
make не работает с make-файлами Parser3, воспользуйтесь GNU вариантом: gmake.

Под Windows:
Поместите файлы с исполняемым кодом модуля Parser (в текущей версии,
ApacheModuleParser3.dll) в произвольный каталог.
Добавьте в файл
httpd.conf после имеющихся строк LoadModule:
# динамическая загрузка модуля
LoadModule parser3_module 
x:\path\to\ApacheModuleParser3Debug.dll
Внимание: если необходимо, поместите сопутствующие .dll файл в тот же каталог.

А после имеющихся строк AddModule (если не имеются, не добавляйте):
добавление модуля к списку активных модулей
AddModule mod_parser3.C

Добавьте в файл .htaccess вашего сайта (или в httpd.conf в секцию <virtualhost …> вашего сайта, или вне ее - для всех сайтов) блоки:
# назначение обработчиком .html страниц
AddHandler parsed-html html

задание Конфигурационного файла
ParserConfig x:\path\to\parser3\config\auto.p

#
 запрет на доступ к .p файлам. основной: auto.p
<Files ~ "\.p$">
Order allow,deny
Deny from all
</Files>




Установка Parser на веб-сервер IIS 4.0 или новее


1.   Запустите Management Console, нажмите на правую кнопку мыши на названии вашего веб-сервера и выберите Properties.

2.   Перейдите на вкладку
Home directory и в разделе Application settings нажмите на кнопку Configuration…

3.   В появившемся окне нажмите на кнопку
Add.

4.   В поле
Executable введите полный путь к файлу parser3.exe или parser3isapi.dll.

5.   В поле
Extension введите строку .html.

6.   Включите опцию
Check that file exists.

7.   Нажмите на кнопку
OK.


Описание формата файла, описывающего кодировку


Данные в формате tab-delimited со следующими столбцами:

char - символ, или его код, заданный в десятичной или шестнадцатеричной форме
(0xHH) в той кодировке, которую определяет этот файл.

white-space, digit, hex-digit, letter, word - набор флажков, задающих класс этого символа. Пустое содержимое означает непринадлежность символа к этому классу, непустое [например, 'x'] - принадлежность.

Подробнее о символьных классах см. описание регулярных выражений в литературе.

lowercase - если символ имеет пару в нижнем регистре, то символ или код парного символа. Скажем, у буквы 'W' есть парная 'w'. Используется в регулярных выражениях для "case insensitive" поиска, а также в методах lower и upper класса string.

unicode1 - основной Unicode код символа. Если совпадает с кодом символа, то можно не указывать. Скажем, у буквы 'W' он совпадает, а у буквы 'Я' - нет.

unicode2 - дополнительный Unicode символа, если имеется.



Использование Parser в качестве интерпретатора скриптов


/путь/к/parser3 файл_со_скриптом
x:\путь\к\parser3 файл_со_скриптом

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

При этом ошибки попадут в стандартный поток ошибок, который можно перенаправить в желаемый файл так:
команда 2>>error_log
Не забывайте его время от времени очищать.

На UNIX можно также использовать стандартный подход с заданием команды запуска интерпретатора в первой строке скрипта:
#!/путь/к/parser3
#ваш код
Проверка: 
^eval(2*2)
Не забудьте зажечь биты атрибута, разрешающие исполнение владельцу и группе. Команда:
chmod ug+x файл


Сборка Parser из исходных кодов


Загрузите из CVS исходные коды Parser3 и необходимых дополнительных модулей. Для этого выполните следующую команду:
cvs -d :pserver:anonymous@cvs.parser.ru:/parser3project login
Пароль пустой.

cvs -d :pserver:anonymous@cvs.parser.ru:/parser3project get -r имя_ветки имя_модуля

Имя_ветки - если не указывать -r, вы получите текущую разрабатываемую версию.
Для получения стабильной версии, забирайте ветку «release_3_0_XXXX».

Имя модуля
:
Имя основного модуля: parser3.

Модуль с SQL драйверами:
sql.
Сейчас в нем доступны каталоги:
sql/mysql
sql/pgsql
sql/oracle
sql/odbc

Для компиляции под Win32…

…необходим каталог:
win32/tools

…SQL драйверов необходимы каталоги:
win32/sql/mysql
win32/sql/pgsql
win32/sql/oracle

…варианта Parser, работающего с XML, необходим модуль:
win32xml
и в файле
parser3/src/pa_config_fixed.h необходима директива
#define XML

…варианта Parser, принимающего письма по электронной почте, необходим модуль
win32mailreceive
и в файле
parser3/src/pa_config_fixed.h необходима директива
#define WITH_MAILRECEIVE

…варианта Parser в виде модуля Apache 1.3 необходим каталог
win32/apache13.

Пользователи Unix/Cygwin, инструкции по компиляции и установке читайте в файлах INSTALL каждого модуля.

Для компиляции под Win32 используйте Microsoft Visual Studio (6.0 или новее), используйте файлы
.dsw каждого модуля. Распаковывайте все модули в каталог parser3project, находящийся в корне (важно!) диска.






 © 2010 LORD-EXPERT     • Forum   • Site     •


Ваши комментарии к рассылке. Архив рассылки


Общение/вопросы/и т.д.




В избранное