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

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

<発信者情報>同意なしで開示へネット被害で業界が新指針、コレで安倍首相夫人がブログ書いても。。

2006-12-26 23:44:01 | Weblog

本家でも取り上げたけど、ここのニュース
<発信者情報>同意なしで開示へ ネット被害で業界が新指針
http://headlines.yahoo.co.jp/hl?a=20061226-00000010-mai-soci

によると(以下斜体は、上記ニュースより引用)

 インターネット上のプライバシー侵害や名誉棄損について総務省と業界団体は、情報を書き込んだ発信者の同意がなくても被害者に発信者の氏名や住所などを開示する方針を固めた。これまでは発信者が開示を拒否すれば、誰が悪質な情報を流したか被害者側には分からず、泣き寝入りするケースが多かった。業界団体は新たなガイドライン(指針)を年明けに作り、来春から導入する。【ネット社会取材班】


で、


 業界と総務省は一般からの意見も募集したうえで、早ければ来年2月にも導入する方針。


だそうな。。
 なお、プライバシー侵害と、名誉毀損と書いてあるだけで、著作権違反とは、書いていない。

 ところで安倍首相夫人のブログができたそうだけど(ここ http://akie-abe.jp/)この法律ができれば、大手掲示板でいろいろ書かれても、住所氏名しらべて名誉毀損で訴えられるから大丈夫(^^;)。。。

 なーんて、ばかなこと書いてると、自分が危なくなるから、この辺で。。。

P.S.でも、きっこさんとか、だいじょうぶなのかなあ?公共性や公益性、真実性などが認められないとアウトといっても、正直、なにが真実かはっきりしないこともあると思うしなあ。。





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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その23:イベント追加 雛形-2)

2006-12-26 20:28:19 | Weblog

 BREWの画面部分のプログラムをExcelの仕様書から自動生成するという、シリーズ仕様書からプログラムソースを生成する方法の続きです。

 前回は、雛形サンプルの公開ということで、今回修正追加される

   ・画面ソースの雛形:gamen_b_c.txt 
   ・画面ヘッダの雛形:gamen_b_h.txt
   ・画面用イベントソースの雛形:gamen_event_c.txt
   ・画面用イベントヘッダの雛形:gamen_event_h.txt

のうち、gamen_b_c.txtだけで、制限字数になってしまいました。
今回は、のこり3つを公開します。



■画面ヘッダの雛形:gamen_b_h.txt
以下のとおりです
/*===========================================================================

FILE: $#$CELL D2$#$.h
===========================================================================*/
#ifndef _$#$CELL K2$#$_H
#define	_$#$CELL K2$#$_H
/*=============================================================
INCLUDES AND VARIABLE DEFINITIONS
============================================================= */
#include "version.h"

#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions

#include "AEEStdLib.h"		//	追加:メモリ関係
#include "AEEFile.h "		//File:HTMLファイル読込に使う
#include "AEEHTMLViewer.h "	//	追加:HTMLViewer
#include "AEEWeb.h"
#include "AEEText.h"
#include "AEEMenu.h"

#include	"IHtmlCtl.h"
#include	"$#$CELL B2$#$.h"
#include	"IKHMap.h"


//==================================//
//	定数定義			  //
//==================================//

/*-------------------------------------------------------------------
Applet structure. All variables in here are reference via "pMe->"
-------------------------------------------------------------------*/
// create an applet structure that's passed around. All variables in
// here will be able to be referenced as static.
typedef struct _$#$CELL D2$#$ {
    	IDisplay      *pIDisplay;
    	IShell        *pIShell;
	int			curno;	//カーソルの番号
	IKHMap			*pMap;	//共通領域
	IEventList		*pElist;//イベント領域
	$#$CELL B2$#$		*poya;	//親領域

$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
	IHtmlCtl		*$#$KETA B$#$;	//IHtmlCtl	
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	ITextCtl		*$#$KETA B$#$;	//テキスト
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$	
	IMenuCtl		*$#$KETA B$#$;	//メニュー
$#$IFEND$#$
$#$REPEND A$#$
} $#$CELL D2$#$;

/*-------------------------------------------
Function Prototypes
---------------------------------------------*/
#ifdef _$#$CELL K2$#$_C
boolean $#$CELL D2$#$_HandleEvent($#$CELL B2$#$* pMe,
		AEEEvent eCode, uint16 wParam,uint32 dwParam);
boolean $#$CELL D2$#$_InitAppData($#$CELL B2$#$* pMe);
void    $#$CELL D2$#$_FreeAppData($#$CELL B2$#$* pMe);

		//	画面表示
boolean $#$CELL D2$#$_DispAppData($#$CELL D2$#$* pMe);
int	$#$CELL D2$#$_NextCurItem($#$CELL D2$#$* pMe,int flg);

#else

extern boolean	$#$CELL D2$#$_HandleEvent($#$CELL B2$#$* pMe,
			AEEEvent eCode, uint16 wParam,uint32 dwParam);
extern boolean	$#$CELL D2$#$_InitAppData($#$CELL B2$#$* pMe);
extern void	$#$CELL D2$#$_FreeAppData($#$CELL B2$#$* pMe);

		//	画面表示
extern boolean	$#$CELL D2$#$_DispAppData($#$CELL D2$#$* pMe);
extern int	$#$CELL D2$#$_NextCurItem($#$CELL D2$#$* pMe,int flg);
#endif
#endif

(上記 ¥ < > は本当は半角です)



■画面用イベントソースの雛形:gamen_event_c.txt
以下のとおりです。

 なお、イベント用には、画面用とは異なり、イベント用シートが作成され
(1イベントクラス1シートで、そこに各イベント関数が一覧になっている)
それを参照しています。詳しくは、次回のこのシリーズで書きます。

/*=======================================================
FILE: $#$CELL B1$#$.c
========================================================*/
#define	_$#$CELL C1$#$_C

/*========================================================
INCLUDES AND VARIABLE DEFINITIONS
=========================================================== */
#include "AEEModGen.h"      // Module interface definitions
#include "AEEAppGen.h"      // Applet interface definitions
#include "AEEShell.h"       // Shell interface definitions
#include "$#$CELL B2$#$.h"
#include "$#$CELL B1$#$.h"

$#$REP 5$#$
//==========================================//
//	関数名:$#$KETA B$#$		    //
//	内容 :			    //
//==========================================//
boolean $#$KETA B$#$(void* pArg, AEEEvent eCode,
			 uint16 wParam, uint32 dwParam)
{
	return	TRUE;
}
$#$REPEND A$#$

(上記 ¥ < > は本当は半角です)



■画面用イベントヘッダの雛形:gamen_event_h.txt
以下のとおりです

 なお、イベント用には、画面用とは異なり、イベント用シートが作成され
(1イベントクラス1シートで、そこに各イベント関数が一覧になっている)
それを参照しています。詳しくは、次回のこのシリーズで書きます。

/*===================================================
INCLUDES AND VARIABLE DEFINITIONS
=================================================== */
#ifndef _$#$CELL C1$#$_H
#define	_$#$CELL C1$#$_H
#include "AEE.h"        // Standard AEE definitions
#include "AEEShell.h"   // AEE Shell Services
#include "AEEStdLib.h"  // AEE stdlib stuff

#ifdef _$#$CELL C1$#$_C
$#$REP 5$#$
boolean $#$KETA B$#$(void* pMe, AEEEvent eCode, 
				uint16 wParam, uint32 dwParam);
$#$REPEND A$#$
#else
$#$REP 5$#$
extern boolean $#$KETA B$#$(void* pMe, AEEEvent eCode,
				 uint16 wParam, uint32 dwParam);
$#$REPEND A$#$
#endif
#endif

(上記 ¥ < > は本当は半角です)



急いで作った割には、ちゃんと確かめてないので、バグもあるかも(^^;)
次回は、仕様書側のソースとなります。

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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その22:イベント追加 雛形-1)

2006-12-26 18:43:33 | ケータイ

 BREWの画面部分のプログラムをExcelの仕様書から自動生成するという、シリーズ仕様書からプログラムソースを生成する方法の続きです。

 前回、出力サンプルを出しました。
 そこで、新規あるいは修正になるものは、
・画面ソースgamen1.c
・画面ヘッダgamen1.h
・画面用イベントソースgamen1event.c
・画面用イベントヘッダgamen1event.h
と書きましたので、今回は、これに対応する雛形、
・画面ソースの雛形:gamen_b_c.txt
・画面ヘッダの雛形:gamen_b_h.txt
・画面用イベントソースの雛形:gamen_event_c.txt
・画面用イベントヘッダの雛形:gamen_event_h.txt
について説明しますというか。。載せます。
制限字数の関係で、2回に分けます。

 なお、これ以外に1箇所、アプリケーションの雛形app_h.txtに

#include "IEventList.h" // イベントリスト

の1行が追加になるのですが(#include "IKHMap.h"の下)
逆に言えば、これしか変わらないので、app_h.txtは、特にソースは
だしません。



■画面ソースの雛形:gamen_b_c.txt
以下のとおりです
/*============================================
FILE: $#$CELL D2$#$.c
==============================================*/
#define _$#$CELL K2$#$_C
#define _$#$CELL K2$#$_C

#include	"$#$CELL D2$#$.h"
$#$REP 5$#$
$#$IFCELL T3,イベント一覧$#$
#include	"$#$KETA M$#$.h"
$#$IFEND$#$
$#$REPEND M$#$

/*==================================*/
//	関数名:$#$CELL D2$#$_HandleEvent		//
//	内容 :イベント処理			//
/*==================================*/
boolean $#$CELL D2$#$_HandleEvent($#$CELL B2$#$* poya, AEEEvent eCode,
				 uint16 wParam, uint32 dwParam)
{  
	$#$CELL D2$#$	*pMe;

	//	チェック
	if ( poya	==	NULL )
		return FALSE;
	if ( 	( poya->gno	!=	1 	) || 
		(poya->garea	==	NULL 	))
	{
		return FALSE;
	}
	pMe	=	($#$CELL D2$#$ *)poya->garea;

	//	項目NULLチェック
$#$REP 5$#$
	if ( pMe->$#$KETA B$#$	==	NULL )
		return	FALSE;
$#$REPEND A$#$

$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
	//	フォームのデータ取得
	IHTMLCTL_HandleEvent(pMe->$#$KETA B$#$,eCode,wParam,dwParam);
	if ( pMe->$#$KETA B$#$->text_flg !=	0 )
	{
		return	TRUE;
	}
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	//	テキストエリア
	if ( ITEXTCTL_HandleEvent
		(pMe->$#$KETA B$#$,eCode,wParam,dwParam) == TRUE )
	{
		return	TRUE;
	}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$	
	//	メニュー
	if ( IMENUCTL_HandleEvent
		(pMe->$#$KETA B$#$,eCode,wParam,dwParam) == TRUE )
	{
		return	TRUE;
	}
$#$IFEND$#$
$#$REPEND A$#$

	//	追加:イベント処理
	return	IEVENTLIST_HandleEvent(pMe->pElist,eCode,wParam,dwParam);
}

/*==================================*/
//関数名:$#$CELL D2$#$_InitAppData //
//内容 :領域確保・描画	         //
/*==================================*/
boolean $#$CELL D2$#$_InitAppData($#$CELL B2$#$* poya)
{
	char		*fdata;
	$#$CELL D2$#$	*pMe;
	AEERect		rect;
	AECHAR		*menubuf;
	char		*menuTitle;

	//==========================================//
	//	領域確保			        //
	//==========================================//
	pMe	=	($#$CELL D2$#$ *)MALLOC(sizeof($#$CELL D2$#$));
	if (pMe	==	NULL )
	{
		$#$CELL D2$#$_FreeAppData(poya);
		return	FALSE;
	}
	//	アプリ領域へ設定
	poya->garea	=	(void *)pMe;
	poya->gno	=	$#$CELL H2$#$;

	//	初期設定
$#$REP 5$#$
	pMe->$#$KETA B$#$		=	NULL;
$#$REPEND A$#$
	pMe->pIDisplay	= poya->pIDisplay;
	pMe->pIShell	= poya->pIShell;

	//==========================================//
	//	イベント処理		    	    //
	//==========================================//
	//	親領域の設定(イベント先で使う)
	pMe->poya	=	poya;

	//	イベント領域確保
	if ( (pMe->pElist = IEVENTLIST_Create() )	==	NULL )
	{
		return FALSE;
	}

	//	イベント設定
$#$IFCELL T3,イベント一覧$#$
	IEVENTLIST_Add(pMe->pElist,pMe,$#$KETA Z$#$,
		,$#$KETA U$#$,$#$KETA V$#$,$#$KETA W$#$,$#$KETA Y$#$);
$#$IFEND$#$
$#$REPEND T$#$


$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
	//==========================================//
	//	表示するHTMLファイルの取得     //
	//==========================================//
	fdata = IHTMLCTL_GetDispFileData(pMe->pIShell,"$#$KETA H$#$");
	if (fdata	==	NULL )
	{
		$#$CELL D2$#$_FreeAppData(poya);
		return	FALSE;
	}


	//==========================================//
	//	HTMLViewer生成		       //
	//==========================================//
	//	読み込んだfdataをHTMLViewerに設定する
	if ( (pMe->$#$KETA B$#$ 
		= IHTMLCTL_Create(pMe->pIShell,pMe->pIDisplay))
			==	NULL )
	{
		FREEIF(fdata);
		$#$CELL D2$#$_FreeAppData(poya);
		return	FALSE;
	}

	//==========================================//
	//	HTMLViewerデータ設定	       //
	//==========================================//
	if ( IHTMLCTL_SetDispData(pMe->$#$KETA B$#$,fdata)
		!=	TRUE)
	{
		FREEIF(fdata);
		$#$CELL D2$#$_FreeAppData(poya);
		return	FALSE;
	}

	//==========================================//
	//	追加:HTMLViewer大きさ設定     //
	//==========================================//
	rect.x	=	$#$KETA D$#$;
	rect.y	=	$#$KETA E$#$;
	rect.dx	=	$#$KETA F$#$;
	rect.dy	=	$#$KETA G$#$;
	IHTMLCTL_SetRect(pMe->$#$KETA B$#$,&rect);
	
	//==========================================//
	//	HTMLViewer表示・メモリ解放     //
	//==========================================//
	FREEIF(fdata);
$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	//==========================================//
	//	テキストエリア設定	       	    //
	//==========================================//
	if	( ISHELL_CreateInstance( pMe->pIShell, 
		AEECLSID_TEXTCTL, (void**)&pMe->$#$KETA B$#$ ) != SUCCESS )
	{
		$#$CELL D2$#$_FreeAppData(poya);
		return FALSE;
	}
	rect.x	=	$#$KETA D$#$;
	rect.y	=	$#$KETA E$#$;
	rect.dx	=	$#$KETA F$#$;
	rect.dy	=	$#$KETA G$#$;
	ITEXTCTL_SetRect(pMe->$#$KETA B$#$,&rect);
	ITEXTCTL_SetProperties(pMe->$#$KETA B$#$,TP_FRAME|TP_MULTILINE);
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$	
	//==========================================//
	//	メニュー設定		       	    //
	//==========================================//
	if	( ISHELL_CreateInstance( pMe->pIShell, 
		AEECLSID_MENUCTL, (void**)&pMe->$#$KETA B$#$ ) != SUCCESS )
	{
		$#$CELL D2$#$_FreeAppData(poya);
		return FALSE;
	}
	rect.x	=	$#$KETA D$#$;
	rect.y	=	$#$KETA E$#$;
	rect.dx	=	$#$KETA F$#$;
	rect.dy	=	$#$KETA G$#$;
	IMENUCTL_SetRect(pMe->$#$KETA B$#$,&rect);
$#$IFEND$#$
$#$REPEND A$#$

$#$IFCELL O3,メニュー一覧$#$
	//==========================//
	//	メニュー項目の表示  //
	//==========================//
$#$IFEND$#$
$#$REP 5$#$
$#$IFCELL O3,メニュー一覧$#$
	menuTitle = "$#$KETA R$#$";
	menubuf = (AECHAR *)MALLOC((STRLEN(menuTitle)+1)*sizeof(AECHAR));
	if ( menubuf	==	NULL )
	{
		$#$CELL D2$#$_FreeAppData(poya);
		return FALSE;
	}
	MEMSET(menubuf,0,(STRLEN(menuTitle)+1)*sizeof(AECHAR));
	STREXPAND(menuTitle,STRLEN(menuTitle),menubuf,(STRLEN(menuTitle)+1)*sizeof(AECHAR));
	IMENUCTL_AddItem(pMe->$#$KETA P$#$,NULL,NULL,$#$KETA Q$#$,menubuf,NULL);
	FREEIF(menubuf);
$#$IFEND$#$
$#$REPEND O$#$

	$#$CELL D2$#$_DispAppData(pMe);

	//	共通領域を設定
	pMe->pMap	=	poya->pMap;

    return TRUE;
}

/*==================================*/
//	関数名:$#$CELL D2$#$_FreeAppData		//
//	内容 :領域のフリー			//
/*==================================*/
void $#$CELL D2$#$_FreeAppData($#$CELL B2$#$* poya)
{
	$#$CELL D2$#$	*pMe;
 
	// 対象かどうかチェック
	if ( poya->gno	!=	1 )
		return;
	if ( poya->garea	==	NULL )
		return;
	pMe	=	($#$CELL D2$#$ *)poya->garea;

$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
	//	フリー
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		IHTMLCTL_Release(pMe->$#$KETA B$#$);
		pMe->$#$KETA B$#$	=	NULL;
	}

$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	//	テキストフリー
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		ITEXTCTL_Release(pMe->$#$KETA B$#$);
		pMe->$#$KETA B$#$	=	NULL;
	}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$	
	//	メニューフリー
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		IMENUCTL_Release(pMe->$#$KETA B$#$);
		pMe->$#$KETA B$#$	=	NULL;
	}
$#$IFEND$#$
$#$REPEND A$#$

	//	イベントフリー
	if (	pMe->pElist	!=	NULL )
	{ 
		IEVENTLIST_Release(pMe->pElist);
	}

	//	全体フリー
	FREEIF(pMe);

	//	親のエリアをクリア
	poya->garea	=	NULL;


}

/*==================================*/
//	関数名:$#$CELL D2$#$_DispAppData		//
//	内容 :画面の初期表示		//
/*==================================*/
boolean $#$CELL D2$#$_DispAppData($#$CELL D2$#$* pMe)
{
	int	curpos,buhinpos;

	//	初期化
	curpos		=	0;
	buhinpos	=	0;

	//==================================//
	//	リドローする		    //
	//==================================//
	//	ここに、
	//	1.リドローと、
	//	2.次のフォーカス指示を書く
$#$REP 5$#$
$#$IFKETA C,HTMLCTL$#$
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		//	リドロー
		IHTMLCTL_Redraw(pMe->$#$KETA B$#$);
//		カーソル番号pMe->curnoを、htmlの項目順に数えた番号に変換する。
//		その番号をcurposとすると
		IHTMLCTL_DispData(pMe->$#$KETA B$#$,curpos,pMe->$#$KETA B$#$->scr);

//		カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
//		変換する。その番号をbuhinposだとすると
		if(buhinpos	==	$#$KETA A$#$)
			IHTMLCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
		else
			IHTMLCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
	}

$#$IFEND$#$
$#$IFKETA C,TEXTCTL$#$	
	//	テキストエリアのRedrawやUpdateする
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		//	リドロー
		ITEXTCTL_Redraw(pMe->$#$KETA B$#$);
//		カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
//		変換する。その番号をbuhinposだとすると
		if(buhinpos	==	$#$KETA A$#$)
			ITEXTCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
		else
			ITEXTCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
	}
$#$IFEND$#$
$#$IFKETA C,MENUCTL$#$	
	//	メニューのRedrawやUpdateする
	if ( pMe->$#$KETA B$#$	!=	NULL )
	{
		//	リドロー
		IMENUCTL_Redraw(pMe->$#$KETA B$#$);
//		カーソル番号pMe->curnoから、部品の番号(仕様書のA桁のNo)に
//		変換する。その番号をbuhinposだとすると
		if(buhinpos	==	$#$KETA A$#$)
			IMENUCTL_SetActive(pMe->$#$KETA B$#$,TRUE);
		else
			IMENUCTL_SetActive(pMe->$#$KETA B$#$,FALSE);
	}
$#$IFEND$#$
$#$REPEND A$#$

	return	TRUE;
}

//=================================*//
//関数名:$#$CELL D2$#$_NextCurItem		//
//内容 :カーソル移動先を求める	//
//=================================*//
int	$#$CELL D2$#$_NextCurItem($#$CELL D2$#$* pMe,int flg)
{
	//======================================//
	//	次のカーソル移動箇所に		//
	//	ついて、			//
	//	プログラムを書いてください	//
	//======================================//
	return	0;			//	該当なし
}

(上記 ¥ < > は本当は半角です)



ここで切らないと、制限字数を超えてしまうので、
いったんここで切ります。

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

Javaの画面表示-その5:JSPで表示、JavaBeanで処理(MVC版)(その3:配置など)

2006-12-26 14:46:51 | JavaとWeb

 シリーズJavaの画面表示のつづきです。前回、JSPで画面表示部分とコントローラー、Javaのクラスでモデルを行うためのソース

JSP
・index.jsp:View
・kekka.jsp:View
・shori.jsp:コントローラー

JavaBean
・Shori1.java:モデル

を示しました。今回は、まず、この配置についてと、この後の話であるStrutsの話とのつながりについて書きます。



■配置について

 配置については、MVC版でないときの配置とおなじです。

Javaの画面表示-その4:JSPで表示、JavaBeanで処理(その3:配置)
http://blog.goo.ne.jp/xmldtp/e/860cdeac89b7a009c68e7cd0884e1753

に書いてあります。

 で、そのときなかった、shori.jspは、index.jspやkekka.jspと同じフォルダに入れてください。




■Strutsとの関係
 MVCにわけてJSPを利用するものとしてはStrutsがあります。
 それとの関係について言うと、

・Strutsの場合は、Shori.jspでやっていたコントローラー部分を、Javaでやります。
・画面のJSPでやっていた、値をとってきて、埋める部分をStrutsタグでやります。

 で、このとき、今回のshori.jspの役割を考えると、
(1)画面の値を取り出す
(2)モデルを呼び出す
(3)画面に値をセットして表示する

となります。

 Strutsでは、この(1)と(3)を、ActionFormを継承したクラスで行います。
これは、画面ごとに存在することになります。

(2)の部分は、Actionを継承したクラスで行います。
 これはActionごと(ボタンがいくつもあって、それを押すとサーバーに行って何かするという仕組みの場合、そのボタンごと)になります。

 なので、画面にいくつもボタンがあって処理が違う場合、画面より、Actionのクラスのほうが多くなります。

 で、さらに、それらのクラスと画面などの関係を書いたXMLファイルも必要になります。




■MVCにするだけなら。。

 とまあ、いろんなファイルがあるのですが、
 別にMVCにしたいだけなら、コントロール、つまりStrutsのActionの部分をサーブレットにして、他の画面表示の部分をJSPにする、すなわち、

Javaの画面表示-その2:JSPで表示部分、サーブレットで処理部分でやっていた方法で十分だったりするわけです。

JSPは、表示だけでしか使いませんし、その程度ならStrutsでタグを入れてるのと、かわんないわけです(Strutsタグを覚える必要もないし)。
 一方Strutsとちがって、画面の(ActionFormから継承される)クラスは必要ありませんし、XMLもいらないので、管理は簡単。

 っていうことで、いいこと尽くめのようにも思えるのですが、実際は、世の中はStrutsが出回っていて、Strutsでやんないと、「オープンソースで提供されているのに!!」云々という人が出てきて、うるさいわけです。

 ということで、普通MVCは、Strutsでやります。。やんないほうが簡単なのに。。
(事実、やらなかったプロジェクトも知っている。そのまま呼び出したほうが簡単ジャン!っていうので)




 ということで、このシリーズの次回から、Strutsをやります。

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

個人ブログに成りすまして企業の宣伝をするflogなどを、アメリカで法的規制の動き

2006-12-26 13:57:20 | Weblog

 Flog(Fake Blog)については、NHKのビジネス英会話のテキストの中で、
取り上げられていた(たしか、先月のテキストの気がする。。
企業ブログについて、規制するかどうかの話題のとき。
いまのヘリコプターペアレントの話ではない)

 そこで、紹介されていたフログ(flog)とは、

 会社が広告目的で、

  「ねえねえ、きいてきいて、このまえねえ。。。」

っていう感じの個人ブログをたちあげ、紹介していくというものだった気がする。
(バイラルマーケティングは、個人ブログを使う場合、その個人が実在するが、
 FlogはFakeであって、その個人は実在しないで、企業が、個人になりすまして、
 書いている。。実質広告)ちがっていたらごめんなさい。

それに対して、アメリカでは規制が出てきそうだ

「ステルスマーケティング」規制の対象に
http://www.gamenews.ne.jp/archives/2006/12/post_1765.html


 ただねー、こんなこというと、非難ごうごうかもしれないけど、
 これ、バイラルマーケティングとの線引き、難しいと思うよ。。

 上記のように実在しない会社なら、かんたん。

 でも、お金を渡して、個人が書いたとした場合(ステルスマーケティングはそれも含まれる)、その人の意思に反しているかどうかは疑問。

 じゃあ、お金を渡したものを、規制するっていっても、
 たとえば、その宣伝してもらいたいものが、高価なもの(たとえばダイエット商品)だった場合、それを宣伝してくれる人にあげてしまった場合は。。。。

 っていうことで、意外と、規制は難しい気がするけど。。
 どーなんでしょ(^^)


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