• Войти
Работа в Санкт-Петербурге
наверх
Ищу сотрудников
Ищу работу
Создать вакансию
Подбор персонала
Войти Работа в Санкт-Петербурге
Работа в Санкт-Петербурге
наверх
  1. Работа в Санкт-Петербурге
  2. База резюме
  3. ⚫ Сборщик заказов✔
отправить приглашение
file_download

Упаковщик, сборщик заказов

от 29 Мая 2020

Fv

Город

Санкт-Петербург

Зарегистрируйтесь или войдите, чтобы увидеть контакты соискателя

Описание

Коронавирус
Сбор информации
Сбор актуальной информации о коронавирусе позволяет строить графики, анализировать их и давать прогнозы. В прогнозировании будут фигурировать следующие данные: смертность, заражения, выздоровления. Существует несколько источников предоставления этих данных, один из популярных -- университет Джонса Хопкинса. Университет Джонса Хопкинса предоставляет информацию в открытом доступе в формате электронных таблиц (scv), информация обновляется раз в сутки в интервале от 15:00 до 20:00. Однако эта информация имеет ряд ограничений, например, отсутствие данных по городам Российской Федерации, для получения этой информации необходимо найти альтернативный источник. Информацию по коронавирусу в России можно получать с таких информационных сайтов как (RBK, Yandex, Google, стопкоронавирус и так далее). Так как сбор информации необходимо произвести как можно быстрее после обновления данных, выбор источника пал на портал стопкоронавирус.рф. Стоит отметить, что поисковые системы, такие как Yandex и Google ведут статистику по заболеваниям и смертям, и в качестве источников Yandex использует портал стопкоронавирус.рф, портал роспотребнадзора, а Google использует данные Википедии. Брать данные напрямую с сайтов поисковых сервисов можно, но автоматизировать этот процесс достаточно сложно, поэтому для сбора информации о коронавирусе на территории России был выбран портал стопкоронавирус.рф
Автоматизация процесса сбора информации с двух источников данных
Так как стоит задача сбора информации, как можно быстрее после ее обновления, необходимо реализовать программный продукт, отслеживающий изменения в данных, блок схема программного продукта демонстрируется на рисунке XXXXXX.

Рисунок XXXXXX -- блок-схема подпрограммы для сбора контента с помощью парсинга интернет страниц
Для реализации этой подпрограммы был выбран язык программирования Python, так как он имеет много встроенных библиотек, а также подключаемых.
Разбор блок схемы:
1) На первом этапе подключаются библиотеки python: selenium (библиотека для работы с интернет приложения, в частности с web браузером Chrome, это позволит открывать интернет страницу, имитировать действия пользователей, например, нажатие на определенную кнопку или прокрутка страницы), time (библиотека используется для того, чтобы сделать паузу во время выполнения программы), requests (библиотека для создания HTTP запросов).
2) Time.sleep(100) -- время ожидания программы 100 секунд, это необходимо для того, чтобы IP адрес, на котором работает программа не был забанен из-за частого обращения к сайту, также нет необходимости проверять контент чаще.
3) Открытие браузера посредствам библиотеки selenium. webdriver.
4) Выполнить имитация действия пользователя обязательно, так как необходимо получить код страницы после того, как будет нажата кнопка на сайте: "Показать статистику", нажатие на эту кнопку приводит к тому, что вся информация по коронавирусу попадает в код страницы.
5) Получение кода страницы осуществляется библиотекой requests, после чего заносится в строку для дальнейшей обработки.
6) Парсинг страницы -- обработка кода страницы, для нахождения нужной информации.
7) Массивы данных в языке программирования Python называются списками, добавление в список можно осуществить с помощью метода append(), добавление элемента списка осуществляется в конец.
8) После того как элемент был добавлен в список, его необходимо проверить на уникальность, если он уникален, то оставить его, в противном случаи, удалить. Выполнить проверку на уникальность можно и перед добавлением элемента в список, так как в конкретном примере в списке хранится всего 2 элемента, однако, если элементов будет больше, то процесс займет больше времени.
9) После проверки на уникальность в списке может остаться одно значение (начальное), тогда нужно выполнить все действия со второго блока, или в списке может быть два значения, это обозначает, что произошло обновление информации, необходимо выйти из цикла, передать данные на клиентскую часть или сохранить их в файл формата "scv" или "txt" для дальнейшего использования.
После выполнения подпрограммы были получены следующие данные: количество смертей, выздоровлений, заболеваний во всех городах России за последние сутки. Как только данные по России получены необходимо скачать официальные данные университета Джонса Хопкинса, которые публикуются на Github. Эти данные представлены в виде таблиц: заболевшие, выздоровевшие, умершие за день, за все время, также есть полная информация по отдельным штатам. Нас интересуют три таблицы: заболевшие, выздоровевшие, умершие за все время. Ссылка на них статична, это удобно для скачивания информации. Чтобы скачать таблицы по ссылкам необходим подключить библиотеку urllib.
Визуализация данных.
После того, как получены данные по России и миру появляется возможность анализа данных и представления информации в графическом виде. Для визуализации данных по России построим две столбчатых диаграммы. Первая диаграмма показывает рост чисел в динамике, из нее можно узнать, как изменялись числа (заболевания, выздоровления, смерти) за последние 20 дней. Вторая диаграмма показывает отношение выздоровевших людей к умершим за последний 20 дней. Пример таких диаграмм демонстрируется на рисунках XXXXXX, XXXXXX.

Рисунок XXXXXX -- статистика заболеваний, выздоровлений и смертей в России за 20 дней

Рисунок XXXXXX -- отношение выздоровлений к смертям в России за 20 дней
Для понимания тенденций роста в каждом из регионов/городов в России необходимо построить графики заражения по дням. Для примера был выбран город Санкт-Петербург, по данным был построен график рисунок XXXXXX.

Рисунок XXXXXX -- заражения по дням в Санкт-Петербурге
Из рисунка XXXXXX видно, что динамика роста заболеваний коронавирусом в Санкт-Петербурге положительная, выхода на плато нет. Красная линия на рисунке XXXXXX -- экспоненциальная скользящая средняя, она сглаживает колебания функции.
Рассмотрим вариант прогнозирования динамики заражений коронавирусом в России. На первый взгляд может показаться, что количество заболеваний растет экспоненциально, однако, это не так. Рассмотрев рисунок XXXXXX, становится понятно, что прогнозирование по экспоненте дает неточный результат.

Рисунок XXXXXX -- экспоненциальный рост
Другой вариант -- прогнозирование заболеваний с помощью логистической кривой. Для реализации прогнозирования заражений в России используем среду программирования Python, создадим функцию log_curve().
def log_curve(data):
teor = data[0] / (1 + np.exp(data[1] * (X.ravel() - data[2])))
return np.sum((teor - rus) ** 2)

Входным аргументом функции, является список из 3 цифр, выходным - сумма квадратов разности между значениями логистической кривой и реальным количеством заражений от эпидемии в России.
Количество заражений берется на каждую дату накопленным итогом. Логистическая кривая определяется тремя компонентами входного вектора. Нулевая компонента отвечает за максимальное значение, первая характеризует скорость роста функции, вторая - положение точки перегиба на оси времени. Переменная teor -- значения количества заражений для каждого дня, исходя из входного вектора параметров, rus -- фактическое количество заражений в России, переменная X -- список цифр от 22 до 200, необходимая для указания даты на оси абсцисс. Далее необходимо подключить библиотеку scipy.optimize, с помощью которой, будет найден вектор, который минимизирует сумму квадратов отклонений. Логистическая кривая, построенная на основе этого вектора описывает прогноз по заражениям в России. Пример выполнения программного кода демонстрируется на рисунке XXXXXX.

Рисунок XXXXXX -- количество заражений и прогноз, Россия
Из графика (рисунок XXXXXX), можно делать прогнозы о количестве заболевших на неделю, более точного прогноза добиться сложно.
Создание карты распространения коронавируса.
Для отслеживания возникновения очагов заражения в мире необходимо создать карту, на которой будут отмечены страны, и число заболевших. Эту карту можно применять для отслеживания динамики заболеваний в каждой стране. Процесс создания карты состоит из следующих блоков:
Загрузка таблицы, формат: "CSV"
Разбор и подготовка данных к визуализации
Добавление данных на карту
Создание слайдера, для отображения значений в динамике
Сохранение карты в формате: "HTML"
После загрузки и чтения таблица имеет следующий вид (Таблица XXX):
Таблица XXX входные данные программы
Число строк в блице 265, число колонок увеличивается с каждым днем на один (прибавляется текущая дата). Для построения карты необходимо собрать в списки следующие данные: долгота и широта страны, название страны, количество заболеваний по каждому дню. На слайдер необходимо добавить каждый день. При возникновении нового очага инфекции его необходимо передать его параметры и добавить на карту. Параметры вывода на карту состоят из: наименования фигуры (круг, квадрат треугольник и так далее), цвета фигуры, размера фигуры, положения фигуры, прозрачность фигуры. Для наглядности масштаба эпидемии размер фигуры зависит от количества заболевших. При наведении на страну всплывает поле, на котором отмечено число заболевших на этот день. Демонстрация работы программа приведена на рисунке XXXX.

Рис. XXXXXX -- карта мира, отображающая заражения коронавирусом
Отправка данных с сервера клиенту.
По завершении обработки данных, составления карт и диаграмм, их необходимо отправить с сервера на клиент. Для того, чтобы клиент получил обновленные данные по коронавирусу, как можно раньше был выбран способ отправки информации с помощью мессенджера "Вконтакте". Для автоматизации отправки сообщений через "Вконтакте", необходимо создать чат-бота. Для создания чат-бота необходимо получить уникальный ключ (token API), для обращения к инструментам "Вконтакте". Далее необходимо создать список пользователей, которым будет приходить рассылка, загрузить фотографии на сервер и отправить пользователям. Пример сообщения чат-бота приведен на рисунке XXXXXX.



Рис. XXXXXX -- сообщение, принятое на клиенте с сервера










Составление карты России из набора геоданных.
Для составления карты субъектов Российской Федерации, необходим набор геоданных. Геоданные могут быть в различных форматах: GEOJSON", "SHP", "DBF", "SHX" и так далее. Зачастую векторные карты составляются из набора шейпов. Шейп -- популярный векторный формат географических файлов. Разрабатывается и поддерживается компанией Esri с целью совместимости между продуктами Esri и другими программами. Формат шейп-файла позволяет хранить следующие различные типы геометрических объектов: точки (мультиточки), линии (ломаные), многоугольники и другие объекты. Отдельный файл может хранить объекты только одного типа. Шейп-файлы могут хранить следующие объекты:
Точка
Полилиния -- объект, состоящий из линий, которые в свою очередь могут пересекаться и соприкасаться
Полигон
Мультиточка -- объект, состоящий из набора точек
Точка в трехмерном пространстве
Точка, значение которой может быть изменено
Широта -- угол φ между местным направлением зенита и плоскостью экватора, отсчитываемый от 0° до 90° в обе стороны от экватора. Географическую широту точек, лежащих в северном полушарии, (северную широту) принято считать положительной, широту точек в южном полушарии -- отрицательной.
Долгота́ -- двугранный угол λ между плоскостью меридиана, проходящего через данную точку, и плоскостью начального нулевого меридиана, от которого ведётся отсчёт долготы. Долготу от 0° до 180° к востоку от нулевого меридиана называют восточной, к западу -- западной. Восточные долготы принято считать положительными, западные -- отрицательными.
Для составления карты был выбран файл шейпов, состоящих из полигонов. В полигоне задаются точки, имеющие значения долготы и широты, связанные от первой до n, точка n связана с первой точкой. Таким образом, в результате соединения точек, будет получен полигон. Чем больше количество точек, образующих полигон, тем выше качество полигона.
В результате работы с полигонами была получена карта Российской Федерации (рис. XXXXXX).

рис. XXXXXX карта субъектов Российской Федереции
Из рисунка XXXXXX можно заметить, то что область, на которую пользователь навел курсор мыши, выделятся цветом и появляется окно с подсказкой.



Определение принадлежности точки полигону.
Постановка задачи: существует набор связанных точек (полигон замкнутый, ребра не пересекаются), дается точка в формате (долгота, широта), необходимо определить принадлежность точки к определенному полигону, если такой полигон есть. Эта задача поможет определять субъект России по точке, которую отправил пользователь. Основные методы определения принадлежности точки многограннику:
Трассировка лучей;
Ближняя точка и ее нормаль;
Индекс точки относительно многоугольника;
Работа с API программных продуктов крупных компаний.
Определение принадлежности точки многограннику с помощью трассировки лучей можно представить следующим образом:
Из тестируемой точки выпускается луч в произвольном или заданном направлении;
Производится подсчет пересечений луча с полигоном;
Проверка четности пересечений, если количество пересечений четное, тогда заданная точка находится вне полигона, если количество пересечений нечетное, точка в полигоне.
В лучшем случаи луч пересекает все отрезки. Алгоритмическая сложность алгоритма оценивается как O(log n), где n - количество ребер полигона. Считается, что метод трассировки лучей самый простой, однако, применять его не стоит, так как есть вероятность получить неверный результат. Причиной ошибки может послужить пересечение лучом вершины, или частичное совпадение ребра полигона с лучом. Пример возникновения ошибки при трассировке лучей демонстрируется на рисунке XXXXXX.

рис. XXXXXX ошибки при выполнении алгоритма: трассировка лучами
Алгоритм: "ближняя точка и ее нормаль" состоит из следующих пунктов:
Необходимо определить ближайшую точку на полигоне, при этом, ближайшая точка может быть на ребре или на вершине;
Поиск нормали ближайшей точки. Если ближняя точка лежит на ребре, то нормаль является вектор, перпендикулярный ребру и смотрящий наружу многоугольника. Если ближняя точка - одна из вершин, то нормалью является усредненный вектор ребер, прилежащих к вершине.
Для того чтобы проверить угол не обязательно его вычислять, достаточно узнать знак косинуса данного угла. Если знак положительный -- проверяемая точка внутри полигона, если знак отрицательный -- проверяемая точка за границами полигона. Так как необходимо узнать знак косинуса, то можно вычислить знак скалярного произведения между двумя векторами. Пример определения принадлежности точки полигону, с помощью алгоритма: "ближняя точка и ее нормаль": даны две точки A1 и A2, необходимо определить точки находятся в полигоне или за пределами него.


рис. XXXXXX определение принадлежности точки полигону с помощью алгоритма: "ближняя точка и ее нормаль"
При условии, что алгоритм работает без ошибок, нормаль к ребру параллельна вектору от тестируемой точки до ближайшей. В случае точки A1, угол между векторами равен нулю или числу, близкому к нулю, расхождение может получиться из-за операций с числами, которые имеют плавающую точку. Нуль - - - число меньше 90, следовательно, косинус угла - положительное значение, следовательно, искомая точка A1 внутри полигона. Тестирование точки A2 на принадлежность к полигону. Для точки A2 ближайшая точка - вершина, нормаль к вершине - усредненная нормаль ребер, прилегающих к этой вершине. Далее необходимо произвести операцию вычисления скалярного произведения векторов, число отрицательно, следовательно, точка A2 за границами полигона.
Рассмотрим плюсы и минусы алгоритма: производительность - O(log n), она равна производительности алгоритма трассировка лучами, однако, на выполнение потребуется больше времени по причине того, что вычисления внутри блока обработки более сложны, с математической точки зрения. Возникает необходимость отлова ошибки с плавающей точкой, обычно такие ошибки встречаются, когда проверяемая точка находится около ребра полигона, чем ближе точка к ребру, тем выше вероятность ошибки. Ошибки можно избежать, если ввести константу, которая будет хранить в себе минимальное расстояние от точки до ребра полигона. Если значение длины меньше константы, то можно прировнять ее к нулю, то есть считать, что точка лежит на ребре, следовательно, находится внутри полигона.
На рисунке XXXXXX демонстрируется пример определения принадлежности точки полигону с помощью метода: "индекс точки относительно многоугольника"

рис. XXXXXX определение принадлежности точки полигону с помощью метода: "индекс точки относительно многоугольника"
Необходимо создать окружность с центром в тестируемой точке. Далее необходимо каждую вершину многоугольника спроецировать на окружность лучами, проходящими через вершину и проверяемую точку. Точки P1, P2, P3, P4, P5 - вершины полигона, P1', P2', P3', P4', P5' - проекции на окружность. При рассмотрении ребра полигона, по проекциям можно определить, происходит вращение по часовой стрелке или против нее при переходе от одной вершины к другой. Вращение по часовой стрелке примем за положительный поворот, вращение против часовой стрелки примем за отрицательный поворот. Угол, соответствующий каждому ребру - это угол между сегментами окружности через проекции вершин этого ребра. Поворот может быть, как положительным, так и отрицательным, следовательно, угол принимает как положительный знак, так и отрицательный. Далее необходимо сложить все углы, сумма углов может принимать значения 360 или -360 градусов, в зависимости от прохода по часовой стрелке или против часовой стрелки. В случаи прохода по часовой стрелке значение будет равным 360 градусов, против часовой стрелки минус 360 градусов. Далее, для предотвращения ошибки, которая связана с числами с плавающей точкой, необходимо разделить полученную сумму на 360 и прибавить к ближайшему числу. Полученное число -- индекс точки. Результатов может быть три: один, минус один и нуль, остальные значения сигнализируют об ошибке. Если значение равно минус одному или одному - точка находится внутри полигона, если значение равно нулю - точка находится вне полигона. Решение примера из рисунка XXXXXX:
для точки А:
(AP1, AP2)=74.13, (AP2, AP3)=51.58, (AP3, AP4)=89.99, (AP4, AP5)=126.47, (AP5, AP1)=120.99.
sum=74.13-51.58+89.99+126.47+120.99=360. 360/360=1
Полученное значение равно 1, следовательно, точка находится внутри полигона.
для точки В:
(BP1, BP2)=44.78, (BP2, BP3)=89.11, (BP3, BP4)=130.93, (BP4, BP5)=52.97, (BP5, BP1)=33.63.
sum=-44.78+89.11-130.93+52.97+33.63=0
Полученное значение равно 0, следовательно, точка находится вне полигона.
Плюсы и минусы данного метода: метод прост математически, но для его выполнения необходимо затратить много времени и вычислительной мощности компьютера. Алгоритмическая сложность оценивается, как O(n), где n - количество ребер, необходим перебор всех ребер полигона. Для вычисления угла необходимо использовать операцию арккосинуса и двойное взятие корня. Несмотря на эти минусы, данный метод является самым точным из всех математических, вероятность ошибки стремится к нулю.
Работа с API. Зачастую крупные компании, специализирующиеся на картографии, выпускают свой API, подключившись к которому, открываются многие возможности этой компании. Для того, чтобы определить принадлежность точки, которую ввел пользователь к полигону, то есть к субъекту Российской Федерации, необходимо передать введенные данные долготы и широты API компании, после чего будут получены данные.
Плюсами работы с API крупных компаний является то, что все вычисления производятся на серверах компании, а нам приходит только ответ, это ускоряет работу приложения. Скорость увеличивается еще из-за того, что нет необходимости проверять полигоны до того момента, пока не будет получен результат. Например, пользователь ввел координаты Архангельской области, в списке субъектов Российской Федерации она стоит на 50м месте, для того, чтобы определить принадлежность точки к полигону, необходимо произвести 50 итераций цикла.
Минусами работы с API является платная стоимость использования либо ограничения на количество обращений за сутки или в заданный временной интервал.
При работе с API необходимо проверить введенные данные на корректность, завести список всех субъектов Российской Федерации, послать координаты, получить ответ и проверить его на наличие в списке.
Создание формы обратной связи и чата для сбора актуальных данных.
Для получения данных о новых природно-антропогенных явлениях необходимо создать форму обратно связи и чат. Чат и форма обратной связи будет реализована с применением протокола WebSocket. Пример работы протокола WebSocket показан на рисунке XXXXXX.

рис. XXXXXX сравнение протоколов HTTP и WebSocket
Из рисунка XXXXXX видено, что при работе протоков HTTP задействована архитектура: "запрос-ответ", при котором на один запрос от клиента сервер посылает один ответ. При работе WebSocet протокола запросы и ответы подаются асинхронно, но для установления подключения клиенту необходимо передать первичный запрос используя HTTP протокол, после чего получить ответ. Первичный запрос необходим для проверки браузера на работоспособность с WebSocket протоколом. Плюсы WebSocket протокола:
Асинхронность;
Снижается нагрузка на сеть при большом количестве пользователей;
При кратковременном разрыве соединения не нужно производить повторное подключение;
Бессрочное время действия, в сравнении с протоколом HTTP, в котором необходимо продлевать сеанс подключения.
Реализация чата состоит из следующих блоков:
Проверка поддержки протокола WebSocket на стороне клиента;
При удачном ответе от клиента выполняется подключение к протоколу;
Создается список активных пользователей, который пополняется на один элемент, при подключении пользователя к сети, и уменьшается на один элемент, когда пользователь вышел из сети;
Сервер получает сообщение от клиента, происходит отправка принятого сообщения всем пользователям в сети;
При подключении пользователя к сети в окне чата ему доступно последнее сообщение.
Чат необходим для обмена между пользователями сервиса информацией о возникновении новых чрезвычайных ситуаций, однако, полученная информация из чата не попадает на карту и не участвует в формировании статистики, для решения этой проблемы была создана форма обратной связи.
Форма обратной связи (рисунок XXX) состоит из следующих полей:
Долгота и широта, эти поля необходимы для установки точного места возникновения чрезвычайной ситуации;
Радиус повреждения;
Степень опасности (шкала от 1 до 10), в дальнейшем ее можно убрать и рассчитывать степень опасности чрезвычайной ситуации по различным факторам. Например, при возникновении лесного пожара необходимо знать породу деревьев, количество осадков, температуру, направление ветра, скорость ветра, тип пожара (верховой, низовой, подземный), благодаря этим данным появляется возможность расчета степени опасности;
Тип чрезвычайной ситуации (лесные пожары, наводнения, сели, просадка лессовых пород итак далее);
Сообщение от пользователя.

рис. XXXXXX форма обратной связи
После того, как данные из формы обратной связи были получены на сервер необходимо произвести их обработку: определить по долготе и широте субъект Российской Федерации, отправить сообщение в чат, записать полученные данные в таблицу. Данные, которые попадают на сервер из формы обратной связи нуждаются в проверке, однако информация сразу попадает в общий чат для информирования пользователей о возможном возникновении чрезвычайной ситуации.





















Открыть контакты соискателя

Зарегистрируйтесь или войдите, чтобы увидеть контакты соискателя

Похожие резюме

6 февраля, 2017

Менеджер по продажам

Валерий

Город

Санкт-Петербург

Возраст

71 год ( 2 марта 1952)

отправить приглашение подробнее

20 октября, 2021

Мастер СМР

Петр

Город

Санкт-Петербург

Возраст

47 лет ( 9 июля 1978)

отправить приглашение подробнее

26 марта, 2017

Архитектор

Варвара

Город

Санкт-Петербург

Возраст

32 года (19 декабря 1993)

отправить приглашение подробнее
Все похожие резюме
Подпишитесь на похожие резюме
к поиску резюме

Рекомендованные вакансии

Сборщик заказов в Даркстор( МАГНИТ, Розничная сеть )

Санкт-Петербург, до 114 000 руб.

Сборщик заказов (Санкт-Петербург, Кондратьевский, 44)

Санкт-Петербург, до 68 000 руб.

Сборщик заказов (Санкт-Петербург, Выборгское, 33)

Санкт-Петербург, до 68 000 руб.

Сборщик заказов (Санкт-Петербург, Маршала Блюхера, 41)

Санкт-Петербург, до 68 000 руб.

Сборщик заказов (Санкт-Петербург, Революции, 41/39)

Санкт-Петербург, до 68 000 руб.

Популярные специализации
  • Продавец-консультант
  • Продавец-кассир
  • Другое
  • Менеджер по продажам
  • Менеджер по работе с клиентами
  • Администратор
Инструменты соискателя
  • Разместить резюме
  • Найти работу
  • Поиск вакансий
  • Каталог вакансий
  • Соглашение по содействию в трудоустройстве
  • Защита персональных данных
  • Архивный каталог
  • Вакансии по профессиям
  • Поиск по городам
Инструменты работодателя
  • Разместить вакансию
  • Найти сотрудника
  • Поиск резюме
  • Каталог резюме
  • Тарифы
  • Информер с вакансиями
  • Резюме по профессиям
Больше всего ищут
  • Бармен
  • Брокер
  • Водитель такси
  • Корреспондент
  • Охранник
  • Переводчик

© 2007 - 2026 «Карьерист.ру»

  • О нас
  • Обратная связь