Изменения

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

Vitaphoto

5519 байтов добавлено, 12:42, 20 июня 2016
* некоторые сервисы стараются даже запретить выкладывать фотографии в блог без вставки ссылки на сам сервис.
И наоборот, на преимущества вроде кластеризатора фотографий (Flickr), или возможности «отправить ссылку на этот альбом» (Picasa), или возможности онлайн-заказа печати фото (ФотоФайл, НетПринт) мне откровенно наплевать. Иногда, возможно, и было бы интересно поиграться, но не более того. «Социальные сети… Облачность… Интеграция с тем… Интеграция с этим… Интеграция с интеграцией… Теперь другу можно отправить фотку одним кликом сидя в туалете, но нельзя выключить компьютер!» (лор).
Возможно, вы и сами уже прочувствовали на себе некоторые из этих недостатков. Обо мне и говорить нечего, меня они просто достали :-)
Потому я и создал [[Vitaphoto]]. Преимущества [[Vitaphoto]] с моей точки зрения:
* добавление Добавление фотографий и альбомов видеороликов представляет собой обычное копирование файлов, которое можно осуществлять по FTP и в любых объёмах, пока не закончится место на диске. Все скопированные фотографии добавляются в базу данных автоматически. Кстати, это будет легко и для непродвинутых пользователей, ибо даже виндовый Проводник может работать с FTP серверами;.* все метаданные Название и теги фотографии (название, теги) сохраняются в именах файлов, при этом, благодаря созданию символических ссылок на файлы, отсутствуют проблемы при запросе файлов с именами в русских кодировках;время создания извлекается из EXIF-метаданных и метаданных видео.* резервное Резервное копирование просто до безумия — достаточно зайти на сервер по FTP и слить к себе все файлы;.* точно Точно так же просто дать доступ на скачивание всех фотографий кому-либо, заведя отдельную учётную запись FTP;.* и И точно так же просто дать доступ на добавление фотографий кому-либо, не ставя под угрозу собственную безопасность — необходимо завести отдельную учётную запись FTP для подкаталога домашней директории фотогалереи, а в название самой директории включить теги, которыми будет автоматически помечено всё содержимое, и положить в него недоступный на запись через FTP файл «dirinfo» с заданием (по желанию) название кодировки имён файлов и/или автоматически проставляемых на все фотографии подкаталога тегов;* фотографии Фотографии масштабируются по алгоритму Lanczos с использованием программы ImageMagick — это означает качество;* система рассчитана на любое количество галерейImageMagick / GraphicsMagick — иными словами, управляемых одним приложением;* в описании альбома можно пользоваться простым wikiобразным синтаксисом для форматирования текста;«качественные миниатюры»!* Лично мне гораздо удобнее держать мою фотогалерею расположенной на своём сервере, а не на некотором стороннем фотохостинге.* Стабильное по датам разбиение всей фотогалереи на страницы, идентификация фотографий по именам, гламурненький дизайн, несколько размеров фото на выбор.
Система управления фотогалереями [[Vitaphoto]] написана на языке [[Perl]] 5 с использованием 5 и может запускаться в разных конфигурациях — как простой отдельный HTTP-сервер, под CGI/FastCGI, под управлением запатченного модуля [http://nginx.ru/ nginx] ngx_http_perl_module и модулей Apache 2 .x [[http://perl.apache.org/ mod_perl]] 2.x] или Apache 1.x [http://perl.apache.org/docs/1.0/guide/index.html mod_perl 1.x]. Я старался создать простую и удобную систему со вменяемым исходным кодом. Вменяемым, кстати, исходный код стал не сразу, а только в версии 1.2, написанной в районе конца февраля — начале марта 2008 года. <s>И то не сталА может, только в 1.</s> 4 (2010 год). :-) Кроме того, мне очень близки идеи Лэрри Уолла, в частности TMTOWTDI (There’s More Than One Way To Do It — «Это можно сделать по-разному»), а также «приятно быть важным, но куда важнее быть приятным». Возможно, они тоже наложили свой отпечаток на систему. Разработка системы ведётся, как всегда, эпизодически — по принципу «в попу стрельнуло», а в попу обычно стреляет сделать что-нибудь глобальное. Мелочи не привлекают. == TODO для V3.1 / 1.5 == Активная в данный момент разрабатываемая версия. Фичи: * Код снова подрос, его нужно привести в более MVP-состояние, разнести на модули / классы страниц.* {{ok}} Обработка изменений в именах директорий в процессе мониторинга, а не только при его начале** {{ok}} Также чтобы при удалении тега, который есть также в имени директории, он не удалялся с файла* Поле выбора тега с автокомплитом* Навигация в начало галереи (к самым старым фотографиям)* (?) Редиректы со старых имён на новые* (?) Режим файлменеджера* {{ok}} X-Accel-Redirect на файл по короткому URL с отдачей Content-Disposition, с целью генерации красивого УРЛа к файлу, при этом отдающего правильное UTF-8 имя файла вне зависимости от кодировки имён файлов на диске** {{warning}} Здесь есть проблема у nginx - он не понимает URL-кодированные адреса в X-Accel-Redirect. [{{SVN|vitalif/trunk/scripts/patch-nginx-x-accel-uri-parsing.diff|co}} Написал патч], его отревьюили, но пока не приняли.* {{ok}} Опция быстрого старта ScaleDaemon’а <tt><nowiki>--skip-initial</nowiki></tt> — отключение изначальной проверки всех файлов на изменения в галерее* (?) Статистика (неплохо бы рисовать простой графичек)* Для видео:** {{ok}} Автоматическое теггирование всех видеороликов тегом "video"** {{ok}} Поддержка нескольких разрешений — ручное добавление уменьшенных версий с тегом "downsampled"** {{ok}} Поддержка pseudostreaming'а, т.е. возможность перемотки при добавленных FLV-метаданных и включённом flv-стриминге в веб-сервере** {{ok}} Разбор FLV-метаданных** Maybe также возможность задавать дату съёмки в имени (ибо в MP4 и пока что WEBM с метаданными беда)* RSS/Atom подписка на новые фотографии!* {{ok}} Путь к шаблонам по умолчанию брать относительно каталога с кодом* <s>Отдельное пространство имён для видео?</s>* {{ok}} Показывать все теги ролика во всплывающей подсказке в списке** {{ok}} Исключая автотег "video"!* (?) Асинхронная подгрузка миниатюр вместо зависания запроса, когда надо много отмасштабировать. Тут нужно обратить внимание на то, чтобы они не ломились кучей (создаются-то всё равно последовательно).* Что-то придумать на тему тегирования фото БОЛЬШИМ количеством тегов, когда результирующее имя файла получается длиннее лимита ОС (255 символов)* Возможность скрыть фото с главной Исправления багов:* {{ok}} Пропуск симлинков* {{ok}} Не обрабатывать левые файлы в каталоге с изображениями (типа *.php, например)* {{ok}} Ошибочное сообщение о пустом альбоме не показывалось* {{ok}} image.ISO Speed Used + image.ISO Speed Rating иногда показывались вместе, дублируя параметр ISO* {{ok}} Угадывание тегов не учитывало наличие фотографий с этими тегами из-за бага в селектбилдере
== Vitaphoto V3 / 1.4 ==
Версия [[Vitaphoto]] V3 / 1.4 соответствует 5 июля 2010 года. [{{SVN|vitaphoto/branchrelease/solstice?pathrev%2E11751.4}} Исходные коды 1.4].
Активная в данный момент версия. Качества:
* '''«Скажи синтетическим ключам „нет“!»''' Фотографии и альбомы идентифицируются по именам, а не по ID’шникам.
Почему идущая после 1.3 версия 1.4 называется также V3? Ответ кроется в версии схемы базы данных — это её третий вариант с момента зарождения. Первая база называлась просто «vitaphoto» (Vitaphoto 1.0, 1.1), вторая несовместимая с первой и заполняемая заново (Vitaphoto 1.2, 1.3) «vitaphotov2», третья и теперешняя «vitaphotov3».
Разработка системы ведётся, как всегда, эпизодически — по принципу «в попу стрельнуло», а в попу обычно стреляет сделать что-нибудь глобальное. Мелочи не привлекают.=== Системные требования ===
=== TODO для V3.1 Требуются следующие Perl-модули (установить командой cpan, она же <tt>perl -MCPAN -e shell</ 1.4.4 ===tt>):<pre>cpan Log::Log4perl Hash::Merge Net::Server PPI::Document Digest::SHA1 \ URI::Query URI::QueryParam URI::Escape HTTP::Body Image::EXIF \ Cache::FastMmap File::Path CGI::Cookie JSON HTTP::Server::Simple</pre>
* {{ok}} Обработка изменений в именах директорий в процессе мониторинга, а не только при его начале** {{ok}} Также чтобы при удалении тегатребуется один из модулей Graphics::Magick (из комплекта [http://www.graphicsmagick.org/ graphicsmagick]), который есть также в имени директории, он не удалялся с файла* {{okCPAN|Image::Magick}} Пропуск симлинков* Поле выбора тега с автокомплитом* Навигация в начало галереи* (?) Редиректы со старых имён на новые* Режим файлменеджера* или {{okCPAN|GD}} Опция быстрого старта ScaleDaemon’а <tt><nowiki>--skip-initial</nowiki></tt> — отключение изначальной проверки всех файлов на изменения в галерее* Статистика (неплохо бы рисовать простой графичек)* Для видео:** Поддержка нескольких разрешений — либо автоматическая перекодировка, либо ручное добавление уменьшенных версий** Поддержка pseudostreaming'а, т.е. возможность перемотки при добавленных FLV-метаданных и включённом flv-стриминге в веб-сервере** Разбор метаданных, maybe также возможность задавать дату съёмки в имени
=== Анализ V2 ===
* Язык запросов по тегам, то есть, чтобы была позволена не только логическая операция «И», а также «ИЛИ» и «НЕ»; автоматическое вычисление вхождения альбома в альбом (используется приведение выражения к ДНФ);
** То есть, можно задавать логические выражения (в стандартном базисе :-D) над тегами. Это могут делать все на [http://vmx.yourcmc.ru/s/vitaphotolegacy-static/search.htm странице поиска]. Автоматическое вычисление вхождения подальбома в альбом (сравнение булевых функций, заданных формулами O_o);
* Голосование «за» и «против» фотографий, с возможностью привязки к комментариям;
* Онлайн-конфигурация своей фотогалереи (надо быть root’ом);
** Теперь код стал а) вменяемый и б) объектно-ориентированный (фотография — объект, фотоальбом — объект). Это я сделал, когда написал код обновления галереи в том же стиле, в каком был написан мною весь код летом, и понял, что дальше так жить нельзя. Код был укуренный, а теперь отпустило :) превеед, [http://m0r1k.livejournal.com m0r1k]! Ты меня почти воспитал;
* Ведение простой статистики в БД.
 
Архитектурные отличия старой версии 1.2 от более новых:
* Была завязка на [http://perl.apache.org/ mod_perl] 2.0;
* Благодаря созданию символических ссылок на файлы, отсутствуют проблемы при запросе файлов с именами в русских кодировках, но зато теряются полные имена файлов при скачивании;
* Чтобы дать доступ на добавление фотографий кому-либо, не ставя под угрозу собственную безопасность — необходимо завести отдельную учётную запись FTP для подкаталога домашней директории фотогалереи, и положить в него недоступный на запись через FTP файл «dirinfo» с заданием кодировки имён файлов и/или автоматически проставляемых на все фотографии подкаталога тегов;
* Система рассчитана на любое количество галерей, управляемых одним приложением;
* В описании альбома можно пользоваться простым wikiобразным синтаксисом для форматирования текста.
== Реализовано в Vitaphoto 1.1 ==
[[Категория:Sway]]
[[Категория:РазработкаАрхив]]

Навигация