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

Материал из YourcmcWiki
Перейти к: навигация, поиск
м (Новая страница: ««''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры''» — специ...»)
 
Строка 1: Строка 1:
«''Hooks''», или «''ловушки''», или «''точки расширения''», или «''добавочные процедуры''» — специальные точки в коде, в которые можно встраивать вызовы дополнительных процедур без модификации кода вызывающего модуля. Таким образом достигается расширяемость приложения. Пример: [[mediawikiwiki:MediaWiki|MediaWiki]] широко использует механизм ловушек, что и привело к наличию примерно 1500 расширений для неё.
+
«''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 из базы» (хотя это можно поручить внешним ключам).