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

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

ゆうこりんのブログが、ココログでスタート!

2006-11-01 23:15:10 | Weblog

小倉優子さん(ゆうこりん)のブログが始まりましたね。
ここ
小倉優子のこりん星のお食事って?
http://ogurayuko.cocolog-nifty.com/


ちなみに、そのニュースはここ
ココログ、小倉優子のブログ「小倉優子のこりん星のお食事って?」開設
http://bb.watch.impress.co.jp/cda/news/16024.html


でも、昔は、ゆうこりん、人気あったけど、正直、よゐこ浜口とのうわさが出てから。。
どーなんでしょーねー。。(^^;)


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

ウィルコム、「W-ZERO3[es]」新機種を16日発売、ワンセグチューナーも

2006-11-01 19:20:20 | Weblog

ここのニュース
ウィルコム、「W-ZERO3[es]」Premium versionを16日発売
http://k-tai.impress.co.jp/cda/article/news_toppage/31768.html

によると、ウィルコムが、W-ZERO3の新機種を出すらしい。
新規契約・年間割引ありの場合、29,800円。

で、名刺リーダ機能などが、追加されたらしい。
それと、W-ZERO3[es]のワンセグチューナーを12月5日に出すらしい。
単体で14,800円、W-ZERO3[es]とのセットで39,800円。

うーん、ウィルコムもいいなあ。。。

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

Javaの画面表示-その16:JSPをフォルダを作って入れる

2006-11-01 17:23:28 | JavaとWeb

 シリーズJavaの画面表示のつづきです。

 今回は、まず、JSPをやりましょう。
 で、JSPなのですが、まずは、インストールから。




■JSPのインストールに必要なもの

 JSPには、

・Javaのランタイム(JDKでももちろんOK)
・サーブレットコンテナ(今回はTomcat)

が、サーバー側に必要です。もちろん、JSPのプログラムもいりますが。。

クライアント側は、ブラウザでOK.
もちろん、サーバーとクライアント同じマシンでもOKで、実際、今回の説明は、
同じマシンでおこなってます。
(そのため、IPアドレスは127.0.0.1を使っています)

なお、Apacheは、今回は入れても、いれなくてもOKです。



■Tomcatを入れるまで

 まず、Javaのランタイムは、入っていて、Javaは動く環境であるとします。

 次にTomcatを取得し、ダウンロードします。

JavaでHello World サーブレット編
http://www.hellohiro.com/servlet.htm


 の、「◆サーブレットを動かす環境の構築」のところに、Tomcatの取得方法と入れ方が書いてあるので、それを実行します(「◆Javaソースコード」の前までです)




■とりあえず、JSPを動かす
 そしたら、今度は
JavaでHello World JSP編
http://www.hellohiro.com/jsp.htm


を見てください。そこの「◆JSPの作成」以降を行います。
そこに書いてある、helloworld.jspをコピー&ペーストして、保存します。

その後、「◆JSPを表示してみよう!」に書かれているとおり、
上記で保存したhelloworld.jspを、

Tomcatのフォルダ¥webapps¥examples¥jspの下に入れて、
ブラウザで、http://localhost:8080/examples/jsp/helloworld.jsp
をみると。。見えましたか?



■JSPをフォルダを作って入れることを考える

 ただ、これだと、examplesの下にしか入れられないので、
それ以外にフォルダを新規に作って入れるようにします。

 JSPにしろ、サーブレットにしろ、

 Tomcatのフォルダ¥webapps

 の下に、作ったものは、いれます。

 で、そのとき、webapps以降は、http://localhost:8080/
 で指定することになります。
 上記のケースでは、webapps以降は、
   "examples¥jsp¥helloworld.jsp"なので、
 これをhttp://localhost:8080/以下に付けて
   http://localhost:8080/examples/jsp/helloworld.jsp

 となります。なお、localhostは、127.0.0.1と指定してもOKです。

 今回は、webapps以降は、
   "test¥jsp¥test.jsp"なので、
 これをhttp://localhost:8080/以下に付けて
   http://localhost:8080/test/jsp/test.jsp

 にすることを考えます。




■手順
 手順は、ソースファイルを作って、confのserver.xmlを直して、
 TOMCATを再起動します。

1.ソースファイルを作成して、置きます
  ・上記のhelloworld.jspをtest.jspにファイル名を変えて
  ・Tomcatのフォルダ¥webapps¥test¥jspの下に置きます

2.confのserver.xmlを直します
  ・Tomcatのフォルダ¥confに、server.xmlというファイル
   があるはずです。これを開きます。
  ・ずっと下のほうに

    <!-- Tomcat Root Context -->
    <!--
      <Context path="" docBase="ROOT" debug="0"/>
    -->

   と書いてある行があるはずです(実際には< > は半角)
  その下に、以下のように書きます。
 

   <!-- Tomcat UserTest Context -->
    <Context path="/test" docBase="test" debug="0"
        reloadable="true" crossContext="true"/>

  (実際には< > は半角)

 そして、これを保存します。

3.後はリスタートして
  (Stop Tomcatをやった後に、Start Tomcatをします)
  そして、http://localhost:8080/test/jsp/test.jspをブラウザで表示できればOKです。




 このシリーズの次回は、実際にJSPでプログラムミングしていきます 

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

画像に電子透かしで暗号キーをいれて、ダミー画像とあわせて送る方法は、ありかも。。。

2006-11-01 16:00:27 | Weblog

 KDDIが、Dionラボというのをやりだした。
 ここ https://www3.dion.ne.jp/CGI/labs/top.cgi
 で、その中に、「コミュニケーション研究所」というのがあって、そこの

 2枚の絵による秘密の絵のあぶり出し

 を見てて思ったんだけど(これとは、直接関係ないと思うけど)

 1.画像ファイルの中に、暗号鍵を電子透かしでいれておいて、
 2.その後、1のファイル+ダミーの画像ファイル(これにも、ダミーの暗号が入ってる)
   をいくつか送って、
 3.そのあとで、暗号化した文書を送る
 4.それを解読するときは、解読プログラムに、1のファイルと、3の文書を指定すると
    →解読できる!!

 ってすると、暗号化のセキュリティが増す気がした。。




 たとえば、NTTコミュニケーションが出した、この商品、
“CCでメアド流出”防止 社外メール、自動で個別送信
http://www.itmedia.co.jp/news/articles/0610/31/news119.html

CCを個別配信にするのは便利だけど、その機能の話ではなく、添付ファイルを暗号化する話。
 複合鍵をメールで送るそうだけど、もし、そのメールも盗聴されていたら、解読されちゃうし、
 かりに、盗聴されないように、メールを暗号化したとしても、メールが届いたあとで、メーラーを開かれてしまったら、アウトとなる。




 でも、上記の画像に暗号鍵を入れる場合。

 メールに以下の写真があって

 1.物理の公式の写真+女性1人
 2.化学の実験の写真+女性1人
 3.畑に種をまいている写真+女性1人
 4.太陽系の図の写真+女性1人

 文面に、ひとこと

     「ひらまき」

 と書いてあったら、3のことかな?なにか、種まきの一種かな?
 と、事情の知らない人なら思ってしまう。

 つまり、事情の知らない人に、メールが送られても、わからない

(ちなみに、上記の答えは4.4に暗号鍵が入っている。
 理由は、「ひらまき」とは、平野麻樹子さんのこと(ファンの人がひらまきと略す)
 で、平野さんは、高校講座地学の担当なので、4番。
 ちなみに1番の女性は、山本薫さん、2番の女性が友田さん、3番の女性は桜木さん
 を想定してます)




 なので、会社の人しか分からない写真をおくって、

 たとえば、「昨日の会議の黒板」とか書いても、

 当事者以外わかんない。

 もし、当事者なのに、わかんなかったら、電話で、「どの写真なのさ?」
 と、送り主に、きけばいい。

 なので、このほうが、単純に復号鍵を書いたメールを送るより、安全かも?



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

ソフトバンクモバイル、「0円」を小さくした広告に修正だそうな

2006-11-01 13:57:19 | Weblog

ここのニュース
SBモバイル、料金広告を一部修正…「0円」小さく
http://headlines.yahoo.co.jp/hl?a=20061101-00000004-yom-bus_all

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


 ソフトバンクによると、担当者が31日に公取委に相談に行き、「広告やCMで、無料にならないケースの表示がわかりにくい」との指摘を受けたという。このため、広告やCM、PR用の看板などで「通話0円、メール0円」の文字部分はサイズを縮小し、欄外に掲載している条件などの説明部分は大きく表示することにした。


だそうです。で


早ければ、今週末以降、修正した広告やテレビCMに切り替える。

また、CMが変わるということ?。。予想外だ(^^;)
カタログとかもかなあ。。お金かかりそう。。

ちなみに、SBモバイルは

<ソフトバンク>「通話、メール0円」法律上問題ない
http://headlines.yahoo.co.jp/hl?a=20061031-00000087-mai-bus_all

と、法律上は問題ないと、以前、いっている


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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その6:作成手順1)

2006-11-01 12:38:54 | ケータイ

 本来は、シリーズBREWで複数画面を開発する場合の方法論の続きなんですけど、今回は、BREWで使うソースをExcelから自動生成するやり方という話で、それってどっちかっていうと、シリーズ仕様書からプログラムソースを生成する方法でBREWを例に取ったかんじなんで、今回は、そーいうことで、「仕様書からプログラムソースを生成する方法」のシリーズということにします。

 内容は、自動生成するための雛形ファイル、仕様書の作成手順です。
 このやり方は、前にも書いたけど、プログラムだけじゃなくって、テストやDTPも同じです。



■手順
 雛形ファイル、仕様書の作成手順は、以下のとおりです


1.出力ファイルをきめ、そのサンプルを作成する
2.1のファイルから抽象的に書くところを見極め、そこにタグを入れていく
    →これが、雛形ファイル
3.タグから、Excel仕様書をつくる


 出力を決めて、その出力に必要な入力を考えるというのは、自動生成に限らず、なんでもそうで、そうしないと、いつまでたっても、入出力に修正が入ります。
 よく、プログラムの内容が決まらないのに、「画面を何日までにフィックスして」という人がいますが、ああいうのは、絶対決まりません。どの項目を入力項目にしたらいいのか分からないですから。。。

 というわけで、上記のとおりに行います。




■1.出力ファイルをきめ、そのサンプルを作成する

これは、ここにかいたとおり、以下のファイルです。なお、サンプルもリンクしておきます

・雛形アプリ名.c サンプル 
・雛形アプリ名.h サンプル
・雛形各画面名.c サンプル
・雛形各画面名.h サンプル
・雛形version.h サンプル




■2.1のファイルから抽象的に書くところを見極め、そこにタグを入れていく

 抽象的に書くところは、固定じゃないところということになる。
 ということで、まず「雛形アプリ名.c」について考えてみる。
 このとき、「アプリ名」っていう抽象的な書き方をしてるので、これは、間違いなく、抽象概念である。同じように考えると、「雛形各画面名.c」って言葉があるから、「各画面」は、抽象概念である。

 さて、アプリと画面に関して考えると、アプリ1個に対して、画面が、いくつもある。
 なので、画面名は、ループになることが考えられる。
 ってことを、前提にして、fukusu1.cをみてみる。
 そうして、タグをいれると、こんなかんじ。
/*=============================================
FILE: $#$CELL B2$#$.c
==============================================*/
#define	_$#$CELL K2$#$_C
#include "$#$CELL B2$#$.h"
$#$REP 5$#$
#include "$#$KETA B$#$.h"
$#$REPEND A$#$

/*=============================================
FUNCTION DEFINITIONS
==============================================*/

/*=============================================
FUNCTION: AEEClsCreateInstance
==============================================*/
int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
	*ppObj = NULL;

	if( ClsId == AEECLSID_$#$CELL K2$#$ )
	{
		// Create the applet and make room for the applet structure
		if( AEEApplet_New(sizeof($#$CELL B2$#$),
                          ClsId,
                          pIShell,
                          po,
                          (IApplet**)ppObj,
                          (AEEHANDLER)$#$CELL B2$#$_HandleEvent,
                          (PFNFREEAPPDATA)$#$CELL B2$#$_FreeAppData) ) 
// the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function
                          
		{
//Initialize applet data, this is called before sending EVT_APP_START
// to the HandleEvent function
			if($#$CELL B2$#$_InitAppData(($#$CELL B2$#$*)*ppObj))
			{
				//Data initialized successfully
				return(AEE_SUCCESS);
			}
			else
			{
//Release the applet. This will free the memory allocated for the applet when
// AEEApplet_New was called.
				IAPPLET_Release((IApplet*)*ppObj);
				return EFAILED;
			}

        } // end AEEApplet_New

    }

	return(EFAILED);
}


/*===========================================================================
FUNCTION SampleAppWizard_HandleEvent
===========================================================================*/
static boolean $#$CELL B2$#$_HandleEvent($#$CELL B2$#$* pMe, AEEEvent 
                          eCode, uint16 wParam, uint32 dwParam)
{  
	boolean	ret;

	ret	=	FALSE;	//	処理していない

		//	スタート時に、はじめの画面を呼ぶ
	if ( eCode	==	EVT_APP_START)
	{
		START_FUNC;
		return	TRUE;
	}
	else if ( pMe	==	NULL )
	{
		return	FALSE;
	}
		//	それ以外は、画面に応じたHandleEventをよぶ
	else
	{
		switch(pMe->gno)
		{
		case	1:
$#$REP 5$#$
			ret = $#$KETA B$#$_HandleEvent(pMe,eCode,wParam,dwParam);
			break;
$#$REPEND A$#$
		}
	}

	//	処理した結果、gnoが-1になったら終了
	if ( pMe->gno	==	-1 )
	{
		ISHELL_CloseApplet(pMe->pIShell,FALSE);
		return	TRUE;		
	}

	return ret;
}


// this function is called when your application is starting up
boolean $#$CELL B2$#$_InitAppData($#$CELL B2$#$* pMe)
{
    // Get the device information for this handset.
    // Reference all the data by looking at the pMe->DeviceInfo structure
    // Check the API reference guide for all the handy device info you can get
    pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
    ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);

    // The display and shell interfaces are always created by
    // default, so we'll asign them so that you can access
    // them via the standard "pMe->" without the "a."
    pMe->pIDisplay = pMe->a.m_pIDisplay;
    pMe->pIShell   = pMe->a.m_pIShell;

    // Insert your code here for initializing or allocating resources...
	pMe->gno	=	0;
	pMe->garea	=	NULL;
	pMe->pMap	=	IKHMAP_Create(pMe->pIShell,pMe->pIDisplay,pMe);
	if ( pMe->pMap	==	NULL )
	{
		return	FALSE;
	}

	pMe->pMap->pUserFree	=	freeFunc;	
	pMe->pMap->pUserInit	=	initFunc;	

	//	デバッグ用設定
	DEBUG_FUNC;

    // if there have been no failures up to this point then return success
    return TRUE;
}

// this function is called when your application is exiting
void $#$CELL B2$#$_FreeAppData($#$CELL B2$#$* pMe)
{
	if ( pMe->pMap	!=	NULL )
	{
		IKHMAP_Release(pMe->pMap);
		pMe->pMap	=	NULL;
	}

}

void initFunc(IKHUser *pUser)
{
	$#$CELL B2$#$	*pMe;

	if ( pUser	==	NULL )
		return;

	pMe	= ($#$CELL B2$#$ *)pUser->pMe;

	switch(pUser->kind)
	{
$#$REP 5$#$
	case	USER_ITEM_$#$KETA K$#$:
		$#$KETA B$#$_InitAppData(pMe);
		pUser->val	=	pMe->garea;
		return;
$#$REPEND A$#$
	}

}

void freeFunc(IKHUser *pUser)
{
	$#$CELL B2$#$	*pMe = ($#$CELL B2$#$ *)pUser->pMe;

	if ( pUser	==	NULL )
		return;

	switch(pUser->kind)
	{
$#$REP 5$#$
	case	USER_ITEM_$#$KETA K$#$:
		$#$KETA B$#$_FreeAppData(pMe);
		pUser->val	=	NULL;
		return;
$#$REPEND A$#$
	}

}

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

ここで、アプリの入るところや、画面の入るところなどは、適当に仮決めしておく
ここでは、

  B2  アプリ名(小文字)
  K2  アプリ名(大文字)
5行目から各画面(繰り返し)
  B桁  画面名(小文字)
  K桁  画面名(大文字)
にしている。

以下、同じように行う。



時間がきたので、今回はここまでとします。
続きは、このシリーズの次回に。。


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

Google Wikiをやるの?Google、WikiツールのJotSpotを買収

2006-11-01 09:22:43 | Weblog

ここのニュース
Google、WikiツールのJotSpotを買収
http://www.itmedia.co.jp/news/articles/0611/01/news022.html

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


Googleは、Wikiを使ったコラボレーションソリューションを提供するJotSpotを買収し、そのサービスをGoogleに統合する。既存のJotSpot会員へのサービスは無料になる。


えーっと、そのサービスをGoogleに統合するって、Googleから、いけるってこと?Google Wiki??ちょっと、先を読んでみましょう。


 JotSpotのサービスは、今後Googleのアーキテクチャに統合されることになる。現行のJotSpot会員は引き続き同様のサービスを受けられるが、サービスがGoogleの一部となるに当たって料金は無料になり、既存会員への請求は今後は行われないという。JotSpotサービスについては、当面の間は新規加入は受け付けず、サービスのGoogleへの統合に注力するという。


やっぱり、Google Wiki。。なの??
どーなのどーなの??

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