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

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

裏金燃やすってさ、みんな信じてるんだろうか・・・・・

冷静に考えると、燃やすわけねーだろ! って思う。

さて、

ColdFusionを使って、お気楽にディレクトリ内のファイルをweb公開する例です。
ぶっちゃけwebサーバーの機能だけでスグできるわけですが、あえてColdFusionを使います。はい。

最近のコピー機はいわゆるネットワーク複合機で、いろんなことができます。
ワタシもよく使う機能に、スキャンしてPDFにしてメールで送ってくれる機能があります。
当たり前ですがオートフィーダーもついているので、数十枚のペーパーをさくっとPDFにすることができます。
メールアドレスを登録しておけば、メール送信してくれたり、ユーザー名パスワードを設定して、サーバーのフォルダに直接保存したりできます。

この機能は、総務系うっかり課長(イメージ右図)レベルでも使えるので、「ペーパーレス化」とか「業務効率化」とか、耳障りのいいコトバと共にじゃんじゃんPDFが生成されるわけです。
すると当然総務系うっかり課長(イメージ右図)なんかは、「おい!回覧したりFAXしてる訃報なんぞは、PDFで送れば通信費削減だな!」 などと言い出すのは、たぶん何処の企業でも同じだと想像します。

すると今度は総務系オツボネーゼが「課長!そんなこと言ったって、メールでみんなに送るなんてめんどくさくてありえなーい!」と反論。で、じゃぁホームページで公開すれば・・・・・ となりオハチが廻ってくるしくみです。

そんな背景でサクッと。

webサーバーに公開用フォルダを用意します。アクセス制限をして、総務系オツボネーゼに書き込み権限を与えて、オツボネーゼのデスクトップにショートカットを仕込みます。
この公開用フォルダにPDFを保存すれば、そのまんま公開されるしくみを作ります。
オツボネーゼの仕事は、「コピー機でPDFを作り、ファイル名を整えて保存する」となり、このくらいなら「えーファイル名変えるのめんどくさーい」程度のイヤミを聞かされる程度で業務に組み込めますね。

<cfdirectory directory="/var/www/html/fuho" action="list" name="spf" filter="*.pdf" sort="name DESC"/>
<cfoutput>

 <h3>訃報</h3>
 <cfloop query="spf">
 <div class="items">
  <cfif (IsNumeric(ListGetAt(name,1,'.')) is false) or (Len(ListGetAt(name,1,'.')) neq 8)>
    [#name#]←ファイル名がyyyymmdd.pdfでは無いようです....
  <cfelse>
    <h3><a href="./kyu/sambaweb/newspaper/#name#" target="_PDF">#left(name,4)#年 #mid(name,5,2)#月 #mid(name,7,2)#日</a> (#NumberFormat(size/1024/1024,'__._')#MB)</h3>
  </cfif>
 </div>  
 </cfloop>
</cfoutput>

ソースです。fuho フォルダにyyyymmdd.pdf 形式でpdfを保存すると、

2006年 09月 07日 ( 2.1MB)

2006年 09月 06日 ( 1.1MB)

2006年 09月 05日 ( 2.3MB)

 といった感じで日付にpdfへのリンクが張られ、サイズが表示されます。

== 解説 ==

1行目の<cfdirectory>→LiveDocs)で指定したフォルダ内のリストを取得しています。
directory="/var/www/html/fuho" は絶対パスで。Linuxなのでこう書いてますが、windowsなら directory="d:\inetpub\wwwroot\hogehoge" などと、ドライブレターからですね。
他のパラメータの意味は、
action="list" 欲しいのはリストだよ
name="spf" 取得した一覧はspf っていう変数に入れてね
filter="*.pdf" 取得するのは、拡張子がpdfのファイルだけでいいよ
sort="name DESC" ファイル名降順で並べ替えておくれ

という意味です。

ここで文字化けの問題に遭遇することがあります。
linuxのCFサーバーから、sambaで公開している日本語ファイル名を読むと、バケバケです。
これを回避する方法は今のところ解りません。誰か教えて下さい!

ワタシの見つけた唯一の解決策は、windowsのCFサーバーから、linuxのsambaフォルダを読むと文字化けしない。ってことです。
cfdirectoryはネットワーク越しでも使えますから。(でもスッキリしない・・・・・誰か教えて!)

つづく

PR

internet_umiushi.jpg「インターネットウミウシ」ってのがいる、と聞いてガセだと思ったらホントだった。
写真をみると( ̄~ ̄;)むむ、わからないでもないな・・・・って感じ。
しかし、ウミウシの世界は深い。色や形、和名・学名いろいろあるようで、見てると飽きないですな。
面白い和名をいくつか。

ミルクオトメウミウシ
チョビヒゲコネコウミウシ
ミレニアムマツカサウミウシ
ピカチュウウミウシ

基本的に見た目を表現している名前が多いですかね。ピカチュウなんて、まさにそれです。
発見した人が「おぉ!こいつの名前はピカチュウウミウシだっ!」ってノリで決めてるんでしょうかね。
ミレニアムマツカサはちょっと?です。

ワタシがこんなの見つけたら、絶対「コールドフュージョンウミウシ」に決まり。
cf_umiushi.jpg


今朝、会社の女子トイレから「キャー!きゃー!」と何度も悲鳴が聞こえた。
あとで聞くと、「コオロギが出た!」と言う・・・・

ここは東京都中央区のビルの8階。
そいつは絶対コオロギじゃないと思うぞ。

さて、

MovabeType用のpingサーバーの作り方、その5です。
[その1] [その2] [その3] [その4]

1)pingが来たら、
2)postされたcontentの内容を読んで
3)XMLとして取り込み
4)URLを取り出したら
5)RSSを読みに行って
6)新着記事を入手し
7)データーベースに書く

の7) について。

DBにping用のテーブルを用意します。
とりあえず、SEQ,URL,PINGDATE,TITLE,CONTENTSといったフィールドにしました。

<cfquery datasource="etc" name="pingins">
INSERT INTO BLOG (SEQ,URL,PINGDATE,TITLE,CONTENTS) VALUES
(BLOG_SEQ.NEXTVAL,'#ping.methodCall.params.param[2].value.xmltext#','#xmlDoc["rdf:RDF"].item[1]["dc:date"].XmlText#','#xmlDoc["rdf:RDF"].channel.title.xmltext#','#xmlDoc["rdf:RDF"].item[1].title.XmlText#')
</cfquery>

SEQ以外は文字列型でそのまんま突っ込んでます。f(^^;)

ColdFusionのわかりやすさの一つが、この<cfquery>の書き方。
aspやphpなどは、SQL文を作るのがめんどくさいなぁ といつも思います。文字列変数を何度もつなげて・・・・。作るのがめんどくさいというより、実はワタシ的にはほとんどaspやphpでゼロから作ることは無いので、ソースから逆追いするのがメンドクサい・・・・・といつも思います。
検索用に条件がいろいろ変わるときなんかは特にそうです。
aspやphpだと、結局どんなSQL文になってるのか、デバッグ用にsqlを表示させながら確認するしか方法をしりません。

ColdFusionだと、SQL文をそのまま書けるから見た目にわかりやすい。

検索系で動的に条件が変わる場合は、CFCとして別出しすることが多いかな?
そのときはそれなりに複雑になってしまいますが・・・・

さて、DBに突っ込めばとりあえずおしまいな訳ですが、なにやらpingを受け取ると結果をxmlで返すルールのようなので(よくわかってない)見よう見まねで返しておきます。本来なら成功か失敗かで返すxmlが代わるわけですが、その辺はなんちゃってイントラpingサーバーなので、気にしない気にしない。

=======以下、実際に使ってるソース index.cfm ========

<cfprocessingdirective pageencoding="utf-8">
<cfset x = GetHttpRequestData()><!---httpリクエストを取る--->
<cfif x.method is "POST">
<cfset ping = XMLParse(x.content)><!---xml展開--->
<cfset Variable.url = "#ping.methodCall.params.param[2].value.xmltext#index.rdf">
<cfhttp url="#Variable.url#" method="GET" resolveurl="Yes" throwOnError="Yes" />
<cfset xmlDoc = XmlParse(CFHTTP.FileContent)>
<cfset resources=xmlDoc.xmlroot.xmlChildren>
<cfquery datasource="etc" name="pingins">
INSERT INTO BLOG (SEQ,URL,PINGDATE,TITLE,CONTENTS) VALUES
(BLOG_SEQ.NEXTVAL,'#ping.methodCall.params.param[2].value.xmltext#',#now()#,'#resources[1].title.xmltext#','#resources[2].title.xmltext#')
</cfquery>
<?xml version="1.0" encording="UTF-8"?>
<methodResponse>
  <params>
  <param>
  <value>
  <struct>
    <member>
      <name>flerror</name>
      <value>
      <boolean>0</boolean>
      </value>
    </member>
    <member>
      <name>message</name>
      <value>Thanks for the ping.</value>
    </member>
  </struct>
  </value>
  </param>
  </params>
</methodResponse>
<cfelse>
<!---そうか GETだったら表示しよう--->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ブログ更新情報</title>
</head>

<cfquery name="blogs" datasource="etc">
 SELECT
 C.SEQ , B.URL , B.LASTUPDATE , C.TITLE , C.CONTENTS
 FROM
 (SELECT A.URL,MAX(A.PINGDATE) LASTUPDATE FROM BLOG A GROUP BY A.URL) B, BLOG C
 WHERE
 B.URL = C.URL AND B.LASTUPDATE = C.PINGDATE
 ORDER BY B.LASTUPDATE DESC
</cfquery>

<body>

<div id="blogs">
 <h3>Blogs</h3>
 <ul>
 <cfoutput query="blogs">
 <li><a href="#url#">#TITLE#</a>(#dateformat(lastupdate,'m/d')# <cfif datediff('d',lastupdate,now()) lt 3><span style="color:red">New!</span></cfif>)<br>
  #CONTENTS#
 </li>
 </cfoutput>
 </ul>
</div>

</body>
</html>
</cfif>

以上でした。

≪ColdFusionでpingサーバーを作る[4]へ

チャングムに出てくるハン尚宮サマは、大関白鵬に似てる。
二人ともマゲ結ってるし。

さて、

2006年8月における、FlashPlayerのバージョン別普及率をまとめたので書いておきます。

8月の訪問者数は約25000でした。(あ、このブログじゃないです。会社のオフィシャルページ)

バージョン 訪問数

9.x

2806

11.2%

8.x

13284

53.2%

7.x

6693

26.8%

6.x

1694

6.8%

5.x

186

0.7%

4以下

33

0.1%

未インストール

280

1.1%

でした。

前回に比べると、7・8から9に移行した人がそれぞれ4~5%いるようです。

外注する稟議はなかなか通らず、ColdFusionで手作りしながら保守もしなければならいワタシにはありえない話。

パスポートの電子申請

http://itpro.nikkeibp.co.jp/article/COLUMN/20060713/243238/
保守に年間8億6000万って何?24時間監視って、どういう監視をしたら8億かかるわけ?今まで3年間で133件しか申請が無いってどういうことよ?で、1件あたり1600万のコストもかかるって家建つぞ!?構築にも数十億かかってるんだろうから、ア リ エ ナ イ 話。

┐(-。-;)┌

会社なら担当者全員クビ っつーか、会社潰れてるし。

( ̄-  ̄ ) ンー しかし、パスポートに限らず、官がやってる「電子ほにゃらら」ってみんな似たような物かも。
実感として「こりゃええ!」ってサービスに出合ったことが無い。
なんだかんだ、やっぱりゴチャゴチャめんどくさくて、野暮なシステム。

プログラムってサイエンスだけじゃなくアートも多分に必要だと思う。

ブログ内検索
プロフィール
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]