Readbox.info — rss-ридер с плюшками

Несмотря на вечернюю лень, начну рассказ о своём детище.
В феврале месяце у меня возникала идея написать собственный агрегатор rss-лент с домино и медведями. Зачем? Чаще всего проекты создаются по одной из двух причин: или создатель сам нуждается в подобном сервисе, или очень хорошо владеет данной областью.
Readbox попал под первый случай. Существующие ридеры не устраивали меня по нескольким причинам.
Во-первых, я много читаю на английском, которым к сожалению не владею в совершенстве. Поэтому часто возникает необходимость в переводе незнакомых слов и фраз без отрыва от чтения статьи.
Во-вторых, зачастую сайты отдают rss-ленты с недостатками: относительные пути к картинкам, ЖЖшные теги и прочие.
В-третьих, будучи счастливым обладателем покетбук 360, я люблю читать интересные статьи оффлайн, лёжа на диване и пользуясь преимуществом электронных чернил.
Наиболее адекватный Google Reader не решал поставленные задачи. Поэтому я засучил рукава и в апреле месяце стал первым пользователем нового rss-агрегатора, решившего первые две задачи.
Признаюсь, что была ещё одна причина — попробовать написать приложение с навигацией, основанной на якорях в урлах аля «https://mail.google.com/mail/#search/rss».
Немного технической информации
«Мордочка» проекта написана на Ruby on Rails. Сначала я использовал монгрел, потом попробовал jruby на Glassfishе, но в итоге остановился на thin. Он оказался удобным в управлении, без глюков и работал со стандартным интерпретатором руби, что обеспечивало совместимость с последними версиями языка и рельсов.
Естественно, всё это крутится за спиной nginxа.
Основной БД я выбрал MySQL, потому что лучше всего её знаю. Также использую memcache для кеширования, но присматриваюсь к membase, который появился сравнительно недавно.
Большие объёмы текстовых данных пока хранятся в том же MySQL в архивированном виде (можете предложить другое эффективное решение?). Это позволило запросто прикрутить сфинкс для поиска по тексту.
Наиболее сложной частью стало написание демона, который делает самую тяжёлую работу: обработку лент и хтмла. Выбор пал на яву из-за хорошей производительности, наличия мощных библиотек и отлично реализованной многопоточности с экзекуторами, пулами и планировщиками. Чтобы сделать из обычного приложения на яве полноценный демон линукса, я использовал Java Service Wrapper. Хочу поблагодарить хабраюзера lebedi за консультации по яве и за помощь с железом и дц )
В качестве комет-сервера рекомендую реалплексор Дмитрия Котерова и не рекомендую ape.
С какими трудностями я столкнулся
Огромное количество информации приходит извне и нуждается в серьёзной обработке и доработке. Вы даже себе не представляете, насколько корявыми могут быть rss. Чего только стоит сайт Дилберта, возвращающий заголовок «Content-Type: text/html; charset=utf-8lias».
Изрядно пришлось потрудиться, чтобы оптимально обновлять ленты, при этом не скачивая ежечасно пол интернета.
А также править баги библиотечек явы, которые хороши и удобны, но видно редко сталкиваются с сайтами на русском.
Дальше-больше
Летом я добавил в ридбокс возможность создавать полнотекстовые rss для сайтов, которые отдают в лентах лишь фрагменты статей, а потом и долгожданную конвертацию rss в формат книг fb2.

Также стали доступны многие горячие клавиши, привычные пользователям гуглридера.
В планах:
1. улучшение интерфейса (80% времени тратится именно на это),
2. решение проблемы огромного объёма данных, когда просто нереально читать всё и надо выделить главное,
3. мобильная версия.
Заранее извиняюсь перед пользователями оперы, в которой сайт работает не совсем корректно (лучше запустите ФФ или хром).
Благодарю всех, кто найдёт время оценить и оставить отзывы здесь в комментариях или на реформале.
Регистрация необязательна. Поехали!

П.С. Все комментарии аля «Зачем это нужно? Разве мало готовых решений?...» игнорируются :P
П.П.С. Поскольку хабраэффект смог затруднить работу даже выделенному серверу, то возможны перебои.
Воспользовался сервисом www.resizer.co/ Интересно, выдержит ли он хабраэффект.



комментарии (113)