Трекинг почтовых отправлений
Анализ сервисов отслеживания почты. Технология построения интерактивного интерфейса пользователя. Определение стран отправителя и назначения. Распознавание CAPTCHA трекингов почты России и Китая. Добавление и удаление трек-кода в список пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.06.2013 |
Размер файла | 5,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
РЕФЕРАТ
В отчете рассматриваются сервисы отслеживания почтовых отправлений предоставляемые операторами почтовых услуг и сторонние сайты отслеживания почтовых отправлений. По результатам анализа сформулированы требования к сервису отслеживания почтовых отправлений, предложены алгоритмы отслеживания и распознавания капчи сервиса "Почты России" и "Почты Китая", описана система отслеживания, построенная с использованием данных алгоритмов. Полученные результаты позволят решить задачи добывания трекинговых данных от серверов почтовых служб, составляющие суть дипломной работы.
ВВЕДЕНИЕ
Почта - основной способ доставки товаров из любой точки мира до конечного потребителя. В современном мире она играет не только техническую роль, как средство доставки, но приобретает и политическое значение. Инновационные технологии и Интернет с каждым годом все увереннее проникают в жизнь общества и уже охватывают даже, казалось бы, самые закостенелые отрасли.
Сервис почтовых отправлений служит человечеству на протяжении нескольких веков, но только с развитием сети интернет в почтовых службах были изобретены онлайн сервисы, с помощью которых каждый желающий может узнать, где находится посылка в данный момент.
С подобными сервисами удобнее и спокойнее: спится лучше когда знаешь где посылка, не ждешь ее месяц, думая что ее потеряли при погрузке.
Современная технология пересылки подразумевает присвоение регистрируемым почтовым отправлениям уникального почтового идентификатора. На каждом этапе пересылки информация почтового идентификатора заносится в единую систему учёта и контроля, благодаря чему возможно отследить прохождение вашего почтового отправления через Интернет.
Данные по номеру посылки обновляются автоматически и их утеря абсолютно исключена. Информация об уникальном трекинг-номере остаётся в базе почтовых отправлений даже после того, как товар был получен на почте. Всем известно, что жертвами мошенников становятся не только покупатели, но и продавцы. Продавец, зная уникальный номер отправления, сможет лично убедиться в том, что товар доставлен и вручен адресату, тем самым избежать обмана со стороны покупателя. Эксклюзивный идентификационный номер - это гарантия безопасности для обеих сторон, совершающих между собой сделку.
1. АНАЛИЗ СЕРВИСОВ ОТСЛЕЖИВАНИЯ ПОЧТЫ
Трекинг почтовых отправлений - это, дословно с англ. «tracking», отслеживание посылок. При отправке посылке присваивается специальный уникальный идентификационный номер - трекинг номер. С помощью этого номера и онлайн-сервиса трекинга на сайтах почтовых служб, предоставляющих услугу трекинга, можно узнать состояние своей посылки. Также онлайн-трекинг посылок можно производить на специально предназначенных для этого сайтах.
Трекинг номер представляет собой некий уникальный буквенно-цифровой код, идентифицирующий каждую посылку. Например, если доставка из США осуществляется службой USPS, то трекинг номер посылки состоит из 2 букв (англ.), первая из которых - это буквенный идентификатор способа доставки (L, C или E), девяти цифр и еще 2 букв (англ.). Когда посылка прибывает в страну получателя трекинг осуществляется местными почтовыми операторами. Отследить свою посылку можно, посетив сайт национальной почтовой службы страны-получателя или же региональный сайт международной курьерской или почтовой компании. Важно помнить, что трекинг номер на сайтах национальных почтовых операторов вводится всегда только заглавными буквами. Трекинг посылок доступен и для больших грузов, и для маленьких почтовых отправлений вроде письма или открытки, но в зависимости от используемого способа доставки, посылка может и не отслеживаться.
Трекинг номер сообщает получателю отправитель посылки. При самостоятельной покупке товаров на аукционе eBay или в различных интернет-магазинах Америки, отправляет посылку продавец, он же сообщает получателю трекинг номер, например, по e-mail. Трекинг может быть доступен не сразу же, а по прошествии нескольких дней.
Трекинг посылок - полезная и удобная услуга, ведь она позволяет наискорейшим образом узнать о судьбе своей посылки.
1.1 Обзор официальных трекингов некоторых стран
С каждым годом количество людей, пользующихся услугами всевозможных интернет-магазинов и онлайн аукционов, неуклонно растет. И это неудивительно, ведь во всемирной паутине не составляет особого труда найти очень выгодное предложение или распродажу, которая позволит купить необходимую вещь гораздо дешевле чем в местных торговых центрах или специализированных магазинах. Большинство покупателей в процессе онлайн шопинга в первую очередь ориентируются на цену товара, и это вполне логично. Однако, не стоит забывать и о таком немаловажном факторе, как доставка заказа, так как проблемы, связанные с получением покупки, способны полностью затмить радость от выгодной сделки. Именно официальные трекинги почтовых отправлений всегда готовы нам помочь отследить местонахождение нашей посылочки и удостовериться, что с ней всё в порядке.
1.1.1 Отслеживание почтовых отправлений почты России
URL: russianpost.ru - сервис почты России (рис. 1), обеспечивающий отслеживание операций обработки РПО (в том числе международных) по почтовому идентификатору (либо внутрироссийскому 14-символьному, либо международному). Вид номера в чеке выглядит: 115127(80)15138, его следует вводить: 11512780151384 (весь номер без скобок и пробелов). В случае отслеживания международного почтового отправления и EMS-отправления необходимо вводить 4 буквы и 9 цифр. Буквы вводятся обязательно заглавные и в латинском алфавите. Пример: YF123456789RU (весь номер без пробелов).
Отличительной чертой является наличие не очень сложной CAPTCHA. После ввода идентификатора посылки и CAPTCHA, информация перед пользователем представляется в виде таблицы, что довольно удобно для восприятия.
Рисунок 1 - Трекинг почты России
Отслеживание почтовых отправлений почты Сингапура
URL: singpost.com - сервис почты Сингапура (рис. 2), обеспечивающий отслеживание почтовых отправлений типа:
• for Registered Article: RR672819092SG;
• for SMS Mail: SP002828A900110090004;
• for SmartPac: SM000000001SG.
Введенный номер посылки для отслеживания должен содержать не менее одной цифры и не более 20 цифр.
CAPTCHA отсутствует. Время ответа сервера колеблется от 2 до 5 секунд. Вывод информации пользователю предоставляется в виде таблицы.
почта интерактивный интерфейс пользователь
Рисунок 2 - Трекинг почты Сингапура
Отслеживание почтовых отправлений почты США
URL: tools.usps.com - сервис почты США (рис. 3), обеспечивающий отслеживание почтовых отправлений типа:
• certified Mail™ : 7000 0000 0000 0000 0000;
• USPS Tracking™: 0300 0000 0000 0000 0000;
• Signature Confirmation™: 2300 0000 0000 0000 0000;
• express Mail®: EA 000 000 000 US;
• express Mail International®: EC 000 000 000 US;
• priority Mail International™: CP 000 000 000 US;
• registered Mail™: RA 000 000 000 US;
• global Express Guaranteed®: 82 000 000 00.
CAPTCHA отсутствует. Вывод информации пользователю предоставляется в виде таблицы.
Рисунок 3 - Трекинг почты США
Отслеживание почтовых отправлений Китая
URL: intmail.183.com.cn - сервис почты Китая (рис. 4) обеспечивает отслеживание почтовых отправлений по международному идентификатору типа RRxxxxxxxxxCN. Где первые две буквы обозначают тип почты и почтового отправления, последние две буквы страну отправления, то есть CN (China) -- Китай, а между ними 9 цифр - уникальный идентификатор в стране отправления посылки.
Отличительной чертой является наличие сложной CAPTCHA. После ввода трек-кода посылки и CAPTCHA, информация перед пользователем представляется в виде таблицы, что довольно удобно для восприятия. Стоит отметить, что сайт доступен в двух языковых версиях: English и Chinese.
Рисунок 4 - Трекинг почты Китая
Отслеживание почтовых отправлений Беларуси
URL: search.belpost.by - сервис почты Беларуси (рис. 5) обеспечивает слежение за отправлениями по РБ и слежение за международными отправлениями, используя международный идентификатор типа RRxxxxxxxxxBY. Где первые две буквы обозначают тип почты и почтового отправления, последние две буквы страну отправления, то есть BY (Belarus) Беларусь, а между ними 9 цифр - уникальный идентификатор в стране отправления посылки.
CAPTCHA отсутствует, информация перед пользователем представляется в виде таблицы с двумя столбцами, что менее удобно для восприятия, чем у вышеописанных сервисов почтовых служб.
Рисунок 5 - Трекинг почты Беларуси
Отслеживание почтовых отправлений Украины
URL: http://ukrposhta.ua/vidslidkuvati-forma-poshuku - сервис почты Украины (рис. 6), обеспечивающий отслеживание посылки по почтовому идентификатору (либо внутрироссийскому 13-символьному, либо международному).
CAPTCHA отсутсвует. Информация перед пользователем представляется в виде одной строки.
Рисунок 6 - Трекинг почты Украины
Отслеживание почтовых отправлений Гонконга
URL: app3.hongkongpost.com/CGI/mt/enquiry.jsp - сервис почты Гонконга (рис. 7), обеспечивающий отслеживание почтовых отправлений по международному идентификатору типа: RRxxxxxxxxxHK. Где первые две буквы обозначают тип почты и почтового отправления, последние две буквы страну отправления, то есть HK (HongKong) -- Гонконг, а между ними 9 цифр - уникальный идентификатор в стране отправления посылки.
CAPTCHA отсутсвует, информация перед пользователем представляется в виде строки.
Рисунок 7 - Трекинг почты Гонконга
1.2 Обзор существующих систем отслеживания почтовых отправлений
На сегодняшний день существует ряд программ и онлайн -- сервисов, реализующих технологию "отслеживания почтовых отправлений". Предлагается рассмотреть несколько, на примерах известных.
MaxPostTracker - отслеживание посылок с автопилотом. В программе записаны адреса нескольких сайтов, с которых можно получать данные. Адреса разделены по суффиксам номеров трекинга: US - американский сайт, HK - Гонконг и т.п. Для сайта почты России суффиксом является *, то есть на него запрос будет идти в любом случае.
Чтобы разобрать, какие данные приходят с сайта, для каждого трекера созданы регулярные выражения, которые позволяют вытащить из ответа сервера необходимую информацию.
TrackChecker - отслеживание посылок еще удобнее, постоянно добавляются новые сервисы, исправляются ошибки. Основные возможности программы:
• проверка состояния номера для отслеживания на более, чем 170 почтовых и курьерских сайтах;
• возможность создавать группы треков в любой конфигурации помогут пользователю не запутаться в своих посылках;
• разнообразные настройки позволят настроить программу под себя: Период проверки, автозагрузка, уведомления, внешний вид списка посылок, настройки соединения, и многие другие опции;
• хранение настроек программы и данных пользователя в формате xml рядом с исполняемым файлом программы;
• проверка обновлений программы и автоматическое обновление описаний сервисов.
URL: Post-Tracker.ru - сервис предназначен для упрощения процедуры отслеживания регистрируемых почтовых отправлений по предоставленному Вам трек-коду.
После недолгой регистрации на PostTracker, становятся доступными следующие возможности:
• Удобное добавление и хранение трек-кодов в личном кабинете;
• автоматическая проверка трек-кода три раза в сутки с уведомлением по E-Mail и 8 раз в сутки с уведомлением по SMS;
• сохранение истории прохождения треков;
• возможность экспорта статуса треков на форумы и блоги.
URL: trackitonline.ru - сервис собирает всю информацию по Вашей посылке и предоставляет её в одном окне с переводом статусов на английский или русский язык для того, чтобы Вы могли получить самую последнюю информацию о местонахождении посылки. Вся предоставляемая информация берется из открытых источников почтовых операторов и обрабатывается сервисом для предоставления в удобной форме. Предоставление информации при помощи этого сервиса является абсолютно бесплатным.
URL: gdeposylka.ru - это универсальный сервис для отслеживания посылок, который в скором времени будет позволять отслеживать все Ваши посылки. Сервис уже умеет полноценно отслеживать РПО (регистрируемые почтовые отправления) на Почте США, Почте Китая, Почте Гонконга, Почте России, Почте Украины и Почте Казахстана, а также отображать путь прохождения посылки на карте.
Частично поддерживается отслеживание почтовых отправлений из Германии, Великобритании, Сингапура, Тайваня, Японии, Польши, Таиланда, Австрии, Франции, Кореи.
Проанализировав работу программ и онлайн - сервисов, описанных выше, стало ясно, что для удобного извлечения с сервера необходимой информации можно будет воспользоваться регулярными выражениями. Также столкнулись с проблемой распознавания капчи. Выходные данные лучше представлять в виде таблицы, это делает информацию более наглядной и лучше воспринимаемой.
Регулярные выражения
Регулярные выражения (РВ) это, по существу, крошечный язык программирования. Используя его, указываются правила для множества возможных строк, которые надо проверить; это множество может содержать английские фразы, или адреса электронной почты, или TeX команды, или все что угодно. С помощью РВ можно задавать вопросы, такие как «Соответствует ли эта строка шаблону?», или «Совпадает ли шаблон где-нибудь с этой строкой?». Можно также использовать регулярные выражения, чтобы изменить строку или разбить ее на части различными способами.
Обычно шаблоны регулярных выражений компилируются в серии байт-кода, которые затем исполняются соответствующим движком. Для продвинутого использования может быть важно уделять внимание тому, как движок будет выполнять данное регулярное выражение, и писать его так, чтобы получался байт-код, который работает быстрее. Оптимизацию мы не будем рассматривать, так как она требует хорошего понимания внутренних деталей движка.
Язык регулярных выражений относительно мал и ограничен, поэтому не все возможные задачи по обработке строк можно сделать с помощью регулярных выражений. Также существуют задачи, которые можно сделать с помощью регулярных выражений, но выражения оказываются слишком сложными. В этих случаях может быть лучше написать обычный код, пусть он будет работать медленнее, чем разработанное регулярное выражение, но будет более понятен [1].
CAPTCHA
CAPTCHA (английская аббревиатура от «Completely Automated Public Turing test to tell Computers and Humans Apart» -- полностью автоматизированный публичный тест Тьюринга для отделения людей от компьютеров) -- торговая марка Университет Карнеги -- Меллона, компьютерный тест, используемый для того чтобы определить, человек ли использует систему.
Термин появился в 2000 году. В наиболее распространённом варианте CAPTCHA от пользователя требуется ввести символы, изображённые, как правило, в искажённом виде на предлагаемом ему рисунке, иногда с добавлением шума или полупрозрачности. Реже применяются CAPTCHA, основанные на распознавании речи (в основном как альтернатива для людей с нарушениями зрения), либо на других вариантах задач искусственного интеллекта.
CAPTCHA чаще всего используется при необходимости предотвратить использование интернет-сервисов ботами, в частности, для предотвращения автоматической регистрации, скачивания файлов, массовых рассылок и т. п.
Чтобы получить полное представление о CAPTCHA, рассмотрим несколько примеров.
На рисунке 4 изображена CAPTCHA, находящаяся на трекинге почты России
Рисунок 8 - Образец CAPTCHA почты России
На рисунке 5 изображена CAPTCHA, которая находилась на трекинге почты Китая
Рисунок 9 - Образец CAPTCHA почты Китая
Существуют программы, распознающие конкретные реализации CAPTCHA, к примеру, PWNtcha.
Есть способ "распознавания", использующий человеческих ресурс и ресурс высокопосещаемых сайтов, например, сайтов порно-тематики.
Робот скачивает CAPTCHA с интернет-сервиса и показывает его пользователю порносайта, с просьбой ввести код, который он видит на картинке. Взамен пользователь получает доступ к ресурсу, а робот узнает код, изображенный на картинке ("метод леммингов").
Несмотря на уязвимости, это не означает, что любая CAPTCHA-защита априори бессмысленна. Тут наблюдается извечный принцип соревнования оружия и защиты (снаряда и брони) [2].
Результаты анализа сервисов отслеживания почтовых отправлений
Рассмотрев работу официальных трекингов, можно свести итоги в табличку (табл. 1).
Таблица 1 - Особенности трекингов почтовых отправлений
Страна |
Наличие captcha |
Особенности captcha |
Вывод и сложность извлечения информации |
Время ответа сервера |
|
Россия |
+ |
1) Размер: 70х23 2) Наличие цветов: - черный - белый 3) Код состоит только из цифр 4) Изменение x и y координат цифр, а также их размера от 1 до 4 пикселей |
Выводится информация в виде довольно большой таблицы (10 столбцов). Для извлечения нужных данных придется составлять объемное регулярное выражение |
От 1 до 5 сек |
|
Сингапур |
- |
- |
Выводит информацию в виде маленькой таблицы (4 столбца). С составлением регулярного выражения не должно возникнуть сложностей. |
От 2 до 5 сек |
|
США |
- |
- |
Выводит информацию в виде таблицы (6 столбцов). Проблем с парсингом не должно возникнуть. |
От 2 до 6 сек, иногда сервер тупит, то есть не выводит никакой информации или показывает неполную |
|
Китай |
+ |
1) Размер: 200х50 2) Наличие цветов: -чёрный -палитра от белого до серого 3) плавающее положение символов и изменение их размера 4) «мусор», который можно принять за символ 5) присутствует кривая, перечеркивающая символы 6) В центре есть эффект размытия |
Выводит информацию в виде таблицы (6 столбцов). Проблем с извлечением нужных данных не должно возникнуть. |
От 2 до 8 сек, сервер очень часто падает. |
|
Украина |
- |
- |
Выводит информацию в виде одной длинной строки. Могут возникнуть проблемы с преобразованием этих данных в табличные. |
От 1 до 2 сек |
|
Беларусь |
- |
- |
Выводит информацию в виде таблицы с 2-мя столбцами(дата и событие). Может возникнуть затруднение с преобразованием полученной информации к общей таблице |
От 1 до 3 сек |
|
Гонконг |
- |
- |
Выводит информацию в виде маленькой таблицы (5 столбцов). Для извлечения данных нужно будет составить несложное регулярное выражение. |
От 1 до 4 сек |
Проанализировав работу существующих программ и онлайн серверов, можно сделать следующие выводы (табл. 2).
Таблица 2 - Особенности сервисов отслеживания почтовых отправлений
Название сервиса или программы |
Наличие собственной captcha |
Частота обновлений |
Ограничения |
Кол-во поддерживаемых сервисов |
Кроссплатформенность |
Определение страны отправителя |
|
Post-Tracker.ru |
+ |
Очень частые обновления |
Для доступа к полному функционалу нужна регистрация |
В районе 27 |
ОС Windows (XP/Vista/7),Linux, MacOS, iOS |
Происходит автоматически |
|
trackitonline.ru |
+ |
Обновления |
Для доступа к полному |
Более 200 |
ОС Windows |
Автоопределение |
|
происходят несколько раз в месяц |
функционалу нужна регистрация |
(XP/Vista/7),Linux, MacOS, iOS |
|||||
gdeposylka.ru |
- |
Обновления происходят несколько раз в месяц |
Для доступа к полному функционалу нужна регистрация |
В районе 16 |
ОС Windows (XP/Vista/7),Linux, MacOS, iOS |
Определяется автоматически |
|
TrackChecker |
- |
Автоматическое обновление описаний сервисов |
Ограничений не замечено |
Отслеживания на более, чем 200 почтовых и курьерских сайтах |
Программа рассчитана на работу под ОС Windows. |
Определяется автоматически |
|
MaxPostTracker |
- |
Автоматические периодические обновления |
Для работы программы требуется Microsoft .Net Framework 3.5 |
В программе записаны адреса нескольких сайтов, с которых можно получать данные. |
Программа рассчитана на работу под ОС Windows. |
Выбирает пользователь |
По результатам вышеописанных исследований было решено сделать следующее:
• Для отслеживания почтовых отправлений добавить страны: Россию, США, Сингапур, Китай, Украину, Беларусь, Гонконг;
• распознавание CAPTCHA трекингов почты России и Китая;
• автоматическое определение идентификатора посылки;
• при вводе международного идентификатора получать информацию о посылке с трекингов страны отправителя и получателя;
• определение стран отправителя и получателя;
• полученную информацию выводить в общую сводную таблицу;
• сохранение полученной информации в удобочитаемый формат.
Выводы и постановка
Проведенное исследование сервисов показало, что для извлечения необходимой информации с сервера необходимо использовать регулярные выражения, также придется столкнуться с распознаванием образов, а именно CAPTCHA. Отслеживать информацию о посылке будем в странах России, Украины, Беларуси, Сингапура, США, Китая, Гонконга, как типичных представителях онлайн средств отслеживания почтовых отправлений.
В связи с этим целью данной работы является разработка программного средства трекинга почтовых отправлений. При этом программное средство должно поддерживать автоматическое определение идентификатора посылки, отслеживание почтового отправления со сторон отправителя и получателя, определение страны получателя, полученную информацию для каждой страны представлять в виде таблицы, аналогичной на официальном трекинге.
Также программное средство должно иметь расширяемую архитектуру, для последующих модификаций и доработок, и пользовательский интерфейс, который не должен требовать от пользователя специальных знаний, то есть он должен быть удобным, понятным и доступным даже неподготовленному.
Проведенный анализ позволил разработать более детально техническое задание на разработку ПС, приведенное в Приложении А.
2. АЛГОРИТМИЧЕСКОЕ КОНСТРУИРОВАНИЕ СИСТЕМЫ ЕДИНОГО ОТСЛЕЖИВАНИЯ ПОЧТОВЫХ ОТПРАВЛЕНИЙ
В данной главе будут рассмотрены алгоритмы, требуемые для реализации работы. Приведены алгоритмы распознавания CAPTCHA для почты России и Китая, отслеживания почтовых отправлений России, Сингапура, США, Украины, Беларуси, Гонконга и Китая.
Алгоритм распознавания первой CAPTCHA почты Китая
Сначала скачали 500 различных вариантов CAPTCHA (рис. 10).
Рисунок 10 - Образец первой CAPTCHA почты Китая
Провели анализ:
• Размер картинки 200х50 пикселей;
• присутствует палитра от белого до тёмно-серого и чёрный цвет;
• есть кривая, перечеркивающая символы;
• плавающее положение символов и изменение их размера;
• «мусор», который можно принять за символ;
• в центре эффект размытия символов.
К плюсам можно отнести только размер изображения, а вот минусов достаточно много, потому уже заранее можно предположить, что процент распознавания данной CAPTCHA будет не очень высоким.
Основываясь на том, что главные распознаваемые символы чёрного цвета, изображение было легко преобразовано в монохромное (рис. 11).
Рисунок 11 - Полученное монохромное изображение
Просмотрев немалое количество картинок, было замечено, что используются двадцать различных символов (2345678abcdefgmnpwxy), а также, что они не выходят за пределы меньшего прямоугольника, потому, подобрав его координаты, сделали обрезание изображения, тем самым избавились от немалого количества шумов и «мусора» (рис. 12).
Рисунок 12 - Изображение после обрезания
Далее предстояло по возможности убрать кривую, перечеркивающую текст. Для этих целей был выбран алгоритм преобразований Хафа [3]. По сравнению с генетическими алгоритмами, он является математически более строгим и детерминированным алгоритмом, в котором нет влияния случайного фактора. Кратко, смысл алгоритма заключается в том, что любая прямая на плоскости может быть задана двумя переменными - углом наклона и расстоянием от начала координат (theta, r). Эти переменные можно рассмотреть как признаки, они формируют своё собственное двумерное пространство. Так как прямая есть совокупность точек, и каждой из них соответствует своя пара признаков (theta, r), то в пространстве этих признаков мы будем иметь скопления точек (максимумы на пересечении) в пределах конечных окрестностей признаков, соответствующие точкам прямой на исходной плоскости(изображении). Реализация данного алгоритма была найдена в модуле OpenCV. Воспользовавшись ей, удалось удалить большую часть кривой линии (рис. 13).
Рисунок 13 - Изображение после применения преобразований Хафа
После проведенных ранее преобразований можно заметить, что была потеряна незначительная часть полезной информации, также на это повлияло размытие в центре изображения. Возникла идея попытаться её восстановить с помощью морфологических алгоритмов. Лучше всего подошёл Dilate - растягивание(операция расширения) (рис. 14).
Рисунок 14 - Изображение после применения Dilate
Избавившись по максимуму от шумов, начали думать об разделении символов. Здесь возникают проблемы, описанные выше в анализе. Плавающее положение символов и изменение их размера не позволяют нам опираться на единые координаты и расположение, также символы часто соприкасаются.
Ясно, что делить надо по вертикали. Недолго думая, решили посчитать количество белых пикселей в каждом столбце изображения, для большей наглядности построили график, используя библиотеку matplotlib (рис. 15).
Рисунок 15 - График распределения точек в столбцах по вертикали
Если соотнести график с изображением, то можно заметить наличие 4-х локальных минимумов. Основываясь на этом, была проведена нарезка символов. Все полученные изображения после сегментации привели к единому размеру 22х22. (рис. 16).
Рисунок 16 - Полученные сегменты
Затем начали заниматься созданием и обучением нейросети. Для этих целей была найдена библиотека FANN. Из 500 изображений (по 5 символа на каждом) было получено около 1600 образцов приемлемого качества и содержания, использованных для обучения (рис 17).
Рисунок 17 - Образцы сегментов для символов «3» и «4»
На вход подавался массив из 22*22 = 484 пикселей (точнее передаём 255, если пиксель значащий и 0, если фон), на выходе получаем массив из 20, каждый элемент которого отражает принадлежность входного массива к тому или иному символу. Таким образом, входной слой нашей нейросети состоит из 484 нейронов, выходной из 20. Полученной выборки для успешного обучения хватило. Далее было проведено тестирование для получения приблизительного процента распознавания данной CAPTCHA (рис. 18).
Рисунок 18 - Результат тестирования
Из результатов тестирования было замечено, что на распознавание одной картинки уходит в среднем 0.3 секунды, что довольно неплохо, также приблизительный процент распознавания составил 33%, как и предполагалось выше, он получился не очень высоким.
Входные данные: картинка размером 200х50
Выходные данные: код с картинки
Шаг 1: Преобразуем входную картинку в монохромную.
Шаг 2: Делаем обрезку изображения.
Шаг 3: Удаляем большую часть кривой линии с помощью преобразований Хафа.
Шаг 4: Восстанавливаем часть утраченной полезной информации с помощью морфологических алгоритмов, а именно Dilate
Шаг 5: Производим нарезку символов.
Шаг 6: Приводим все сегменты к одинаковому размеру 22х22 пикселей
Шаг 7: Подаем каждый сегмент на анализ обученной нейронной сети
Алгоритм распознавания второй CAPTHA почты Китая
Распознав первую CAPTCHA, радоваться пришлось недолго, через недельку китайцы решили её обновить. Приступили к распознаванию новой CAPTCHA, скачали 600 различных вариантов (рис. 19).
Рисунок 19 - Образец второй CAPTCHA почты Китая
Провели анализ:
• Размер картинки 85х35 пикселей;
• палитра от белого до тёмно-серого и чёрный цвет;
• плавающее положение символов и изменение их размера;
• постоянно меняется наклон символов;
• различный эффект размытия всех символов
• символы часто соприкасаются.
К плюсам данной CAPTCHA по сравнению с предыдущей можно отнести отсутствие шума, но минусов тут тоже немаленькое количество. Некоторые образцы показали, что даже человеку может быть иногда не под силу понять, что за текст изображен на данной картинке (рис. 20).
Рисунок 20 - Нераспознаваемый образец CAPTCHA
Потому заранее можно предположить, что процент распознавания новой CAPTCHA будет не особо сильно превышать процент предыдущей.
Основываясь на том, что главные распознаваемые символы чёрного цвета, преобразуем изображение в монохромное (рис. 21).
Рисунок 21 - Полученное монохромное изображение
Просмотрев немалое количество картинок, было замечено, что словарь используемых символов абсолютно не изменился (2345678abcdefgmnpwxy).
На рисунке 21 можно заметить, что картинка обрамлена белой рамочкой, избавимся от неё, обрезав изображение со всех сторон по 2 пикселя. (рис. 22).
Рисунок 22 - Изображение после обрезания
На рисунке 22 видно, что из-за присутствия размытия символов, часть нужной информации все-таки потерялась. Здесь нам на помощь придут опять морфологические алгоритмы. Воспользуемся снова Dilate - растягивание(операция расширения) (рис. 23).
Рисунок 23 - Изображение после применения Dilate
Получив изображение с приемлемым качеством информации, начали думать об разделении символов. Так как символы часто меняют наклон, и эффект размытия иногда сильный, будет довольно тяжело произвести хорошую сегментацию. Метод, которым мы пользовались для разделения символов в предыдущем варианте CAPTCHA проявил себя не очень хорошо. Прочитав статью «Распознавание некоторых современных CAPTCHA» [4], возникла идея применить поиск компонент связности. (рис. 24).
Рисунок 24 - Поиск компонентов связности
Нетрудно заметить, что некоторые символы оказались объединены в один компонент связности, в связи с чем надо их разделять. Здесь на помощь приходит тот факт, что на изображении всегда ровно 5 символов. Это позволяет с большой точностью вычислять, сколько символов находится в каждом найденном компоненте. Для объяснения принципа работы такого алгоритма придётся немного углубиться в матчасть. Обозначим количество найденных сегментов за n, а массив ширин всех сегментов за widths[n]. Будем считать, что если после вышеупомянутых этапов n > 5, изображение распознать не удалось. Рассмотрим все возможные разложения числа 5 на целые положительные слагаемые. Их немного -- всего 16. Каждое такое разложение соответствует некоторой возможной расстановке символов по найденным компонентам связности. Логично предположить, что чем шире получившийся сегмент, тем больше символов он содержит. Из всех разложений пятёрки выберем только те, в которых количество слагаемых равно n. Поделим каждый элемент из widths на widths[0] -- как бы нормализуем их. То же самое проделаем со всеми оставшимися разложениями -- поделим каждое число в них на первое слагаемое. А теперь заметим, что получившиеся упорядоченные n-ки можно мыслить как точки в n-мерном пространстве. С учётом этого, находим ближайшее по Евклиду разложение пятёрки к нормализованному widths. Это и есть искомый результат (рис. 25).
Рисунок 25 - Разбиение на сегменты с помощью компонентов связности
Основываясь на этих данных, производим нарезку символов, приведя изображения к единому размеру 18х18. (рис. 26).
Рисунок 26 - Полученные сегменты
После получения сегментов начнём созданием и обучением нейросети. Из 600 изображений (по 5 символа на каждом) было получено около 2860 образцов приемлемого качества и содержания, использованных для обучения (рис 27).
Рисунок 27 - Образцы сегментов для символов «7» и «8»
На вход подавался массив из 18*18 = 324 пикселей (точнее передаём 255, если пиксель значащий и 0, если фон), на выходе получаем массив из 20, каждый элемент которого отражает принадлежность входного массива к тому или иному символу. Таким образом, входной слой нашей нейросети состоит из 324 нейронов, выходной из 20. Полученной выборки для успешного обучения хватило. Далее было проведено тестирование для получения приблизительного процента распознавания новой CAPTCHA (рис. 28).
Рисунок 28 - Результат тестирования
Из результатов тестирования было замечено, что на распознавание одной картинки уходит в среднем 0.1 секунды, что получается в 3 раза быстрее предыдущей, также приблизительный процент распознавания составил 53%.
Входные данные: картинка размером 85х35
Выходные данные: код с картинки
Шаг 1: Преобразуем входную картинку в монохромную.
Шаг 2: Убираем рамку, обрезая изображение.
Шаг 4: Восстанавливаем часть утраченной полезной информации с помощью морфологических алгоритмов, а именно Dilate
Шаг 5: Производим сегментацию изображения.
Шаг 6: Приводим все сегменты к одинаковому размеру 18х18 пикселей
Шаг 7: Подаем каждый сегмент на анализ обученной нейронной сети
Алгоритм распознавания CAPTHA почты России
Для начала скачали 100 разных вариантов CAPTCHA (рис. 29).
Рисунок 29 - Образец CAPTCHA почты России
Начали анализировать:
• Размер картинки 70х23 пикселей;
• присутствует всего два цвета: черный и белый;
• меняются координаты х и y цифр, а также их размер от 1 до 4 пикселей.
Прочитав статью «Декодирование капчи на Python» [5], было решено обходить картинку в поисках черного цвета, так как именно он составлял контур цифр на картинке. Результат обхода был записан в двумерный массив: если встретили черный пиксель, то заносим в массив единицу, иначе ноль. Чтоб проверить, что сделали всё правильно, возникла идея нарисовать таблицу 70х23 и закрасить ячейки на основании заполненного нами массива (рис. 30).
Рисунок 30 - Табличное представление CAPTHA почты России
После некоторых раздумий, было придумано показывать скрипту опорную точку, и в зависимости от того какие пиксели закрашены рядом, вычислять что за цифра нарисована на картинке, для этого был создан словарь опорных точек (П.Б. 4).
Входные данные: картинка размером 70х23
Выходные данные: код с картинки
Шаг 1: Считываем картинку в двумерный массив, просматривая пиксели:
если пиксель белого цвета, то заносим в массив -- 0, иначе 1.
Шаг 2: Для элементов в массиве, равных 1, делаем проверку по маске (словарь опорных точек) на совпадение из возможных цифр:
если совпадает, то переходим к Шагу 3, иначе на Шаг 5.
Шаг 3: Возвращаем возможную цифру и координату х, создавая словарь, где ключ -- координата х, а значение по нему -- предполагаемая цифра.
Шаг 4: Сортируем по ключу и выводим значения словаря, тем самым получаем код с картинки.
Шаг 5: возвращаем символ «*».
Алгоритм отслеживания почтовых отправлений России
Заходим на сайт официального трекинга России URL.
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим почтовый идентификатор, жмём кнопку «найти», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса. Также можно посмотреть исходный код страницы и найти их в <input name=” ”>
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Производим get запрос на: http://www.russianpost.ru
Шаг 2: Проверяем тело html ответа:
Если количество символов ответа < 500 и «onload» встретилось хоть один раз, тогда переходим на Шаг 3, иначе на Шаг 5.
Шаг 3: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа значение key:
"<input id=\"key\" name=\"key\" value=\"(.*?)\"/>"
Шаг 4: Производим post запрос: с параметром: key = значение, которое получили с помощью регулярки, и заголовком: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 5: Составляем регулярное выражение, чтоб получить из тела html ответа id CAPTCHA, это поможет нам скачать картинку:
"id='CaptchaId' value='(.*?)'>".
Шаг 6: Скачиваем картинку в текущий каталог, её размер: 70х23 .
Шаг 7: Приступаем к распознаванию CAPTCHA (Алгоритм распознавания CAPTCHA почты России).
Шаг 8: Формируем параметры post запроса:
• BarCode = почтовый идентификатор;
• searchsign = 1;
• CaptchaId = id CAPTCHA, полученное ранее;
• InputedCaptchaCode = распознанный код с картинки.
Шаг 2: Производим запрос на открытие:
Шаг 3: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0')
Шаг 4: Делаем post запрос уже с добавленными заголовком и параметрами.
Шаг 5: Получаем тело ответа в виде html кода.
Шаг 6: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
• открываем html код тела ответа;
• анализируем его;
• находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"<tr align=\".*?\">.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?
<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?
<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?
<td>(.*?)</td>.*?<td>(.*?)</td>.*?</tr>".
Шаг 7: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 8: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений Сингапура
Заходим на сайт официального трекинга Сингапура URL.
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим Track, жмём кнопку «Track Item >», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса. Также можно посмотреть исходный код страницы и найти их в <input name=” ”>.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Формируем параметры post запроса:
• track_items = почтовый идентификатор;
• task = tracking;
• controller = tracking;
• option = com_tablink.
Шаг 2: Производим запрос на открытие:
Шаг 3: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 4: Делаем post запрос уже с добавленными заголовком и параметрами.
Шаг 5: Получаем тело ответа в виде html кода.
Шаг 6: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
• открываем html код тела ответа;
• анализируем его;
• находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"<tr align=.*? bordercolor=\".*?\">.*?<td class=.*?
bgcolor=\".*?\">.*?<a href=\".*?\">(.*?)</a>.*?</td>.*?<td class=.*?
bgcolor=\".*?\">(.*?)</td>.*?<td class=.*?
bgcolor=\".*?\">(.*?)</td>.*?<td class=.*?
bgcolor=\".*?\">(.*?)</td>.*?</tr>".
Шаг 7: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 8: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений США
Заходим на сайт официального трекинга США URL: https://tools.usps.com/go/TrackConfirmAction.action
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим Track, жмём кнопку «Find», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса. Также можно посмотреть исходный код страницы и найти их в <input name=” ”>.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Формируем параметры post запроса:
tLabels = почтовый идентификатор.
Шаг 2: Производим запрос на открытие: https://tools.usps.com/go/TrackConfirmAction.action
Шаг 3: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 4: Делаем post запрос уже с добавленными заголовком и параметрами.
Шаг 5: Получаем тело ответа в виде html кода.
Шаг 6: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
• открываем html код тела ответа;
• анализируем его;
• находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"<div class=\"td-service\">(.*?)</div>.*?<div class=\"td-status\">(.*?)</div>.*?<div class=\"td-date-time\">(.*?)</div>.*?<div class=\"td-location\">(.*?)</div>.*?<div class=\"features-p\">(.*?)</div>".
Шаг 7: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 8: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений Украины
Заходим на сайт официального трекинга Украины URL.
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа».
Далее на сайте вводим Track, жмём кнопку «Find», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса.
Также можно посмотреть исходный код страницы и найти их в <input name=” ”>.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Формируем параметры post запроса:
barcode = почтовый идентификатор;
lang = en.
Шаг 2: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 3: Делаем post запрос уже с добавленными заголовком и параметрами на http://80.91.187.254:8080/servlet/SMCSearch2
Шаг 4: Получаем тело ответа в виде html кода.
Шаг 5: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
открываем html код тела ответа;
анализируем его;
находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
" The item number "+ItemUA+"(.*?) on ([\d]+/[\d]+/[\d]+).*?<u>(.*?)</u>".
Шаг 6: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 7: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений Беларуси
Заходим на сайт официального трекинга Беларуси URL: search.belpost.by
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K).
Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим Track, жмём кнопку «Find», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Формируем параметры post запроса:
item = почтовый идентификатор;
internal = 1.
Шаг 2: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 3: Делаем post запрос уже с добавленными заголовком и параметрами на http://search.belpost.by/ajax/search
Шаг 4: Получаем тело ответа в виде html кода.
Шаг 5: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
открываем html код тела ответа;
анализируем его;
находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"<tr>.*?<td>(.*?)</td>.*?<td>[\d]*. (.*?) в.*?\) (.*?)</td>"
Шаг 6: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 7: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений Гонконга
Заходим на сайт официального трекинга Гонконга URL
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим Track, жмём кнопку «Find», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса. Также можно посмотреть исходный код страницы и найти их в <input name=” ”>.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Формируем параметры post запроса:
tracknbr = почтовый идентификатор;
submit = Enter.
Шаг 2: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 3: Делаем post запрос уже с добавленными заголовком и параметрами на http://app3.hongkongpost.com/CGI/mt/mt2result.jsp
Шаг 4: Получаем тело ответа в виде html кода.
Шаг 5: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
открываем html код тела ответа;
анализируем его;
находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"Destination</span> - (.*?)</p>\r\n.*?\) (.*?) on (.*?)<br />.*?<br />"
Шаг 6: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 7: В цикле перебираем список и выводим информацию в виде таблицы.
Алгоритм отслеживания почтовых отправлений Китая
Заходим на сайт официального трекинга Китая URL: app3.hongkongpost.com/CGI/mt/enquiry.jsp
В браузере находим веб - консоль. В Firefox она находится: инструменты -> веб-разработка -> веб -консоль ( Ctrl +Shift + K). Ставим галочку «сохранять в лог содержимое запроса и ответа». Далее на сайте вводим Track, жмём кнопку «Find», находим в веб-консоли post запрос и смотрим «отправленные данные формы», там находятся нужные параметры для правильного запроса. Также можно посмотреть исходный код страницы и найти их в <input name=” ”>.
Так как на сервере трекинга Китая сложная капча, данный алгоритм будет отрабатывать в шести потоках, для ускорения получения нужной информации.
Входные данные: почтовый идентификатор
Выходные данные: информация о посылке
Шаг 1: Делаем запрос на http://intmail.183.com.cn/icc-itemtraceen.jsp для получения cookie
Шаг 2: с помощью регулярного выражения: '(?si)JSESSIONID=(.*?);' получаем из заголовков ответа cookie
Шаг 3: с полученной cookie делаем запрос на для скачивания каптчи
Шаг 4: Скачиваем картинку во временный каталог сервера, её размер: 85х35 .
Шаг 5: Приступаем к распознаванию CAPTCHA (Алгоритм распознавания второй CAPTCHA почты Китая).
Шаг 6: Формируем параметры post запроса:
sql_ITEMNO = почтовый идентификатор;
sql_KCODE = распознанный текст капчи;
pageNo = 0.
Шаг 7: Добавляем заголовок: ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0').
Шаг 8: Добавляем заголовок полученной ранее cookie
Шаг 9: Делаем post запрос уже с добавленными заголовком и параметрами
Шаг 10: Получаем тело ответа в виде html кода.
Шаг 11: Составляем регулярное выражение, которое нам поможет извлечь из тела ответа нужную информацию о месте нахождения посылки:
открываем html код тела ответа;
анализируем его;
находим участок кода, который отвечает за вывод нужной нам информации, на основании его составляем регулярное выражение:
"\"CURRENTSTATUSCODE\":\"(.*?)\",.*?\"ITEMEVENTDATE\":\"(.*?)\",\"ITEMEVENTENNAME\":\"(.*?)\",.*?\"ITEMYEAR\":\"(.*?)\",.*?\"NATIONENNA ME\":\"(.*?)\"}"
Шаг 12: Находим в теле ответа все подстроки совпадений с регулярным выражением и возвращаем их в виде списка.
Шаг 13: В цикле перебираем список и выводим информацию в виде таблицы.
Выводы
После тщательного изучения предметной области и анализа существующих серверов отслеживания почты были разработаны алгоритмы трекингов почтовых отправлений для стран: России, Украины, Беларуси, Сингапура, США, Китая и Гонконга и алгоритмы распознавания CAPTCHA для почты России и Китая.
3. ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ
В данной главе будет проведено обоснование выбора средств разработки, раскрыта структуру программной реализации и описаны модули взаимодействия с пользователем.
Обоснование выбора языка программирования
Python (англ. python - питон, произносится [?pa?и???n] - памйтон, также широко используется русскоязычное произношение питомн) - высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен, а стандартная библиотека включает большой объём полезных функций [6].
Основное преимущество языка Python заключается в удобочитаемости, ясности и более высоком качестве, отличающими его от других инструментов в мире языков сценариев. Программный код на языке Python читается легче, а значит, многократное его использование и обслуживание выполняется гораздо проще, чем использование программного кода на других языках сценариев. Единообразие оформления программного кода на языке Python облегчает его понимание даже для тех, кто не участвовал в его создании. Кроме того, Python поддерживает самые современные механизмы многократного использования программного кода, каким является объектно-ориентированное программирование (ООП).
Высокая скорость разработки по сравнению с компилирующими или строго типизированными языками, такими как C, C++ и Java, Python во много раз повышает производительность труда разработчика. Объем программного кода на языке Python обычно составляет треть или даже пятую часть эквивалентного программного кода на языке C++ или Java. Это означает меньший объем ввода с клавиатуры, меньшее количество времени на отладку и меньший объем трудозатрат на сопровождение. Кроме того, программы на языке Python запускаются сразу же, минуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.
Большая часть программ на языке Python выполняется без изменений на всех основных платформах. Перенос программного кода из операционной системы Linux в Windows обычно заключается в простом копировании файлов программ с одной машины на другую. Более того, Python предоставляет массу возможностей по созданию переносимых графических интерфейсов, программ доступа к базам данных, веб-приложений и многих других типов программ. Даже интерфейсы операционных систем, включая способ запуска программ и обработку каталогов, в языке Python реализованы переносимым способом [7].
Логика программ и игр написанных на нем, поражает, он также отлично подходит для создания динамического содержимого веб-страниц. Поисковые системы и сервисы все более совершенствуются, и мы обязаны идти вровень с ними или чуточку опережать. Использование этого языка нам в этом как раз и поможет.
Технология построения интерактивного интерфейса пользователя
Распространение интернета и компьютерных сетей во все сферы общественной, научной и производственной деятельности привело к увеличению объемов разработки веб-ориентированных информационных систем. Такие системы могут представлять собой простые веб-сайты, предназначенные только для вывода информации, сложные, включающие в себя активный обмен информацией с пользователем, нетривиальную логику работы, интеграцию со сторонними сервисами и т.д., а также веб-приложения, которые по определению могут представлять собой любой сложности ИС.
Подобные документы
Общие характеристики и стандарты электронной почты. Почтовые программы, регистрация почтовых ящиков, этикет, безопасность и технология функционирования электронной почты. Получение и отправка сообщений, адресная книга и процедура работы с вложениями.
курсовая работа [704,1 K], добавлен 26.08.2010История появления электронной почты как технологии и сервиса по пересылке электронных сообщений между пользователями компьютерной сети. Система организации почтовых адресов. Принцип работы электронной почты, ее основные преимущества и недостатки.
презентация [842,6 K], добавлен 03.10.2016Понятие электронной почты. Сравнительная характеристика почтовых систем и оценка эффективности. Обучение персонала использованию электронной почты. Защита персональных данных. Преступления в сфере компьютерной деятельности. Дистанционное обучение.
дипломная работа [77,6 K], добавлен 23.06.2012Основные и дополнительные функции почтовых клиентов. Специальные функции средств и сравнительная оценка почтовых программ. Почтовый клиент Becky, Mozilla. Технология функционирования электронной почты, средства управления и возможности почтового ящика.
курсовая работа [440,7 K], добавлен 07.12.2010Понятие электронной почты, история появления и развития технологии, ее достоинства и особенности. Процесс получения адреса электронной почты у провайдера. Структура письма, способы представления адреса. Краткий обзор почтовых программ. Системы кодировки.
курсовая работа [47,4 K], добавлен 20.12.2010Понятие и принцип работы электронной почты, структура и элементы данной системы. Протоколы и форматы сообщений. Преимущества и недостатки почтовых сервисов, на сегодняшний день, возможности их применения в различных сферах деятельности и перспективы.
курсовая работа [423,2 K], добавлен 20.12.2015Отображение на плоскости точек из многомерного пространства, интерактивное распознавание отдельных классов образов в качестве объекта разработки программного продукта. Концептуальная модель предметной области. Классы и объекты интерфейса пользователя.
дипломная работа [1,5 M], добавлен 10.06.2013Сущность понятия электронной почты, ее возможности в современной сети Интернет. Основные угрозы, мешающие работе этой формы электронной коммуникации. Особенности способов информационной защиты, принципы корректного использования электронной почты.
контрольная работа [20,0 K], добавлен 28.12.2012Общее понятие о DHCP (протоколе динамического конфигурирования адресов). Порядок настройки сервера и доставки почты. Описание конфигурации в специальном файле. Особенности процесса отправки и приема сообщений. Режимы работы программного интерфейса.
презентация [138,5 K], добавлен 25.10.2013Базовые понятия систем электронной почты. Протокол обмена электронной почтой. Релеи, маршрутизация почты. Основные угрозы почтовой службы. Безопасность почтового сервера. Защита от вредоносного программного обеспечения. Средства динамического скрининга.
курсовая работа [2,3 M], добавлен 28.01.2016