ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ファイル間でトラックバックを付けて文書管理:IFRAMEからCGI呼び出し

2006-04-20 19:46:04 | JavaとWeb

 前のブログで書いた、ファイル間にトラックバックを付けて、元の文書をなおさずに、修正文書や関連文書にリンクを貼る方法について。

そのために必要なこととして、
(1)トラックバックを手動で作成するプログラム
(2)トラックバックを受け付けるCGI
(3)トラックバック表示CGI+トラックバックされるファイルにIFRAMEタグ

ということで、(1)、(2)、(3)のCGIは前に書いたので、今回は(3)の後のほう、「トラックバックされるファイルにIFRAMEタグ」についてです。




■トラックバックされるファイルにIFRAMEタグ仕様
 前の、トラックバック表示受け付けCGIで、表示する内容はできているので、
 IFRAMEタグを使って、最新のトラックバック内容を表示するようにします。




■HTMLの内容

 HTMLファイルを作成したら、最後のところに、
 <IFRAME SRC=”表示CGIのURL"></IFRAME>をいれてください。

こんなかんじです。

<html><title>ファイルのテスト</title>
<body>
<P>
ここの部分に本文が入ります<P>
<p>
●このページについているトラックバック<BR>
<IFRAME SRC="http://mokano.main.jp/temp/tbdisp.cgi?ID=20060218001"></IFRAME>
</BODY>
</HTML>

(上記プログラム中、 < > ¥ は、本当は、半角です)

そーすると、こんなかんじに表示されます

ここのリンク先をクリックすると、トラックバック先が開きます。




ということで、気が向いたときに、あとはこのプログラムを使って、実際にトラックバックをつけた例を示します。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイル間でトラックバックを付けて文書管理:トラックバック表示CGI

2006-04-20 19:16:48 | JavaとWeb

 前のブログで書いた、ファイル間にトラックバックを付けて、元の文書をなおさずに、修正文書や関連文書にリンクを貼る方法について。

そのために必要なこととして、
(1)トラックバックを手動で作成するプログラム
(2)トラックバックを受け付けるCGI
(3)トラックバック表示CGI+トラックバックされるファイルにIFRAMEタグ

ということで、(1)、(2)は前に書いたので、今回は(3)トラックバック表示CGIについてです。




■トラックバック表示CGI仕様
 前の、トラックバック受け付けCGIで、
  CGIのあるところに、引数のIDに指定された値でフォルダを作り、
  その下にitem_番号.txt (番号は連番)というファイル名で
   ファイルの中身は
   1行目にトラックバック元URL
   2行目にトラックバック元の名前
   3行目にタイトル
   4行目に内容
 が入っています(改行で1行、もともとの改行データは<BR>に書き換えられています)

 このトラックバック受付CGIと同じところにトラックバック表示CGIも置きます。
 このトラックバックCGIが、例えばtbdisp.cgiという名前で、ローカルのcgi-binになったとしたら、こんな感じで呼び出します。

 http://127.0.0.1/cgi-bin/trdisp.cgi?ID=20060218001

 IDは、トラックバック受付CGIで設定したIDと同じで、
 1トラックバック先1IDとなるようにしてください(名前は任意)




■プログラムの概要
・引数をとっきて、IDを決定
・指定されたIDのディレクトリの中をみて、
・itemという言葉を含むファイルであれば、その1行目から4行目をとってきて
・てきとーに表示する内容を出力し
・ディレクトリ内の全ファイルをみたら、close

で、そーすると、以下のプログラムになります。




■プログラム
#!/usr/local/bin/perl
use CGI;


				#################################
				#	必要な変数の取得	#
				#################################
##引数を取得
if ( $ENV{'REQUEST_METHOD'} eq "POST" )
{
	read (STDIN, $qs, $ENV{'CONTENT_LENGTH'});
}
else
{
	$qs = $ENV{'QUERY_STRING'};
}
@qs = split(/&/,$qs);
foreach $i (0 .. $#qs) 
{
	($name, $value) = split(/=/,$qs[$i],2);
	$value =~ tr/+/ /;    #“+”を空白
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;   # %XX変換
	$qs{$name} = $value;
}


				#################################
				#	受信チェック		#
				#################################
#フォルダ名の取得
if ( $qs{"ID"} eq "" )
{
	$qs{"ID"} = "default";
}

#見出しの表示
print "Content-Type: text/html¥n¥n";

#受信したか、ファイル確認
opendir chk_dir,$qs{"ID"};
while (($fname = readdir chk_dir))
{
	# itemという言葉が入ってなかったら対象ではないのでジャンプ
	if ( index($fname,"item") == -1 )
	{
		next;
	}

	#ファイルOPEN
	open (CHK, $qs{"ID"} . "/" . $fname);

	#データの取得
	$sakiURL=<CHK>;		#	1行目のURLの
	$sakiName=<CHK>;	#	2行目の名前の取得
	$sakiTitle=<CHK>;	#	3行目のタイトルの取得
	$sakinaiyo=<CHK>;	#	4行目の内容の取得

	#ファイルクローズ
	close(CHK);

	#出力内容の作成
	print '●' . $sakiName . '<BR>  <A HREF="' . $sakiURL . 
		'"  TARGET=_blank >' .$sakiTitle .'</A><P>';

}

closedir chk_dir;

(上記プログラム中、 < > ¥ は、本当は、半角です)




ということで、次回はIFRAMEのほうです。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイル間でトラックバックを付けて文書管理:概要

2006-04-20 16:42:46 | JavaとWeb

 以前、ファイル同士でトラックバックさせて文書管理しようとしたお話、
 途中いそがしくなって、尻切れトンボになってしまったので、そのつづき
 (やっと、続きを作る時間ができました)




■■やろうとしていること
 ブログ間でトラックバックっていうのは、当たり前にできる。
 これを、ブログ→ファイルやファイル間同士でやろうという話。

 こうすると、たとえば、ある文書を修正したら、元の文書にトラックバックすれば、
新しい文書にリンクされるので、管理上便利。

 一般に修正文書は、元の文書よりあとにできる(当たり前。だから修正なのだ)
 また、ある文書に関連する文書というのも、後からできる場合が多い
 なので、こういう後からできる文書がトラックバックするだけで(前の文書を修正しないで)リンクできれば、便利便利。

 っていうお話




■■方法

図に示すと、こんなかんじ


●ブログAから、トラックバックされるファイルCに
 トラックバックを貼りたい場合、

(1)ブログAは、トラックバック受付CGIにトラックバックを貼る
 →そうすると、トラックバックデータに、
  ブログAからトラックバックされている情報が書き出される

(2)トラックバックされるファイルCは、IFRAMEタグを使って、
   トラックバック表示CGIを呼び出し、その内容を表示する

(3)呼び出されたトラックバック表示CGIは、
  トラックバックデータを読み込み、表示する
  →ブログAの情報が、表示される

●ファイルBから、トラックバックされるファイルCに
 トラックバックを貼りたい場合、

(1)ファイルBから直接、トラックバック受付CGIに何かすることは
   できないので、
  
   トラックバック作成プログラムがトラックバック受付CGIへ
 
   ファイルBが、ファイルCに、トラックバックしていることを
   送ってもらう
 →そうすると、トラックバックデータに、
  ファイルBからトラックバックされている情報が書き出される

(2)トラックバックされるファイルCは、IFRAMEタグを使って、
   トラックバック表示CGIを呼び出し、その内容を表示する

(3)呼び出されたトラックバック表示CGIは、
  トラックバックデータを読み込み、表示する
  →ファイルBの情報が、表示される




現時点でできている部分
現在、みどり色のトラックバック作成プログラムは、
手動トラックバックを貼るプログラムをJavaScriptで作ってみる
http://blog.goo.ne.jp/xmldtp/e/fc42ec2eaabeee606d2d91e189903b8f

で作成してあり、

水色の、トラックバック受付CGIは、

トラックバックされた内容を、ファイルに書き出すCGI

で作成したので、あとのこり
・トラックバック表示CGIと
・IFRAMEでそれを呼び出す部分
を作ればいい。




 ということで、長くなったので、ここでいったん切って、次は、トラックバック表示CGIについて書きます。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ExcelVBAでファイルを読み込んだとき、Chrで漢字がうまく変換できない!という人へ

2006-04-20 14:50:44 | Officeソフト&VBA

 よく、Excelでファイル読み込みをしたときに、Chr()を使って変換させようとして
うまくいかないというのをみる。

 つまり、
Dim recbyte() As byte
Dim rec As String

 としたとき、いま、recbyte()の中に、データが入っていて、これを文字列表示させたいとき
rec = ""
for i = 0  to  reclen 'reclenにレコードの長さが入っているとする
 rec = rec & Chr(recbyte(i))
next


とやると、漢字のところがスペースになってしまう。




■理由:

漢字は2バイトで指定しなければならない(そのため、Chrの引数はLong)

たとえば、「い」という文字(16進で82a2)を表示したい場合

Chr(0x82) & Chr(0xa2)

ではなくて

Chr(0x82a2)

と指定する。




■で、どうするか
漢字の場合には、2バイトで変換
それ以外なら1バイトで変換とする

こんなかんじ
       c1 = recbyte(k)
       If (c1 < &H80) Then                        ' 英数字
rec = rec & Chr(c1)
k = k + 1
ElseIf ((&HA0 < c1) And (c1 < &HDF)) Then ' 半角かな
rec = rec & Chr(c1) k = k + 1 Else ' 漢字 c2 = recbyte(k + 1) rec = rec & Chr(CLng(c1) * 256 + CLng(c2)) k = k + 2 End If


とーとつにKとか出てきたが、もうしわけない。
これ、今度公開しようとしているプログラムのソースの一部なのだ(^^;)




 今度、固定長ファイルを読み込んで、Excelのファイル仕様書にあるように
データをきっていくプログラムを公開しようかなーなんておもってます。

 で、それを作っていて、ここの部分について、調べてみたら、結構うまく
いってない人が多いみたいなので、ちょっと書いてみました。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「ウィニー対策ソフト、産官学チームで開発へ」だって。掲示板やブログの書き込みは禁止されるの?

2006-04-20 10:44:54 | Weblog

 ここのニュース
ウィニー:対策ソフト、産官学チームで開発へ 政府が決定
http://www.mainichi-msn.co.jp/today/news/20060419k0000m010042000c.html


によると、Winny等による情報流出に対応するソフトを開発するそーです。
上記ニュースによれば(以下斜体は上記ニュースより引用)

政府はウィニーをパソコンに組み込まないよう職員に指導している。しかし、私用のパソコンを仕事で使うケースもあり「根本的な対策が必要」(内閣官房情報セキュリティセンター)と判断、ソフトを開発することになった。

 対策ソフトは、パソコンから情報が流出する可能性を事前に察知し、問題ソフトを停止させる仕組み。ウィンドウズやリナックスなど基本ソフト(OS)に関係なく使えるようにする。


とのこと。
 でも、職員がUSBメモリなどにコピーしてしまえば、それが流出することを防げないわけで。。本当に、これが、根本的解決なんでしょーか?

 根本的解決というと、
・ワープロソフトで保存するときには、必ず暗号をかけるようにして、暗号鍵を国家で管理する
とか
・すべてシンクライアントにして、クライアント側はファイルを保存できないようにして、サーバーで管理する

とかだとおもうんだけどお。。。??

 でもOSに関係なく使えるって?
 Javaかなんかでつくるんか?
 流出する可能性って、ポートの80番まで止めちゃうってことはねーだろーな(^^)
  →そーいえば、SOAだって、ブログだって、掲示板の書き込みだって
   サーバーに情報を流出させてるっていえねーか?
   SOAも禁止??掲示板の書き込みとか、ブログは。。禁止になりそーだにゃー





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

メルマガだしました&やっぱ、コピーされるほど、もーかるんじゃあ??

2006-04-20 01:37:37 | コピーされるほど儲かるシステム!

 あ、そうそう、昨日、メルマガ、久しぶりに出しました。
 内容は、画面定義書について
 てなことで、もしメルマガについて、意見やなにかあったら、ここのコメントにでも書いてくださいませ。

 で、メルマガの&このブログの題名「コピーされるほど儲かるシステム」の基本的な考え方である「ネットが流行るとCDが売れなくなるんじゃなくって、むしろ、ネットで知ってもらわないと、CDが売れないんじゃあ(^^)」という考えを支持する統計がでたそうなので、ちょっと書いておきます。

ここのニュース
ネット配信は味方?音楽ソフト生産額、7年ぶり増加
http://www.yomiuri.co.jp/atmoney/news/20060417it15.htm?from=top

CDが7年ぶりに生産増加したんだそーです。
そのニュースによると(以下斜体は、上記ニュースより引用)

 CDやDVDなどの音楽ソフトの生産額が、2005年度は前年度比4%増の4313億円と、7年ぶりに増加に転じたことが17日、日本レコード協会(加盟42社)の調べで分かった。

 生産数量も9%増の3億6735万枚と2年ぶりに増加し、ネット配信が普及すれば音楽ソフトは売れなくなるという業界の“定説”が崩れた形だ。

 日本レコード協会は「携帯電話などを通じた音楽のネット配信が普及したことで、利用者がアーティストの他の曲や歌詞カード、ジャケットを求めてCDなどを購入した」と分析。「今後もネット配信の拡大とともに生産額は増加する」と強気の見方をしている。


 ほらー。やっぱそーじゃん(^^)

 エイベックスもCD売り上げが落ちている説明、CD自体が不振みたいないいかたでごまかすけど、はっきりみとめるべきだね。「いやー、売れてる歌手がいないからさあ。。でも、ここ最近は、倖田來未で売れてるのでCDもあーっぷ(だろーな多分)。でも、倖田來未以外は(^^;)」って


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする