Category Archives: System

【簡単】VMイメージを複製した時のネットワーク設定

Webシステムの開発者は特に「まっさらなWebサーバー」を必要とします。色々と手 …

Read more »

プロダクトデザイングループ 2012年まとめ

こんにちは、プロダクトデザイングループ(PDG)・ディレクターのヤマダです。 今 …

Read more »

index.php内での Zend_Application 基本的なキャッシュ方法

Bootstrap内ではiniファイルなどの設定ファイルを丁寧にキャッシュやZend_Registryなどに格納して最適化をはかりますが、
どうしてもautoloader用のiniファイルやapplication.iniファイルなどBootstrap内で呼ばれる順番が早いため最適化出来ないファイル群があります。

今回はそんな可哀想な設定ファイルたちの救済措置の一例です。

Zend_Cacheの下準備

Zend_Cache定義のためにフロントエンド、バックエンドオプションを設定します。


$frontendOptions = array(
    'name' => 'File',
    'params' => array(
        'lifetime' => null,
        'automatic_cleaning_factor' => 0,
        'automatic_serialization' => true,
        'master_files' => array(
            APPLICATION_PATH . "/config/application.ini",
            APPLICATION_PATH . '/config/autoloader.ini',
            APPLICATION_PATH . '/config/config.ini'
          )
      )
  );
$backendOptions = array(
    'name' => 'File',
    'params' => array(
        'cache_dir' => APPLICATION_PATH . '/tmp/cache/config',
      )
  );
$configCache = Zend_Cache::factory(
    $frontendOptions['name'],
     $backendOptions['name'],
      $frontendOptions['params'],
       $backendOptions['params']
  );

Zend_Cacheの定義

キャッシュが存在しないまたは変更などがおこなわれた場合はキャッシュ化を行います。


$finalConfig = null;
if (!($finalConfig = $configCache->load('configuration'))) {
    $configFiles = array(
        APPLICATION_PATH . "/config/application.ini",
         APPLICATION_PATH . '/config/autoloader.ini',
          APPLICATION_PATH . '/config/config.ini'
      );
    $masterConfig = null;
    foreach($configFiles as $file) {
      $config = new Zend_Config_Ini(
                    $file, APPLICATION_ENV,
                     array('allowModifications'=>true)
                  );
      if (is_null($masterConfig)) {
        $masterConfig = $config;
      }
      else {
        $masterConfig->merge($config);
      }
    }
    $finalConfig = $masterConfig->toArray();
    $configCache->save($finalConfig, 'configuration');
}

Zend_Applicationの定義

出来上がった$finalConfigをZend_Applicationの第2引数にぶち込んで終了です。とても簡単です

/**
 * Run the application
 * Use Zend_Application
 */
$application = new Zend_Application(
    APPLICATION_ENV,
     $finalConfig
  );
  $application->bootstrap()->run();

全ソースコード

    /** Zend_Cache */
    require 'Zend/Cache.php';

    /** Zend_Config_Ini */
    require 'Zend/Config/Ini.php';

    $frontendOptions = array(
        'name' => 'File',
        'params' => array(
            'lifetime' => null,
            'automatic_cleaning_factor' => 0,
            'automatic_serialization' => true,
            'master_files' => array(
                APPLICATION_PATH . "/config/application.ini",
                APPLICATION_PATH . '/config/autoloader.ini',
                APPLICATION_PATH . '/config/config.ini'
              )
          )
      );
    $backendOptions = array(
        'name' => 'File',
        'params' => array(
            'cache_dir' => APPLICATION_PATH . '/tmp/cache/config',
          )
      );
    $configCache = Zend_Cache::factory(
        $frontendOptions['name'],
         $backendOptions['name'],
          $frontendOptions['params'],
           $backendOptions['params']
      );

    $finalConfig = null;
    if (!($finalConfig = $configCache->load('configuration'))) {
        $configFiles = array(
            APPLICATION_PATH . "/config/application.ini",
             APPLICATION_PATH . '/config/autoloader.ini',
              APPLICATION_PATH . '/config/config.ini'
          );
        $masterConfig = null;
        foreach($configFiles as $file) {
          $config = new Zend_Config_Ini(
                        $file, APPLICATION_ENV,
                         array('allowModifications'=>true)
                      );
          if (is_null($masterConfig)) {
            $masterConfig = $config;
          }
          else {
            $masterConfig->merge($config);
          }
        }
        $finalConfig = $masterConfig->toArray();
        $configCache->save($finalConfig, 'configuration');
    }

    /**
     * Run the application
     * Use Zend_Application
     */
    require 'Zend/Application.php';
    $application = new Zend_Application(
        APPLICATION_ENV,
         $finalConfig
      );
      $application->bootstrap();
      $application->bootstrap()->run();

他にも色々やり方はあると思いますが、あまり窮屈に考えず緩く考えた場合
このぐらいが基本と言えるのではないでしょうか。

Read more »

SCORM1.2対応クイズ型コンテンツプレーヤー

問題画面→解説画面の構成でクイズを出題していくクイズ型コンテンツプレーヤーを開発しました。

このページを表示するためには Flash Player が必要です。

var so = new SWFObject(“http://labs.blog.logosware.com/wp-content/blogs.dir/7/files/2008/03/linkbtn2.swf”, “linkbtn”, “300”, “130”, “8”, “#FFFFFF”); so.addParam(“wmode”, “transparent”); so.write(“linkbtn”);

Read more »