Forum Webscript.Ru
Общие => Nавигатор => Тема начата: 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, который можно найти везде, где есть сам Перл, но некоторые умники предпочитают обрабатывать самостоятельно передаваемые данные... что чревато ошибками и защищенностью скрипта.
- Как часто скрипт обновляется?
Если часто, значит его автор заботится, следит за своим творением и пытается его сделать лучше или хотя бы конкурентноспособным
- Тех. поддержка... она есть вообще?
Очень яркий показатель. Если есть, то имеет смысл ознакомиться с проблемами, которые одолевают пользователей скрипта.
-
судя по всему вышеизложенному, хороший 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.pm т.е. где-то 500 байт + 300 кбайт. Мда. Большое удовольствие интерпритатору интерпритировать всё это...
-
Ага и занимать он будет как твой код + CGI.pm т.е. где-то 500 байт + 300 кбайт. Мда. Большое удовольствие интерпритатору интерпритировать всё это...
Ну да, лучше изобрести велосипед и сделать разбор параметров и большую часть функций CGI самому, влепив пару-тройку ошибок, сделав только метод гет, потом добавить пост, когда он понадобиться, помучиться с разбором multipart/form-data...:) В процессе использования своих функций наткнуться на ошибки.:)
Для приобретения навыков программирования это конечно полезно.:)
Кстати про експорт только части функций модуля может слышали? Тогда и интерпретатор "получит удовольствие"...:)
-
а про CGI::Lite не слышали, что ли?
-
уууу ... навеяло ...
грабилка запросов яндекса))) некрасиво, зато работает)))
но самое интересное))) - никому не нужна))) о как)))
#!/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;
-
так всегда))) на самом интересном месте ... а насчёт грабилки ? ...
какая бы она ни была кривая, она не делает ничего необычного, она просто тупо грабит запросы со страницы,
при этом мы имеем такую интересную информацию, что же ищут пользователи ...
у меня сейчас база (текстовая) уже перевалила 500 мг ... там есть таааакое ... просто жуть)))
особенно запросы по слову моя ...
говорю сразу, они имеют слегка ненормальный характер)))
-
там есть таааакое ... просто жуть)))
особенно запросы по слову моя ...
говорю сразу, они имеют слегка ненормальный характер)))
могу себе представить ;) Правда вроде последние пол-года там запросы несколько не те - ну одно и тоже за последний час, очень часто один и тот же запрос крутится несколько раз в течении часа, т.е. частоту того или иного запроса уже не определишь, а вот картину что ищут, да.
:) Я тоже делал такую
-
Green Kakadu
Очень ценю и уважаю мнение, но...
Если не будем делать ошибок, то не будет и учебы. Очевидно, чтобы стать хорошим Perl-программистом придется наломать дров на начальном этапе.
А у вас разве сразу все было как надо и как следует? Что-то не верится...
-
А у вас разве сразу все было как надо и как следует?
у меня и сейчас все криво получается ;) : все что написано в статье, это нечто вроде перевода (хотя и несколько от него и далеко).
А так согласен, используя тот же CGI.pm можно писать скрипты и при этом ;) смутно представлять как же из формы данные получают, что не есть хорошо.
С др. стороны :) ошибок то действительно меньше будет.
-
Про них такие ценные статьи имеются?