Раздел: Разработка
|
|
|
|
Socks-сервер - для его создания нам понадобятся две библиотеки из cpan: IO::Select и IO::Socket::Socks . Первая для обмена информацией между соединяемым хостом, вторая, собственно, для создания socks-сервера и socks-клиента. Для создания Socks-клиента достаточно прочитать документацию на cpan и посмотреть пример - там все более-менее расписано, а вот описание socks-сервера обделено вниманием. К счастью, в каталоге автора IO::Socket::Socks есть пример создания ( subs.pm ), его то мы и возьмем за основу, слегка допилив напильником и обеспечив многозадачностью (многоклиентовостью, если хотите :) )
Долго же я бился над передачей русского текста в jabber...
Перепробовал многие варианты:
исходный текст в UTF-8 == кракозяблы
исходный текст в WIN == кракозяблы
исходный текст в KOI8 == кракозяблы
utf8::decode($message); == кракозяблы
Ничего не помогало, пока случайно не наткнулся на исходник Jabber Shell Bot
Решение не очевидное, но, как ни странно, работающее:
Перепробовал многие варианты:
исходный текст в UTF-8 == кракозяблы
исходный текст в WIN == кракозяблы
исходный текст в KOI8 == кракозяблы
utf8::decode($message); == кракозяблы
Ничего не помогало, пока случайно не наткнулся на исходник Jabber Shell Bot
Решение не очевидное, но, как ни странно, работающее:
Возникла необходимость грабить и парсить одну страничку, находясь в локальной сети с MS Windows Server Active Directory и через прокси (в моем случе - это MS ISA-Server).
Parsing of undecoded UTF-8 will give garbage when decoding entities at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol.pm line 114
Вот такое предупреждение в логах часто мне попадается в аутсорсинговых проектах.
Вот такое предупреждение в логах часто мне попадается в аутсорсинговых проектах.
Что такое CPAN?
CPAN (Comprehensive Perl Archive Network) - Всеобщий сетевой архив Перл - это огромная коллекция программного обеспечения на/для Perl, а также документации. Этот архив доступен по адресу http://www.cpan.org . Также CPAN - это один из модулей для Perl (CPAN.pm), который позволяет значительно упростить установку модулей, опубликованных в этом архиве.
CPAN (Comprehensive Perl Archive Network) - Всеобщий сетевой архив Перл - это огромная коллекция программного обеспечения на/для Perl, а также документации. Этот архив доступен по адресу http://www.cpan.org . Также CPAN - это один из модулей для Perl (CPAN.pm), который позволяет значительно упростить установку модулей, опубликованных в этом архиве.
Как избежать передачи пользовательских переменных оболочке ОС при вызове exec() и system()?
Практически полный список всех perl-функций. Подробнее, но на английском языке, только тут: http://perldoc.perl.org/index-functions.html
Ну вот, добрался прогресс и до нас. Сегодня пришло тех.задание проапдейтить мой SEO-инструмент, что б можно было использовать домены в зоне .рф. Казалось бы что тут сложного, а не тут-то было, из четырех опробованных готовых библиотек, найденных на CPAN, только одна корректно отработала.
Недавно узнал о существовании специальной переменной Perl, которая называется "_". Да-да, это именно "_", а не $_.
Иногда очень не хватает ssh-доступа на том или ином хостинге, но выход есть. Можно, например, поставить PHPShell и использовать его, если хитрый и коварный хостер не запретил вызов проседуры proc_open() . Еще можно поискать перловые решения или же написать скрипт самому из, буквально, десяти строчек.
Простой способ преобразования из десятичной в шестнадцатеричную и обратно:
Проблема
Имеется десятичное число, которое необходимо вывести в двоичном представлении, или наоборот, двоичная последовательность, которую требуется преобразовать в десятичное число. Такие задачи часто возникают при отображении нетекстовых данных - например, полученных в процессе взаимодействия с некоторыми системными функциями и программами.
Имеется десятичное число, которое необходимо вывести в двоичном представлении, или наоборот, двоичная последовательность, которую требуется преобразовать в десятичное число. Такие задачи часто возникают при отображении нетекстовых данных - например, полученных в процессе взаимодействия с некоторыми системными функциями и программами.
- помогите, перестали вытягиваться HTTPS-сайты с помощью LWP. Пишет про ошибку: Can't verify SSL peers without knowning which Certificate Authorities to trust
На стороне web-сервера определить операционную систему пользователя можно, практически, только одним способом: через переданный User-Agent .
Если у вас в коде предполагается делать не единичные http-запросы, то наверняка вы создаете отдельный метод для этого, да бы исключить повторений в коде. Вот два моих решения, основанные на LWP и AnyEvent::HTTP
Мы рассмотрим AnyEvent на примере yandex паука, который собирает организации с maps.yandex.ru по поисковому слову (например "аптека"). Но перед этим разберемся с тем, что нам понадобится.
Документация в Excel очень удобна для менеджеров и бухгалтеров, поэтому практически в любом корпоративном проекте есть кнопка "экспортировать в Excel". Для создания красивого excel-документа, средствами perl, существует удобный модуль Excel::Template , создающий xls на основе xml-шаблонов.
Есть несколько вариантов работы LWP через Socks, вот некоторые из них.
Я уже писал ранее про " разбивку по страницам ", но этот метод имеет один существенный недостаток: если мы работаем с базой данных огромных размеров, то, во-первых теряется много времени на выборку всех записей, а во-вторых - может не хватить памяти для хранения выбранных результатов перед тем, как мы их отдадим на съедение split_page
Как известно mod_perl стартует отдельным процессом и для того, что бы web-сервер правильно нашел все ваши самописные библиотеки, существует несколько способов.
----------------------------------------
# в $line заносим 4ре байта
my $line = 'lpo0';
# переводим байты в десятичную цифру
my $dec = hex(unpack('H*', $line));
----------------------------------------
# в $line заносим 4ре байта
my $line = 'lpo0';
# переводим байты в десятичную цифру
my $dec = hex(unpack('H*', $line));
----------------------------------------
Ваш сайт набирает обороты посещаемости, web-сервер начинает скрипеть и шататься от увеличивающихся нагрузок и время загрузки страницы сайта начинает неуклонно расти... Ну что ж, значит вам пришло время пересмотреть свои скрипты и обратить свой взор на одну из технологий, помогающих снизить нагрузку на сервер при большом количестве запросов к нему: FastCGI или mod_perl
Столкнулся сегодня с проблемой - конфигурация web-сервера и скриптов под mod_perl для Apache2 разительно отличается от конфигурации под первый Apache.
Как же настроить сервер и готовые скрипты?
Как же настроить сервер и готовые скрипты?
Всякий, кто использует в программе анонимные хэши и массивы, не раз сталкивался с необходимостью создания автономного и независимого дубликата переменной. Вариантов решения много, в том числе и с помощью сериализации.
Данный метод, split_page() , предназначен для разбивки данных по страницам в прямом и обратном порядке.
Практически любому разработчику приходится сталкиваться с изменением кодировки текста.
Для perl существуют уже готовые модули: Encode , Text::Iconv и Convert::Cyrillic
Для perl существуют уже готовые модули: Encode , Text::Iconv и Convert::Cyrillic
Time::HiRes - Набор функций для оперирования временем с точностью до микросекунды. Креме специфичных функций usleep, gettimeofday, tv_interval, setitimer , getitimer и ualarm, приводятся микросекундные аналоги функций time, sleep, alarm и т.д.
В данном документе описаны стандарты программирования (Perl, SQL, HTML) Предлагаемый список советов и требований, разумеется, не является исчерпывающим.