Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Forza

Страницы: [1] 2 3 4
1
Требуется средствами Перл создать документ (простой: состоящий из алфавитно-цифровых символов и знаков препинания) в формате, годном для печати его на бланк. Т.е. надо чтобы символы имели заданный размер и позицию при печати на бумагу.

Можно, конечно, поэкспериментировать с печатью HTML-страницы из броузера, но мне кажется, что правильнее будет разобраться с каким-нибудь модулем, преобразующим текст в PDF или что-либо ему подобное.
Итак, вопрос - на какой модуль порекомендуете обратить внимание?

2
Всем привет!

Ранее я умел вызывать обработчики событий прямо из тэга, а сейчас понадобилось вызывать одинаковые обработчики onfocus и onblur для всех элементов input type=text текущего документа. Каждому в тэг пихать названия функций не хочется, пытаюсь "зарегистрировать" обработчики для этих событий как-то по-хитрому. Пока не получается.
Рассмотрим упрощённый вариант:





Предположим, что по onfocus в текстовое поле должно записываться имя этого текстового поля, а по onblur оно должно стираться (т.е. одинаковы не обработчики разных событий, а обработчики одного события для всех элементов).

3
Perl / filehandle и use strict
« : 29 Ноября 2004, 17:14:14 »
Ничего не понимаю(с)....

Хочу открыть файл при наличии директивы use strict. При открытии типа open (FH, $fileName) вполне логично пишет "Bareword "FH" not allowed while "strict subs" in use". Как заранее объявить дескриптор такого формата, я пока в перлдоке не нашёл.
Кроме того perlopentut предлагает альтернативный вариант открытия файла: open( my $fh, $fileName ). На это версия Перла у провайдера пишет "Can\'t use an undefined value as a symbol reference", т.е. почему-то требует переменную со значением.
Конечно, я могу взять всю работу с файлом в скобки и сказать там no strict, но это будет отступление... :)

4
Perl / посчитать разницу между TIMESTAMP
« : 16 Ноября 2004, 17:22:37 »
Некоторая переменная в MySQL хранится в формате   TIMESTAMP(10), т.е. - YYMMDDHHMM. Какой самый простой способ посчитать разницу между двумя такими переменными в секундах (с учётом всех "фишек" календаря)? В perlfunc я вообще не нашёл функций, получающих секунды из форматированной даты (только наоборот).
Пока нашёл решение:
$dif = $dbh->selectrow_array ("select unix_timestamp(\'0411151552\') - unix_timestamp(\'0411151452\')");
Вопрос, можно ли как-нибудь это сделать без обращения к базе? Т.к. такую разницу надо считать очень часто. Может быть, мне поможет какой-нибудь модуль? Самому писать такую функцию лень. :)

5
Perl / нарисовать график
« : 11 Ноября 2004, 11:23:54 »
Надо на Перле нарисовать несложный график (на основе заданных промежуточных значений функции).
В сторону каких модулей посоветуете смотреть?

6
Perl / модуль для работы с SNMP
« : 05 Ноября 2004, 16:10:53 »
На cpan.perl.org есть 152(!) модуля, в названии которых присутствуют 4 буквы "SNMP".
Можете посоветовать (желательно с аргументами) какой-нибудь наиболее удобный на ваш взгляд модуль? На данный момент скрипт будет достаточно простой - он должен забирать get-ом переменные с конкретных OID, обрабатывать их и класть в базу.

7
Проясните мне, пожалуйста, следующую ситуацию.

На сайте введена система регистрации и авторизации посетителей, информация о сеансе поддерживается через куки. Т.е. если человек зашёл гостём, то после закрытия окна кука прибивается, и в следующий заход этого человека он воспринимается скриптом как новый гость. А если человек зарегистрировался и сказал, чтобы его помнили, то ему будет дана "вечная" кука.

Я решил написать простенькую систему учёта доступа к сайту и для этого завёл ещё одну всегда "вечную" куку, которая записывается юзеру при первом посещении сайта.

Итак, когда человек заходит гостём, ему даются 2 куки: "вечная" и кука сеанса, существующая до закрытия окна.
Set-Cookie: seans=someID1;
Set-Cookie: first_session=someID1; expires=Tue, 28-Oct-2014 09:26:56 GMT
(path и domain для краткости опускаю, someIDi - на практике длинные числа)
После закрытия окна в системной папке виндов Cookies сохраняется, естественно, только вечная кука в файле fileName[1].

Когда он снова зайдёт как гость, а потом авторизуется, ему пришлют 2 вечные куки.
Set-Cookie: seans=someID2; expires=Tue, 28-Oct-2014 09:27:30 GMT
Set-Cookie: first_session=someID1; expires=Tue, 28-Oct-2014 09:27:30 GMT
.

Теперь начинается непонятное для меня. После закрытия окна в папку Cookies добавляется файл fileName[2] с двумя куками, при этом fileName[1] остаётся. Почему так???
Т.е. в fileName[1] и fileName[2] находится абсолютно одинаковая инфа об одной и той же куке first_session (+ в fileName[2] инфа о куке seans). Почему броузер не удаляет fileName[1] или не пишет 2 новые куки именно в него?
В моём случае значение куки first_session в обоих файлах одинаковое, а что произойдёт, если я буду разные писать? Какое из них будет выбрано для чтения?
Как это исправить, чтобы на ПК посетителя хранился только 1 экземпляр куки с конкретным именем?

8
Регулярные выражения / регэксп е-мэйла
« : 30 Октября 2004, 11:10:35 »
Обнаружив, что в случае отправки е-мэйла на адрес, в котором юзер указал какую-нибудь лабуду, получается интернал сервер еррор, я решил проверять введённые юзером е-мэйлы.
Конечно, чтобы скрипт не валился достаточно простой проверки типа /.+@.+/, но заодно хотелось сделать максимально возможную проверку е-мэйла на похожесть на настоящий (вдруг юзер просто ошибся). Из одной книги (какой, уже не помню) давно скопировал следующий регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/, т.е.
а) до собаки имеем набор alphanumeric символов, в котором разделителями могут быть одиночные точка и/или тире
б) после собаки сначала - такой же набор с такими же разделителями, потом - набор из доменов высшего уровня (как минимум 1!), длиной от 2 до 3 символов.

Почитав тут про введение всяких разных новых доменов высшего уровня я решил, что тут как минимум есть одно неправильное условие - ограничение длины домена верхнего уровня, т.е. получим регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/

Что ещё посоветуете исправить? Хочется сделать регэксп с минимальными ограничениями, чтобы он удовлетворял всевозможным е-мэйлам, и скрипт бы не давал юзеру его обойти! Т.е. если формат е-мэйлов очень плавающий, тогда вернёмся к /.+@.+/

9
Предлагаю для вашей критики сайт, в создании которого я принимал непосредственное участие, - http://www.disctorg.ru
Т.к. я совсем не занимался дизайном, а только советовал по поводу навигации и написал весь весь скрипт на основе пожеланий заказчика, то наиболее интересно мне следующее:
а) насколько понятна навигация
б) есть ли какие-нибудь грабли в скрипте, срабатывающие при неадекватных действиях юзера

Если вдруг появится ошибка 500 или пустая страница, то опишите, пожалуйста, при каких условиях это произошло. К сожалению, у хостера (valuehost) подглючивает mysql, поэтому ошибки 500 часто возникают из-за него. :(

Не стесняйтесь регистрироваться и заказывать (т.к. грабли можно поискать и тут). Если в поле "прочее" напишите "test from webscript.ru", никто с вас денег за заказ брать не будет. :)

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

10
Perl / поэлементная конкатенация массивов
« : 23 Октября 2004, 01:37:42 »
Предположим, у меня есть 2 массива:
my @digits = ("1", "2", "3");
my @letters = ("a", "b", "c");
Можно ли одним приёмом, без перебора массивов, получить из них массив ("1a", "2b", "3c"), т.е. в котором будут "строково" сложены элементы массивов с одинаковыми индексами?

Цикл for не очень подходит, т.к. на самом деле некоторые массивы - возвращаемые значения функций, а другие - просто набор скаляров, перечисленных через запятую.

11
Perl / дисконнект от MySQL
« : 16 Октября 2004, 12:22:20 »
Работаю на Перле с MySQL через модуль DBI.
Подключаюсь через:my $dbh = DBI->connect ("DBI:mysql:host=$host_name;database=$db_name;port=$dbport", $login, $pass, {PrintError => 0, RaiseError => 1}));Отключаюсь через:$dbh->disconnect();У хостера часто при очередном подключении возникает ошибка типа
DBI connect(\'host=localhost;database=DBname;port=3306\', \'login\',...) failed: Host \'ip-address\' is not allowed to connect to this MySQL server at /usr/local/lib/perl5/site_perl/5.005/Apache/Session/Lock/MySQL.pm line 36

В службе поддержки написали, что это из-за ограничения одновременных подключений к БД. Но я перерыл весь скрипт, и уверен, что закрываю каждое подключение так, как написал выше. Этого достаточно? Если да, то в чём могут быть грабли?  :(
Можно ли как-нибудь самому узнать список подключенных к базе скриптов?

12
Второй день продолжаю выкладывать сайт хостеру. :)

Вся работа с сайтом сосредоточена в одном Perl-скрипте, который находится в www.site-name.ru/cgi-bin/script.pl. Не хочу изобретать велосипед, поэтому спрошу у вас, как принято делать, чтобы по запросу на www.site-name.ru загружался www.site-name.ru/cgi-bin/script.pl (пропись cgi-bin/script.pl в список индексных файлов не помогла :) ). Сделать index.shtml и инклудить туда скрипт через SSI? Сделать JavaScript-редирект?

13
Perl / компиляция скрипта у хостера
« : 11 Октября 2004, 15:55:32 »
Сегодня решил выложить хостеру (valuehost.ru) свой первый публичный скрипт, но не тут-то было. Он его не компиляет. При этом он не хочет компилять даже такой скрипт:
#!/usr/bin/perl
use CGI qw(-no_xhtml :standard);
print 
header(), start_html();
print 
"testing";
print 
end_html();
exit(
0);

или без использования CGI.pm:
#!/usr/bin/perl

print <<TEST_PAGE;
Content-Typetext/htmlcharset=ISO-8859-1

<!DOCTYPE html
        
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
         "http://www.w3.org/TR/html4/loose.dtd"
>
<
html lang="en-US"><head><title>Untitled Document</title>
</
head><body>testing</body></html>
TEST_PAGE

exit(0);

В логах пишут банальное Premature end of script headers:.
На локалхосте всё работает на "ура".

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

14
Perl / вывод символов через коды типа &#1103;
« : 28 Сентября 2004, 18:56:11 »
Предположим, я хочу вывести букву "я" через её код "& #1103;". При выводе кода в обыкновенном тексте - всё ок, при передаче строки с кодом в качестве параметра какой-либо функции в рез-те выводится этот же код:
#!c:/perl/bin/perl

use CGI qw(-no_xhtml :standard);

print 
header(), start_html();

print 
"&#1103;"#напечатает букву "я"

print checkbox_group (-values => [ "&#1103;"]); #напечатает "&#1103;"

print end_html();

Это как-нибудь можно побороть?

15
Базы данных / LIKE и REGEXP в MySQL
« : 27 Сентября 2004, 18:37:28 »
Интересно, а что говорят теория и практика по поводу скорости выполнения запросов LIKE или REGEXP? Будет ли какой-нибудь из двух вариантов изначально быстрее другого:
WHERE name LIKE \'d%\'
WHERE name REGEXP \'^d\'

Страницы: [1] 2 3 4