ET-prolog - делаем телефон умнее

  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/embed.php on line 32.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::getEmbedPathByHttpRequest() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/embed.php on line 36.
  • strict warning: Non-static method GalleryUtilities::getRequestVariablesNoPrefix() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1092.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 289.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 293.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryEmbed::init() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_base.inc on line 134.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 94.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 46.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 47.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 48.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 49.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryModule.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 55.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryPlatform/UnixPlatform.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 107.
  • strict warning: Non-static method GalleryUtilities::getRequestVariables() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 150.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 242.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 246.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 152.
  • strict warning: Non-static method GalleryTranslator::getSupportedLanguageCode() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 154.
  • strict warning: Non-static method GalleryTranslator::getLanguageData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTranslator.class on line 414.
  • strict warning: Non-static method GalleryUtilities::strToUpper() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTranslator.class on line 418.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 103.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::isCompatibleWithEmbedApi() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 107.
  • strict warning: Non-static method GalleryEmbed::getApiVersion() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryUtilities::isCompatibleWithApi() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 128.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getAllFactoryImplementationIds() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 179.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 187.
  • strict warning: Non-static method GalleryFactoryHelper_simple::getAllImplementationIds() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 188.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 213.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::newFactoryInstanceById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 186.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 174.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstanceById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 175.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 191.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstance() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 201.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 141.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::getAnonymousUserId() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 203.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3078.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryCoreApi::loadEntitiesById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 208.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 2360.
  • strict warning: Non-static method GalleryEntityHelper_simple::loadEntitiesById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 2361.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 53.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::getFromDisk() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 273.
  • strict warning: Non-static method GalleryDataCache::getCachePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 280.
  • strict warning: Non-static method GalleryDataCache::getCacheTuple() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 405.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 287.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEntity.class on line 21.
  • strict warning: Declaration of GalleryUser::create() should be compatible with GalleryEntity::create() in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Declaration of GalleryUser::save() should be compatible with GalleryEntity::save($postEvent = true, $setAclId = NULL) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 95.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryUtilities::isA() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 118.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 133.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::done() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 36.
  • strict warning: Non-static method GalleryEmbed::getBlock() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 194.
  • strict warning: Non-static method GalleryCoreApi::fetchPluginStatus() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 994.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 368.
  • strict warning: Non-static method GalleryPluginHelper_simple::fetchPluginStatus() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 369.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 347.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::getFromDisk() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 352.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 273.
  • strict warning: Non-static method GalleryDataCache::getCachePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 280.
  • strict warning: Non-static method GalleryDataCache::getCacheTuple() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 438.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 444.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryCoreApi::getCodeBasePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1000.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1006.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1012.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTheme.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1020.
  • strict warning: Non-static method GalleryView::setStandardTemplateVariables() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1021.
  • strict warning: Non-static method GalleryCoreApi::isAnonymousUser() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryView.class on line 660.
  • strict warning: Non-static method GalleryCoreApi::getAnonymousUserId() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3098.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3078.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryCoreApi::isUserInSiteAdminGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryView.class on line 665.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 1775.
  • strict warning: Non-static method GalleryUserGroupHelper_simple::isUserInSiteAdminGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 1776.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 41.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryUserGroupHelper_simple::isUserInGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 46.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 62.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getMapEntry() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 68.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 74.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Declaration of GalleryChildEntity::create() should be compatible with GalleryEntity::create() in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryChildEntity.class on line 170.
  • strict warning: Declaration of GalleryChildEntity::createLink() should be compatible with GalleryEntity::createLink($entity) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryChildEntity.class on line 170.
  • strict warning: Declaration of GalleryFileSystemEntity::create() should be compatible with GalleryChildEntity::create($parentId) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryFileSystemEntity.class on line 44.
  • strict warning: Declaration of GalleryItem::save() should be compatible with GalleryEntity::save($postEvent = true, $setAclId = NULL) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryItem.class on line 44.
  • strict warning: Declaration of GalleryAlbumItem::create() should be compatible with GalleryItem::create($parentId, $path, $canContainChildren = false) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryAlbumItem.class on line 41.
  • strict warning: Only variables should be passed by reference in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEvent.class on line 54.
  • strict warning: Declaration of mapModule::getItemLinks() should be compatible with GalleryModule::getItemLinks($items, $wantsDetailedLinks, $permissions, $userId) in /var/www/kibergus.su/htdocs/gallery2/modules/map/module.inc on line 1050.
  • strict warning: Declaration of mapModule::getItemSummaries() should be compatible with GalleryModule::getItemSummaries($items, $permissions, &$template) in /var/www/kibergus.su/htdocs/gallery2/modules/map/module.inc on line 1050.
  • strict warning: Declaration of GalleryDataItem::create() should be compatible with GalleryItem::create($parentId, $path, $canContainChildren = false) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataItem.class on line 417.
  • strict warning: Declaration of GalleryDerivativeImage::create() should be compatible with GalleryDerivative::create($parentId) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDerivativeImage.class on line 40.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 46.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 48.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 53.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 46.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Only variables should be passed by reference in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEvent.class on line 54.
  • strict warning: Non-static method GalleryEmbed::parseHead() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_base.inc on line 495.
  • strict warning: Non-static method GalleryEmbed::done() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 36.
В последнее время "умным" стало большинство приборов, с которыми нам приходится работать. Но что стоит за этим словом? Ум (пока) не свойственен технике, поэтому мы говорим об имитации интеллекта и мерилом качества имитации являются следующие правила:
  • Прибор должен делать то, что от него хочет пользователь
  • Если прибор делает не так, как велел пользователь, то он должен аргументировать свое поведение, и пользователь должен согласиться, что был не прав. Контроль ошибок пользователя
  • Прибор должен по-возможности угадывать, что от него хочет пользователь
И вот с последним пунктом возникают основные проблемы. Массовый прибор, такой как мобильный телефон, не может учитывать индивидуальность всех своих пользователей. Это значит, что он может угадывать только наиболее общие желания. Существует два способа сделать устройство умнее:
  • За вас уже подумали лучшие специалисты: психологи, программисты, дизайнеры, экономисты. Ваш девайс эргономичен и удобен. Зачем вам то, что вы хотите? Это не модно. Расслабьтесь и наслаждайтесь. Другими словами: "Ешь, что дают, и привыкай".
  • Дать возможность настроить устройство под себя. Не темы оформления, а само поведение устройства. Как правило, реализуется в виде кучи галочек и кнопочек в настройках программы.
    • Нас интересует только второй вариант. В рамках отдельных программ он существовал достаточно давно, сейчас пришло время, когда программы плотно взаимодействовать друг с другом. Сейчас есть удобные распространенные и унифицированные технологии, позволяющие программам объявлять во всеуслышание что они делают и управляться из других программ. И, если пройтись по репозиториям для n900 можно найти немало пакетов, подстраивающих работу других программ под пожелания конкретного пользователя.
      Начать, наверное, стоит с классического cron, выполнения команд в соответствии с раписанием:
      • Fcron - классический cron, управляется через конфигурационный файл
      • alarm - то же самое, только с менее удобным, но более понятным графическим интерфейсом
      • silencer умеет только переключать режимы телефона. Зато интерфейс совсем простой.
      • sleeper умеет выключать музыку через заданное время.
      Но ведь не обязательно реагировать на таймер, в системе происходит куча других событий. Ваш телефон пищит, когда садится батарейка, регулирует яркость экрана в зависимости от освещения, ноутбуки регулируют соотношение производительность/энергосбережение в зависимости от наличия питания. Есть в репозитариях и ряд пакетов, использующих этот подход:
      • headphone daemon ставит на паузу воспроизведение музыки при вынимании штекера наушников. Прекрасный пример, когда нет единого решения для всех. Разработчики maemo на просьбу добавить этот функционал в прошивку ответили, что раньше так и было, на народ просил, чтобы ничего на паузу не ставилось.
      • lockdaemon пикает и вибрирует при выдвигании клавиатуры. Терпеть не могу озвучивание управления, а кому-то нравится
      • shake2control - управляет воспроизведением в зависимости от того, как вы трясете телефон.
      • geotodo - показывает напоминалки, когда пользователь находится рядом с указанным местом.
      Но есть у всех этих программ одна общая черта: те события, на которые они реагируют и действия, которые предпринимают, зашиты на этапе программирования. Представьте, сколько разных событий может возникать и сколько разных действий можно совершить, умножьте эти числа и получите количество программ, которые нужно написать. Первое, что приходит в голову - отслеживать наступление событий и дать пользователю самому определять, что нужно делать при каждом из них. Получается всего одна программа. И по такому пути пошли разработчики ActionManager и Do What I Mean Daemon.
      Насколько мне известно, это вершина технологий, используемых для увеличения "интеллекта" приборов. И основное её ограничение - простота используемых правил. При выборе действия трудно учитывать несклько факторов одновременно. Автор silencer предлагает включать тихий режим ночью, но спать то я ложусь в разное время. Более корректно было бы включать его с 10 до 2х когда вокруг стало темно и тихо, а выключать по будильнику или 10 утра.
      Соответственно появилась идея создать язык программирования, на котором можно было бы кратко и легко, не вникая в особенности межпроцессной коммуникации, написать аналог headphone daemon. Чтобы он уместился в несколько строк кода, а не в 272:
      меня интересует состояние гнезда наушников
      если плеер что-то играет, наушники не воткнуты, а до этого были воткнуты, то остановить плеер
      Продвинутый пользователь сможет легко описать на таком языке желаемое поведение телефона, конкретно под свои нужды. Неопытный... либо скопирует готовые скрипты из интернета, либо воспользуется графической программой, генерирующей частые случае таких скриптов. Написать такую программу значительно проще, чем демона, отслеживающего состояние системы.
      Желаемый язык очень похож на логическую парадигму программирования, поэтому в качестве базового языка был выбран SWI-Prolog и к нему было написано расширение для работы с событиями и темпоральной логикой (ведь нам надо оперировать такими понятиями, как "в предыдущий момент времени", "последние 15 минут", "когда-то случилось"). В результате получался управляемый событиями темпоральный пролог или Event driven Temporal prolog - ET-prolog. Аналог headphoned на нем будет выглядеть примерно так:
      init.pl
      ?- addGuard(headphonesState(_), [[changedGuard]], 'logic/headphones.pl').
      headphones.pl:
      ?- headphonesState('disconnected\n'),previous(headphonesState('connected\n')),
      (mediaPlayer('started'),pauseMediaPlayer;true),
      (MPlayer('started'),pauseMPlayer;true),
      (Panucci('started'),pausePanucci;true),
      (FMradio('started'),pauseFMRadio;true)
      ;true
      В настоящий момент предикаты управления плеерами еще не реализованы, но, во-первых, их надо будет написать всего один раз, а во вторых, если они управляются через dbus, это будет не сложно. Например предикат переключения режимов телефона занимает всего одну строку:
      setPhoneProfile(PROFILE) :- dbusSend('com.nokia.profiled', '/com/nokia/profiled', 'com.nokia.profiled', 'set_profile', [PROFILE]).
      А более полноценная версия, отслеживающая текущий профиль и работающая, как полноценный прологовский терм, в обе стороны, выглядит так:
      % Initializes profile term
      ?- 
      	dbusSend(CURRENTPROFILE, 'com.nokia.profiled', '/com/nokia/profiled', 'com.nokia.profiled', 'get_profile', [], false),
      	newTemporalTerm('phone profile', [true,true,CURRENTPROFILE,false]), 
      	addDBusListener('signal', '/com/nokia/profiled', 'com.nokia.profiled', 'profile_changed', false, false, temporalTerm(_, 'phone profile')).
      % silent or general
      phoneProfile(PROFILE) :- string_to_atom(PROFILESTR, PROFILE), temporalTerm([_,_,PROFILESTR | _], 'phone profile');  dbusSend('com.nokia.profiled', '/com/nokia/profiled', 'com.nokia.profiled', 'set_profile', [PROFILESTR], false).
      Если этот проект вас заинтересовал, то вы можете: ET-Prolog разработан Dicentra13 - Петрушкиной Анастасией (интеграция с alarmd, liblocation, файловые термы) и KiberGus - Гусейновым Алексеем (ядро языка, интеграция с DBus)