Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Github RSS

Когда-то давно, на сервисе для фотографов от Yahoo - flickr.com, выдавали всем по 1ТБ места бесплатно и навсегда. Я попал под раздачу и с тех пор не пользовался сервисом. Когда перевел блог на github pages , задумался на счет изображений, долгое время они, как наследие от вордпресса, хранились на cloudinary, но затем я решил использовать flickr для этого.

Cервис оказался удобным для обычного использования, но не совсем подходящим для использования как хранилище, узнав, что есть API, я решил сделать для него обертку, через которую мне было бы удобно загружать, удалять и просматривать изображения, которые будут использоваться в блоге, а так же быстро получать ссылки на оригиналы изображений. У такого подхода, как мне кажется, есть куча плюсов. Быстрый CDN , бесплатное хранение и отдача, возможность получить изображение в разных размерах и даже квадратное.

Первая, наивная реализация была сделана за 30 минут, на простых ruby скриптах, каждый из которых выполнял одну определенную операцию. Дальнейшим шагом было решено оформить это все в виде веб-приложения на Sinatra .

Сейчас приложение уже версии 0.5 и пока я замедлил работу над ним, так как им можно пользоваться, а внедрение новых функций не критично. Выглядит оно как на скриншоте ниже.




На данный момент поддерживаются следующие функции:

  • Выгрузка в sqlite базу списка фотографий загруженных в облако flickr (выгружаются: ссылка на оригинал, заголовок, ссылка для показа превью)
  • Удаление одной или нескольких фотографий из облакка
  • Загрузка фотографий в облако (пока только по одной за раз)

Из технологий используются:

  • sinatra - не рельсами едиными
  • slim - пишем html шаблоны без %
  • flickraw - собственно гем для работы с flickr API - тыц
  • yaml - держим конфиги в yaml
  • data_mapper - легкий ORM
  • puma - мой выбор веб-сервера для ruby проектов

Из полевых заметок:

Menu in generated file

в первых версиях, приложение просто генерировало html с изоражениями, а не сохраняло информацию в БД.

Generate only data and show through slim template

была идея генерировать только данные, ну в txt сохранять чтоли.

Delete one file

первая реализация удаления, удаляла все изображения в облаке.

Updating in background

Актуализация данных, об изображениях, которые хранятся в облаке, может быть очень долгой при большом количестве файлов, поэтому она была вынесена в фоновые задачи, за счет потоков ruby.

Some js for ajax

удобнее когда страница не обновляется при каждом чихе.

Selecting from DB

таки прикрутил базу данных.

Updating DB

см. выше.

Deleting with DB

см. выше.

Pretty wiews? - над интерфейсом стоит еще поработать.

Upload many files in one time - загрузка файлов пока возможна только по одному и не через ajax, это хочется переделать.

Rescue errors - некоторые ошибки обрабатываются, но довольно криво, это нужно сделать по человечески.

Также, все чаще задумываюсь о написании тестов, а еще нужно сделать нормальную инициализацию приложения, например в случае если нет доступов к flickr (имеется ввиду, человеко понятный способ получения необходимых для авторизации в API данных). В общем-то есть еще что допиливать, сам проект opensource и лежит - здесь .

#Ruby #Flickr #API