Изменения

Vitaphoto

3987 байтов добавлено, 12:42, 20 июня 2016
* некоторые сервисы стараются даже запретить выкладывать фотографии в блог без вставки ссылки на сам сервис.
И наоборот, на преимущества вроде кластеризатора фотографий (Flickr), или возможности «отправить ссылку на этот альбом» (Picasa), или возможности онлайн-заказа печати фото (ФотоФайл, НетПринт) мне откровенно наплевать. Иногда, возможно, и было бы интересно поиграться, но не более того. «Социальные сети… Облачность… Интеграция с тем… Интеграция с этим… Интеграция с интеграцией… Теперь другу можно отправить фотку одним кликом сидя в туалете, но нельзя выключить компьютер!» (лор).
Возможно, вы и сами уже прочувствовали на себе некоторые из этих недостатков. Обо мне и говорить нечего, меня они просто достали :-)
* Точно так же просто дать доступ на скачивание всех фотографий кому-либо, заведя отдельную учётную запись FTP.
* И точно так же просто дать доступ на добавление фотографий кому-либо, не ставя под угрозу собственную безопасность — необходимо завести отдельную учётную запись FTP для подкаталога домашней директории фотогалереи, а в название самой директории включить теги, которыми будет автоматически помечено всё содержимое, и (по желанию) название кодировки имён файлов;
* Фотографии масштабируются по алгоритму Lanczos с использованием ImageMagick / GraphicsMagick — иными словами, "качественные миниатюры"«качественные миниатюры»!
* Лично мне гораздо удобнее держать мою фотогалерею расположенной на своём сервере, а не на некотором стороннем фотохостинге.
* Стабильное по датам разбиение всей фотогалереи на страницы, идентификация фотографий по именам, гламурненький дизайн, несколько размеров фото на выбор.
Система управления фотогалереями [[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.4.4 5 ==
Активная в данный момент разрабатываемая версия. Фичи:
* Код снова подрос, его нужно привести в более MVP-состояние, разнести на модули / классы страниц.
* {{ok}} Обработка изменений в именах директорий в процессе мониторинга, а не только при его начале
** {{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 ** 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 ==
Почему идущая после 1.3 версия 1.4 называется также V3? Ответ кроется в версии схемы базы данных — это её третий вариант с момента зарождения. Первая база называлась просто «vitaphoto» (Vitaphoto 1.0, 1.1), вторая несовместимая с первой и заполняемая заново (Vitaphoto 1.2, 1.3) «vitaphotov2», третья и теперешняя «vitaphotov3».
Разработка системы ведётся=== Системные требования === Требуются следующие Perl-модули (установить командой cpan, как всегда, эпизодически — по принципу «в попу стрельнуло», а в попу обычно стреляет сделать чтоона же <tt>perl -нибудь глобальноеMCPAN -e shell</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> Также требуется один из модулей Graphics::Magick (из комплекта [http://www. Мелочи не привлекаютgraphicsmagick.org/ graphicsmagick]), {{CPAN|Image::Magick}} или {{CPAN|GD}}.
=== Анализ V2 ===
* Язык запросов по тегам, то есть, чтобы была позволена не только логическая операция «И», а также «ИЛИ» и «НЕ»; автоматическое вычисление вхождения альбома в альбом (используется приведение выражения к ДНФ);
** То есть, можно задавать логические выражения (в стандартном базисе :-D) над тегами. Это могут делать все на [http://vmx.yourcmc.ru/s/vitaphotolegacy-static/search.htm странице поиска]. Автоматическое вычисление вхождения подальбома в альбом (сравнение булевых функций, заданных формулами O_o);
* Голосование «за» и «против» фотографий, с возможностью привязки к комментариям;
* Онлайн-конфигурация своей фотогалереи (надо быть root’ом);
Архитектурные отличия старой версии 1.2 от более новых:
* благодаря Была завязка на [http://perl.apache.org/ mod_perl] 2.0;* Благодаря созданию символических ссылок на файлы, отсутствуют проблемы при запросе файлов с именами в русских кодировках, но зато теряются полные имена файлов при скачивании;* чтобы Чтобы дать доступ на добавление фотографий кому-либо, не ставя под угрозу собственную безопасность — необходимо завести отдельную учётную запись FTP для подкаталога домашней директории фотогалереи, и положить в него недоступный на запись через FTP файл «dirinfo» с заданием кодировки имён файлов и/или автоматически проставляемых на все фотографии подкаталога тегов;* система Система рассчитана на любое количество галерей, управляемых одним приложением;* в В описании альбома можно пользоваться простым wikiобразным синтаксисом для форматирования текста;.
== Реализовано в Vitaphoto 1.1 ==
[[Категория:Sway]]
[[Категория:РазработкаАрхив]]