忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[13] [14] [15] [16] [17] [18] [19] [20] [21] [22]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

book
ひさしぶりにColdFusion本が出たので買いました。
といっても、タイトルは見ての通り、
Dreamweaver Webアプリケーションスターティングガイド」
なので、ColdFusionの事が書いてあるようには見えませんね。

内容的には、プログラム超初心者向けというか、プログラミングをしないでプログラムを作りたい人向け。かな?
コードがほとんど出てきません。CFタグどころか、HTMLタグすら。

何で買っちゃったかというと、立ち読みしたときに「え?コード書かずにDreamweaverだけでここまでできるの?」と思ったのと、同じ結果をコードをゴリゴリ書いて作れる自信はありますが、Dreamweaverのサーバービヘイビアなんて一切使ったこと無かったので「何かラクできるのかも」と思ったからです。
本の中に『プログラマーは楽をするための努力は惜しまない』とありますが、そんな感じですね。

あと、社内にColdFusionファンを増やすのにも使えるかな? と。

とりあえずどんな本でもColdFusionモノなら大歓迎なワタシです。
PR
オシム氏は、オシムシが、おしむしの・・・・・
"オシムシ"って何か耳障り。
そろそろ"オシム監督"になるから気にならなくなるかな。

さて、

今朝ほどある部門の人に、「80人くらいに一斉メールを送りたい」 と相談がありました。
あるのは名前とメールアドレスが入ったエクセルのリスト。
聞くと、年に何度か送る必要が出てくるとのこと。送信者リストは追加削除がたまに発生する様子。

ということで、チャラっと作ってさし上げました。

リストはMS Accessでもいいというので、Accessにしてもらい、サーバー上のAccessを直接編集してもらうことにして、ColdFusionサーバーでデーターソースを設定。データーソース名は"mdsendmail"

短いのでソースは全部掲載します。
内容的にはColdFusionでメールを送ったことの無い、初心者向けです。

=====[mdsendmail.cfm]================================================
<cfprocessingdirective pageencoding="UTF-8">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>更新メール通知</title>
</head>
<cfquery datasource="mdsendmail" name="send">
select username , email from md_user
</cfquery>
<body>


<cfmail from="okurinushi@hoge.co.jp" to="#email#" subject="ほにゃららのお知らせ" query="send">
お世話になっております。
━【 お知らせ 】━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 このメールは、
 ほにゃらら 
 な方にお送りしております。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━【 お知らせ 】━

#username# 様

うららうららうらうらら。
じゅげむじゅげむごこうのすりきれず。かいじゃりすいぎょのすいぎょうまつ
うんらいまつふうらいまつ。

くうねるところにすむところ。

━【  発信元  】━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ほにゃらら株式会社
  ふがふが部
 住所:東京都
  okurinushi@hoge.co.jp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
</cfmail>
</body>
</html>
=========================================================================

ほぼ見ての通り。このページ、mdsendmail.cfm をブラウザで呼べば、80人全員に1通ずつ、メール本文中にご本人のお名前入りでメールが送られます。

ColdFusion初心者向けに解説。
◆1 <cfquery・・・> で、送信対象リストを取得します。ここでは、md_userテーブルにある、emailusername を全部取ってきます。クエリ名はsendとしました。

◆2 <cfmail>タグを使って、先ほどのquery="send" を指定します。
cfmailタグでquery= を指定すると、そのクエリ結果(この場合は80名)に対し、順番にメールを送ってくれます。ループ等を書く必要はありません。
その際、to= の所に、クエリ結果に含まれているメールアドレスを指定します。to="#email#"
#でくくるのはColdFusionのお約束で、変数を表します。正しく書けば to="#send.email#"となりますが、この場合は省略可能ですね。
あと、from に送信者、subjectにメールのタイトルを入れます。他にもいろいろパラメーターはありますが、最低この程度ですね。(→LiveDocs
◆3 本文を、<cfmail> </cfmail> タグ間に書きます。
改行などは、そのまま表現されます。
また、本文中に 鈴木宗男様 などと個別の名前を入れたい場合は、(クエリ結果に名前が存在する前提ですが) 直接、
 #username# 様
などと書けば、そこに当てはめてくれます。

以上で出来上がり。ブラウザでこのページmdsendmail.cfmを呼べば、送信完了です。(正確にはキューに入る)

実務上は、「送信しますか?」 の確認を出したり、一度管理者にテスト送信したりしますね。
ブラウザをリロードするだけで、もう一度同じメールが大量に送られちゃったりしますから注意が必要です。

私も何度か冷や汗をかいたことが・・・・・(^-^;A

最近、再放送のチャングムにはまってます。

さて、

これの作り方、その1です。
news_sample.gif

DBのフィールドは以下の通り。
HIDUKE DATE,
SINBUN VARCHAR2(40),
KEYWORD VARCHAR2(1024),
TITLE VARCHAR2(1024),
LNO NUMBER(2,0) DEFAULT 0,
SEQ NUMBER(6,0),
DEL_F NUMBER(1,0) DEFAULT 0
2001年から人間RSSデータが溜まっています。
昔はACCESSで担当者がちまちまやっていたようですが、途中で引き継いでシステムにした経緯があります。ACCESSからOracleに移行したのですが、PK(プライマリーキー)が無いのがいただけないところ・・・・
とりあえずそのまま使ってます。

今日のところは表示だけさせてみましょう。
まずはDBにクエリを発行します。
<cfquery datasource="etc" name="portalnews">
SELECT
HIDUKE , SINBUN , KEYWORD , TITLE , LNO , SEQ
FROM EI_NEWS
WHERE HIDUKE = '#form.selectday#' AND DEL_F <> 1 ORDER BY LNO
</cfquery>
ColdFusionの大好きな所のひとつがこのSQLの発行方法ですね。
ColdFusionAdministratorでデーターソース(DBとの接続)を定義してしまえば、こんな感じに<cfquery>タグでSQL文を#変数#含め直接記述できます。
aspとかphpだと、SQLの文字列を作らなきゃならない・・・・
SQLがらみのデバッグがとてもラクだと思います。

さて、このクエリで得られたある日(#form.selectday#)のニュースサマリをFlashGridで表示するには、
<cfform format="flash" action="news_summary.cfm" style="border-style:solid; font-size:14px" timeout="60" height="350">
 <cfgrid format="flash" name="newsgrid" query="portalnews" rowheaders="no" height="300">
  <cfgridcolumn name="lno" width="30" type="numeric" header="No" >
  <cfgridcolumn name="sinbun" width="50" header="新聞名">
  <cfgridcolumn name="keyword" width="100" header="見出し">
  <cfgridcolumn name="title" header="サマリー">
  <cfgridcolumn name="SEQ" display="no">
 </cfgrid>
</cfform>
こんな感じです。
できあがりのキャプチャはこちら。
ちなみにこのキャプチャはMacromedia(Adobe)Captivate で録ってます。

<cfgrid>→LiveDocs )は<cfform>でネストする必要があります。

<cfform>

 <cfgrid>
  <cfgridcolumn>
 </cfgrid>
</cfform>
こういう関係。

<cfgrid query="portalnews"> と先ほどのクエリ名を指定する。
<cfgridcolumn name="keyword"> とselectしたフィールドを指定する所がキモ。
あとのパラメータは見栄えの部分ですね。

とりあえず今日はここまで。
「世界の山ちゃん」に行ってきました。
幻の手羽先 が妙に気に入った次第です。

さて、

今日からしばらくColdFusionだけでweb2.0なFlashのインターフェースを作れる<cfgrid>がらみを紹介しようと思います。

こんなんです。



こいつは、人間RSSみたいなもので、業界紙から記事をピックアップして配信するための入力インターフェースです。Flexを使わずともこのくらいならできるぞと。
最近web2.0などと騒いでいますが、インターフェースとしてはFlashが昔から得意な領域ですね。
愛と平和を歌う世代がくれたものは
 身を守るのと知らぬそぶりと悪魔の魂
隣の空は灰色なのに
 幸せならば顔をそむけてる

・・・・そむけても灰色です。

さて、

本日はあんまり作りませんでした。
ちょっとだけUDF(ユーザー定義関数)をつくってコリコリした程度です。
以前200くらいのクエリを発行するページの記事を書きましたが 、その続き。表示部分です。

クエリがたくさんあるので、表示もタイヘン。
できるだけループで処理するわけですが、表示するだけではなく、それぞれリンクを作ったりするわけです。
その辺の処理で使うUDF。

クエリ結果に入っている発注者名を連続表示し、発注者コードを引数にリンクを作っています。
<cffunction name="mlink" output="true">
<cfargument name="qname" required="yes" type="string">
<cfloop query="#qname#"><a href="javascript: openWindow('edit_main.cfm?hachucd=#HACHUCD#');" title="#hachucd#">#RNAME#</a>&nbsp;</cfloop>
</cffunction>

cffunction(→LiveDocs)は、javascriptなんかでも良く出てくる関数を定義するタグです。
最初に書いても最後に書いてもいいわけですが、なんか気持ち的に最初に書くことが多いでしょうか。
今回はcfc(ColdFusionコンポーネント)は使っていません。

値を返すような関数的な使う事の方が多い気がしますが、今回のように表示に使う場合、output="true"と書かないと、#変数#を使うことができません。
<cfargument>では、受け取る値の器を定義します。この場合、qnameという変数を用意しています。ここにはクエリ名が入ります。

関数を使うときは、
<cfoutput>#mlink("AA0101")#</cfoutput>
といった風に、引数としてクエリ名を書く感じです。すると、そのクエリにある顧客名を表示し、顧客コードによるリンクがずらっと生成されます。
実際は、そこをループで廻すので、
<cfloop list="#catList#" index="i">
#mlink("AA#i#")# <br />
</cfloop>
としています。

こんな感じに強引にできちゃう所もColdFusionの好きなところ。

ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。

外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・

FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新トラックバック
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
なかのひと
忍者ブログ [PR]