Генератор preview thumbnails веб-страниц
Необхоидмо составить концепцию и реализовать генератор превью-картинок различных задаваемых веб-страниц.
На вход генератору будет подаваться список УРЛей. На выходе должны появляться маленькие картинки-скриншоты этих страниц.
Примеры того, какие именно превью имеются ввиду:
http://www.thumbshots.net/search.aspx?q=assassins+creed
http://snapcasa.com/SampleSnap.aspx
Генератор тамбнейлов страниц должен быть реализован в виде многопоточного fastcgi либо http proxy сервера (количество одновременно работающих потоков должно настраиваться в конфиг файле, ожидается, что их будет 10-20). Требования:
1. Работа в связке с nginx
Данный fastcgi/http proxy будет работать в связке с nginx+модуль кэширования (http://www.webtatic.com/blog/2008/04/page-level-caching-with-nginx/). К nginx будут приходить url на обработку в виде http://mythumbnailmaker.com/?url=http://google.com. Если для данного урла уже был сгененирован thumbnail, то он отдается из nginx кэша, иначе запрос передается fastcgi/http proxy, который генерит тамбнейл и отдает nginx-у. nginx в свою очередь отдает клиенту картинку и сохраняет ее на диск (в кэш).
2. Логика генерации тамбнейла
- изначально нужно рендерить страницу для области просмотра 1280x1024 (размеры нужно вынести в конфиг файл).
Если сайт имеет бОльшие размеры, тамбнейл должен формироваться на основе его левой верхней части.
- картинка должна уменьшаться до указанного в файле конфигурации размера (например 125x100).
- поверх картинки должен накладываться полупрозрачный png, указанный в конфиг файле
- результирующая картинка конвертируется в jpeg формат с указанным в конфиг файле качеством и отдается клиенту.
3. Загрузка документов
- Обязательно должно поддерживаться gzip сжатие загружаемого контента
- разрабатываемый сервер должен уметь загружать файлы через http proxy (настройки должны быть в конфиг файле)
- ОПЦИОНАЛЬНО НО ОЧЕНЬ ВАЖНО: оптимизация загрузки графики. Должны загружаться только те картинки, которые попадают
в область, на основе которой строится тамбнейл.
- Должна быть поддержка флешевых объектов.
4. Требования к реализации
- Разрабатываемый сервер будет работать под OC Linux.
- Конечный язык реализации и набор библиотек должне быть заранее с нами согласован
- Мы бы предпочли, чтобы разработка велась на C++ с использованием библиотек webkit/qt