Добрый день. Я сейчас прохожу курс повышения квалификации - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?
|
Работа в IP-сетях
Передача файлов
Во Всемирной сети Интернет насчитывается огромное количество файловых серверов, где хранятся архивы программ, документация и другая информация. FTP (File Transfer Protocol) - это протокол, специально созданный для передачи файлов. Обмен файлами остается одной из постоянных задач сетевого программирования, которая легко решается средствами языка Perl. В поставке Perl имеется стандартный модуль Net::FTP, реализующий FTP-клиента, который позволяет весьма просто организовать обмен файлами с сервером по протоколу FTP - например, автоматизировать обновление нужных файлов с сервера. Далее приводится программа, которая с помощью команд FTP загружает с сервера файл, если он имеет более позднее время изменения, чем его локальная копия:
use Net::FTP; # используем модуль работы с FTP my $server = 'ftp.server.org'; # имя или адрес сервера my $file = 'file.name'; # имя файла my $ftp = Net::FTP->new($server) # соединяемся с сервером or die "Ошибка соединения с $server:$@"; $ftp->login('ftp','ftp') # указываем имя и пароль or die " Ошибка регистрации:", $ftp->message; $ftp->cwd("/pub") # переходим в каталог or die "Ошибка смены каталога:", $ftp->message; my $time_ftp = $ftp->mdtm($file) # время изменения на сервере or die; my $time_old = (stat($file))[9]; # время создания копии if ($time_ftp > $time_old) { # если файл на сервере новее, $ftp->binary; # то в двоичном режиме $ftp->get($file) # загружаем файл or die "Ошибка загрузки: ", $ftp->message; utime($time_ftp, $time_ftp, $file); # и меняем время файла } $ftp->quit; # заканчиваем сеанс связи
Поскольку в классе Net::FTP реализованы остальные команды протокола FTP, с его помощью можно разрабатывать гораздо более сложные программы файлового обмена. Кроме этого класса, в архивах CPAN можно найти много других модулей для обмена файлами с FTP-серверами.
Электронная почта
Электронная почта (e-mail) была и остается одним из самых популярных сетевых сервисов. Электронная почта базируется на асинхронной доставке почтового сообщения (message) с одного почтового сервера на другой с помощью протокола SMTP (Simple Mail Transfer Protocol). Почтовые сообщения каждого пользователя хранятся на сервере в отдельном почтовом ящике (mail-box). Клиентская почтовая программа (Mail User Agent, MUA) забирает почту с сервера с помощью одной из версий протокола POP (Post-Office Protocol) или предоставляет пользователю непосредственный доступ к ящику на почтовом сервере с помощью протокола IMAP (Internet Mail Access Protocol).
Естественно, что в Perl имеется множество средств работы с электронной почтой. По электронной почте можно организовать автоматическое уведомление системных администраторов или пользователей о наступлении определенного события. С помощью сообщений электронной почты организуется регулярная автоматическая рассылка информации, например, счетов клиентам. При работе с почтой можно воспользоваться стандартными модулями - Net::SMTP для отправки сообщений и Net::POP3 для их получения. Приведем пример простой программы, отправляющей сообщение электронной почты:
use Net::SMTP; # используем класс для отправки e-mail my $mail_server = 'shokhirev.com'; # почтовый сервер my $to_user = 'mikhail@shokhirev.com'; # получатель my $from_user = 'mshock@shadrinsk.net'; # отправитель $smtp = Net::SMTP->new(Host=>$mail_server);# соединяюсь $smtp->mail($from_user); # пишу $smtp->to($to_user); # получателю $smtp->data(); # письмо $smtp->datasend("To: $to_user\n"); # $smtp->datasend("Subject: Lectures on Perl 5\n"); $smtp->datasend("\n"); $smtp->datasend("Сообщаем о публикации на intuit.ru\n"); $smtp->datasend("курса лекций по Perl 5\n"); $smtp->dataend(); # заканчиваю $smtp->quit; # отсоединяюсь
Если нужно в программе проверить почтовый ящик на сервере, то с помощью класса Net::POP3 не составит труда написать короткую программу, принимающую электронную почту. Например, такую:
use Net::POP3; # используем класс для получения e-mail my $mail_server = 'shadrinsk.net'; # почтовый сервер my $user = 'mshock'; # почтовый ящик my $password = 'secret'; # пароль $pop = Net::POP3->new($mail_server); # подключаюсь if ($pop->login($user, $password) > 0) {# регистрируюсь my $numbers = $pop->list; # получаю номера писем foreach my $numbers (keys %$numbers) {# по номеру my $message = $pop->get($numbers); # получаю письмо print @$message; # печатаю его $pop->delete($numbers); # удаляю с сервера } } $pop->quit; # отсоединяюсь
На серверах CPAN есть множество программ для работы с электронной почтой, включая серверы. На Perl написана свободно распространяемая почтовая система с web-интерфейсом Open WebMail (openwebmail.org). На нем же написана и одна из самых известных и эффективных серверных систем фильтрации спама - SpamAssassin.
Системы обмена сообщениями
Системы мгновенного обмена сообщениями (instant messaging), иногда также называемые Интернет-пейджерами, получили огромное распространение: миллионы людей ежедневно общаются с помощью ICQ, Jabber, AOL Instant Messenger или Yahoo!Messenger. В архивах на сайте CPAN можно найти Perl-модули для работы со всеми этими системами. Хотя этот обмен сообщениями ориентирован на взаимодействие людей, его можно использовать для программного извещения пользователя о каком-либо событии. Для примера напишем программу, отправляющую сообщение с использованием открытого протокола мгновенного обмена сообщениями XMPP/Jabber (дополнительный модуль Net::Jabber нужно установить из архива CPAN). В примере после соединения с Jabber-сервером отправляется сообщение пользователю, а после получения от него ответа работа завершается:
use Net::Jabber; # подключаем класс работы с Jabber use utf8; # в Jabber используется UTF-8 my $server = 'jabber.shadrinsk-city.ru'; # сервер my $port = 5222; # порт my $username = 'perl'; # отправитель my $password = 'password'; # его пароль my $resource = 'jud'; # ресурс my $to_user = 'mshock@jabber.ru'; # получатель my $client = new Net::Jabber::Client(); # создаем клиента $client->SetCallBacks( # указываем обработчики событий: onconnect => \&on_connect, # при подключении onauth => \&on_auth, # при регистрации message => \&on_message, # при получении сообщения ); $client->Execute( # соединяемся с сервером hostname=>$server, port=>$port, username=>$username, password=>$password, resource=>$resource, register=>1, connectsleep=>0, connectattempts=>1, ); # завершение программы произойдет в on_message sub on_connect { # выполнится при подключении к серверу print "Подключен к $server:$port\n"; } sub on_auth { # выполнится при регистрации на сервере print "Зарегистрирован как $username\n"; $client->MessageSend( # ОТПРАВЛЯЕМ СООБЩЕНИЕ to=> $to_user. '/' .$resource, subject=>'сообщение от Perl', body=>'Привет, Jabber!' ); } sub on_message { # выполнится при получении сообщения my $sid = shift; # извлекаем номер и текст my $message = shift; # ответа и выводим его: print "Тема:", $message->GetSubject(), "\n"; print "Сообщение:", $message->GetBody(), "\n"; $client->Disconnect(); # отключаемся от сервера exit(0); # и завершаем работу }
В этом примере демонстрируется прием программирования, распространенный при работе в многозадачной среде: главная программа организует бесконечный цикл обработки событий, для реагирования на которые вызываются обработчики событий. Конечно, помимо обмена сообщениями Jabber предоставляет целый набор средств для полноценного общения, а Perl дает возможность работать с ними.
Есть примеры использования Perl для разработки шлюзов между IP-сетями и беспроводными сетями. На Perl написан свободно распространяемый пейджинговый шлюз Sendpage (www.sendpage.org). Класс Net::SNPP занимается отправкой сообщений на пейджер по протоколу SNPP (Simple Network Paging Protocol), а модуль Net::SMS служит для работы со службой SMS-сообщений для клиентов GSM-телефонии. Теперь мало кого удивляет, что вскоре после появления очередной новой технологии передачи данных на CPAN выкладываются Perl-модули для работы с ней.