忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
×

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

去年抽選で当たったDSLiteを売って、Wiiを買ってみた。

するとWi-Fiのルーターが欲しくなり、I/0データのWN-G54/R3を購入・・・・

散財。


さて、サーバーの特定フォルダ以下をツリー表示する方法。
ColdFusionAdministratorのデーターソース設定にあるようなイメージです。

いいコンポーネントが無いかなぁ・・・と探したのですが、英語圏の検索が下手なのか、なかなか使えそうなものが見つかりませんでした。

結局、<CFDIRECTORY>(→LiveDocs) と <CFTREE>(→LiveDocs)の組み合わせでゴリゴリ書いてみたわけです。


--------------------------
<!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>CFTREEテスト</title>
</head>

<cfset root = "D:\ColdFusion8\wwwroot\scorpio\root\351083045"><!---表示フォルダの絶対パス--->
<cfset URLroot = "./root/351083045"><!---表示フォルダのURLルートパス--->

<cfdirectory action="list" directory="#root#" name="dir" sort="directory" recurse="yes">

<cffunction name="dirquery" returntype="query">
 <cfargument name="dirname" required="yes" hint="フルパス指定">
  <cfquery dbtype="query" name="dirtemp">
   select NAME,TYPE from dir where directory = '#dirname#' order by name,type
  </cfquery>
 <cfreturn dirtemp>
</cffunction>

<body>


<cfform>
<cftree name="dlist" width="300" height="650" vspace="5" hspace="5" format="applet">
 <cftreeitem value="#root#" display="351083045GH">
 <cfset d1 = dirquery(root)>
 <cfloop query="d1">
  <cftreeitem display="#d1.NAME#" value="#root#\#d1.NAME#" parent="#root#"
   img="#IIF((d1.TYPE is 'Dir'),DE('folder'),DE('document'))#">
  <cfif d1.TYPE is 'Dir'>
  <cfset parent1="#root#\#d1.NAME#">
  <cfset d2 = dirquery(parent1)>
  <cfloop query="d2">
   <cfset path="#parent1#\#d2.NAME#">
   <cftreeitem value="#path#" display="#d2.NAME#" parent="#parent1#"
    img="#IIF((d2.TYPE is 'Dir'),DE('folder'),DE('document'))#"
    href="#IIF((d2.TYPE is 'File'),DE('#URLroot#/#URLEncodedFormat("#replace(path,root,'')#")#'),DE(''))#"
    target="mainFrame">
   <cfif d2.TYPE is 'Dir'>
   <cfset parent2=#path#>
   <cfset d3 = dirquery(parent2)>
   <cfloop query="d3">
    <cfset path="#parent2#\#d3.NAME#">
    <cftreeitem value="#path#" display="#d3.NAME#" parent="#parent2#"
     img="#IIF((d3.TYPE is 'Dir'),DE('folder'),DE('document'))#"
     href="#IIF((d3.TYPE is 'File'),DE('#URLroot#/#URLEncodedFormat("#replace(path,root,'')#")#'),DE(''))#"
     target="mainFrame">
    <cfif d3.TYPE is 'Dir'>
    <cfset parent3=path>
    <cfset d4 = dirquery(parent3)>
    <cfloop query="d4">
     <cfset path="#parent3#\#d4.NAME#">
     <cftreeitem value="#path#" display="#d4.NAME#" parent="#parent3#"
      img="#IIF((d4.TYPE is 'Dir'),DE('folder'),DE('document'))#"
      href="#IIF((d4.TYPE is 'File'), DE('#URLroot#/#URLEncodedFormat("#path#")#'),DE(''))#"
      target="mainFrame">
     <cfif d4.TYPE is 'Dir'>
     <cfset parent4=path>
     <cfset d5 = dirquery(parent4)>
     <cfloop query="d5">
      <cfset path="#parent4#\#d5.NAME#">
      <cftreeitem value="#path#" display="#d5.NAME#" parent="#parent4#"
       img="#IIF((d5.TYPE is 'Dir'),DE('folder'),DE('document'))#"
       href="#IIF((d5.TYPE is 'File'), DE('#URLroot#/#URLEncodedFormat("#path#")#'),DE(''))#"
       target="mainFrame">
      <cfif d5.TYPE is 'Dir'>
      <cfset parent5=path>
      <cfset d6 = dirquery(parent5)>
      <cfloop query="d6">
       <cfset path="#parent5#\#d6.NAME#">
       <cftreeitem value="#path#" display="#d6.NAME#" parent="#parent5#"
        img="#IIF((d6.TYPE is 'Dir'),DE('folder'),DE('document'))#"
        href="#IIF((d6.TYPE is 'File'),DE('#URLroot#/#URLEncodedFormat("#path#")#'),DE(''))#"
        target="mainFrame">
       <cfif d6.TYPE is 'Dir'>
       <cfset parent6=path>
       <cfset d7 = dirquery(parent6)>
       <cfloop query="d7">
        <cfset path="#parent6#\#d7.NAME#">
        <cftreeitem value="#path#" display="#d7.NAME#" parent="#parent6#"
         img="#IIF((d7.TYPE is 'Dir'),DE('folder'),DE('document'))#"
         href="#IIF((d7.TYPE is 'File'),DE('#URLroot#/#URLEncodedFormat("#path#")#'),DE(''))#"
         target="mainFrame">
        <cfset d8 = dirquery(path)>
        <cfif d8.recordcount gt 0>
         <cftreeitem value="7階層以上表示できません" parent="#path#\#d7.NAME#" img="element">
        </cfif>
       </cfloop><!---d7--->
       </cfif>
      </cfloop><!---d6--->
      </cfif>
     </cfloop><!---d5--->
     </cfif>
    </cfloop><!---d4--->
    </cfif>
   </cfloop><!---d3--->
   </cfif>
  </cfloop><!---d2--->
  </cfif>
 </cfloop><!---d1 --->
</cftree>
</cfform>
</body>
</html>
--------------------------

・・・・( ̄~ ̄;)ウーン・・・

美しくないな・・・・・と思う。

回帰的に書きたかった所ですが、<cftree>から<cftreeitem>の部分を抜き出して回帰的に書こうとすると、

「CFTREEが無い!」と怒られてコンパイルできないわけです。

仕方なくネストネスト・・・・
当然階層の上限が出てしまいます。

いい方法ないかなぁ・・・・


と思っていたら、うたらぼさんが助けてくれました。
PR

日経コンピュータの2007 6/25号 p26に記事が載りました。
Flexで作った画面のスクリーンショットも小さいながら。

さて、

コールドフュージョン8の新機能として、サーバーモニタリングツールがよく取り上げられていますね。
Flexベースでビジュアル的にも派手だし、なんかカッコイイ。

今のところ、負荷をかけるような事をしているわけではないので、見ることが少ないわけですが、ちょっとだけ「おっ?!」と思ったので書いておきます。


開発中、HTTP 500 内部サーバーエラー を出しちゃうことって結構ありませんか?

ColdFusionをデバッグモードにしておけば、ほとんどのエラーはブラウザ上ですぐ確認できるのですが、たまにHTTP500が出ると、何のエラーが出たのかわからないため、Application.logとかを見る必要があります。

そんなとき、サーバーモニタ「概要」の右下にある「前回のエラー」を見ると、大体アタリがつくかもしれません。

サーバーモニタ

コードを書いているときは立ち上げておき、ひょいと見れるようにしておけば結構いいかも。

その前にエラー出すなよ・・・って話ですが。

ColdFusion8を使ってみて、「おっ?!」と思ったことをこのカテゴリで書いてみる。

・・・・続かないかも。


まず、

<cfquery name="kekka" datasource="****">の結果をダンプすることがよくありますね。

<cfdump var="#kekka#">

などと。


今までは、その結果しか表示されませんでしたが、CF8では発行したSQL文が表示されるようになりました。
cfdump
CF7でも、デバッグモードにしておけば、ページの下部で見ることはできたわけですが、ヘテムルなんかじゃ見れないわけです。

レンタルサーバー上でも見えるようになるので、結構助かるかも。
少し前になりますが、6月1日に行われた緊急地震速報機器の展示会に、「ユレキテル」を出展しました。
以前ちょっと紹介したやつです。

テレビカメラも入っていたので、もしかしたら流れるかもと思っていたのですが、どうやら当日のワールドビジネスサテライトのトレンドたまごコーナーでちょっと映ってたようです。

ユレキテル

全く期待してなかったので、ノーチェック見逃し・・・il||li _| ̄|○ il||li

幸い、「トレンドたまごアーカイブ」ってのがwebにあり、そこで見ることができました。
よっぽどヒマな方はこちらからどうぞ。
最初に一瞬だけなので、ほとんどPRになってません・・・

シャイなワタシは、滝井礼乃レポーターにほぼ100%カブっており、本人以外、そこに立ってることが認識できませんです。

上の写真にあるノートPCに、ColdFusionのデベロッパー版を入れてデモに使いました。


TBSはインタビュー受けたんだけど、いつ放送するか未定って言ってたから、また見逃すんだよな。多分。


滝井アナウンサーは、なかなかカワいい感じでよかったです。
GeForce8600GTのグラボを積みました。
デュアルディスプレイが快適。
Vistaのナントカスコアも3.3→5.2とアップしてちょっと嬉しい。

さて、

ブラウザからサーバーにファイルをアップロードする方法について。

htmlだけで、どうやってやるのか知りません。実は。
<input type="file">というhtmlタグがあるわけですが、どうやってhtmlで受けるんだろう・・・・
phpやaspなんかを使わなきゃできないのかも。

coldfusionでやる方法。
A.cfmで<input type="file">を使って、B.cfmにpostします。


A.cfm
<form action="B.cfm" method="post" enctype="multipart/form-data">
  <input type="file" name="attach" />
  <input type="submit" />
</form>


B.cfm
<cffile action="upload" filefield="attach"
 destination="/home/sites/heteml/******/" nameconflict="makeunique">

A.cfmは、普通のhtmlファイルでもかまいません。
enctype="multipart/form-data"
を指定するところがポイント。

受け側のB.cfmで、<cffile>(→LiveDocs)タグを使います。
filefield= で、inputで指定したnameと合わせる必要があります。
distination は保存場所です。
フルパスで指定する必要があります。
hetemlの場合はコントロールパネルの「ドメイン・メール設定」を見るとパスが書いてあります。
nameconflict で、ファイル名がかぶった場合、上書きするのか、番号を付けてユニークにするのか、エラーを出すのかを指定します。


そうそう、ヘテムルの場合パーミッションを707に変更しないとアップロードできません
アップロードされたファイルの所有者は、zeusってなってるな。
ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

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

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

FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新トラックバック
カレンダー
04 2024/05 06
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 31
なかのひと
忍者ブログ [PR]