|
0 / 0 / 0
Регистрация: 12.12.2020
Сообщений: 23
|
|
Задача с json, "сервис подписки"01.05.2023, 19:49. Показов 911. Ответов 1
Метки нет (Все метки)
Необъяснимая аномалия! На серверах Яндекс Маркета отказывает оборудование: ломаются жесткие диски, плавится оперативная память, выходит из строя система охлаждения. Системные администраторы локализовали проблему — причиной поломок оказалась используемая база данных. Руководители приняли решение срочно вывести из эксплуатации упомянутую базу данных и заменить ее самописной. Вам нужно как можно скорее предоставить MVP, который поддерживает:
частичное обновление товарных предложений в базе данных уведомление сервисов-подписчиков при обновлении данных Товарное предложение в базе описывается следующей JSON схемой: { "$id": "offer.schema.json", "type": "object", "properties": { "id": { "type": "string", "description": "Offer identifier, only numerical symbols are allowed" }, "price": { "type": "integer", "description": "Offer price, value in range from 0 to 10̂9" }, "stock_count": { "type": "integer", "description": "Items left on stocks, value in range from 0 to 10̂9" }, "partner_content": { "type": "object", "properties": { "title": { "type": "string", "description": "Offer title filled in by the partner" }, "description": { "type": "string", "description": "Offer description filled in by the partner" } } } }, "required": [ "id" ] } При межсервисном взаимодействии к товарному предложению добавляется контекст, который содержит идентификатор для сквозной трассировки, его схема: { "$id": "message.schema.json", "type": "object", "properties": { "trace_id": { "type": "string" }, "offer": { "$ref": "offer.schema.json" } }, "required": [ "trace_id", "offer" ] } Сервис, который отправляет запрос на обновление товарного предложения, обязательно заполняет идентификатор оффера (поле offer.id ) и идентификатор для трассировки (поле trace_id). Все остальные поля в запросе опциональны. В таком случае при применении обновления будет происходить слияние полей. Например, в базе у оффера заполнены поля price=9990, и приходит обновление stock_count=100 , тогда в базе будут сохранены оба поля price=9990; stock_count=100 . Гарантируется, что все входящие запросы валидны и соответствуют схеме. Так как это прототип, удаление товаров из базы и очищение полей было решено не поддерживать. Помимо хранения товарных предложений в базе, в сервисе необходима функция доставки обновлений в сервисы-подписчиков. Одна подписка включает в себя два набора полей: trigger и shipment, не обязательно листовых. Когда изменяется любое trigger поле или поле, вложенное в trigger поле, подписчику отправляется сообщение. В сообщении находятся все shipment и trigger поля этого подписчика, а также идентификаторы оффера и трассировки из запроса, который привел к этому сообщению. Инициализация поля также считается за его изменении и создает сообщение об обновлении. Формат ввода Первая строка входных данных содержит два целых числа n и m ( 1≤n≤50,1≤m≤10,000) — количество сервисов подписчиков и количество запросов на обновления. Следующие n строк содержат описания сервисов подписчиков: i -я строка содержит описание i -го подписчика. В начале строки задается ai и bi — количество trigger и shipment полей соответственно. Далее ai trigger полей, и bi shipment полей. Следующие m строк содержат запросы на обновление, каждая строка — это валидный json, удовлетворяющий схеме message.schema.json Формат вывода На каждое событие обновления выведите kj сообщений в формате message.schema.json , где kj — это количество сервисов-подписчиков, которым данное событие интересно. Сообщения должны идти в том же порядке, что и обновления, которые привели к ним. Сообщения в рамках одного обновления должны быть отсортированы по порядковому номеру подписчика. Пример Ввод Вывод 2 5 2 0 price stock_count 1 0 partner_content {"trace_id": "1", "offer": {"id": "1", "price": 9990}} {"trace_id": "2", "offer": {"id": "1", "stock_count": 100}} {"trace_id": "3", "offer": {"id": "2", "partner_content": {"title": "Backpack"}}} {"trace_id": "4", "offer": {"id": "1", "stock_count": 100}} {"trace_id": "5", "offer": {"id": "2", "partner_content": {"description": "Best backpack ever"}}} {"trace_id":"1","offer":{"id":"1","price ":9990}} {"trace_id":"2","offer":{"id":"1","price ":9990,"stock_count":100}} {"trace_id":"3","offer":{"id":"2","partn er_content":{"title":"Backpack"}}} {"trace_id":"5","offer":{"id":"2","partn er_content":{"description":"Best backpack ever","title":"Backpack"}}} Примечания Для решений на языке Python доступны библиотеки json, requests и urllib.
0
|
|
| 01.05.2023, 19:49 | |
|
Ответы с готовыми решениями:
1
Сервис для разработчиков чтобы объединяться в общие подписки
Подписки MSDN -> подписки VS |
|
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
|
||
| 01.05.2023, 22:12 | ||
|
вы бы хоть спасибо говорили в виде кнопки спасибо иногда, а то прям реально иногда думаю, что решаешь задачи для реальных людей на должностях программеров в компаниях, и без спасибо ну и еще интересно, я периодически интересуюсь, вы там в своих ВУЗах сами то что-нибудь решаете или все сюда скидываете для решения?
1
|
||
| 01.05.2023, 22:12 | |
|
Помогаю со студенческими работами здесь
2
Задача на Json Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object PHP и Json простенькая задача Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|