いつの間にか、10のベータがリリースされていました。
Adobe ColdFusion 10
最初に触ったのは、確か、6だったので、あれから、4つもバージョンアップしたのかと思うと、なんか、年くったなー。
2012/02/28
[coldfusion]10のbeta release
2010/07/06
ColdFusion 9 CFML リファレンスは
こちらからアクセスできるみたいです。
探すのに手こずったので、リンク先を紹介。
いやーしかし、去年の11月には9がリリースされていたからなー。
本当、いつの間にって感じですよ。
今度の10はどうするんだろうなー。
2009/11/25
2009/09/30
[java][coldfusion]cf8でcfservletを使う
超久しぶりのcfネタ
ちょっとjavaサーブレットに触れたので、cfからjavaサーブレットを実行する方法についてまとめてみようかなと。
(環境は、cf8なので、7以前の場合は、若干、違うかもしれません。)
クライアントの場合、Java SDKが既にインストールされている場合は、超簡単。
まず、作ったjavaファイルをコンパイルするのですが、その際、下記のようにして、コンパイルします。
| hoge>javac -classpath ".;C:\CFがインストールされている親ディレクトリ\lib\etc\servlet-api-×.×-×.×.×.jar" hoge.java |
で、コンパイル完了後、cfの所定のフォルダにおきます。
置き場所は、
| C:\CFがインストールされている親ディレクトリ\wwwroot\WEB-INF\classes |
で、後はcfmファイルから実行するだけなのですが、ちょっとプログラムが特殊で下記のように組む必要があります。
| <cfset GetPageContext().include("/servlet/hoge")> |
実際には存在しない「servlet」ディレクトリと記述するところがポイントですね。
こんな方法で、jspも実行できるみたい(検証していないので、確実なことがいえないのですが。。。)
2009/07/06
[coldfusion]バージョンナンバーごとに処理を分ける
たまたま、CFのバージョンナンバーを取得する方法がわかったので、バージョン毎に処理をわける方法について考えてみる。
といっても、↓のプログラムを貼り付けただけなんだけどね。
<cfset cf_version_number = Server.ColdFusion.ProductVersion> |
Server.ColdFusion.ProductVersionで、バージョン番号が取得できるんですね。
リファレンスに書いてありました。
ただ、これだと少数点以下の数字ももれなくついてきちゃうので、left関数で、大元の番号を取得し、後は、cfswitchに流し込むだけ。
すっきり書くことができました。
2009/07/02
[coldfusion]タグのコメントについて
こう書いてもばぐらないらしい。
<!cfset hoge = "" >
どうやらCF君は、自分のタグではないと認識するみたいです。
はじめて知った。
2009/07/01
[coldfusion]version8について
さっき、8についてちょっと書いたので。
8でまず目についたのは、img系操作のタグないし関数が増えたかなと。
これもjavaでオブジェクトを作成した上で、バイナリファイルをいじる必要があったので、その手間が省けていいのかなーっと。
この点では、完全に、phpに負けていましたね。
後、ajax関連のタグ・関数が増えていますが、特段、普段から使っている人にとっては、今更感があるのかなと。
[coldfusion]createobjectの属性が追加された
どうやら8から属性が追加されてみたいです。
追加された属性は、主に、プロキシ関連なのですが、おそらく、restやsoap通信をプロキシを通して行う際に、ネイティブにjavaのオブジェクトを作る必要があったので、問い合わせが多かったんじゃーないのかなーっと思っています。
リファレンスはこちらから
2009/06/09
[coldfusion]改行の謎
なーんか、仕様だかなんだかわからんのですが。。。
Chr(13)とChr(10)を使って改行を表現しようとすると、htmlに吐き出す時は、改行が表示されず、cfmailの本文では改行されるみたい。
例えば、
<cfset test ="hoge#chr(13)##chr(10)#foo"> |
と書くと当然、test変数の中身が表示されるわけなんですが、改行されないんですね。
で、こちらだと、
<cfset test ="hoge#chr(13)##chr(10)#foo"> |
メール本文に改行が表示されるわけなんですが、これは仕様なのでしょうか?
確かに、ColdFusion入門-Webアプリケーションサーバの新標準では、DBに登録されている改行を<br>でReplaceをかけていたのですが。
どーやらhtmlに表示する際は、Replaceをかけて、<br>を表示するのかなと。
2009/04/28
[coldfusion]2回cffunctionの宣言ができない
ちょっとこの前、開発しているときに、びっくりしたのですが、cffunctionって同一ページで、2回宣言するとエラーになってしまうんですね。
<cffunction name="hoge"> |
しかも、cfincludeの参照先で、cffunctionを宣言して、2回以上、cfincludeタグを発行して参照しようとしてもこのエラーが発生します。
これエラーにしちゃうって、ちょっと異常なような。。。
仕様的にどうなのかな??
後で時間があれば書こうかなと思うのですが、JavaScriptや、scheme(||gacuhe)は、同じ関数を同一ページで宣言することができます。
(まぁー関数形の言語なので。)
cffunctionって書いている時点で関数言語なわけで。
oracleのpl/sqlもfunction発行できるとけど、名前通り、手続き型を謳っているから、逆にfunctionはおまけ的要素がするんだよね。
だってfunctionを使わなくても、procedureでカバーできるわけだし。
PHPだって、require_once関数を使えば、参照先の関数を一回だけ解釈を行うので、この手をエラーを回避できるのですが。
なんて不便なんだ。
2009/03/25
[coldfusion]これってタグなのか?カスタムタグ
cfにはカスタムタグがあるのですが、リファレンスを調べてみると、ファイルそのものをタグと認識する方法があるみたいです。
例えば、hoge.cfmのソースは↓のようになっていたとします。
| hoge.cfmです。 |
純粋な文字列が書いてあるだけです。
一方、test.cfmが↓のようになっているとします。
| <CF_hoge> |
上の状況で、test.cfmを表示すると一体どうなるでしょうか?
なんと、「hoge.cfmです。」と表示されるんですねー。
「CF_ファイル名」でファイルをコールできちゃうみたいです。
なんか不思議な仕様だなーと思ってしまいます。
だって、他にもきちんとした使い方があるのかもしれませんが、これってcfincludeと等価のような気がするから。
もう少し深く考察する必要があるのかもしれません。
2009/03/13
[ColdFusion]cffunction内でcffunctionの定義ができない
関数系言語だと割りとできるのですが、関数内で関数を定義するというもの。
以下のようにファンクションを作り、実行するとエラーが起きました。
<cfoutput> |
まー、CFでは、あまりこのようにして使うケースはないので、いいといえばいいのですが。
2009/02/26
[ColdFusion]ページング
下の本と同時並行でその下の本も、emacsのタイピング用として使っています。
で、上の本では、dreamweaverと連携したcoldfusionの開発を紹介しているのですがソースがほとんどかかれていなくて、サンプルプログラムの中に、ページングに関する、項目があったので、自作するとどうなるのかなーと思い、ちょっと考えてみました。
<cfparam name="form.flg" default="0"> |
「最後へ」は、問い合わせの一番最後のページに進み、「最初へ」は、問い合わせの一番最初のページに進むような仕様にしています。
こうやって、フォーマットしていっかい開発しておけば、後で、ある程度使い回しが効くので便利かなと
2009/02/22
[ColdFusion]cfservletがない。。。
今、emacsのタイピング練習として下の本に書かれているソースを模写しています。
本書では、cfservletを使ったソースが紹介されているのですが、困ったことにcfservletはcoldfusion 7または8では使えないんだよねー。
当然、cfservletparamも使えません。
リファレンスには、「JSP PageContext API」または「Servlet RequestDispatcher API」を参照してくださいと書かれていたのですが、検索しても発見できなかったんですよねー。
代替案として、createobectを使ってjavaを使わないといけないのかなーと思っています。
2009/01/06
[coldfusion]coldfusion 9
そろそろCFのバージョンアップがあるんじゃないかなーと思っていたら、案の定ありました。
ColdFusion 9 コードネームは Centaur(ケンタウロス)を参考にさせていただくと、今度のコードネームは、Centaur(ケンタウロス)とのこと。
というか、正直な話、まだ、開発行うんだーっと思ってしまいました。
2008/12/02
[coldfusion]xmlを生成しダウンロードする
久しぶりのxmlネタ。
仕事で、xmlを扱いそうなので、予習をかねてxmlを生成し、ダウンロードする方法を考えてみました。
とりあえず、cfのXML ドキュメントオブジェクトの作成と保存を見たのですが、めんどくさそうだったので、文字列を使って気合で作成。
| <cfset output_xml = '<?xml version="1.0" ?>'> <cfset output_xml = output_xml&"<sample>"> <cfset output_xml = output_xml&"<hoge>test1</hoge>"> <cfset output_xml = output_xml&"<foo>test2</foo>"> <cfset output_xml = output_xml&"</sample>"> <cffile ACTION="Write" FILE="#ExpandPath(".")#\hoge.xml" OUTPUT="#output_xml#"> <cfheader name="Content-Disposition" value="attachment; filename=hoge.xml"> <cfcontent TYPE="text/xml" DELETEFILE="yes" FILE="#ExpandPath(".")#\hoge.xml"> |
すごく原始的なソースになりました。
cffileからの下の3行は、リファレンスに似たようなものがあったのでそれを参照しました♪
cfcontentのtext/xmlは、マニュアルを見ながら、おそらくこうだろうーと判断。
ちなみに、cfcontentのDELETEFILE属性のyesをnoに変更すると、ファイルが残るのですが、残ったファイルを直接削除することってできなかったんですね。
気づくまでちょっと時間がかかりました。
2008/10/01
[coldfusion]本を出版したい
総決算として、これさえあればCFマスター、みたいな本を書きたい。
あわよくば英語版も書きたい。
そろそろ違う言語もやらないとまずいかなと
2008/09/30
[coldfusion]ここがダメだよ、coldfusion その3
<cfscript>内で、変数宣言をする際に、varを使ってエラーなる場合と、ならない場合がある。
下の場合は、エラーになる。
<cfscript> |
だけど、これはエラーにならない
<cffunction name="foo"> |
つまり、cffunction内でcfscriptを使う場合は、varを使ってもオッケーなんですね。
しかも、cffunction内では、varを使わなくても変数宣言を行うことができるんですよ。
この中途半端さどうにかしてほしい。
せめて、一個目の例でも、varを宣言できるようにしてほしいかなと思います。
2008/09/20
2008/09/19
[coldfusion]ここがダメだよ、coldfusion その1
ちょっと前に放送されていた「ここが変だよ日本人」にあやかって。
まずは、ずーといいたかったのがこれ