Powtils
Модератор: Модераторы
Powtils
Собственно серьезный вопрос...
Ларс написал, что от него будут только багофиксы, а основные вопросы развития надо направлять в коммьюнити!
http://z505.com/powtils/news.shtml
Форум (да и вообще сайт) http://z505.com не работает, только прямые ссылки на некоторые разделы действуют.
Есть ли на форуме кто пользуется данными расширениями?
Кто что знает про будущее проекта?
Ларс написал, что от него будут только багофиксы, а основные вопросы развития надо направлять в коммьюнити!
http://z505.com/powtils/news.shtml
Форум (да и вообще сайт) http://z505.com не работает, только прямые ссылки на некоторые разделы действуют.
Есть ли на форуме кто пользуется данными расширениями?
Кто что знает про будущее проекта?
Последний раз редактировалось Sawer 09.11.2008 09:15:33, всего редактировалось 2 раза.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Я попытался - но так и не получилось >_< Есть ещё что-то у Lazarus'a вроде CGILaz - вроде из той же серии по названию, но тоже не понял где это T_T Буду оч. рад мануалу - как написать hello world в виде CGI для апача ^_^
Считаю, что это самые удобные юниты для веб-кодинга...
Основная страница с примерами: http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=otherexamples
Что надо:
1) консольную программу
2) веб-сервер с возможностью запуска этой прогрммы (обычно в папке cgi-bin такое можно)
З.Ы. Если глубже пойдешь изучать, то спрашивай здесь! По возможности помогу!
Основная страница с примерами: http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=otherexamples
Что надо:
1) консольную программу
2) веб-сервер с возможностью запуска этой прогрммы (обычно в папке cgi-bin такое можно)
З.Ы. Если глубже пойдешь изучать, то спрашивай здесь! По возможности помогу!
Давайте тогда я переименую тему!
Есть вопрос:
У меня почему то функции SERV.docroot, CgiEnvVar.DocRoot, GetEnvVar('DOCUMENT_ROOT') в Linux (Debian 4.0r0) не возвращают ничего!
Пользуюсь последним релизом 1.7.1. Как можно излечить?
Есть вопрос:
У меня почему то функции SERV.docroot, CgiEnvVar.DocRoot, GetEnvVar('DOCUMENT_ROOT') в Linux (Debian 4.0r0) не возвращают ничего!
Пользуюсь последним релизом 1.7.1. Как можно излечить?
Руководство по использованию Powtils Revision 392 (последняя на 06.11.2008)
Что необходимо для работы с Powtils
1. Скачивать последнюю ревизию с сайта http://powtils.googlecode.com/svn/dev/
2. Заходить на сайт http://z505.com/cgi-bin/powtils/docs/1. ... neralindex, где выложена документация.
3. Читать данное руководство.
4. Спрашивать на форуме freepascal.ru
Исходные данные для начала работ
Выкаченные файлы в кладем папку /home/user/fpc/powtils, прописываем в файле fpc.cfg -Fu/home/user/fpc/powtils/main или в MSEIDE: Project->Options->Make->Directories->/home/user/fpc/powtils/main.
Проверяю работу, на следующей маленькой программе:
Если программа выведет что-нибудь вроде:
Тогда все отлично! Идем дальше.
Веб-сервер должен отрабатывать cgi-файлы. Для того, что бы не исполнялось все подряд обычно задаются расширения файлов или часть имени, для которые могут исполняться на сервер (*.cgi, cgi). В особо запущенных случаях можно просто задать все на исполнение. Пример рабочей настройки для веб-сервера
Пример 1. Простой
Пример 2. Использование шаблонов
Создадим html-шаблон index.tpl:
Наш cgi-файл index.cgi:
Пример 3. Получение данных из формы, отправленной веб-пользователем
В текущей версии разницы нет, какой тип отправки на сервер используется (GET или POST), в любом случае команда изъятия данный одна.
Создадим html-форму form.html:
Наш cgi-файл form.cgi:
Метод отправления данных можно комбинировать.
Типичный пример прописывания разных форм:
...action="form.cgi?cgi_form=first"...
...action="form.cgi?cgi_form=second"...
т.е. на 1-странице можно задавать множество форм в одиноковыми именами параметров, а считывание данных обрабатывать так:
Пример 4. Загрузка файлов на сервер
Что необходимо для работы с Powtils
1. Скачивать последнюю ревизию с сайта http://powtils.googlecode.com/svn/dev/
2. Заходить на сайт http://z505.com/cgi-bin/powtils/docs/1. ... neralindex, где выложена документация.
3. Читать данное руководство.
4. Спрашивать на форуме freepascal.ru
Исходные данные для начала работ
Выкаченные файлы в кладем папку /home/user/fpc/powtils, прописываем в файле fpc.cfg -Fu/home/user/fpc/powtils/main или в MSEIDE: Project->Options->Make->Directories->/home/user/fpc/powtils/main.
Проверяю работу, на следующей маленькой программе:
Код: Выделить всё
program test;
uses pwinit, pwmain;
begin
Out('OK!');
end;Если программа выведет что-нибудь вроде:
Код: Выделить всё
X-Powered-By...
Contert-Ty...
OK!Тогда все отлично! Идем дальше.
Веб-сервер должен отрабатывать cgi-файлы. Для того, что бы не исполнялось все подряд обычно задаются расширения файлов или часть имени, для которые могут исполняться на сервер (*.cgi, cgi). В особо запущенных случаях можно просто задать все на исполнение. Пример рабочей настройки для веб-сервера
Код: Выделить всё
shttp3 (http://smallsrv.com):
# General setting:
log=/var/log/httpd.log
detail
logday
# radmin
# Direct IPs from that Web administration will be avilable:
adm_range="127.0.0.1,192.168.0.0-192.168.255.254,10.0.0.0-10.255.255.254"
adm_deny=""
# HTTP server setting:
max=32
port=80
dir="/home/user/www"
def="index.*"
# Other
# Change "none" to your password
user=admin;none;/var/shttps;AПример 1. Простой
Код: Выделить всё
program test;
//pwinit и pwmain ОБЯЗАТЕЛЬНЫЕ юниты для работы Powtils!
uses pwinit, pwmain;
begin
//задаем разработчиков
SetHeader('X-Powered-By', 'Freepascal Team');
//задаем тип контента и кодировку (читать маны по веб-серверам и html)
SetHeader('Content-Type', 'text/html; charset=utf-8');
//вывод строки без знака CR-LF (т.е аналогично без нажатия Enter)
Out('Аналог Write');
//вывод строки со знаком CR-LF (т.е аналогично с нажатием Enter)
Outln('Аналог Writeln');
end.Пример 2. Использование шаблонов
Создадим html-шаблон index.tpl:
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{$title}</title>
</head>
<body>
<!-- BEGIN BODY -->
<h2>Статья о фсягкой фигне</h2>
<div align="center">
{$text}
</div>
<!-- END BODY -->
<!-- BEGIN FOOT -->
<div align="center">
{$ps}
</div>
<!-- END FOOT -->
</body>
</html>Наш cgi-файл index.cgi:
Код: Выделить всё
program index;
//pwinit и pwmain ОБЯЗАТЕЛЬНЫЕ юниты для работы Powtils!
uses pwinit, pwmain;
begin
//задаем разработчиков
SetHeader('X-Powered-By', CRACKO_WAREZ Team');
//задаем тип контента и кодировку (читать маны по веб-серверам и html)
SetHeader('Content-Type', 'text/html; charset=utf-8');
//устновка значений переменных в шаблоне index.tpl
SetVar('title', 'Это наш заголовок!!!','');
SetVar('text', 'Тут должно быть бла-бла-бла','');
SetVar('ps', 'Типа постскриптум','');
//используем "TemplateRaw" чтобы никаких фильтрайий нашего кода небыло
//2-й вариант - "Template('ФАЙЛ-ШАБЛОН', УРОВЕНЬ ФИЛЬТРАЦИИ)", но тут надо эксперементировать
TemplateRaw('index.tpl');
end.Пример 3. Получение данных из формы, отправленной веб-пользователем
В текущей версии разницы нет, какой тип отправки на сервер используется (GET или POST), в любом случае команда изъятия данный одна.
Создадим html-форму form.html:
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{$title}</title>
</head>
<body>
<!-- BEGIN BODY -->
<h2>Заполните эту гребанную форму отправьте нам!!!</h2>
<table border="1" align="center">
<form action="form.cgi" method="post" type="multipart/form-data">
<tr>
<td style="width: 150px;">Параметр</td>
<td style="width: 130px;">Значение</td>
</tr>
<tr>
<td>Ты хто?</td>
<td><input type="text" name="param1" size="20"></td>
</tr>
<tr>
<td>Пиши есчо!</td>
<td><input type="text" name="param2" size="20"></td>
</tr>
<tr>
<td colspan=2 style="text-align: right;"><input type="submit" name="action" value="Send"></td>
</tr>
</form>
</table>
<!-- END BODY -->
</body>
</html>Наш cgi-файл form.cgi:
Код: Выделить всё
program form;
//pwinit и pwmain ОБЯЗАТЕЛЬНЫЕ юниты для работы Powtils!
uses pwinit, pwmain, classes;
var StrLst: TStringList;
begin
StrLst := TStringList.Create;
//берем значение и добавляе в StringList
StrLst.Add(GetPostVar_S('param1',0));
//берем значение и добавляе в StringList
StrLst.Add(GetPostVar_S('param1',0));
//теперь весь вывод с формы в файле form_out.txt
StrLst.SaveToFile('form_out.txt');
end.Метод отправления данных можно комбинировать.
Типичный пример прописывания разных форм:
...action="form.cgi?cgi_form=first"...
...action="form.cgi?cgi_form=second"...
т.е. на 1-странице можно задавать множество форм в одиноковыми именами параметров, а считывание данных обрабатывать так:
Код: Выделить всё
if GetPostVar_S('сgi_form',0) = 'first' then Procedure1;
if GetPostVar_S('сgi_form',0) = 'second'...Пример 4. Загрузка файлов на сервер
Код: Выделить всё
program update;
//mode delphi - ОБЯЗАТЕЛЬНО!!!
{$mode delphi}{$H+}
uses unix, pwinit, pwmain, compactsysutils, pwenvvar;
const FUPL = 'fupl';
procedure ShowForm;
begin
Outln('<b>Обновление программы</b>');
Outln('<form method=post action="" enctype="multipart/form-data">');
Outln('<input name="'+FUPL+'" type=file size=20>');
Outln('<input type=submit value="Обновить">');
Outln('</form>');
end;
procedure ProcessUpfile;
var AbsoluteFname: string;
begin
AbsoluteFname := '/home/m230/m230n';
Out('Обновление...');
SaveUpFile(FUPL, AbsoluteFname);
if SaveUpFile(FUPL, AbsoluteFname) then
begin
Out('Обновление проведено успешно!');
end
else Out('Ошибка при обновлении!');
end;
begin
SetHeader('X-Powered-By', 'Freepascal Team');
SetHeader('Content-Type', 'text/html; charset=utf-8');
if IsUpFile(FUPL) then ProcessUpFile else ShowForm;
end.Присоединяюсь, спасибо Sawer.
Кстати, есть ли сейчас у powtils постоянное коммьюнити, куда можно отправлять багофиксы и узнавать об изменениях? Может быть список рассылки или ньюсгруп? А то проект кажется замороженным, а ведь крайне нужная штука.
Кстати, есть ли сейчас у powtils постоянное коммьюнити, куда можно отправлять багофиксы и узнавать об изменениях? Может быть список рассылки или ньюсгруп? А то проект кажется замороженным, а ведь крайне нужная штука.
а эта штука работает с fast-cgi ?
perlpunk
Насколько я знаю, нет.
Насколько я знаю, нет.
- Slavikk
- постоялец
- Сообщения: 208
- Зарегистрирован: 15.01.2007 21:34:52
- Откуда: Из лесов...
- Контактная информация:
Насколько я помню fast-cgi сидит в памяти, все наиболее часто запускаемые скрипты закачивает и хранит в памяти и там был трабл с переменными окружения что он их не до конца очищал - что не есть гут и может привести к атаке переполнения буфера. Там можно поколдовать и попробовать все CGI хранить в памяти с помощью memcached, тем самым сократив обращения к HDD (я для этого и ставил например PHP через fast-cgi).
У меня вопрос: Powtils может работать с *.dll, кто нибудь разбирался что с помощью этого можно делать и каков результат?
У меня вопрос: Powtils может работать с *.dll, кто нибудь разбирался что с помощью этого можно делать и каков результат?
Slavikk писал(а):Насколько я помню fast-cgi сидит в памяти, все наиболее часто запускаемые скрипты закачивает и хранит в памяти...
FastCGI ничего не закачивает и не кеширует. Все FastCGI скрипты просто запускаются и остаются висеть в памяти, а обмен данными с ними происходит через сокеты, а не через stdin/stdout как в обычном CGI.
Slavikk писал(а):У меня вопрос: Powtils может работать с *.dll, кто нибудь разбирался что с помощью этого можно делать и каков результат?
Если имеется ввиду версия Powtils в виде динамической библиотеки, то она используется чтобы
+ сократить расход памяти на сильнозагруженных серверах
+ ускорить компиляцию приложений и уменьшить размер бинарника
Из минусов:
- усложняется отладка
- может возникнуть путаница версий
Подробнее можно почитать тут:
http://z505.com/cgi-bin/powtils/docs/1. ... ynvsstatic
- Slavikk
- постоялец
- Сообщения: 208
- Зарегистрирован: 15.01.2007 21:34:52
- Откуда: Из лесов...
- Контактная информация:
>Все FastCGI скрипты просто запускаются и остаются висеть в памяти.
Может быть, может быть... Я подробно не разбирался, но в той документации, что я читал, говорилось что FastCGI выделяет в памяти область в которой запускается скрипт, при обращении к скрипту FastCGI копирует область памяти со скриптом и этому скопированному скрипту скармливает наш заброс. Положительный эффект в том что ненужно дёргать HDD и ждать от него ответа и загрузки скрипта, скрипт уже в памяти. Спорный плюс - для скрипта уже готово окружение с которым он будет работать, но повторюсь былы траблы с этим окружением если вы сильно плотно работаете с его переменными. Спорный плюс - вы экономите один форк на запуск приложения, это плюс, но форк по сравнению со временем загрузки скрипта с hdd - это ничто.
В общем я в FastCGI вижу плюс в основном только в том что все скрипты работают из памяти, без загрузки с hdd.
Может быть, может быть... Я подробно не разбирался, но в той документации, что я читал, говорилось что FastCGI выделяет в памяти область в которой запускается скрипт, при обращении к скрипту FastCGI копирует область памяти со скриптом и этому скопированному скрипту скармливает наш заброс. Положительный эффект в том что ненужно дёргать HDD и ждать от него ответа и загрузки скрипта, скрипт уже в памяти. Спорный плюс - для скрипта уже готово окружение с которым он будет работать, но повторюсь былы траблы с этим окружением если вы сильно плотно работаете с его переменными. Спорный плюс - вы экономите один форк на запуск приложения, это плюс, но форк по сравнению со временем загрузки скрипта с hdd - это ничто.
В общем я в FastCGI вижу плюс в основном только в том что все скрипты работают из памяти, без загрузки с hdd.
Hello, Powtils in 2008 is simply "in pause" or "slower" than usual 2004-2007 development.
This is due to Lars (me) currently developing an important invention in 2008 (mechanical, not too software related) based on gravity. I unfortunately must spend all my time on this invention as it will change the world. I have not announced it.
I am also disappointed with the quality of FPC compiler and got sick of chasing down all the bugs - more time was always spent chasing down compiler bugs than ever developing Powtils itself. But then again I have always felt that way since 2004, so nothing is new.
FastCGI was something planned for the future. There are lots of problems and issues with it to work out.
This is due to Lars (me) currently developing an important invention in 2008 (mechanical, not too software related) based on gravity. I unfortunately must spend all my time on this invention as it will change the world. I have not announced it.
I am also disappointed with the quality of FPC compiler and got sick of chasing down all the bugs - more time was always spent chasing down compiler bugs than ever developing Powtils itself. But then again I have always felt that way since 2004, so nothing is new.
FastCGI was something planned for the future. There are lots of problems and issues with it to work out.
it's a fully shit!
