Arc. Рисование дуги
^картинка.arc(centerx;center y;width;height;start in degrees;end in degrees;color)
Метод рисует дугу с заданными параметрами. Дуга представляет собой часть эллипса (как частный случай окружности) и задается координатами центра X и Y, шириной, высотой, а также начальным и конечным углом, задаваемым в градусах.
Bar. Рисование закрашенных прямоугольников
^картинка.bar(x0;y0;x1;y1;цветпрямоугольника)
Метод рисует на изображении закрашенный заданным цветом прямоугольник по заданным координатам.
Circle. Рисование неокрашенной окружности
^картинка.circle(centerx;center y;радиус;цвет линии)
Метод рисует окружность заданного радиуса линией заданного цвета относительно центра с координатами X и Y.
Copy. Копирование фрагментов изображений
^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2)^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2;ширина2;высота2;приближение цвета)
Метод копирует фрагмент одного изображения в другое изображение. Это очень удобно использовать в задачах, подобных расставлению значков на карте. В качестве параметров методу передаются:
1. | Исходное изображение
|
2. | координаты (X1;Y1) верхнего левого угла копируемого фрагмента |
3. | ширина и высота копируемого фрагмента |
4. | координаты (X2;Y2) по которым будет вставлен копируемый фрагмент |
5. | в качестве необязательных параметров могут быть заданы новая ширина и высота вставляемого фрагмента (в этом случае происходит масштабирование), а также величина, характеризующая точность передачи цвета. Чем она меньше, тем точнее цветопередача, но количество передаваемых цветом уменьшается и наоборот (по умолчанию равна 150) |
Create. Создание объекта с заданными размерами
^image::create(размерX; размер Y)
^image::create(размер X; размер Y; цвет фона)
Создает объект класса image размером X на Y. В качестве необязательного параметра можно задать произвольный цвет фона. Если этот параметр пропущен, созданное изображение будет иметь белый цвет фона.
Fill. Закрашивание одноцветной области изображения
^картинка.fill(x;y;цвет)
Метод используется для закрашивания областей изображения, окрашенных в одинаковый цвет, новым цветом. Область закрашивания определяется относительно точки с координатами X и Y.
Font. Загрузка файла шрифта для
^картинка.font[набор_букв;имя_файла_шрифта.gif](ширина_пробела)
^картинка.font[набор_букв;имя_файла_шрифта.gif](ширина_пробела;ширина_символа)
Помимо методов для рисования, Parser также предусматривает возможность нанесения надписей на рисунки. Для реализации этой возможности требуется наличие специальных файлов с изображением шрифтов. Можно либо использовать готовые файлы шрифтов, либо самостоятельно создавать собственные с нужным набором символов.
После загрузки такого файла с помощью метода font набору букв, заданных в параметрах метода, ставятся в соответствие фрагменты изображения из файла. Данный файл должен быть в формате GIF с прозрачным фоном и содержать изображение необходимого набора символов в следующем виде:
Пример файла digits.gif с изображением цифр:
0
1
2
3
4
5
6
7
8
9
Высота каждого символа определяется как отношение высоты рисунка к количеству букв в наборе.
Методу передаются следующие параметры:
Набор букв - перечень символов, входящих в файл шрифта
Имя и путь к файлу шрифта
Ширина символа пробела (в пикселах)
Ширина символа - необязательный параметр
По умолчанию, при загрузке файла шрифта автоматически измеряется ширина всех его символов и при выводе текста используется пропорциональный (proportional) шрифт. Если задать ширину символа, то шрифт будет моноширинным.
Все символы следует располагать непосредственно у левого края изображения.
Format. Вывод числа в заданном формате
^имя.format[форматнаястрока]
Метод выводит значение переменной в заданном формате (см. Форматные строки).
Gif. Кодирование объектов класса image в формат GIF
^картинка.gif[]
^картинка.gif[имя файла] [3.1.2]
Используется для кодирования созданных Parser объектов класса image в формат GIF.
Имя файла будет передано посетителю при $response:download.
Внимание: в результате использования этого метода создается новый объект класса file, а не image!
Кроме того, необходимо учитывать тот факт, что цвета выделяются из палитры, и, когда палитра заканчивается, начинается подбор ближайших цветов. В случае создания сложных изображений, особенно с предварительно загруженным фоном, следует иметь в виду последовательность захвата цветов.
Html. Вывод изображения
^картинка.html[]
^картинка.html[хеш]
Создает следующий HTML-тег:
<img src="$image.src" width="$image.width" height="$image.height" />
В качестве параметра методу может быть передан хеш, содержащий дополнительные атрибуты изображения, например alt и border, задающие надпись, появляющуюся при наведении курсора и ширину рамки.
Замечание: атрибуты изображения можно переопределять.
Inc, dec, mul, div, mod. Простые операции над числами
^имя.inc(число)
^имя.dec(число)
Int, double. Преобразование объектов к числам
или
или
Преобразуют значение переменной $имя к целому или вещественному числу соответственно, и возвращает это число. При преобразовании вещественного числа к целому производится округление.
Можно задать значение по умолчанию, которое будет получено, если преобразование невозможно. Значение по умолчанию можно использовать при обработке данных, получаемых интерактивно от пользователей. Это позволит избежать появления текстовых значений в математических выражениях при вводе некорректных данных, например, строки вместо ожидаемого числа.
Внимание: пустая строка и строка состоящая только из "white spaces" (символы пробела, табуляция, перевода строки) считается нулем.
Класс image
Класс для работы с графическими изображениями. Объекты класса image бывают двух типов. К первому относятся объекты, созданные на основе существующих изображений в поддерживаемых форматах. Ко второму - объекты, формируемые самим Parser.
Из JPEG файлов можно получить EXIF информацию (http://www.exif.org).
Для представления цветов используется схема RGB, в которой каждый оттенок цвета представлен тремя составляющими компонентами (R-красный, G-зеленый, B-синий). Каждая составляющая может принимать значение от 0x00 до 0xFF (0 - 255 в десятичной системе). Итоговый цвет представляет собой целое число вида 0xRRGGBB, где под каждую составляющую компоненту отведено два разряда в указанной последовательности. Формула для вычисления цвета следующая:
(R*0x100+G)*0x100+B
Так, для белого цвета, у которого все компоненты имеют максимальное значение - FF, данная формула при подстановке дает:
(0xFF*0x100+0xFF)*0x100+0xFF = 0xFFFFFF
Классы int, double
Объектами классов int и double являются целые и вещественные числа, как заданные пользователем, так и полученные в результате вычислений или преобразований. Числа, относящиеся к классу double, имеют представление в формате с плавающей точкой. Диапазон значений зависит от платформы, но, как правило:
для int |
от -2147483648 |
до 2147483647 |
для double |
от 1.7E-308 |
до 1.7E+308 |
Length. Получение длины надписи в пикселах
^картинка.length[текстнадписи]
Метод вычисляет полную длину надписи в пикселах.
Line. Рисование линии на изображении
^картинка.line(x0;y0;x1;y1;цвет)
Метод рисует на изображении линию из точки с координатами (х0:y0) в точку (x1:y1) заданного цвета.
Load. Создание объекта на основе
^image::load[имя_файла.gif]
Создает объект класса image на основе готового фона. Это дает возможность использовать готовые изображения в формате GIF в качестве подложки для рисования, что может использоваться для создания графиков, графических счетчиков и т.п.
Measure. Создание объекта на основе
^image::measure[файл]
^image::measure[имяфайла]
Создает объект класса image, измеряя размеры существующего графического файла или объекта класса file в поддерживаемом формате (сейчас поддерживаются GIF, JPEG и PNG).
Из JPEG файлов также считывается EXIF информация (http://www.exif.org), если она там записана. Большинство современных цифровых фотоаппаратов при записи JPEG файла записывают в него также информацию о снимке, параметрах экспозиции и другую информацию в формате EXIF.
Сама картинка не считывается, основное назначение метода - последующий вызов для созданного объекта метода html.
Параметры:
Файл - объект класса file
Имя файла - имя файла с путем
Примечание: поддерживается EXIF 1.0, считываются теги из IFD0 и SubIFD.
Методы рисования
Данные методы используются только для объектов класса image, созданных с помощью конструкторов create и load. С их помощью можно рисовать линии и различные геометрические фигуры на изображениях и закрашивать области изображений различными цветами. Это дает возможность создавать динамически изменяемые картинки для графиков, графических счетчиков и т.п.
Отсчет координат для графических объектов ведется с верхнего левого угла, точка с координатами (0:0).
Описание формата файла, описывающего кодировку
Данные в формате tab-delimited со следующими столбцами:
char - символ, или его код, заданный в десятичной или шестнадцатеричной форме
(0xHH) в той кодировке, которую определяет этот файл.
white-space, digit, hex-digit, letter, word - набор флажков, задающих класс этого символа. Пустое содержимое означает непринадлежность символа к этому классу, непустое [например, 'x'] - принадлежность.
Подробнее о символьных классах см. описание регулярных выражений в литературе.
lowercase - если символ имеет пару в нижнем регистре, то символ или код парного символа. Скажем, у буквы 'W' есть парная 'w'. Используется в регулярных выражениях для поиска, нечувствительного к регистру символов, а также в методах lower и upper класса string.
unicode1 - основной Unicode код символа. Если совпадает с кодом символа, то можно не указывать. Скажем, у буквы 'W' он совпадает, а у буквы 'Я' - нет.
unicode2 - дополнительный Unicode символа, если имеется.
Pixel. Работа с точками изображения
^картинка.pixel(x;y)
Выдает цвет указанной точки изображения. Если координаты попадают за пределы изображения, выдает -1.
^картинка.pixel(x;y;цвет)
Задает цвет указанной точки.
Поля
$картинка.src |
Polybar. Рисование окрашенных
^картинка.polybar(цветмногоугольника)[таблица с координатами узлов]
Метод рисует многоугольник заданного цвета по координатам узлов, задаваемым в таблице. Последний узел автоматически соединяется с первым.
Polygon. Рисование неокрашенных
^картинка.polygon(цветлинии)[таблица с координатами узлов]
Метод рисует линией заданного цвета многоугольник по координатам узлов, задаваемым в таблице. Последний узел автоматически соединяется с первым.
Polyline. Рисование ломаных линий по координатам узлов
^картинка.polyline(цвет)[таблицас координатами точек]
Метод рисует линию по координатам узлов, задаваемым в таблице. Он используется для создания ломаных линий.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.arc(50;50;40;40;0;90;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат с дугой в четверть (от 0 до 90 градусов) окружности радиусом 40 пикселов.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.bar(5;40;95;60;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат размером 100 на 100 пикселов, внутри которого находится белый прямоугольник 90 x 20 пикселов, нарисованный по заданным координатам.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.circle(50;50;10;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат с окружностью радиусом в десять пикселов, нарисованной линией белого цвета с центром в точке (50;50).
В данном примере мы создаем
$mygif[^image::load[test.gif]]
$resample_width($mygif.width*2)
$resample_height($mygif.height*2)
$mygif_new[^image::create($resample_width;$resample_height)]
^mygif_new.copy[$mygif](0;0;20;30;0;0;$mygif_new.width;$mygif_new.height)
$response:body[^mygif_new.gif[]]
В данном примере мы создаем два объекта класса image. Первый создан на основе существующего GIF файла. Второй - вдвое больший по размеру, чем первый, создается самим Parser, после чего в него мы копируем фрагмент первого размером 20х30 и «растягиваем» этот фрагмент на всю ширину и высоту второго рисунка. Последняя строчка кода выводит увеличенный фрагмент на экран. Данный подход можно применять только для изображений, которые не требуется выводить с хорошим качеством.
Будет создан объект square класса
$square[^image::create(100;100;0x000000)]
Будет создан объект square класса image размером 100х100 c черным цветом фона.
в этом файле. Если снимок
$photo[^image::measure[photo.jpg]]
Имя файла: $photo.src<br>
Ширина изображения в пикселах: $photo.width<br>
Высота изображения в пикселах: $photo.height<br>
$date_time_original[$photo.exif.DateTimeOriginal]
^if(def $date_time_original){
Снимок сделан ^date_time_original.sql-string[]<br>
}
Будет выведено имя файла, а также ширина и высота изображения, хранящегося в этом файле. Если снимок был сделан цифровым фотоаппаратом, вероятно, будет выведена дата и время съемки.
В браузере будет выведен квадрат
$square[^image::create(100;100;0x000000)]
^square.line(0;0;100;100;0xFFFFFF)
^square.fill(10;0;0xFFFF00)
$response:body[^square.gif[]]
В браузере будет выведен квадрат размером 100 на 100 пикселов, перечеркнутый по диагонали белой линией. Нижняя половина квадрата черная, а верхняя закрашена желтым цветом.
В данном случае будет загружен
$square[^image::create(100;100;0x00FF00)]
^square.font[0123456789;digits.gif](0)
В данном случае будет загружен файл, содержащий изображения цифр от 0 до 9, и набору цифр от 0 до 9 будет поставлено в соответствие их графическое изображение. После того, как определен шрифт для нанесения надписи, можно использовать метод text для нанесения надписей.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат размером 100 на 100 пикселов.
В браузере будет выведена картинка
$photo[^image::measure[myphoto.jpg]]
^photo.html[
$.border[0]
$.alt[Это я в молодости…]
]
В браузере будет выведена картинка из переменной $photo. При наведении курсора будет появляться надпись: это я в молодости…
В результате будет вычислена длина
$square[^image::create(100;100;0x00FF00)]
^square.font[0123456789;digits.gif](0)
^square.length[128500]
В результате будет вычислена длина надписи «128500» в пикселах с учетом пробелов.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.line(0;0;100;100;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат размером 100 на 100 пикселов перечеркнутый по диагонали белой линией.
Будет создан объект класса image
$background[^image::load[counter_background.gif]]
Будет создан объект класса image на основе готового изображения в формате GIF. Этот объект может впоследствии использоваться для подложки в методах рисования.
В браузере будет выведен равнобедренный
$rectangle_coordinates[^table::create{x y
0 0
50 100
100 0
}]
$square[^image::create(100;100;0x000000)]
^square.polybar(0x00FF00)[$rectangle_coordinates]
$response:body[^square.gif[]]
В браузере будет выведен равнобедренный треугольник зеленого цвета на черном фоне. В таблице заданы координаты вершин треугольника.
В браузере будет выведен равнобедренный
$rectangle_coordinates[^table::create{x y
0 0
50 100
100 0
}]
$square[^image::create(100;100;0x000000)]
^square.polygon(0x00FF00)[$rectangle_coordinates]
$response:body[^square.gif[]]
В браузере будет выведен равнобедренный треугольник, нарисованный линией зеленого цвета на черном фоне. В таблице заданы координаты вершин треугольника.
В браузере будет выведена буква
$table_with_coordinates[^table::create{x y
10 0
10 100
20 100
20 50
50 50
50 40
20 40
20 10
60 10
65 15
65 0
10 0
}]
$square[^image::create(100;100;0xFFFFFF)]
$square.line-style[*** ]
$square.line-width(2)
^square.polyline(0xFF00FF)[$table_with_coordinates]
$file_withgif[^square.gif[]]
^file_withgif.save[binary;letter_F.gif]
$letter_F[^image::load[letter_F.gif]]
^letter_F.html[]
В браузере будет выведена буква F, нарисованная пунктирной линией на белом фоне. В рабочем каталоге будет создан файл letter.gif. В этом примере используются объекты класса image двух различных типов. В таблице задаются координаты точек ломанной линии. Затем на созданном с помощью конструктора create фоне рисуется линия по указанным координатам узлов. Созданный объект класса image кодируется в формат GIF. Полученный в результате этого объект класса file сохраняется на диск. Затем создается новый объект класса image на основе сохраненного файла. Этот объект выводится на экран браузера методом html.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.rectangle(5;40;95;60;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат размером 100 на 100 пикселов, внутри которого находится прямоугольник 90 x 20 пикселов, нарисованный линией белого цвета по заданным координатам.
В браузере будет выведен черный
$paint_nodes[^table::create{x y
10 20
90 20
90 80
10 80
}]
$square[^image::create(100;100;0x000000)]
^square.line(0;0;100;100;0xFFFFFF)
^square.line(100;0;0;100;0xFFFFFF)
^square.replace(0x000000;0xFF00FF)[$paint_nodes]
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат, перечеркнутый по диагонали белыми линиями, со вписаным в него розовым прямоугольником. Поскольку в методе replace задана замена на розовый цвет только для черного цвета, белые линии не перекрасились.
В браузере будет выведен черный
$square[^image::create(100;100;0x000000)]
^square.sector(50;50;40;40;0;90;0xFFFFFF)
$response:body[^square.gif[]]
В браузере будет выведен черный квадрат с сектором в четверть (от 0 до 90 градусов) окружности радиусом 40 пикселов. Сектор нарисован линией белого цвета.
Для методов рисования будет использоваться
$картинка.line-style[*** ]
$картинка.line-width(2)
Для методов рисования будет использоваться пунктирная линия вида:
*** *** *** *** ***
толщиной в два пиксела.
В браузере будет выведен зеленый
$square[^image::create(100;100;0x00FF00)]
^square.font[0123456789;digits.gif](0)
^square.text(5;5)[128500]
$response:body[^square.gif[]]
В браузере будет выведен зеленый квадрат с надписью «128500» левая верхняя точка которой находится в точке с координатами (5;5).
и эквивалентен записи
$var(5)
^var.inc(7)
^var.dec(3)
^var.div(4)
^var.mul(2)
$var
Пример возвратит 4.5 и эквивалентен записи $var((5+7-3)/4*2).
Вернет количество записей
^connect[строка подключения]{
^int:sql{select count(*) from news}
}
Вернет количество записей в таблице news.
Пример работы с EXIF информацией
$image[^image::measure[jpg/DSC00003.JPG]]
$exif[$image.exif]
^if($exif){
Производитель фотоаппарата, модель: $exif.Make $exif.Model<br>
Время съемки: ^exif.DateTimeOriginal.sql-string[]<br>
Выдержка: $exif.ExposureTime секунды<br>
Диафрагма: F$exif.FNumber<br>
Использовалась вспышка: ^if(def $exif.Flash){^if($exif.Flash){да;нет};неизвестно}<br>
}{
нет EXIF информации<br>
}
Пример создания тега IMG с указанием размеров изображения
$photo[^image::measure[photo.png]]
^photo.html[]
Будет создан объект photo класса image, на основе готового графического изображения в формате PNG, и выдан тег IMG, ссылающийся на данный файл, с указанием width и height.
Выведет число 1024, поскольку объект
$str[Штука]
^str.int(1024)
Выведет число 1024, поскольку объект str нельзя преобразовать к классу int.
$double(1.5)
^double.int[]
Выведет число 2, поскольку произведено автоматическое округление.
^var.format
$var(15.67678678)
^var.format[%.2f]
Возвратит: 15.68
$var(0x123)
^var.format[0x%04X]
Возвратит: 0x0123
Rectangle. Рисование незакрашенный прямоугольников
^картинка.rectangle(x0;y0;x1;y1;цветлинии)
Метод рисует на изображении незакрашенный прямоугольник по заданным координатам с заданным цветом линии.
Replace. Замена цвета в области, заданной таблицей координат
^картинка.replace(старыйцвет;новый цвет)[таблица с координатами точек]
Метод используется для замены одного цвета другим в области изображения, заданной с помощью таблицы координат.
Sector. Рисование сектора
^картинка.sector(centerx;center y;width;height;start in degrees;end in degrees;color)
Метод рисует сектор с заданными параметрами линией заданного цвета. Параметры метода аналогичны методу arc.
Sql. Получение числа из базы данных
^int:sql{запрос}
^int:sql{запрос}[$.limit(1) $.offset(o) $.default{код}]
^double:sql{запрос}
^double:sql{запрос}[$.limit(1) $.offset(o) $.default{код}]
Возвращает число, полученное в результате SQL-запроса к серверу баз данных. Запрос должен возвращать значение из одного столбца одной строки.
Запрос |
- запрос к базе данных, написанный на языке SQL |
$.offset(o) |
- отбросить первые o записей выборки |
$.default{код} |
- если результат SQL-запроса не число, то метод возвратит результат выполнения кода |
Text. Нанесение надписей на изображение
^картинка.text(x;y)[текстнадписи]
Метод выводит заданную надпись по указанным координатам (X;Y), используя файл шрифта, предварительно загруженный методом font
Тип и ширина линий
$картинка.line-style[типлинии]
$картинка.line-width(толщина линии)
Перед вызовом любых методов рисования можно задавать тип и толщину используемых линий.
Тип линии задается строкой, где пробелы означают отсутствие точек в линии, а любые другие символы - наличие.
Установка и настройка 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 european[windows-1250] |
windows-1251.cfg |
- Cyrillic[windows-1251] |
windows-1257.cfg |
- Baltic[windows-1257] |
Доступны скомпилированные версии 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 ищется в том же каталоге, где расположен сам файл.
Установка Parser на веб-сервер Apache 1.3, модуль сервера
Для установки Parser необходимо внести изменения в основной конфигурационный файл веб-сервера, или, если у вас нет к нему доступа, необходима возможность использовать .htaccess файлы.
По-умолчанию, в установке Apache возможность использования .htaccess отключена.
Если она вам необходима, разрешите их использовать (по крайней мере, задавать FileInfo). Для чего в основном конфигурационном файле веб-сервера (обычно httpd.conf) в секцию вашего <virtualhost …> вашего сайта, или вне ее - для всех сайтов, добавьте директивы:
<Directory /путь/к/вашему/веб/пространству>
AllowOverride FileInfo
</Directory>
Parser3 самостоятельно выполняет необходимые перекодирования, так что для Русского Apache добавьте в основной конфигурационный файл веб-сервера (обычно httpd.conf) строку:
CharsetDisable On
запрещающую использование возможностей перекодирования Русского Apache для вашего сервера.
Если возможности изменить основной конфигурационный файл веб-сервера у вас нет, добавьте эту строку в .htaccess файл.
Под UNIX:
Необходимо собрать Parser из исходных кодов, задав ключ --with-apache13 у скрипта configure, при make на экране появится инструкция по дальнейшей сборке Apache из его исходных кодов.
Внимание: на некоторых системах стандартный make не работает с make-файлами Parser3, воспользуйтесь GNU вариантом: gmake.
Под Win32:
Поместите файлы с исполняемым кодом модуля Parser (в текущей версии, ApacheModuleParser3.dll) в произвольный каталог.
Если вы используете версию Parser с поддержкой XML, в каталог, указанный в переменной окружения PATH (например, C:\WinNT), распакуйте XML библиотеки.
Добавьте в файл httpd.conf после имеющихся строк LoadModule:
# динамическая загрузка модуля
LoadModule parser3_module x:\path\to\ApacheModuleParser3.dll
Внимание: если необходимо, поместите сопутствующие .dll файлы в тот же каталог.
А после имеющихся строк AddModule (если не имеются, не добавляйте):
# добавление модуля к списку активных модулей
AddModule mod_parser3.c
Внимание: до 3.1.1 версии Parser: AddModule mod_parser3.C (на конце .C большая)
Добавьте в файл .htaccess вашего сайта (или в httpd.conf в секцию <virtualhost …> вашего сайта, или вне ее - для всех сайтов) блоки:
# назначение обработчиком .html страниц
AddHandler parser3-handler html
# задание Конфигурационного файла
ParserConfig x:\path\to\parser3\config\auto.p
# запрет на доступ к .p файлам, в основном, к auto.p
<Files ~ "\.p$">
Order allow,deny
Deny from all
</Files>
Установка Parser на веб-сервер Apache, CGI скрипт
Для установки Parser необходимо внести изменения в основной конфигурационный файл веб-сервера, или, если у вас нет к нему доступа, необходима возможность использовать .htaccess файлы.
По-умолчанию, в установке Apache возможность использования .htaccess отключена.
Если она вам необходима, разрешите их использовать (по крайней мере, задавать FileInfo). Для чего в основном конфигурационном файле веб-сервера (обычно httpd.conf) в секцию <virtualhost …> вашего сайта, или вне ее - для всех сайтов, добавьте директивы:
<Directory /путь/к/вашему/веб/пространству>
AllowOverride FileInfo
</Directory>
Parser3 самостоятельно выполняет необходимые перекодирования, так что для Русского Apache добавьте в основной конфигурационный файл веб-сервера (обычно httpd.conf) строку:
CharsetDisable On
запрещающую использование возможностей перекодирования Русского Apache для вашего сервера.
Если возможности изменить основной конфигурационный файл веб-сервера у вас нет, добавьте эту строку в .htaccess файл.
Поместите файл с исполняемым кодом Parser (в текущей версии, parser3) в каталог для CGI-скриптов.
Под Win32: если вы используете версию Parser с поддержкой XML, в этот же каталог распакуйте XML библиотеки.
Добавьте в файл .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>
Если вас не устраивает расположение конфигурационного файла по умолчанию (см. Установка и настройка Parser), вы можете задать его явно:
# задание переменной окружения с путем к auto.p
SetEnv CGI_PARSER_CONFIG /путь/к/файлу/auto.p
Замечание: для этого необходим модуль mod_env, который по умолчанию установлен.
Об ошибках Parser делает записи в журнал ошибок parser3.log, который, по умолчанию, расположен в том же каталоге, где и CGI-скрипт Parser. Если у Parser нет возможности сделать запись в данный файл, об ошибке будет сообщено в стандартный поток ошибок, и запись об ошибке попадет в журнал ошибок веб-сервера. Если вас не устраивает расположение журнала ошибок parser3.log, вы можете задать его явно:
# задание переменной окружения с путем к parser3.log
SetEnv CGI_PARSER_LOG /путь/к/файлу/parser3.log
Замечание: для этого необходим модуль mod_env, который по умолчанию установлен.
Установка Parser на веб-сервер IIS 5.0 или новее
Поместите файлы с исполняемым кодом модуля Parser (в текущей версии, parser3isapi.dll) в произвольный каталог.
Если вы используете версию Parser с поддержкой XML, в каталог, указанный в переменной окружения PATH (например, C:\WinNT), распакуйте XML библиотеки.
После чего назначьте Parser обработчиком .html страниц:
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. |