Vitaphoto: Ловушки — различия между версиями
м (Новая страница: ««''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры''» — специ...») |
|||
Строка 1: | Строка 1: | ||
− | «''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры'' | + | «''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры''» — специальные точки в коде, в которые можно встраивать вызовы дополнительных процедур без модификации кода вызывающего модуля. Таким образом достигается расширяемость приложения. Пример: [[mediawikiwiki:MediaWiki|MediaWiki]] широко использует механизм ловушек, что и привело к наличию примерно 1500 расширений для неё. |
[[Vitaphoto]] 1.4 также будет содержать механизм «хуков»; в сочетании с простотой платформы [[Sway Solstice]], теоретически, это должно дать неплохую расширяемость. | [[Vitaphoto]] 1.4 также будет содержать механизм «хуков»; в сочетании с простотой платформы [[Sway Solstice]], теоретически, это должно дать неплохую расширяемость. | ||
Для чего нужны хуки в [[Vitaphoto]]? Например: | Для чего нужны хуки в [[Vitaphoto]]? Например: | ||
+ | |||
* Чтобы можно было сделать расширение «видео». | * Чтобы можно было сделать расширение «видео». | ||
* Чтобы можно было заменить организацию галереи в виде множества фото на иерархическую, по названиям каталогов с файлами. | * Чтобы можно было заменить организацию галереи в виде множества фото на иерархическую, по названиям каталогов с файлами. | ||
* Чтобы можно было создать дополнительную спецстраницу, выполняющую определённую функцию. | * Чтобы можно было создать дополнительную спецстраницу, выполняющую определённую функцию. | ||
* Чтобы можно было добавить обработчик неизвестного пространства имён в ссылках. | * Чтобы можно было добавить обработчик неизвестного пространства имён в ссылках. | ||
+ | |||
+ | Первые два примера в первую очередь содержат хуки в '''ScaleDaemon'''. Идеология следующая: вся информация о файле состоит из двух частей — имени и содержимого. '''ScaleDaemon''' отслеживает их изменения. Следовательно, нужно добавить хуки: | ||
+ | |||
+ | * <tt>ParseFileName</tt> — например, «взять путь из имени». | ||
+ | * <tt>ParseFileData</tt> — например, «взять EXIF-метаданные из имени». | ||
+ | * <tt>SaveFile</tt> — «сохранить EXIF в базу», «сохранить теги в базу». | ||
+ | * <tt>ScaleFile</tt> — предположительно «эксклюзивная» ловушка (то есть с ровно одним обработчиком) для масштабатора (:-D) изображений. | ||
+ | * <tt>DeleteFile</tt> — «удалить EXIF из базы» (хотя это можно поручить внешним ключам). | ||
[[Категория:Разработка]] | [[Категория:Разработка]] |
Версия 16:51, 6 декабря 2009
«Hooks», или «ловушки», или «точки расширения», или «добавочные процедуры» — специальные точки в коде, в которые можно встраивать вызовы дополнительных процедур без модификации кода вызывающего модуля. Таким образом достигается расширяемость приложения. Пример: MediaWiki широко использует механизм ловушек, что и привело к наличию примерно 1500 расширений для неё.
Vitaphoto 1.4 также будет содержать механизм «хуков»; в сочетании с простотой платформы Sway Solstice, теоретически, это должно дать неплохую расширяемость.
Для чего нужны хуки в Vitaphoto? Например:
- Чтобы можно было сделать расширение «видео».
- Чтобы можно было заменить организацию галереи в виде множества фото на иерархическую, по названиям каталогов с файлами.
- Чтобы можно было создать дополнительную спецстраницу, выполняющую определённую функцию.
- Чтобы можно было добавить обработчик неизвестного пространства имён в ссылках.
Первые два примера в первую очередь содержат хуки в ScaleDaemon. Идеология следующая: вся информация о файле состоит из двух частей — имени и содержимого. ScaleDaemon отслеживает их изменения. Следовательно, нужно добавить хуки:
- ParseFileName — например, «взять путь из имени».
- ParseFileData — например, «взять EXIF-метаданные из имени».
- SaveFile — «сохранить EXIF в базу», «сохранить теги в базу».
- ScaleFile — предположительно «эксклюзивная» ловушка (то есть с ровно одним обработчиком) для масштабатора (:-D) изображений.
- DeleteFile — «удалить EXIF из базы» (хотя это можно поручить внешним ключам).