ColdFusion-開発効率を求められる今だから知りたい高性能Webアプリケーションサーバーという連載を始めました。ここに書いてあることよりまともな批評や紹介をしているつもりなので、是非参考にしてください。
前回に引き続き、PerlとColdFusionを比べてみようかな、と言う企画。今回は言語面や開発者層という視点から。世の中にあまり知られていないColdFusionの紹介もかねて。
ColdFusion-開発効率を求められる今だから知りたい高性能Webアプリケーションサーバーという連載を始めました。ここに書いてあることよりまともな批評や紹介をしているつもりなので、是非参考にしてください。
前回に引き続き、PerlとColdFusionを比べてみようかな、と言う企画。今回は言語面や開発者層という視点から。世の中にあまり知られていないColdFusionの紹介もかねて。
日本語環境に ColdFusionやJRunをインストールすると、それらの管理画面(ColdFusion AdministratorとJRun JMC)はデフォルトでは日本語画面になりますが、英語で管理画面を見たいというニーズもあるはず。
最近英語で立ち上げる方法を見つけたので、書いておきます。
Ajaxなどを使っていると、JavaScript側ではJSONでデータを受け取りたいと思うことがあります。ColdFusionにはJSON形式で書き出してくれるための関数がなかったので、コンポーネントとして作りました。
ColdFusion-開発効率を求められる今だから知りたい高性能Webアプリケーションサーバーという連載を始めました。ここに書いてあることよりまともな批評や紹介をしているつもりなので、是非参考にしてください。
ある程度のアクセスがあるサイトでは、はてなに代表されるようなPerlやRuby on Railsなどが熱いのですが、Adobe(旧Macromedia)が出しているColdFusionと言う言語があります。当方が関わっているサイトで月間約5300万PVあるサイトがあるのですが、そこではColdFusionを使っています。
最近はてなのnaoyaさんがInside Hatena Bookmark’s Backendという記事で、はてなブックマークのサーバー構成などを公開されていたのですが、そこには月間4500万PVとありました。同じぐらいの規模を持つサイトとして、PerlとColdFusionを比べてみよう、と言う記事です。
ColdFusionのデバッグが有効になっていると、ColdFusionはクエリーの情報をデバッグ用に保存しておくため、クエリーを発行すればするだけメモリーを消費していき、最終的にはColdFusionがメモリーを使い果たして止まってしまいます。
なので、大量のクエリーを発行する場合はAdministration画面でデバッグを無効にするか、cfqueryタグにdebug=”no”属性を付加しておくことが重要です。
<cfquery debug="no"> INSERT INTO ... </cfquery>
またColdFusionに割り当てるメモリーを増やすことでも解決できる場合があります。メモリー割り当ての方法についてはマニュアルを参照してください。
ColdFusionで、ループの処理などを行っているとウェイトを入れたくなるときがあります。ColdFusionの関数にはウェイトを入れる関数がないので、JavaのThreadクラスのオブジェクトを作り、それを使ってウェイトを入れる必要があります。具体的には以下のコード
<!--- 5秒間スリープ --->
<cfset thread = CreateObject("java", "java.lang.Thread") />
<cfset thread.sleep(5000) />
ColdFusionで変数が定義されているかどうかを調べるにはisDefined()もしくはstructKeyExists()を使いますが、isDefined()には罠があるという話。元ネタはisDefined() vs structKeyExists()。
WebサーバーとColdFusionを繋ぐコネクターは、ColdFusionインストール後でもcf_root/runtime/bin/wsconfigを使って自動でインストールできます。それの使い方。
ApacheなどのWebサーバーとColdFusionを繋ぐコネクターは、ColdFusionインストール時やインストール後にcf_root/runtime/bin/wsconfigなどのツールを使って自動でインストールするのが普通の方法ですが、サーバー環境によってはこれらのツールが使えない場合があります。そういった場合、手動でコネクタをインストールする必要がありますが、その方法。
ColdFusionをOS X上で使おうと思った場合、DevNetの東さんの記事を参考にJRun for Mac OS X上にColdFusion J2EE Editionをデプロイすることになると思います。基本的には東さんの記事通りなのですが、 OS X 10.4 Tiger上ではインストラクション通りに進めてもうまくいきません。それの対処方法。