Forum Webscript.Ru

Общие => Nавигатор => Тема начата: Green Kakadu от 25 Января 2002, 09:58:03

Название: Как правильно выбирать CGI скрипты
Отправлено: Green Kakadu от 25 Января 2002, 09:58:03
;) многие ищут по критерию воз-тей: мол делает что мне надо, значит рулезный скрипт, и вовсе не задумываются о его реализации.
На сайте http://perl.com появилась статья:
Finding CGI Scripts ( http://www.perl.com/pub/a/2002/01/23/cgi.html )
О том где найти скрипты, и как выбрать наилуший.
Вот некоторые рекомендации по выбору скрипта:

- используется ли в скрипте ключ -w и прагма strict?
Если да, то хорошо, значит как минимум, программер знал о существовании таковых и смог написать "корректный код", т.к. ключ и пагма strict заставляют интерпритатор Perl быть более настороженным к коду

- используется ли контроль меченных данных?
Ключ -T. Данный режим прежде всего полезен форумам, гостевым книгам, доскам объявлений, т.е. тем, где могут запостить всякую гадость, которую скрипт тупого программера может применить для каких нибудь критичных функций (верх идиотизма - разборка eval  :)  ) В общем, повышаем надежность. Такие ненадежные  данные всегда надо проверять.

- Использует ли скрипт CGI.pm
Это стандартный модуль Perl, который можно найти везде, где есть сам Перл, но некоторые умники предпочитают обрабатывать самостоятельно передаваемые данные... что чревато ошибками и защищенностью скрипта.

- Как часто скрипт обновляется?
Если часто, значит его автор заботится, следит за своим творением и пытается его сделать лучше или хотя бы конкурентноспособным

- Тех. поддержка... она есть вообще?
Очень яркий показатель. Если есть, то имеет смысл ознакомиться с проблемами, которые одолевают пользователей скрипта.
Название: во
Отправлено: Green Kakadu от 25 Января 2002, 10:25:18
судя по всему вышеизложенному, хороший CGI скрипт должен как минимум выглядеть так:

#!/usr/bin/perl -Tw
use strict;
use CGI qw/:standart/;
use vars \'$global_var\';

;) остается лишь немного дописать и скрипт готов.
Давайте сделаем супер грабилку - устроим Yandex на дому.

#!/usr/bin/perl -Tw
use strict;
use LWP::Simple;
use vars \'$url\', \'$html\';
$url=\'http://yandex.ru\';
$html=head($url);#Проверим, жив ли сайт
if ($html){
 $html=get($url);
}
else {$html=\'Яндекс Умер!\'}
$|++;
print "Content-type: text/html\\n\\n";
print $html;

Во, создан супер скрипт проверки Яндекса на живучесть.
Название: Как правильно выбирать CGI скрипты
Отправлено: от 25 Января 2002, 13:24:55
Ага и занимать он будет как твой код + CGI.pm т.е. где-то 500 байт + 300 кбайт. Мда. Большое удовольствие интерпритатору интерпритировать всё это...
Название: Как правильно выбирать CGI скрипты
Отправлено: Chs от 25 Января 2002, 13:37:13
Цитировать

Ага и занимать он будет как твой код + CGI.pm т.е. где-то 500 байт + 300 кбайт. Мда. Большое удовольствие интерпритатору интерпритировать всё это...

Ну да, лучше изобрести велосипед и сделать разбор параметров и большую часть функций CGI самому, влепив пару-тройку ошибок, сделав только метод гет, потом добавить пост, когда он понадобиться, помучиться с разбором multipart/form-data...:) В процессе использования своих функций наткнуться на ошибки.:)
Для приобретения навыков программирования это конечно полезно.:)
Кстати про експорт только части функций модуля может слышали? Тогда и интерпретатор "получит удовольствие"...:)
Название: Как правильно выбирать CGI скрипты
Отправлено: от 27 Января 2002, 22:47:09
а про CGI::Lite не слышали, что ли?
Название: мррррк)))
Отправлено: flymio от 29 Января 2002, 12:43:20
уууу ... навеяло ...
грабилка запросов яндекса))) некрасиво, зато работает)))


но самое интересное))) - никому не нужна))) о как)))


#!/usr/bin/perl
require IO::Socket;
print "Content-type: text/html\\n\\n";
print "\\n";
for($q=0;$q<=3;$q++)
{
my($host, $port) = ("yandex.ru",80);
$port ||= 80;
my $url = "/last20.html";
my $remote = IO::Socket::INET->new(Proto     => "tcp",
PeerAddr  => $host,
PeerPort  => $port,
);
unless ($remote) {
die "cannot connect to http daemon on $host";
}
$remote->autoflush(1);
print $remote "GET $url HTTP/1.0\\n\\n";
my $response_line = 0;
my $header_terminator = 0;
my @msg = ();
my $i=0;
while ( <$remote>) {
$i++;
if ($i eq 29){$v = $_;last;}
}
close $remote;
$beg=\'\';
$midl = \'
 · $end = \'\';
open(ST,">>yandex.txt");
while ($v =~ s/$beg(.+?)$midl(.+?) target=_blank>(.+?)$end/ /e)
{print ST "$1;;$3\\n";}
close ST;
}
exit;
Название: ну вот)))
Отправлено: flymio от 29 Января 2002, 13:06:18
так всегда))) на самом интересном месте ... а насчёт грабилки ? ...
какая бы она ни была кривая, она не делает ничего необычного, она просто тупо грабит запросы со страницы,
при этом мы имеем такую интересную информацию, что же ищут пользователи ...


у меня сейчас база (текстовая) уже перевалила 500 мг ... там есть таааакое ... просто жуть)))
особенно запросы по слову моя ...
говорю сразу, они имеют слегка ненормальный характер)))
Название: ага
Отправлено: Green Kakadu от 29 Января 2002, 13:47:24
Цитировать
там есть таааакое ... просто жуть)))
особенно запросы по слову моя ...
говорю сразу, они имеют слегка ненормальный характер)))

могу себе представить ;) Правда вроде последние пол-года там запросы несколько не те - ну одно и тоже за последний час, очень часто один и тот же запрос крутится несколько раз в течении часа, т.е. частоту того или иного запроса уже не определишь, а вот картину что ищут, да.
:) Я тоже делал такую
Название: Как правильно выбирать CGI скрипты
Отправлено: puh от 13 Февраля 2002, 19:35:30
Green Kakadu
Очень ценю и уважаю мнение, но...
Если не будем делать ошибок, то не будет и учебы. Очевидно, чтобы стать хорошим Perl-программистом придется наломать дров на начальном этапе.
А у вас разве сразу все было как надо и как следует? Что-то не верится...
Название: хы
Отправлено: Green Kakadu от 14 Февраля 2002, 02:27:42
Цитировать
А у вас разве сразу все было как надо и как следует?

у меня и сейчас все криво получается ;) : все что написано в статье, это нечто вроде перевода (хотя и несколько от него и далеко).

А так согласен, используя тот же CGI.pm можно писать скрипты и при этом ;) смутно представлять как же из формы данные получают, что не есть хорошо.
С др. стороны :) ошибок то действительно меньше будет.
Название: а PHP? ASP?
Отправлено: Xander от 14 Февраля 2002, 18:34:09
Про них такие ценные статьи имеются?