Изменения

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

Vitaphoto: Ловушки

2253 байта добавлено, 12:43, 20 июня 2016
«''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры''» — » — специальные точки в коде, в которые можно встраивать вызовы дополнительных процедур без модификации кода вызывающего модуля. Таким образом достигается расширяемость приложения. Пример: [[mediawikiwiki:MediaWiki|MediaWiki]] широко использует механизм ловушек, что и привело к наличию примерно 1500 расширений для неё.
[[Vitaphoto]] V3 / 1.4 также будет содержать содержить механизм «хуков»; в сочетании с простотой платформы [[Sway Solstice]], теоретически, это должно дать неплохую расширяемость.
Для чего нужны хуки в [[Vitaphoto]], какие расширения тут возможны? НапримерВот примеры:
* Чтобы {{ok}} '''«Видео»''' — чтобы можно было сделать расширение «видео»выкладывать не только фотографии, а также видеоролики. Можно даже с автоматическим перекодированием в фоновом режиме отдельным процессом scaledaemon’а.* Чтобы можно было заменить организацию галереи в виде множества фото '''«Иерархическая галерея»''' — замена теговой организации на иерархическую, прямо по физическим названиям каталогов с файламии файлов.* Чтобы можно было создать дополнительную спецстраницу'''«Визитка для меток»''' — спецстраница, позволяющая по любому набору меток (тегов) вывести для каждого из них по N (N ~ 3) наиболее популярных фотографии, чтобы «прикинуть, о чём это». Плюс устанавливающая себя в качестве обработчика ссылок на несовместный набор меток — то есть такой набор, для которого нет ни одной фотографии, выполняющую определённую функциюимеющей все эти метки.* Чтобы можно было добавить обработчик '''«Возможно, вы имели ввиду»''' — установка обработчика неизвестных приложению меток с использованием подстрок («Вася Пупкин» по метке просто «Пупкин») или редакторского расстояния («долмен» вместо «дольмен»).* Обязательно нужна возможность обработки неизвестного пространства имён «пространства имён» в ссылках(первого компонента ссылки). Тут фантазий может быть море, например, RSS-трансляция какого-нибудь блога или другое извращение.
Первые два примера в первую очередь содержат хуки в '''ScaleDaemon'''. Идеология следующая: вся информация о файле состоит из двух частей — частей — имени и содержимого. '''ScaleDaemon''' отслеживает их изменения. Следовательно, нужно добавить хуки:
* <tt>ParseFileName</tt>  — например, «взять путь из имени».* <tt>ParseFileData</tt>  — например, «взять EXIF-метаданные из имени».* <tt>SaveFile</tt>  — «сохранить EXIF в базу», «сохранить теги в базу».* <tt>ScaleFile</tt>  — предположительно «эксклюзивная» ловушка (то есть с ровно одним обработчиком) для масштабатора (:-D) изображений.* <tt>DeleteFile</tt>  — «удалить EXIF из базы» (хотя это можно поручить внешним ключам).
== Список хуков Vitaphoto == <tab sep="bar" head="left" class="simpletable">ParseFileName | $from $to $w $hParseFileData | \%old \%new $fn $outNoParseTagsSaveFile | Аргументы от ParseFileDataScaleFile | Аргументы от ParseFileData и SaveFileDeleteFile | \%rowUnknownNamespace | \$uri $ns_matched \$outNsMakeLink | $ns \%argv $keep \$outUrlAfterOutPhoto | \%rowGetAlbumImages | $pagets \@tags \@outImages \$outRetkeyAlbumNoImages | \@tagids $pagetsAfterOutImages | \@images $pagets \@tags \@tagids \@pageFormatAlbumImage | \%rowGetUnknownTags | \@tags \@unknownUnknownSpecialPage | $special $uripartPhotoNotFoundByName | $name $sha1 \@outRowsTransformTemplateList | \@templatesTemplateFilter | \$content</tab> [[Категория:РазработкаАрхив]][[Категория:Sway]]

Навигация