Требуется разработчик на Python, который очень хорошо разбирается в api discord, чтобы доработать функционал готового бота.
Акторное приложение с помощью spray
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
[table]Задача# Что дано
Есть приложение, в котором уже есть некоторые акторы и определено
некоторое простое REST API.
* TickerActor - актор, срабатывающий раз в секунду и отсылающий задание в LinksActor
на чтение очередного url. Это специально сделано так, чтобы нас не забанили за слишком
частые запросы
* LinksActor - менеджер ссылок. Управляет знанием о том, какие ссылки посещены, какие поставлены
в очередь. В реальной жизни он бы хранил свое знание каким-то персистентным образом.
Но мы для простоты будем это делать в простых коллекциях.
* ClientActor - актор, отвечающий за вызов функциональности spray-клиента
* ServerActor - актор, отвечающий за функциоеальность spray-сервера
# Что хотим
В целом - сделать акторное приложение для краулинга русского раздела википедии.
В частности (я предполагаю, что обходить граф в ширину все уммеют):
* разовьем интерфейс и поведение LinksActor. Пусть он
** хранит очередь известных, но непосещенных путей и множество посещенных
** принимает сообщение AddPaths со списком путей-кандидатов, отбрасывает уже посещенные,
а остальные добавляет в очередь и в множество посещенных
** по PickNext берет путь из очереди и шлет Download в ClientActor
** адекватно отвечает на запрос о статистике
Это 5 баллов из 20
* разовьем поведение ClientActor
** Получив ответ и убедившись, что это корректный ответ (код 200), пошлем текст
в новый ContentActor
** В случае проблем сообщим о них в IssuesActor. Отдельно обработаем ситуации отсутсвия соединения,
ситуацию неуспешного кода и неожиданного типа контента. Будем считать, что все кроме text/html
для нас неожиданно
Это 5 баллов из 20
* создадим IssuesActor
Пусть у него будет три сообщения на три типа проблем (см. выше). Реакция - логирование (akka-логирование)
и подсчет проблем трех типов.
Это 2 балла из 20
* создадим ContentActor
** Добавим в проект внешнюю библиотеку bsoup (найдем ее в мавен-репозитории, добавим в build.sbt)
** Научимся принимать сообщения от ClientActor
** Будем хранить словарь, отображающий путь на сырой html
** С помощью bsoup будем находить ссылки, отбрасывать ссылки, ведущие за пределы индексируемого ресурса
и слать сообщение в ClientActor
** при ошибках парсинга информировать IssuesActor. Там появится четверный тип проблем
Это 5 баллов из 20
** Добавим в серверу новый путь - /issues. Ответом будет json, с 4 полями, в каждом из которых - количество проблем
каждого из 4 типов.
Это 3 балла из 20
# Требования и советы.
Нельзя использовать глобальные структуры.
Например, завести глобальный ConcurrentHashMap.
Все данные должны быть инкапсулированы в
акторы, ответственные за них.
Допускается локальная мутаельность. То есть можно сделать мутабельную
структуру и менять ее в акторе.
Конкретные интерфейсы акторов - на ваше усмотрение.
Часто одному актору нужно знать о других акторах.
Это можно решать двумя способами: или
указывать акторов-пертнеров при инициализации, или
передавать ActorRef через сообщение.
Выбор способа - на ваше усмотрение.
[/table]
- Похожие заказы
- Прикладное ПО7 заявокЗакрыт2 года назад
Агрегатор платежных систем, в разработке, можно сказать только начали, введу в курс дела по факту понимания вашей квалификации. Есть конкретный список задач, но и место творчеству найдется, за что готовы доплатить. Требуется уровень не менее Senior ...
Прикладное ПО1 заявкаЗакрыт2 года назад- $50
Есть небольшая библиотека на JS, использующая POST-запрос на сервер, необходимо переписать на C# в Unity Сроки - 5 дней ориентировочно
Прикладное ПО2 заявкиЗакрыт2 года назад Вилберис программа-кликер. Которая будет из MySQL брать задачу: 1) апи ключ(если по апи получится) или логин/пароль 2) ИД лота, 3) сумму бюджета, 4) Стакву от 1 до 5 какую ставить. И по задаче кликать в кабинете.
Прикладное ПО2 заявкиЗакрыт2 года назад[table]Дополнительная информация: Записная книжка. Программа должна выполнять: 1) Автоматически открывать файл записей при запуске программы. 2) Поддерживать многостраничный просмотр записей. 3) Обеспечивать удобную навигацию по записям. 4) Возможность редактирования записей. 5) Поддерживать быстрый вызов и ...
Прикладное ПО3 заявкиЗакрыт2 года назад- $20
Есть исходный XML файл и итоговый XML файл. Нужно на языке xsl написать файл который преобразует исходный файл в итоговый. Примеры и задание по ссылке: https://drive.google.com/drive/folders/1Xl5PIPmXOSOp-vNrzv_dV3kpliWZG_Ce?usp=sharing
Прикладное ПОнет заявокЗакрыт2 года назад Автоматизированная система автомойки по С# с пояснительной запиской
Прикладное ПО4 заявкиЗакрыт2 года назадОчень простое задание по искусственному интеллекту. Есть уже готовый код, нужно его переписать или дописать, задание. Файл с кодом будет прикреплен. Задание. You are given the code for solving the n-queens puzzle with backtracking. The program returns ...
Прикладное ПОнет заявокЗакрыт2 года назадЕсть установленный thunderbird, куда подкчлючены несколько учетных записей по imap, в основном с почтового mail.ru. В каждом аккаунте множество папок, письма фильтрами сортируются по ним на стороне сервера. Необходимо добавить в thunderbird внешним криптом ...
Прикладное ПО1 исполнительЗакрыт2 года назадДобрый день. Задача следующая - меня интересует способ продублировать действия с одного компьютера, на все остальные. Приведу пример. Предположим, у меня есть 5 компьютеров или 5 виртуалок. Я на одном "главном" компьютере жму правой кнопкой мыши в центре ...
Прикладное ПО2 заявкиЗакрыт2 года назад