Author Archives: ロゴスウェア - Page 15

[韋駄天 秀さん] 第一話 義賊の心を広めろ!

新江戸時代を舞台に、
韋駄天の秀さんが、
THiNQを広めたり広めなかったりするかも。

漫画本体

下が、五右衛門さんがTHiNQMakerで作った問題
五右衛門さんが「簡単にできるじゃねぇか」
と言ったとか言わなかったとか

やってみてね

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 »

GoogleAppEngine/Python で Hello world (Mac) 2

はじめに 前回の続きで、今回はローカル環境ではなく、GoogleのCloudSe …

Read more »

GoogleAppEngine/Python で Hello world (Mac)

はじめに 最近、GoogleAppEngine(Python)でサクッとアプリケ …

Read more »

TwitterクライアントのOAuth認証(Zend_Oauth) – シンプルなTwitterクライアントの作成 –

Twitterは6月にBasic認証が廃止されます。代替えとしてOAuth認証が …

Read more »

FLIPPERのデザイン変更を簡単に。

FLIPPERのデザインを簡単に変更できる「画像差し替えスキン」を開発しました。

Read more »

WordPress プラグイン作成(2):フック

前回は「Hello world」をフッターに表示する簡単なプラグインを作成しまし …

Read more »

WordPress プラグイン作成(1):Hello world

はじめに ブログソフトウェアというと、「Movable Type」か「WordP …

Read more »