Когда-то давно, на сервисе для фотографов Flickr, выдавали всем по 1ТБ места
бесплатно и навсегда (UPD: не навсегда). Я попал под раздачу и с тех пор не пользовался сервисом. Когда перевел блог
на Github Pages , задумался на счет изображений, долгое время они, как наследие от вордпресса, хранились
на Cloudinary, но затем я решил использовать Flickr для этого.
Cервис оказался удобным для обычного использования, но не совсем подходящим для
использования как хранилище, узнав, что есть API, я решил сделать для него обертку, через
которую мне было бы удобно загружать, удалять и просматривать изображения, которые будут
использоваться в блоге, а так же быстро получать ссылки на оригиналы изображений. У такого подхода,
как мне кажется, есть куча плюсов. Быстрый CDN , бесплатное хранение и отдача, возможность получить
изображение в разных размерах и даже квадратное.
Первая, наивная реализация была сделана за 30 минут, на простых Ruby скриптах, каждый из которых
выполнял одну определенную операцию. Дальнейшим шагом было решено оформить это все в виде
веб-приложения на Sinatra .
Сейчас приложение уже версии 0.5 и пока я замедлил работу над ним, так как им можно пользоваться,
а внедрение новых функций не критично. Выглядит оно как на скриншоте ниже.
На данный момент поддерживаются следующие функции:
- Выгрузка в sqlite базу списка фотографий загруженных в облако flickr (выгружаются: ссылка на оригинал, заголовок, ссылка для показа превью)
- Удаление одной или нескольких фотографий из облакка
- Загрузка фотографий в облако (пока только по одной за раз)
Из технологий используются:
sinatra
- не рельсами единымиslim
- пишем html шаблоны без %flickraw
- собственно гем для работы с flickr API - тыцyaml
- держим конфиги в yamldata_mapper
- легкий ORMpuma
- мой выбор веб-сервера для ruby проектов
Из полевых заметок:
Menu in generated fileв первых версиях, приложение просто генерировало html с изоражениями, а не сохраняло информацию в БДGenerate only data and show through slim templateбыла идея генерировать только данные, ну в txt сохранять чтолиDelete one fileпервая реализация удаления, удаляла все изображения в облакеUpdating in backgroundАктуализация данных, об изображениях, которые хранятся в облаке, может быть очень долгой при большом количестве файлов, поэтому она была вынесена в фоновые задачи, за счет потоков RubySome 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 и лежит - здесь .
UPD: Новая версия