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

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

宇宙戦艦ヤマトの司令室?に、こんなのなかったっけ?MSのハイテクテーブル「Surface」

2007-05-30 18:41:26 | Weblog

ここのニュース
MS、ハイテクテーブル「Surface」を発表
http://www.itmedia.co.jp/news/articles/0705/30/news055.html

おおお、テーブルの上に表示され、それがタッチスクリーンになっているようです(リンク先に写真あり)

なんか、宇宙戦艦ヤマトの司令室?にこんなのなかったっけ?
なんか、おおーっきな机みたいなのがあって、そこにいろんなのが表示されて、みんな見てる。。ってのがあった気がするんだけどなあ。。確かではない。

 もしあれば、これを買うと、もっとリアルな宇宙戦艦ヤマトごっこができるってことですか!すごいぞすごいぞ、マイクロソフトさん。。

。。。って、そーいう目的に使うもんではないか(^^;)


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

開発の初めから順番に書いていってみる その51:プログラミング(13)入出力自動生成その1。

2007-05-30 16:31:27 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングです。
(プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm

 プログラミングでは決定表と自動生成のお話をします。
 今回から入出力の自動生成です。今日はその概要です。




■入出力の自動生成-やるもの

 プログラミングの入出力部分について、取り上げてみたいと思います。
 ここではとくに、データベースの自動生成と画面の自動生成について考え、それ以外の入出力に関しては、その後で付け足して書きたいと思います。
 



■データベースアクセスの自動生成

 データベースアクセスの自動生成について、まず、メソッドとして必要なのは、
  select
insert
delete
update
 に対応するものです。

 このとき、完璧にすべてのものに対応するとたいへんなので、
  execute
  selectExecute
 として、selectExecuteは、検索用、executeはその他用として、
 SQL文を引数として持つものも、作ります(selectExecuteとexecuteでは、返り値が違います)
 実際には、selectがselectExecuteを、insert,delete,updateがexecuteを呼び出します。

 なお、今回はトランザクションを入れないで考えますが(入れると説明が複雑になるので)入れる場合は、引数にトランザクションのクラスを持ちます。




■画面

 全体のクラスと1画面1クラスにする部分をもちます。
 仕様書で画面の構成要素を定義し、1画面1クラスの部分を生成します。
 画面間の受け渡しは共通領域(カオル姫方式)で行います。

 具体的な話は、その場面になったとき行います。




ということで、次回のこのシリーズでは、「データベースアクセスの自動生成」について書いていきたいと思います。

 


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

一般的な編集ソフトの作り方 その2:メモリ上への要素展開(連結リスト)

2007-05-30 14:22:17 | 開発ネタ

 ワープロやドローイングソフトなどの編集ソフトを作る上での一般的な考え方を考える「一般的な編集ソフトの作り方」です。

 前回は、ここで取り上げる内容、つまり、編集ソフトを作る上で共通的な部分について考えました。
 具体的には、以下の3箇所です

1.画面の構成
2.メモリ上に、要素(編集しているもの)をもつ
3.イベント発生時の動き

 今回は(順番的には、変ですけど)、2番目の「2.メモリ上に、要素(編集しているもの)をもつ」ということについて考えてみたいと思います。




■メモリのもちかた-配列と連想リスト

 エディタなどの場合は、文字が、要素となり、それをメモリで持っているわけです。この場合、単純に

Vector line;

として、各行をもち、さらに、
String rec;
あるいはこれも
Vector rec;
として、各行の文字をもつといったような形、つまり配列やベクターでもつのでOKです。

しかし、フローチャートなどを考えると、行には分かれてないし。。

ドローイングソフトだと、図が重なってるし・・・ってことで、配列でもつメリットはありません(持とうと思えばもてる。順番にすればいい)。

 こういう場合は、連結リストを使うと便利です。




■連結リストの構造

これは要素の中に、次の要素(と前の要素も持っていたほうが操作しやすい)を持っていて、それをたどっていくものです。
 具体的にJavaで書いた場合の例を示します。

 今Itemというクラスが要素(絵の場合もあるし、文字の場合もあるし、フローチャートなら条件や、プロセスなどなど)をあらわしているとき、こんな感じになります。

/**
 * 
 * 連結リスト
 * 
 */
public class Item {

	/*
	 * 前の要素<BR>
	 * nullなら、前が存在しない=これがトップということ
	 */
	Item	prev = null;

	/*
	 * 後の要素<BR>
	 * nullなら、後が存在しない=これが最後ということ
	 */
	Item	next = null;

	/*
	 * id<BR>
	 * なくてもいいですけど、一応つけといてみました
	 */
	int	id;
	
	/*
	 * このあとに挿入する<BR>
	 * @param	ins	挿入するもの
	 */
	public int	insert(Item ins)
	{
		Item temp;
		
		temp 		= next;
		next		=	ins;
		ins.prev	=	this;
		ins.next	=	temp;
		return		0;
	}
	
	/*
	 * これを削除する<BR>
	 */
	public int	remove()
	{
		Item	before;		// この前の要素
		Item	after;		// この後の要素

		before	=	prev;
		after	=	next;
		
		if ( before != null )
		{
			before.next	=	after;
		}
		if ( after	!=	null )
		{
			after.prev	=	before;
		}
		
		//	本来なら、こいつを消すのだが、
                  //        Javaなので、それはいいかなと。。

		return	0;
	}
}

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

ここにあるようにprev,nextに、前の要素、あとの要素を持ちます。
これで、
  要素.nextで次の要素、
  要素.prevで前の要素
に移動できます。




■挿入と削除

 挿入は、そこのinsertで行います。
 処理内容は、next,prevの付け替えです

 削除はremoveで行います
 処理内容は、next,prevの付け替えです

 って、同じジャン!ってなっちゃいますけど、やっている内容がちょっと違います。詳しくは、ソースを見てください。

 そーすると、こんな感じで、操作できます。
public class Test {

	public static void main(String[] args) {
		Item	now;	//	カーソル

		//	はじめの1個目をつくる
		Item	top =	new Item();
		top.id	=	0;
		
		//	うしろに挿入していく
		now = top;
		for(int i = 1 ; i <= 10 ; i ++ )
		{
			Item	next =	new Item();
			next.id	=	i;
			now.insert(next);
			now	=	next;	// カーソルを次に
		}

		//	表示する
		System.out.println("挿入結果:");
		for(now = top ; now != null ; now = now.next )
		{
			System.out.print(now.id + " ");
		}
		System.out.println();
		
		//	3番目を削除
		now = top.next.next;
		now.remove();

		//	表示する
		System.out.println("削除結果:");
		for(now = top ; now != null ; now = now.next )
		{
			System.out.print(now.id + " ");
		}
		System.out.println();
		
	}
}

 つまり、nowというのが、カーソルだとすると、そのカーソルの次に挿入したり、カーソルのあるモノを削除できたりします。また、カーソルをnextで次々移していくことも出来ます(カーソルがnullになったら最後)




 次回は、これを使って、各要素をどのように表現し、表示などは、どのようにやるのかについて、書きます。



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

ローカルなIP放送(校内・社内放送ネット版とか?)

2007-05-30 11:01:45 | Weblog

 この前、技研公開2007にいってきたと書いたけど、そのとき、IP放送というのをやってました。ここで言うIPというのは、インターネットをさしているみたいで、インターネットによる、テレビ放送、つまりGYAOみたいなのをさすと思われるのですが、それを、無線LANを使えば、線につながってなくても、駅構内とかでも出来るというお話。

 そーなってくると、駅構内でも、いろんな情報が取れると。。

 もっとも、グローバルなIPアドレスを使って行うものであれば(つまりGYAOとか)、無線LAN使わなくても、ケータイで見ることが技術的には出来るので(モバイルGyaOとか)、あんまり意味はないかもしんない(PDA持ってる人は少数派だし、それをみるためにわざわざパソコンを広げるのもねえ)けど・・




 ただ、ローカルなIP放送でというなら。。。ありかも?

 ローカルなIP放送と、ここで言ったものは、ローカルなIPアドレス(192.168の)を使ったインターネットテレビで、それを無線LANでやれば(線につながっていなくても見れるので)、駅構内とか、社内、校内、店舗内の放送を行うとかは、ありかもしれない。。




 というか、そんなら無線である必要はなくて、

 たとえば、学校放送なんかで、学校の各教室にパソコンを置いて、
   校内のローカルサーバーにアクセスしてテレビ(社内放送)を見るとか、
 マクドナルドのように、お店でネットが見れるところなら、
   アドレスを書いておいて、そこをみてもらうとか。。

 1つのLAN内でとじているので、あらかじめ、どのくらいのアクセス数になるかは想像がつくので、いいかも(全国の学校で同じものを見たい場合、あらかじめ、各学校にデータを送っておいて、それを校内のLANのサーバーに置く、あるいは校内のサーバーが中継する)。




 で、その展示で、SIPを使ってプレゼンスとか言う話をしていた。

 で、ウィリアムのいたずらが、「見ている側からもSIPを使って、いろいろと送れるんですか?」と聞いたら、「そしたら、IP電話になってしまう」といわれてしまいました。

たしかに。。

 ただ、相互に通信したい場合、ローカルのLANでやるのであれば、もっとかんたんに、クライアント側にも、ApacheとかのHTTPサーバーを入れてしまえば、相互通信できる気がする。。


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