Изменения

Перейти к: навигация, поиск

Vitaphoto

19 589 байтов добавлено, 12:42, 13 июля 2009
Новая: Vitaphoto — система управления фотогалереями, обладающая некоторыми уникальными отличительными особен...
Vitaphoto — система управления фотогалереями, обладающая некоторыми уникальными отличительными особенностями, самая главная из которых — заливка фотографий в галерею не через веб-интерфейс, а ''обычным копированием файла в заданную директорию на сервере''. Т.е., ФС-ориентированность.

На данной странице вы можете узнать об истории и преимуществах системы Vitaphoto над прочими аналогичными. Среди них — удобство использования, гибкость, безопасность и возможность управления множеством галерей на одном сервере.

== История создания Vitaphoto ==

Причиной создания Vitaphoto послужило то, что… мне просто захотелось выкладывать фотографии к себе на сайт. Фотохостинги я не люблю — вот лишь небольшой список их недостатков с моей точки зрения:

* имена файлов после заливки, как правило, теряются;
* нет возможности резервного копирования;
* в моде AJAX и браузерные интерфейсы, кое-где (Picasa) из-за этого «Opera поддерживается не полностью», а Opera — мой любимый браузер, да и вообще не люблю я, когда всё пестрит;
* многие сервисы изобилуют рекламой;
* многие сервисы расположены на загруженных или отдалённых от России серверах, короче, банально «тормозят»;
* многие сервисы используют откровенно некачественные алгоритмы масштабирования изображений (например, ФотоФайл);
* добавление фото практически везде ведётся только через веб-интерфейс или через 'специально разработанную' программу-* клиент, а они, как правило, ещё и убого («плюшево») выглядят, или напичканы ненужными функциями;
* как правило, нет возможности скачать альбом на диск полностью, а кое-где с этим даже ведут борьбу (всё тот же ФотоФайл);
* некоторые сервисы стараются даже запретить выкладывать фотографии в блог без вставки ссылки на сам сервис.

И наоборот, на преимущества вроде кластеризатора фотографий (Flickr), или возможности «отправить ссылку на этот альбом» (Picasa), или возможности онлайн-заказа печати фото (ФотоФайл, НетПринт) мне откровенно наплевать. Иногда, возможно, и было бы интересно поиграться, но не более того.

Возможно, вы и сами уже прочувствовали на себе некоторые из этих недостатков. Обо мне и говорить нечего, меня они просто достали :-)

Потому я и создал Vitaphoto. Преимущества Vitaphoto с моей точки зрения:

* добавление фотографий и альбомов представляет собой обычное копирование файлов, которое можно осуществлять по FTP и в любых объёмах, пока не закончится место на диске. Все скопированные фотографии добавляются в базу данных автоматически. Кстати, это будет легко и для непродвинутых пользователей, ибо даже виндовый Проводник может работать с FTP серверами;
* все метаданные фотографии (название, теги) сохраняются в именах файлов, при этом, благодаря созданию символических ссылок на файлы, отсутствуют проблемы при запросе файлов с именами в русских кодировках;
* резервное копирование просто до безумия — достаточно зайти на сервер по FTP и слить к себе все файлы;
* точно так же просто дать доступ на скачивание всех фотографий кому-либо, заведя отдельную учётную запись FTP;
* и точно так же просто дать доступ на добавление фотографий кому-либо, не ставя под угрозу собственную безопасность — необходимо завести отдельную учётную запись FTP для подкаталога домашней директории фотогалереи, и положить в него недоступный на запись через FTP файл «dirinfo» с заданием кодировки имён файлов и/или автоматически проставляемых на все фотографии подкаталога тегов;
* фотографии масштабируются по алгоритму Lanczos с использованием программы ImageMagick — это означает качество;
система рассчитана на любое количество галерей, управляемых одним приложением;
* в описании альбома можно пользоваться простым wikiобразным синтаксисом для форматирования текста;
* мне гораздо удобнее держать мою фотогалерею расположена на моём сайте, а не на некотором неизвестном фотохостинге.

Система управления фотогалереями Vitaphoto написана на языке [[Perl]] 5 с использованием модуля Apache 2 [[mod_perl]] 2.0. Я старался создать простую и удобную систему со вменяемым исходным кодом. Вменяемым, кстати, исходный код стал не сразу, а только в версии Vitaphoto 1.2, написанной в районе конца февраля — начале марта 2008 года. Кроме того, мне очень близки идеи Лэрри Уолла, в частности TMTOWTDI (There’s More Than One Way To Do It — «Это можно сделать по-разному»), а также «приятно быть важным, но куда важнее быть приятным». Возможно, они тоже наложили свой отпечаток на систему.

=== Планы ===

Разработка у меня ведётся эпизодически — по принципу «в попу стрельнуло» :-D. Поэтому не надо удивляться таким большим промежуткам между выпусками версий. Вообще, планы на ближайшее будущее таковы:

* Страница профиля плюс-минус интеграция его с OpenID;
* Разграничение доступа к фотографиям;
* Возможность выбора порядка сортировки в альбомах;
* Выложить исходный код в открытый доступ, возможно, поднять багзиллу или RT;
* Выполнить очередную порцию TODO и усовершенствований кода.

=== Реализовано в Vitaphoto 1.3 ===

Версия Vitaphoto 1.3 соответствует 6 сентября 2008 года.

* Язык запросов по тегам, то есть, чтобы была позволена не только логическая операция «И», а также «ИЛИ» и «НЕ»; автоматическое вычисление вхождения альбома в альбом (используется приведение выражения к ДНФ);
** То есть, можно задавать логические выражения (в стандартном базисе :-D) над тегами. Это могут делать все на [http://vmx.yourcmc.ru/s/vitaphoto/search.htm странице поиска]. Автоматическое вычисление вхождения подальбома в альбом (сравнение булевых функций, заданных формулами O_o);
* Голосование «за» и «против» фотографий, с возможностью привязки к комментариям;
* Онлайн-конфигурация своей фотогалереи (надо быть root’ом);
* Комментарии к фотографиям (иерархические, с возможностью ответа);
* Возможность рассылки ответов на комментарии по электронной почте;
* «Анонимный логин» (через ввод CAPTCHA) — чтобы быть анонимусом (c), нужно подтвердить, что вы не компьютер;
* [http://vmx.yourcmc.ru/vitaphoto/auth/openid/ Вход по OpenID] с автоматической регистрацией локального образа пользователя;
* Возможность использования различных кодировок имён файлов в различных подкаталогах;
* Возможность автоматически ставить некоторые теги на все файлы в заданных подкаталогах;
* Дальнейшие усовершенствования архитектуры кода (в первую очередь Web-приложения).

=== Реализовано в Vitaphoto 1.2 ===

Версия Vitaphoto 1.2 соответствует 8 марта 2008 года.

* Apache 2.x / mod_perl 2.x вместо Apache 1.x / mod_perl 1.x, логгирование через Log4perl;
* Огромные усовершенствования структуры и архитектуры кода (он внезапно стал вменяемым);
* Отдельный демон — обновлятор (ScaleDaemon). Обновление фотогалереи, основанное на мониторинге рабочих каталогов и * обработке событий (используется доработанная версия Sys::Gamin);
** Теперь добавление/обновление/удаление фотографий из базы данных осуществляется отдельным демоном (scaledaemon.pl), и основано на мониторинге файловой системы через [http://search.cpan.org/~garnacho/Sys-Gamin-0.1/lib/Sys/Gamin.pm Sys::Gamin], ранее доработанный мною; это значит, что теперь система не занимается постоянными проверками в духе «а не изменились ли какие-нибудь файлы?», а точно в нужное время получает события от [wikipedia:Gamin]'а и действует на их основе;
* Отказ от древовидной структуры галереи. На каждое фото ставятся теги, альбом — подмножество файлов, имеющих заданный набор тегов. Запрос всех файлов, имеющих заданный тег, по вводу URL вида http://vmx.yourcmc.ru/vitaphoto/tag/природа/;
** Теперь для каждого файла можно (и нужно) задавать список меток (тегов), а альбом является срезом по заданному набору тегов, или просто содержит все файлы, как сейчас главная страница моей фотогалереи; также можно просматрировать списки файлов, имеющие задаваемый прямо в адресной строке тег (например, http://vmx.yourcmc.ru/vitaphoto/tag/art/);
* Извлечение всех метаданных (тегов, имени, приоритета отображения, статуса скрыто/видимо) из имени файла;
** Лично у меня теперь все фотографии имеют имена вроде «02-0935 (портрет, ВМК, Наташа Дышкант) +2 +H.jpg». 02-0935 — не обязательные числа, но для меня очень удобно их писать — это номер фотографии, присвоенный фотоаппаратом. В скобках перечислены метки. +2 — приоритет отображения, а +H означает, что фото скрыто;
* Хитрая схема хранения фотографий. В двух словах её не опишешь… Если говорить о её преимуществах — то это:
** отсутствие необходимости в постоянных перенаправлениях 302 Found браузера, обрабатываемых мод_перлом, так как автоматически создаются и поддерживаются символические ссылки на файл, миниатюру и изображение среднего размера по ID в базе;
** по той же причине отсутствие проблем с запросом файлов с русскоязычными именами;
** отсутствие необходимости удалять, а потом добавлять файл в базу при переименовании, по причине того, что заливаемые фотографии превращаются в символические ссылки на файл в специальной поддиректории «хранилище» (store);
** эти символические ссылки относительные, поэтому нет проблем с копированием файлов по FTP (в случае абсолютных проблемы бы были, так как большинство FTP серверов делают chroot после авторизации пользователя);
* Ссылки на фотографии по именам;
** Добавлена возможность обращаться к фотографиям, масштабированным изображениям, альбомам по имени, а не только по ID — очень полезно для вставки ссылок на фотографии на внешние страницы. Так, например, я сделал во всех записях своего ЖЖ, в которых были выложены фотографии, дабы впредь больше ссылки менять не пришлось;
* Каждый альбом также представлен отдельным файлом (текстовым), и также обновляется в базе данных ScaleDaemon-ом;
* Возможность использования викиобразной (собственной разработки) разметки в описаниях альбомов;
** Добавлена возможность относительно несложной викиобразной разметки описаний альбомов. Разметка — собственная разработка («велосипед», ага). Как несложно заметить, если в альбоме не будет фотографий, но будет описание — мы получим просто статическую страницу;
* Страницы ошибок вместо чёрных надписей «401 Unathorized», «403 Forbidden» и т. п. на белом фоне;
** Теперь вместо сообщений 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Internal Server Error вы увидите относительно дружелюбные страницы ошибок (например, 404 Not Found выглядит [http://vmx.yourcmc.ru/s/vitaphoto/not_found.htm так]).
* Переписана куча кода;
** Теперь код стал а) вменяемый и б) объектно-ориентированный (фотография — объект, фотоальбом — объект). Это я сделал, когда написал код обновления галереи в том же стиле, в каком был написан мною весь код летом, и понял, что дальше так жить нельзя. Код был укуренный, а теперь отпустило :) превеед, [http://m0r1k.livejournal.com m0r1k]! Ты меня почти воспитал;
* Ведение простой статистики в БД.

=== Реализовано в Vitaphoto 1.1 ===

Версия Vitaphoto 1.1 соответствует 17 августа 2007 года.

* Авторизация (по сути бессмысленная, так как ничего не давала);
* Чтение EXIF информации из фотографий.

=== Реализовано в Vitaphoto 1.0 ===

Версия Vitaphoto 1.0 соответствует 19 июля 2007.

* Первая версия фотогалереи;
* Множественные конфигурации (несколько галерей под управлением одного приложения);
* Автообновление всей галереи каждые N минут при HTTP-запросе;
* Иерархическая структура галереи (каталог — альбом, файл — фотография);
* Задание приоритетов, названий фото и каталогов в специальных файлах «Dirinfo».

Навигация