Оптимізація Ubuntu Server:
Встановлення останньої стабільної версії Ubuntu Server.
Вибір мінімального встановлення для зменшення фонових процесів.
Налаштування мережевих параметрів для збільшення розмірів мережевих буферів.
Налаштування системи для використання hugepages для оптимізації використання пам'яті.
Встановлення та налаштування інструментів моніторингу (htop, iotop, nload).
Розробка парсера на C++:
Мова та версія: Використання C++17 або C++20.
Бібліотеки для парсингу:
cpp-httplib для HTTP-запитів.
Gumbo або htmlcxx для розбору HTML.
Бібліотеки для роботи з мережею: ASIO (без Boost) для асинхронного вводу-виводу та роботи з UDP.
Бібліотека логування: spdlog.
Багатопоточність та асинхронність: Використання багатопоточності або асинхронного програмування для ефективної обробки запитів та відправки даних. ASIO може бути використаний для цієї мети.
База даних: Вбудована легка база даних (наприклад, SQLite) для зберігання новин із автоматичним присвоєнням унікального ID.
Обробка помилок: Реалізувати систему обробки помилок, використовуючи виключення C++ або систему повернення кодів помилок. Змога відновлення після помилок, особливо при збоях мережі або помилках парсингу.
Профайлер: Використання gprof або perf для визначення "вузьких місць" в коді та наступної оптимізації.
Документація: Докладна документація до коду, включаючи керівництво користувача та коментарі до ключових частин коду.
Тестування: Реалізація unit-тестів для перевірки функціоналу парсера та мережевих операцій.
Функціональні вимоги:
Парсер повинен витягувати актуальні дані з вказаного веб-сайту.
Автоматична передача даних за протоколом UDP на задані IP-адреси у форматі , .
Автоматичне присвоєння ID кожній новині при додаванні до бази даних.
Можливість масштабування та додавання нових джерел для парсингу без значущої переробки коду.