Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

33_CGI::WebOut: новая жизнь старых модулей (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Aug 24, 2003 8:34 pm ()
   Post subject: 33_CGI::WebOut: новая жизнь старых модулей
Reply with quote

Вышла исправленная версия CGI::WebOut 2.0.
dklab.ru/chicken/33.html
Back to top
View user's profile Send private message Send e-mail
flet
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Dec 26, 2003 1:34 am (спустя 4 месяца 1 день 4 часа 59 минут)
   Post subject: BUG:(
Reply with quote

конструкция:
print(++$c)."hi!"; # a)
# или
print(++$c),"hi!"; # b)

не работает в полном объеме...
выбирается только 1 элемент.

пашет только так:

print int(++$c)."hi!";
print int(++$c),"hi!";

p.s.: в стандартном "print" работают все случаи...

С уважением, flet.ru
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Dec 26, 2003 3:09 am (спустя 1 час 35 минут)
   Post subject:
Reply with quote

Ну, тут уж я ничего поделать не могу — это чистый глюк Perl по перехвату print.
Back to top
View user's profile Send private message Send e-mail
Kleo
Заглянувший



Joined: 29 May 2006
Posts: 8
Карма: -1
   поощрить/наказать


PostPosted: Fri Nov 23, 2007 6:28 pm (спустя 3 года 10 месяцев 28 дней 15 часов 19 минут; написано за 11 минут 44 секунды)
   Post subject:
Reply with quote

Дмитрий, по работе WebOut возник вопрос вывода варнингов и ошибок в лог. В кратце:
Отлаживаю работу ajax, все запросы (обычные и ajax) идут на один входной файл-обработчик. В нем соответсвенно стоит use WebOut, который перехватывает все варнинги и перенаправляет их в браузер. Для обычных запросов это как раз именно то, что требуется, а для ajax отладочная инфомация в браузер уже не попадает. Предпочтительнее было бы выводить ее в лог. Посмотрел исходники WebOut, переменная
Code (perl): скопировать код в буфер обмена
our (www.perldoc.com/perl5.6/pod/func/our.html) $ErrorReporting = 1;
отвечает только за сам факт вывода или не вывода отладочной информации:
Code (perl): скопировать код в буфер обмена
  if(!@Errors || !$ErrorReporting){
    @Errors=();
          return (www.perldoc.com/perl5.6/pod/func/return.html) ;
  }
, функция
Code (perl): скопировать код в буфер обмена
__PrintAllErrors
вообще не предусматривает вывод в лог.
Посему возник вопрос как можно наименьшей кровью подружить лог-файл и WebOut? Создавать отдельный файл-обработчик для ajax не хотелось бы, т.к. он будет отличаться от основного только отсутствием use WebOut. Создание механизма транслирования сообщений в браузер тоже не выглядит лучшим решением.
Кстати, не могли бы пояснить необходимость наличия в функции __PrintAllErrors следующих строк:
Code (perl): скопировать код в буфер обмена
  if (IsWebMode) {
    if ($ErrorReporting == ER_Err2Browser) {
      #
      echo "</script>","</xmp>","</pre>","</table>"x6,"</tt>"x2,"</i>"x2,"</b>"x2,"</div>"x10,"\n";
    }
Верно ли я понимаю, что закрытие данных тегов позволяет гарантированно обеспечиваеть отображение сообщений об ошибках в браузере?
Back to top
View user's profile Send private message
EmbargEr
Заглянувший



Joined: 24 Aug 2009
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Mon Aug 24, 2009 9:50 am (спустя 1 год 9 месяцев 15 часов 21 минуту; написано за 5 минут 41 секунду)
   Post subject:
Reply with quote

Не знаю, честно говоря, куда писать, темы по четвертой набле нету.
Итак.
Code (any language): скопировать код в буфер обмена
embarger@***:~$ apache2 -V
Server version: Apache/2.2.4 (Ubuntu)
Server built:   Mar  5 2009 23:56:26
Server's Module Magic Number: 20051115:5
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
[итд]
Code (any language): скопировать код в буфер обмена
embarger@***:~$ perl -V | more
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
[итд]

.htacces
Code (any language): скопировать код в буфер обмена
<Files ~ "\.(pl|cgi)$">
        SetHandler perl-script
        PerlResponseHandler ModPerl::RegistryPrefork
        Options +ExecCGI
        PerlSendHeader On
</Files>
Code (any language): скопировать код в буфер обмена
cpan[1]> install CGI::WebOut
CGI::WebOut is up to date (2.25).
Code (any language): скопировать код в буфер обмена
embarger@***:***$ cat webout.pl
Code (perl): скопировать код в буфер обмена
#!/usr/bin/perl -w
        use CGI::WebOut;
        #
        print (www.perldoc.com/perl5.6/pod/func/print.html) "Hello world!";
        warn (www.perldoc.com/perl5.6/pod/func/warn.html) " .\n";
        #
        #
        #no_such_function();
 
Code (any language): скопировать код в буфер обмена
А теперь в браузере:
Code (xml): скопировать код в буфер обмена
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 admin@*** and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.5 mod_perl/2.0.2 Perl/v5.8.8 Server at *** Port 80</address>
</body></html>
В это время в логе:
Code (any language): скопировать код в буфер обмена
[Mon Aug 24 10:35:28 2009] [error] [client ***] malformed header from script. Bad header=Hello world!now": webout.pl
[Mon Aug 24 10:35:28 2009] [warn] /_trash/webout.pl did not send an HTTP header
Одним словом, модуль у меня не работает. Не понимаю почему.

Да, вот еще результаты попыток сделать руками (набла №3).
Code (perl): скопировать код в буфер обмена
#!/usr/bin/perl -w

        use warnings;
        use strict;

        print (www.perldoc.com/perl5.6/pod/func/print.html) "Content-type: text/html\n\n";
       
        #
        my @Errors=();
        #
        #
        open (www.perldoc.com/perl5.6/pod/func/open.html)(STDERR,">/dev/null")
                or open (www.perldoc.com/perl5.6/pod/func/open.html)(STDERR,">nul")
                or die (www.perldoc.com/perl5.6/pod/func/die.html) "Can't find null device!";
        #
        $SIG{__WARN__}=sub { push (www.perldoc.com/perl5.6/pod/func/push.html) @Errors, "Warning: ".shift };
        $SIG{__DIE__} =sub { push (www.perldoc.com/perl5.6/pod/func/push.html) @Errors, "Fatal: ".shift };
       
        print (www.perldoc.com/perl5.6/pod/func/print.html) "Test";
        die (www.perldoc.com/perl5.6/pod/func/die.html) "DIE!";
       
        print (www.perldoc.com/perl5.6/pod/func/print.html) @Errors;
Code (xml): скопировать код в буфер обмена
Test<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 admin@*** and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.5 mod_perl/2.0.2 Perl/v5.8.8 Server at *** Port 80</address>
</body></html>
Варнинги действительно сохраняются в массив @Errors, однако при появлении die он мгновенно завершает вывод и рисует мне что-то непонятное. 200 ОК — у меня все хорошо, но ошибка.

Надеюсь на помощь, я с Перлом только разбираюсь, откровенно говоря — не понимаю, что происходит. Заранее спасибо.
Back to top
View user's profile Send private message
Андрей Ильин
Заглянувший



Joined: 08 Apr 2005
Posts: 7
Карма: 1
   поощрить/наказать


PostPosted: Sat Oct 23, 2010 12:30 pm (спустя 1 год 1 месяц 30 дней 2 часа 39 минут; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

БИТАЯ ССЫЛКА

При входе в местный репозиторий получаю error403.
dklab.ru/chicken/mod/ppd
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML