webプログラミング



2011 11月22日

Apatana Studioで何かのプラグインを追加したあたりから起動時に以下のようなエラーが出るようになった。

111121-0002

エラー内容:”Sending Ping…” 中に内部エラーが発生しました。
org/apache/derby/iapi/error/ShutdownException

ググッてみると、Apatana Usage をオフにするといいような発言があったので試してみる。
初期設定>一般>開始およびシャットダウン

111121-0003

Aptanaを再起動してみるもエラーが出る。

で、すべてのチェックを外して起動してみた。
エラーは出なくなった。かわりに初期設定が出来なくなった…orz。

結局クリーンインストール。
日本語化、テーマ変更(Eclipse Color Themes)、EPICをインストルしただけの状態の起動項目を記録しておく。
aptana初期 起動項目







2011 10月15日

configファイルの読み込み

設定ファイルを読み込む / Mojoliciousリファレンス – サンプルコードによるPerl入門

 設定(コンフィグ)ファイルを読み込むにはMojolicious::Plugin::Configを利用します。

というように、Mojoliciousアプリで設定ファイルを使う事ができる。例えば etc/MyApp.conf を読み込むには以下のような感じ。 stash_keyはオプションで設定できる(デフォルトはconfig?)

etc/MyApp.conf

Selec All Code:
{
    # MyApp config
 
    # サービス名
    SARVICE_NAME => 'hogehoge',
 
    # 配列のリファレンス等
    CATEGORY => [0,1,2,3,4],
}

MyApp.pm

Selec All Code:
package MyApp;
 
sub startup {
    my $self = shift;
 
    # コンフィグファイル読み込み
    my $config = $self->plugin('config', { file => 'etc/MyApp.conf', stash_key => 'conf' });
    ....
}

読み込みはリンク先に詳しく書かれている。

configで設定された値を使う

コントローラーとかで使う

Selec All Code:
sub index {
    my $self = shift;
 
    #my $config = $self->stash('conf');
    my $config = $self->config;
    my $service_name = $config->{SARVICE_NAME};
    # or 
    my $service_name = $self->config('SARVICE_NAME');
    ....
}

テンプレートで使う

Selec All Code:
    <%= stash('conf')->{SARVICE_NAME} %>
    <%= config->{SARVICE_NAME} %>
    <%= config('SARVICE_NAME') %>

オブジェクト指向的には config()で取得したほうがいいのかな?

テンプレートで使うには

Selec All Code:
<%= config 'SARVICE_NAME' %>

がタイプが一番少ないようだ。







2011 10月14日

すぐ忘れるし、どこにあったか分からなくなるのでメモ。

Mojolicious – GitHubより引用

Selec All Code:
    package MyApp;
 
    use Mojo::Base 'Mojolicious';
 
    use DBIx::Custom;
 
    has dbi => sub {
        my $dbi = DBIx::Custom->connect(...);
        return $dbi;
    };
 
    sub startup {
        my $self = shift;
 
        ### YOU MUST NOT CALL dbi() method in starup().
    }

リンク先にはBad Exampleもあるので参考に。







2011 9月8日

Live Commerceを使うのにはZend Optimizerが必要なのでインストールする。

CentOS5.5(32bit)
PHP 5.2.16

ダウンロード

ダウンロード場所がわかりにくいので注意
※Zend OptimizerをダウンロードするにはMyZendに登録する必要がある。
ゼンド・ジャパン株式会社

ダウンロード>Zend Guard>loader>linux>ZendOptimizer-3.x.x-linux-glibc23-xxx.tar.gz
※ xの部分はPHPのバージョンやOSによって異なる
当方の環境では ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz だった。

設置

ダウンロードしたファイルを解凍する。

$ tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

PHPのバージョンに対応した ZendOptimizer.so を /usr/lib/php/modules へ設置する。
※自分の環境では ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp の中にあるものを使用。

$ cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp
$ sudo mv ZendOptimizer.so /usr/lib/php/modules

php.iniの設定

# vi /etc/php.ini
追記
[Zend]
zend_extension=/usr/lib/php/modules/ZendOptimizer.so
zend_optimizer.optimization_level=15

Apache再起動

# service httpd restart

参考:

  • 【環境構築3】PHPをインストールする のんき者のシステム開発ノート(ってかメモ)/ウェブリブログ
  • Zend Optimizer のインストール | Linuxで自宅サーバ構築






  • 2011 8月24日

    とあるスクリプトで最初の実行時には正常に動作するのだけれど、同一ページを再訪問(リロードではなく)した時に不具合が出た。

    webkit系のブラウザで不具合が確認できたのだけれど、どうやらgetElementById()でnullが帰っている様子。

    ググってみると同じような現象で悩んでいる人もいるみたい。DOM構築前だとnullが帰る事もあるのが原因のようだ。

    onLoadイベントとかはjQuery使っているのなら簡単に実装できるのだけれど、純粋JSで書いているスクリプトだし、他所様に配信するスクリプトなので解決方法を探る。

    jQuery使っているのなら、$.ready(function(){…}) でいいのだろうけど、そうはいかない。じゃあ、onLoadイベントに登録すればいい。いいのだけど、onLoadイベントは1つしか実行できないので工夫が必要になる。

  • Javascript onloadが複数ある場合の対処法 ~FancyZoomとCubeブログシールを共存させる : ブログ・カスタマイズ徒然記
  • ここら辺の記事を参考に How to use multiple window.onload events with external scripts – Javascript FAQ – Tek-Tips にある addOnloadEvent を組み込んで対処する。

    処理的には document.write() でかいたHTML中にあるIDが付いたタグの中に別処理で作成したHTMLを放り込むもの。

    実行したい関数には引数を指定しているので、
    addOnloadEvent(function(){ print_image(hoge,fuga) });
    みたいな感じにすればonLoadイベントとして実行してくれる。

    そうすることで、getElementById()でnullが帰らなくなる。