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

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

ライブドア、最終損益が408億円の赤字に

2006-11-27 22:56:31 | Weblog

ここのニュース
<ライブドア決算>最終損益が408億円の赤字に 
http://headlines.yahoo.co.jp/hl?a=20061127-00000133-mai-bus_all


あちゃー、ぼろぼろっすね(^^;)
そのニュースによると

特別損失が371億円に膨らんだ。


ってあるけど、特別損失が371億、
で最終損益408億の赤字ってことは。。。
結局経常利益の段階でも、赤字ってことっすよねえ。。

えーっと、一言で言って。。だめだめっすね(^^;)

ま、イメージ悪化で宣伝ださない会社が増えたわけで、
当然といえば、当然なんだけどね。。


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

依存性の問題の対応策(その4:引数の共通化しても、実行時に知らせる方法)

2006-11-27 17:59:29 | Weblog

なぜか、シリーズ化してしまった、依存性の問題の対応策、前回は、汎用性を高めるため、引数だけ、共通化するという方法を書きました。
 具体的には、

1.引数をハッシュマップなどにいれ、そのハッシュマップを引数にする

  か、Strutsなどで利用されている

2.引数を「ある型」から継承したものにして、メソッドの引数には、「ある型」を書く

ということについてあげました。

今回は、1において、コンパイルでは、引数は共通だから通るんだけど、実行時には、落ちて分かるようにする方法を書きます。実は、この方法、2では、同じ仕組みでわかるようになってます。

 では、それについて書きます。



■「引数は共通」だけど、実行時に落ちる方法(変更前)
 いままでの例である、エラーメッセージを出すという話です。

 今回は、引数をまず、argというクラスの中に入れ、そのargを、ハッシュマップにセットします。
 argの内容は、以下のとおり
public class arg {
	public	String	msg 	= 	null;
}


そーなると、a(呼び出し側)は、こんなかんじ
import java.util.*;

public class a {
	/*
	 * メイン処理
	 * @param	args	外部から渡される引数
	 */
	public static void main(String[] args) {
		HashMap map =	new HashMap();
		arg hikisu	=	new arg();
		hikisu.msg	=	"aのメッセージ";
		map.put("arg",hikisu);
		b.errmsg(map);
	}
}


呼ばれて、エラーメッセージを出すbは、こんなかんじ
import java.util.*;

public class b {
	/**
	 * エラーメッセージ出力
	 * @param	map		引数が入ったハッシュマップ
	 */
	public static	void errmsg(HashMap map)
	{
		arg	hikisu	=	null;
		try
		{
			hikisu	=	(arg)map.get("arg");
			if ( hikisu == null )
			{
				System.out.println("引数がない");
				throw new RuntimeException();
			}
		}
		catch(Exception e)
		{
			System.out.println("引数が古い");
			throw new RuntimeException();
		}
		
		//	出力		
		System.out.println(hikisu.msg);
	}
}


もう一方の呼ばれる側d(呼び出し側)は、こんなかんじ
import java.util.*;

public class d {
	/*
	 * コンストラクタ
	 */
	public	d()
	{
		HashMap map =	new HashMap();
		arg hikisu	=	new arg();
		hikisu.msg	=	"作成";
		map.put("arg",hikisu);
		b.errmsg(map);
	}
}




■「引数は共通」だけど、実行時に落ちる方法(仕様変更の結果)
ここで、レベルを入れるということに変更します。
ただし、aとbだけに連絡が行っているとします。

 今度新しい引数をarg1とすると、その内容は、以下のとおり
public class arg1 {
	public	String	msg 	= 	null;
	public	int	level	=	0; 
}


このとき、aは、以下のとおり
import java.util.*;

public class a {
	/*
	 * メイン処理
	 * @param	args	外部から渡される引数
	 */
	public static void main(String[] args) {
		HashMap map =	new HashMap();
		arg1 hikisu	=	new arg1();
		hikisu.msg	=	"aのメッセージ";
		hikisu.level = 	10;
		map.put("arg",hikisu);
		b.errmsg(map);
	}
}

(赤字は仕様変更で修正したところ)

そして、bは、以下のとおり
import java.util.*;

public class b {

	/**
	 * エラーレベル
	 */
	public static	int	errlevel	=	0;	

	/**
	 * エラーメッセージ出力
	 * @param	map		引数が入ったハッシュマップ
	 */
	public static	void errmsg(HashMap map)
	{
		arg1	hikisu	=	null;
		try
		{
			hikisu	=	(arg1)map.get("arg");
			if ( hikisu == null )
			{
				System.out.println("引数がない");
				throw new RuntimeException();
			}
		}
		catch(Exception e)
		{
			System.out.println("引数が古い");
			throw new RuntimeException();
		}
		
		//	出力
		if ( hikisu.level >= errlevel)
		{		
			System.out.println(hikisu.msg);
		}
	}
}

(赤字は仕様変更で修正したところ。> は、実際には半角)
 つまり、引数を受け取るときにキャストし、古い型だったら、ランタイム例外で落とします。

で、dは修正していませんが、問題なくリンクできます。
そして、dがどこからか呼ばれて、表示しようとすると、
”引数が古い”とでて、ランタイムエラーになるのでわかります。




 これは、引数をキャストするとき、型が違うため、エラーになるということを利用しています。
 おなじような現象として、Strutsなどで、実際に引数を利用するときは、引数をキャストして使うので、ここで、古い型のものでかいてあれば、エラーになります。

 ということで、
・今回の例のように、なにかを包んで、中身から出すときにキャストして、
 古かったらエラーにするもの(ある意味委譲のやり方に似ている)や、


・Strutsのような、継承の型で、親の型を引数とし、実際に利用するときキャストして
 古かったらエラーにするものがあるのですが、

この継承でやる方法と、委譲でやる方法、意味があって、使い分けます。
それについては、次回のこのシリーズに書きます。

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

Javaの画面表示-その21:JSPで表示部分、サーブレットで処理部分(その1:仕様と方法)

2006-11-27 14:50:03 | JavaとWeb

シリーズJavaの画面表示のつづきです。今、JSPをやっているのですが、この前、前のほうの机の人が「処理はサーブレットでやるのが普通だよねえ」といってたので(って、ぜんぜん別件なんですけど)、サーブレットで処理して、JSPで表示するって言うことを、示してみたいと思います。

 ただ、この前と、仕様をちょっと変えます。




■仕様

以下の画面

が表示されたら、JSPの表示のときのように、入力内容に応じ、エラー画面(何も入力されなかったとき)か、結果画面を出します。

 つまり、問題文が、日本語でなく、英語(This is a pen.)に変わっただけです。

 日本語だと、いろんな説明が要るので。。




■構成

 以下の構成になります
・入力/エラー画面・・・JSP (index.jsp)
・処理部分・・・サーブレット(shori.class)
・結果表示・・・JSP(kekka.java)

そして、サーブレットを利用するため、以下のファイルが必要になります
・web.xml
また、以前JSPのとき(ここの■手順)に書いたように、以下のファイルは修正が必要です
・(confの下の)server.xml




■方法

 はじめの入力画面で、サーブレットを呼び出します。

 サーブレットでは、
   ・セッションをtrueに
   ・値を受け取る
    (セッションの値:今回はない)
    フォームの値(画面から直接入力の場合)
   ・やりたい処理をする
   ・結果を、セッションに詰めて
   ・画面表示へフォワードする
 という処理をします。つまり、shori.jspでやっていたのと、ほとんど同じようなことです。

 そしたら、結果画面で表示します。
 表示画面では、JSPのときにやったように
   0.(前提、準備)セッションをtrueに
   1.セッションから表示する値を取得する
   2.<%=変数%>という形で値をかいたり、
   3.値を書くために繰り返しの処理をする
 ということをします。



  
 入力画面は、(今回は、入力文字を変えたので、そこをThis is a pen.に変えましたけど)
 基本的にJSPと違うところは、呼び出し先のURLをJSPからサーブレットのものに
 かえるだけです。

 結果表示画面は、かえる必要がありません。

 サーブレットを利用するに当たって、JSPを利用する時点でserver.xmlを編集(追加)していれば、それをいじる必要はなく、

 サーブレットを作成してできたclassファイルをおくフォルダを作って、web.xmlを作成する作業が追加となります。




ということで、このシリーズの
  次回では、サーブレットのソースファイルについて、
  さらにその次には、クラスファイルを置くところとweb.xmlファイル
について書きたいと思います。


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

「近未来通信」、とうとう総務省が立ち入り検査

2006-11-27 13:40:20 | Weblog

ここのニュース
「近未来通信」の実態解明へ、総務省が立ち入り検査
http://headlines.yahoo.co.jp/hl?a=20061127-00000105-yom-soci

によると、近未来通信、とうとう総務省が立ち入り検査した模様。

そりゃーそーだよね、昨日の報道特集で、サーバーの中身の写真っていうのがでたんだけど、
あれ、(@_@!)これで、いいんでしょうか??
(まんなかが、異様にあいてるのよ。ここに、マザーボードが入るんじゃないの?
 っておもうくらい空っぽ)
っていう感じでしたもんね。。

おー、どうなるんでしょう。。。

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