Vitaphoto: Ловушки — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м
Строка 20: Строка 20:
  
 
[[Категория:Разработка]]
 
[[Категория:Разработка]]
 +
[[Категория:Sway]]

Версия 02:15, 25 марта 2010

«Hooks», или «ловушки», или «точки расширения», или «добавочные процедуры» — специальные точки в коде, в которые можно встраивать вызовы дополнительных процедур без модификации кода вызывающего модуля. Таким образом достигается расширяемость приложения. Пример: MediaWiki широко использует механизм ловушек, что и привело к наличию примерно 1500 расширений для неё.

Vitaphoto 1.4 также будет содержать механизм «хуков»; в сочетании с простотой платформы Sway Solstice, теоретически, это должно дать неплохую расширяемость.

Для чего нужны хуки в Vitaphoto, какие расширения тут возможны? Вот примеры:

  • «Видео» — чтобы можно было выкладывать не только фотографии, а также видеоролики. Можно даже с автоматическим перекодированием в фоновом режиме отдельным процессом scaledaemon’а.
  • «Иерархическая галерея» — замена теговой организации на иерархическую, прямо по физическим названиям каталогов и файлов.
  • «Визитка для меток» — спецстраница, позволяющая по любому набору меток (тегов) вывести для каждого из них по N (N ~ 3) наиболее популярных фотографии, чтобы «прикинуть, о чём это». Плюс устанавливающая себя в качестве обработчика ссылок на несовместный набор меток — то есть такой набор, для которого нет ни одной фотографии, имеющей все эти метки.
  • «Возможно, вы имели ввиду» — установка обработчика неизвестных приложению меток с использованием подстрок («Вася Пупкин» по метке просто «Пупкин») или редакторского расстояния («долмен» вместо «дольмен»).
  • Обязательно нужна возможность обработки неизвестного «пространства имён» в ссылках (первого компонента ссылки). Тут фантазий может быть море, например, RSS-трансляция какого-нибудь блога или другое извращение.

Первые два примера в первую очередь содержат хуки в ScaleDaemon. Идеология следующая: вся информация о файле состоит из двух частей — имени и содержимого. ScaleDaemon отслеживает их изменения. Следовательно, нужно добавить хуки:

  • ParseFileName — например, «взять путь из имени».
  • ParseFileData — например, «взять EXIF-метаданные из имени».
  • SaveFile — «сохранить EXIF в базу», «сохранить теги в базу».
  • ScaleFile — предположительно «эксклюзивная» ловушка (то есть с ровно одним обработчиком) для масштабатора (:-D) изображений.
  • DeleteFile — «удалить EXIF из базы» (хотя это можно поручить внешним ключам).