2013年2月15日金曜日

Zend_Registryの使用法

レジストリは、アプリケーション空間でオブジェクトや変数を保存するためのコンテナです。 変数をレジストリに保存すると、 そのオブジェクトはアプリケーション内でいつでも利用できるようになります。 この仕組みは、グローバルなストレージを使用する代わりに使用できます。

Zend_Registry::set('index', $value);
if (Zend_Registry::isRegistered($index)) {
$value = Zend_Registry::get($index);
}


Zend_Registry

画像とかまでindex.phpにリダイレクトするとファイルが無いときに無駄にPHP動くから除く

画像とかまでindex.phpにリダイレクトするとファイルが無いときに無駄にPHP動くから除く RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteCond %{REQUEST_FILENAME} !.[jpg|png|gif|css|js]$ RewriteRule ^.*$ index.php [NC,L] !.[jpg|png|gif|css|js]$の.がややこしい、エスケープしようとするとだめだった。

2013年2月13日水曜日

djangoに向けて・・・

Djangoのドキュメントではmod_pythonを推奨しているけど、pythonのドキュメントではWEBで使うならwsgiが最良と言っている。 適当に読み比べてwsgiにすることにした。 $ cat /etc/redhat-release CentOS release 5.9 (Final)

Python2.7のインストール

ダウンロード python2.7.3 展開とインストール $ tar zxf Python-2.7.3.tgz $ cd Python-2.7.3 $ ./configure --enable-shared $ make $ sudo make install

共有ライブラリの更新

/usr/local/libが書かれていない場合追記する $ sudo vi /etc/ld.so.conf $ cat /etc/ld.so.conf include ld.so.conf.d/*.conf /usr/local/lib $ ldconfig

mod_wsgiのインストール

$ ./configure --with-apxs=/usr/sbin/apxs $ make $ sudo make install apacheの設定ファイルにmod_wsgiの設定を書く $ sudo vi /etc/httpd/conf/httpd.conf LoadModule wsgi_module modules/mod_wsgi.so $ sudo service httpd restart

2013年1月16日水曜日

redmineのインストール

rubyのインストール ソースからインストールするとgemも入るよ^ー^ opensslも必要だよ http://ecpplus.net/weblog/?p=406 http://d.hatena.ne.jp/seiryo/20071213/1197545500 ImageMagick ImageMagickは最新版を入れるとRMagickが入らないよ^ー^ 参考: 'InitializeMagick' is deprecated これで一日ハマったよ^^^^^^^^^^^^^^^^^^ ImageMagick6.5.8でRMagick2.13.1がちゃんとはいったよ。 ついでに.soの共有ライブラリについても学んじゃったよ^ー^ Program Library HOWTO 3.1.2. ファイルシステム配置 共有ライブラリはファイルシステム内のどこかに配置しなければなりません。 ほとんどのオープンソースソフトウェアは、GNU 規約に従う傾向があります。 詳細は info:standards#Directory_Variables にある info ファイルドキュメントを参照してください。 GNU 規約は、ソースコードを配布するとき、デフォルト設定時にはライブラリを全て /usr/local/lib にインストールするよう推奨しています (コマンドを全て /usr/local/bin に配置するようにとも推奨しています)。 また、これらのデフォルト設定をオーバーライドしたり、インストールルーチンを呼び出したりする際の約束ごとも定義しています。 ファイルシステム階層規約 (Filesystem Hierarchy Standard; FHS) は、ディストリビューションにおいて何をどこにインストールすべきかを説明しています (http://www.pathname.com/fhs/ を参照してください)。FHS によると、ほとんどのライブラリは /usr/lib にインストールし、起動時に必要とされるライブラリは /lib に、システムの一部ではないライブラリは /usr/local/lib にインストールするのが良い、ということになります。 実際には、これら二つの規約間に矛盾はありません。 GNU 規約は、ソースコード開発者のためのデフォルト設定を推奨しているのであり、一方で FHS は、ディストリビュータ (通常、システムパッケージ管理システムによりソースコードのデフォルト設定を選択的にオーバーライドする人々) のためのデフォルト設定を推奨しているのです。 実際にこれはうまく機能しています。あなたがダウンロードした「最新の」(おそらくバグだらけの!) ソースコードは、自動的に自分自身を「ローカルな」ディレクトリ (/usr/local) にインストールします。 そしてコードが成熟してきたら、ディストリビューション用の標準的な位置にコードを配置するため、パッケージ管理ツールでデフォルト設定を簡単にオーバーライドできます。 あなたのライブラリが、ライブラリ経由でしか呼び出されることのないプログラムを呼び出しているのならば、それらのプログラムを /usr/local/libexec (あるディストリビューションでは /usr/libexec になります) に配置するべきです。 厄介なのは、Red Hat から派生したシステムがデフォルト設定では /usr/local/lib をライブラリ検索対象に含めていないということです。 /etc/ld.so.conf に関する下記の議論を参照してください。 他の標準的なライブラリ配置場所としては、X Window System 用の /usr/X11R6/lib があります。/lib/security は PAM モジュール用に使われますが、通常、PAM モジュール群は動的ライブラリ (これもあとで説明します) としてロードされるので注意してください。 3.2. ライブラリはどのように使われるか GNU glibc ベースのシステム (全ての Linux システムが含まれます) では、ELF バイナリ実行ファイルを起動すると、自動的にプログラムローダがロードされ、実行されます。 Linux システムでは、このローダは /lib/ld-linux.so.X (X にはバージョン番号が入ります) という名前です。 このローダは、プログラムによって使用されるその他の全ての共有ライブラリを順次探し出し、ロードします。 検索対象となるディレクトリのリストは、/etc/ld.so.conf ファイル内に記述されています。 Red Hat から派生しているディストリビューションの多くは、通常 /etc/ld.so.conf ファイル内に /usr/local/lib を含めていません。私はこれをバグだと考えており、また、/usr/local/lib を /etc/ld.so.conf に追加することは、Red Hat から派生しているシステム上で多くのプログラムを走らせるのに必要な、共通の「修正」だと思っています。 wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz tar zxf yaml-0.1.4.tar.gz cd yaml-0.1.4 ./configure make sudo make install