31 октября 2014 в 13:43

Orb. DIY-cервер новостей из песочницы

Привет всем!

Перед закрытием Google Reader в 2013-м году захотелось написать что-то свое на эту тему. Чтобы оно собирало новости из RSS и было видно, что читал, а что — нет. Плюс было желание поработать с GAE и Angular. Позднее, после нескольких разочарований в собственных CSS cross-browser скиллах, к этой компании присоединился еще и IonicFramework. То, что в итоге получилось, на мой взгляд, довольно удобно, используется мной ежедневно и, может быть, кому-то тоже пригодится.

Приглашаю под кат всех желающих самостоятельно собрать и запустить на Гугловых серверах свой личный агрегатор новостей.

Инструменты


  • Java7 JDK. На всякий случай ссылка, где взять инсталлятор;
  • Пустое приложение на GAE аккакунте. Как сделать описано здесь;
  • Git. Думаю, любой. Помимо скачивания исходников, git.exe понадобится еще и при сборке. Я использую тот, что приезжает с инсталлятором GitHub for Windows;
  • GAE SDK for Java. Взять его можно здесь. Распаковать в любой каталог, и полный путь к этому каталогу прописать в переменную окружения GAE_HOME;
  • Ant. Cкачать можно тут. Как устанавливать написано тут.


Детальки


Качаем исходники:

git clone -b latest https://github.com/igors48/nmdService.git


Перед сборкой нужно подстроить индивидуальные параметры сборки вашего экземпляра сервера. Для этого в корневой директории проекта копируем файл build.properties.template, копию называем build.properties.local. Открываем в любом текстовом редакторе и прописываем значения для таких параметров:

  • email — GMail адрес соответствующий аккаунту с которого вы создавали пустое GAE приложение;
  • application.identifier — идентификатор вашего GAE приложения;
  • git.executable — путь к git.exe или как он называется в вашем случае. Здесь нужно обратить внимание на слеши. Они должны быть такими — "/"

Остальные параметры пока можно оставить как есть.

Сохраняем, закрываем.

Сборка и запуск


Для проверки попробуем поднять сервер локально. Для этого запускаем dev_server.bat. Если все пройдет успешно, то сервер должен отвечать по адресу localhost:8080. После проверки локальный сервер нужно остановить с помощью Сtrl-C. Если просто закрыть окно, то сервер останется висеть на 8080-м порту молчаливым упреком и убить его можно будет только из менеждера процессов. По крайней мере, под Windows это так.

Теперь финальный шаг. «Ради этого все и писалось (с)». Деплоим на GAE. Для этого выполняем ant update. Перед деплоем Ant спросит пароль к GMail аккаунту. Если деплой завис, что изредка бывает, то его нужно остановить с помощью Ctrl-C и выполнить ant rollback. После этого можно опять пробовать ant update.

Если все прошло нормально, ваш личный сервер новостей будет доступен по адресу %application.identifier%.appspot.com. Админка, с логами, графиками и базой, по адресу appengine.google.com. Желаю приятного использования!

Бонус


Помимо РСС можно тянуть новости из твиттера. Для этого нужен твиттер аккаунт и ключи — consumer key и consumer secret. Получить их можно здесь.

Полученные ключи нужно прописать в build.properties.local в переменные twitter.apiKey и twitter.apiSecret, соответственно. После этого сервер нужно передеплоить.

Заключение


Скриншоты:

Список категорий:

image

Список фидов в категории:

image

Список новостей в фиде:

image

Отображение анонса новости:

image

Страница проекта на GitHub здесь.

Буду рад замечаниям, пожеланиям, вопросам и критике. У меня еще есть ряд идей для воплощения в рамках этого проекта, но, возможно, кто-то подскажет что-то еще.

Спасибо за внимание.
Игорь Усенко @igors48
карма
3,0
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (6)

  • 0
    Зачем нужен Ant? Это особенность Java-версии GAE?
    • 0
      Чтобы собрать и задеплоить. В принципе, можно было и Мавен использовать. Но я его не люблю. Использую только в тех проектах, где есть требование использовать именно его, ну или он там уже есть.
  • 0
    Я пока не пользуюсь rss-агрегаторами, но мне кажется, вам нужно тщательнее поработать над UX. Жаль, что вы не дали ссылку на тестовое приложение, чтобы можно было потыкаться, поэтому сужу только по скриншотам.
    По отдельной странице на список категорий, список фидов и список новостей — это слишком. Контекст постоянно меняется. Почему бы не сделать интерфейс почтового клиента: слева дерево категорий, справа сверху список новостей, справа внизу просмотр?
    Иконки тоже для меня непонятны.
    Мне, например, нравится интерфейс Thunderbird, где я сейчас и читаю rss.
    • 0
      Дело в том, что интерфейс разрабатывался в расчете на экран смартфона. А там тяжеловато с такими понятиями как «слева», «справа сверху» и «справа снизу».
      • 0
        Тогда извините, по скриншотам из десктопного браузера я этого не понял.
        В этом случае полагаю что-то вроде прячущегося aside было бы удобно.
  • +2
    Мне кажется, или хаб «DIY или Сделай Сам» немного совсем не про это?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.