ラベル ColdFusion の投稿を表示しています。 すべての投稿を表示
ラベル ColdFusion の投稿を表示しています。 すべての投稿を表示

2012/02/28

[coldfusion]10のbeta release

いつの間にか、10のベータがリリースされていました。

Adobe ColdFusion 10

最初に触ったのは、確か、6だったので、あれから、4つもバージョンアップしたのかと思うと、なんか、年くったなー。

2010/07/06

ColdFusion 9 CFML リファレンスは

こちらからアクセスできるみたいです。

探すのに手こずったので、リンク先を紹介。

いやーしかし、去年の11月には9がリリースされていたからなー。

本当、いつの間にって感じですよ。

今度の10はどうするんだろうなー。

2009/11/25

[coldfusion]9がリリースされてました。

まだ何が新しくなっているのか確認できていませんが。。。
こちらで正式にアナウンスされています。

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>
<cfset cf_version_number = left(cf_version_number,1)>

<cfswitch expression="#cf_version_number#">
<cfcase value="7">
foo
</cfcase>
<cfcase value="8">
hoge
</cfcase>

</cfswitch>

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">
<cfoutput>
#test#
<\cfoutput>

と書くと当然、test変数の中身が表示されるわけなんですが、改行されないんですね。

で、こちらだと、
<cfset test ="hoge#chr(13)##chr(10)#foo">
<cfoutput>
<cfmail from="・・・" to="・・・" subject="・・・">
#test#
<\cfmail>
<\cfoutput>

メール本文に改行が表示されるわけなんですが、これは仕様なのでしょうか?

確かに、ColdFusion入門-Webアプリケーションサーバの新標準では、DBに登録されている改行を<br>でReplaceをかけていたのですが。

どーやらhtmlに表示する際は、Replaceをかけて、<br>を表示するのかなと。

2009/04/28

[coldfusion]2回cffunctionの宣言ができない

ちょっとこの前、開発しているときに、びっくりしたのですが、cffunctionって同一ページで、2回宣言するとエラーになってしまうんですね。

<cffunction name="hoge">
<cfscript>
var ret = 1;
ret = ret + 1;
</cfscript>

<cfreturn ret>
</cffunction>

<cffunction name="hoge">
<cfscript>
var ret = 1;
ret = ret + 1;
</cfscript>

<cfreturn ret>
</cffunction>


しかも、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>
#test()#
</cfoutput>
<cffunction name="test">
<cfscript>
WriteOutput("Hello ColdFusion");
</cfscript>

<cffunction name="hoge">
<cfreturn true>
</cffunction>

</cffunction>

まー、CFでは、あまりこのようにして使うケースはないので、いいといえばいいのですが。

2009/02/26

[ColdFusion]ページング

下の本と同時並行でその下の本も、emacsのタイピング用として使っています。



で、上の本では、dreamweaverと連携したcoldfusionの開発を紹介しているのですがソースがほとんどかかれていなくて、サンプルプログラムの中に、ページングに関する、項目があったので、自作するとどうなるのかなーと思い、ちょっと考えてみました。

<cfparam name="form.flg" default="0">
<cfparam name="form.startrow" default="1">
<cfparam name="form.endrow" default="10">
<cfparam name="pageup" default="10">

<cfquery name="lq" datasource="test">
<--- クエリーを記述 --->
</cfquery>

<cfset lq_total = lq.recordcount>
<cfswitch expression="#form.flg#">
<!--- 先頭へ --->
<cfcase value="1">
<cfset form.startrow = "1">
<cfset form.endrow = "10">
</cfcase>
<!--- 前へ --->
<cfcase value="2">
<cfset form.startrow = form.startrow - pageup>
<cfset form.endrow = form.startrow + pageup - 1>
</cfcase>
<!--- 次へ --->
<cfcase value="3">
<cfset form.startrow = form.endrow + 1>
<cfset form.endrow = form.endrow + pageup>
</cfcase>
<!--- 最後へ --->
<cfcase value="4">
<cfif Right(lq_total,1) eq "0">
<cfset form.startrow = lq_total - pageup + 1>
<cfelse>
<cfset form.startrow = left(lq_total,Len(lq_total)-1)&"1">
</cfif>
<cfset form.endrow = lq_total>
</cfcase>
</cfswitch>

<cfif form.endrow gt lq_total>
<cfset form.endrow = lq_total>
</cfif>

<html>
<head>
<title>test</title>
</head>
<body>
<cfoutput>
#lq_total#件中:#form.startrow#件~#form.endrow#まで表示しています。

<table>
<cfloop query="lq" startrow="#form.startrow#"
endrow="#form.endrow#">
<--- クエリーを表示 --->
</cfloop>
<tr>
<td colspan="3">
<cfif form.startrow gt 1>
<a href="javascript:lf_go(1);">先頭へ</a>
<a href="javascript:lf_go(2);">前へ</a>
</cfif>
<cfif form.endrow lt lq_total>
<a href="javascript:lf_go(3);">次へ</a>
<a href="javascript:lf_go(4);">最後へ</a>
</cfif>
</td>
</tr>
</table>

<form name="frm" action="./test.cfm" method="post">
<input type="hidden" name="flg" value="">
<input type="hidden" name="startrow" value="#form.startrow#">
<input type="hidden" name="endrow" value="#form.endrow#">
</form>
<script type="text/javascript">
function lf_go(amode){
with(document.frm){
flg.value = amode;
submit();
}
}
</script>
</cfoutput>
</body>
</html>

「最後へ」は、問い合わせの一番最後のページに進み、「最初へ」は、問い合わせの一番最初のページに進むような仕様にしています。

こうやって、フォーマットしていっかい開発しておけば、後で、ある程度使い回しが効くので便利かなと

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>
var hoge = "";
</cfscript>


だけど、これはエラーにならない

<cffunction name="foo">
<cfscript>
var hoge = "";
</cfscript>
</cffunction>

つまり、cffunction内でcfscriptを使う場合は、varを使ってもオッケーなんですね。

しかも、cffunction内では、varを使わなくても変数宣言を行うことができるんですよ。

この中途半端さどうにかしてほしい。
せめて、一個目の例でも、varを宣言できるようにしてほしいかなと思います。

2008/09/20

[coldfusion]ここがダメだよ、coldfusion その2

CPANのような盛り上がったコミュニティがない

2008/09/19

[coldfusion]ここがダメだよ、coldfusion その1

ちょっと前に放送されていた「ここが変だよ日本人」にあやかって。

まずは、ずーといいたかったのがこれ

ラムダがない