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

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

協栄ボクシング会長、2ちゃんねる書き込みに被害届

2006-08-23 21:52:48 | Weblog

亀田兄弟で有名な協栄ボクシングの会長が、警察に被害届をだしたそうです。

協栄ボクシング会長、2ちゃんねる書き込みに被害届
http://www.zakzak.co.jp/top/2006_08/t2006082301.html

そのニュースによると
(以下斜体は上記ニュースよりそのまま引用。写真は、もとのニュースにあります。)

プロボクシングの亀田興毅選手らが所属する協栄ボクシングジム(東京都新宿区)の金平桂一郎会長(40)=写真=が、ネット上に事実無根の書き込みをされたとして、警視庁新宿署に名誉棄損で被害届を出したことが、分かった。


 これで、つかまるのかなあ。。。
 つかまったら、ほかにも警察に訴える人がいっぱい出てきそうだけど。。


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

Javaで基本操作(その1):新しいデータをマスタに追加、上書きする(マージ)。

2006-08-23 17:42:44 | JavaとWeb

 以前に書いた基本操作で、内部処理について

1.エディッティング/フォーマッティング
   ・数字の表現(カンマつき、小数点と桁数、0を前に付けるなど)
   ・日付、時間の表現
   ・文字列操作
2.四則演算、計算
3.分類(仕分け)
4.ソート
5.マージ
6.チェッキング
  ある項目をチェックし、該当したら表示=>検索
  ある項目をチェックし、該当しなかったら表示=>エラー出力
  ある項目をチェックし、該当したら一部表示=>選択
  ある項目をチェックし、該当したらレコードを合わせる=>Join


 とかいたので、これについて、JAVAで、どう書くかを書いていきます。
 まずは、4.マージから



■マージとは、その内容と戦略

 マージとは、もとのデータに、新しいデータを上書きするというものです。
 ただし、もとのデータにない場合は追加します。

 これをJavaで実現するには、元のデータと新しいデータをHashMapにいれて、
(キーを、比較する項目にして、値に値全体を入れる)
 下のデータに、新しいデータをputすると、putは
  存在するデータは上書き
  ないデータは追加
 してくれるので、上記の内容を満たします。




■マージ:仕様

 下のデータは、以下のとおりです
19:00   サイエンスZERO
21:00   NHKニュース
24:00   うるぐす
26:30   平野 麻樹子の地学


このとき、
  19:00をバレーボールに置換え
  26:00に高校講座化学を追加
します。
その結果を、時間部分をキーにしてソートし、表示します。




■ソースプログラム
 全体の流れは、こんなかんじ。
import java.util.*;

/*
 *  マージのテスト
 */
public class test {
	/*
	 * 	メイン処理(呼び出し元)
	 */
	public static void main(String[] args) {
		HashMap moto = new HashMap();	// 元のデータ(ここに追加する)
		HashMap henko= new HashMap();	// 変更分データ

		//	下のデータ
		moto.put("19:00","サイエンスZERO");				
		moto.put("21:00","NHKニュース");
		moto.put("24:00","うるぐす");
		moto.put("26:30","平野 麻樹子の地学");

		//	追加・修正データ
		henko.put("19:00","バレーボール");				
		henko.put("26:00","高校講座化学");
	
		//	マージする
		Merge.execute(moto,henko);
		
		//	表示する
		Object[] key = moto.keySet().toArray();
		Arrays.sort(key);	//	ソートして表示
		for(int i = 0 ; i < key.length ; i ++ )
		{
			System.out.println(key[i] + ":" + moto.get(key[i]));
		}					
	}
}

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

まず、moto,henkoのハッシュマップにキーと値をセットします。
今回はどちらもStringでかつキーに重複がないので簡単ですが、
値はStringでなく、Hashtableなどというケースもあります。
重複を許す場合は、Vectorにaddし、そのVectorを値とするような
ケースもあります。

 キーが複数(大分類、中分類、小分類)あるケースについて
は、ソートのとき述べます。


 そして、マージするプログラム(後述)を呼び出し、

 結果をソートして表示します。




 で、肝心のマージは、こんなかんじ。
public class Merge {

	public static HashMap execute(HashMap motoMap,HashMap addMap)
	{
		int	i;
		
		//	引数チェック
		if ( ( motoMap == null ) || ( addMap == null ) )
		{
			return	motoMap;
		}
		
		//	キーを取得し、配列に入れる
		Object[] key = addMap.keySet().toArray();

		//	全部、putする
		for(i = 0 ; i < key.length  ; i ++ )
		{
			motoMap.put(key[i],addMap.get(key[i]));	
		}
		return	motoMap;
	}
}

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

足しこむハッシュマップ(addMap)のキーをaddMap.keySet().toArray()で取得し、それを
もとに、motoMapに、キーと値をいれていきます。

こんなかんじですかね。。





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

YouTube、ビデオ広告を導入

2006-08-23 16:33:10 | Weblog

ここのニュース
YouTube、ビデオ広告を導入――パリス・ヒルトンのアルバム宣伝でスタート
http://www.itmedia.co.jp/news/articles/0608/23/news042.html


まず、パリス・ヒルトンのチャンネルというのは、
ここ
http://www.youtube.com/profile?user=ParisHilton


でこのチャンネル、なんか、他のチャンネルと違い、
カスタマイズしてあるそうだ。

で、そのカスタマイズなどなどをやらせてあげるかわりに、
YouTubeは、お金(広告料)をとるというビジネスモデルらしい
Brand Channelsっていうんだって。。


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

設計とか、プログラミングとかの標準はありますよね。で、テスト標準って??

2006-08-23 12:16:07 | Weblog

 唐突ですが、開発における標準化ってことを考えると、こんなかんじになりますよね(ここで、その内容がいいかどうかは別問題として。。)

分析:EA
設計:設計標準
コーディング:コーディング規約
テスト:??
運用:ITIL(ベストプラクティスの集合体で標準化ではないけど)

 ここで、設計標準はUMLを使った場合とか各社の体系を使った場合など、いろいろなものがある。コーディング規約もそう。




 で、ふと思ったんですが。。

 テスト標準って、あんまり言いませんよねえ。。
 なんで品質向上には テスト標準が重要(リンク先はPDF)なんていう話がでてくるのかもしんないけど。。

 うーん、やっぱ、ないのかな。。。

 ”なんとか標準”とくれば、みなさんおなじみなのは、ITスキル標準(ITSS)ですが、
ITSSをみてもあんなにいっぱい分類あるのに専門分野に、テストエンジニアとか、品質管理スペシャリストとか、ないっすよねえ。。

 テストに標準化という概念はない。。。ひょっとして(^^;)



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

デザインパターンの23種類の各パターンは、要するにこうだ!と言い切る(その1:生成関連編)

2006-08-23 02:22:15 | JavaとWeb

 基本的な処理っていう話を昨日のブログでかきましたけど、基本的な処理っていうと、GoF本のデザインパターンじゃないの?っていう人もいると思います。

 ここで言っている基本的な処理っていうのは、業務における基本的な処理であって、GoF本がいっているパターンは、業務でなく、それをプログラミングに落としてくるときの、基本的な方略のTIP集みたいなもんたとおもうんです。
 つまり、ここで言っている業務の基本的な処理っていうのは、もっと、ユーザー、業務よりで、GOF本のデザインパターンなんかで言う基本は、それをうけて、じゃあ、プログラミングするための設計をするとき、どーしましょーかねーっていうときの、もっとプログラムよりの話だと思うんです。




 とかなんとかいっても、よくわかんないですよね。たぶんGoF本のデザインパターン、23種類をぜーんぶ説明しちゃえば、違いがわかると思うのですが。。。GoF本をそこまで読み込んでいない。
 とはいえ、きょうはちいと時間があったので、

 Java言語で学ぶデザインパターン入門

 という本をよみなおして、デザインパターンについて、ちいとばかし説明してみたいと思います。とはいえ、そんなに時間はないので、今日は、生成についてのSingleton,Prototype,FactoryMethod,Builder,AbstructFactoryについて。

 っていうことで、にわかじこみお勉強なので、間違っているところもあるかもしれんが、そしたら、ごめんなさい。
 で、具体的な話はJavaで説明してあります(GoF本はそういう限定ないと思うけど)



■生成について

 生成はふつうnewでやればいいんですけど、そーかんたんにいかないケースがあります。
 その話と、共通ロジックがあるとき、抽象的に書く部分と、具体的な部分にわけて、抽象的な部分に共通ロジックを書き、各具体論の差異は、具体的な部分にかけばいいんですけど、その場合の生成の話についてです。



■Singletonについて
 newで生成すると、オブジェクトがいっぱいできてしまいます。
では、システムに1個だけ、オブジェクトを生成して、みんなそれを参照するようにしたい場合、どうするか?シンクロナイズドにして、生成したかどうかのフラグをつくってえーとえーっと。。。そじゃなくって、

以下のようなクラスを作ります

1.staticにしてプライベートにして、オブジェクトをnewで初期化します
  →このとき、オブジェクトをシステムが読み込んだとき、オブジェクトを生成します
   でも、他の人は見れません
2.publicで、getInstanceという関数を作って、1のオブジェクトを返します。
  →そうすれば、みんなに(stsaticで1個だけとった)オブジェクトがかえる。
  →めでたしめでたし。。。

はい、つぎ



■Prototypeについて
 あるオブジェクトがコピーされた状態、つまり値が入った状態でほしいとき、どうします?
 newして、値を全部コピーして。。。その値がprivateだったらどうします?よそさんから参照して、コピーできませんよねえ。。。

 こーいうとき、Javaだと、Cloneableというクラスを継承すれば(extendsすれば)、cloneメソッドをつかって、コピーできます。
 めでたしめでたし

はい、つぎ




■共通部分をまとめて、スーパークラスとする

 ここからさきは、生成なんですけど、話が変わります。
 共通部分はまとめ、差異部分は、その共通部分を継承(extends)して、差異部分のみを記述したほうが、オブジェクト指向っぽくなります。さて、その場合における、生成の話です。



■FactoryMethodについて

 では、生成について、共通部分はまとめて、具体的な部分を差異として記述するには、どしたらいいでしょう。
 共通部分をスーパークラスとして、抽象クラスとして、具体的な部分をそのサブクラスとして継承すればできます。
 めでたしめでたし



■Builderについて
 では、抽象的なクラス(Builder)があって、それに対して、いくつかのサブクラス(これをconcreteBuilder1、2、。。。としましょうか)があったとします。
 実際に、生成されるのは、concreteBuilder1、2。。。のほうです。

 このとき、全部のサブクラス(concreteBuilder1、2。。。)にたいして、ある操作をしたいとします。どうしましょう。。

1.抽象的なクラスDirectorというのを作ります
2.そのDirectorが抽象的なクラス(Builder)を操作すると、実際にインスタンス化した、サブクラス(concreteBuilder1、2。。。)にたいして、Directorが操作を行います。

 この場合、Bulderを継承した新しいクラスを作っても、そのクラスにたいしてDirectorが操作を行います。理由は、そのクラスのスーパークラスBulderに対して、director画操作しているからです(その影響は子にも継承される)

 めでたしめでたし




■AbstructFactoryについて
 さっきのFactoryは、スーパークラスとサブクラスの関係でした。
 これは、プログラムを書いているときに、サブクラスを生成して、createするように書いてしまいます。
 でも、サブクラスが、複数あって、起動したときに、どのサブクラスを生成するかを決める場合は、どーすんの?

 もし、生成するスーパークラスが、なんらかの部品を呼んでいたりしたら、そいつも抽象クラスで、ぜーんぶ抽象クラスと、実際のサブクラス(このサブクラスは、実体の種類分)を記述し、プログラム起動時に、生成するサブクラス名をうけとり、抽象的なFactoryにそのクラス名をわたして、Class.forName(クラス名)すればいい。
くわしくは、 Java言語で学ぶデザインパターン入門
の95ページ-119ページ参照





ふえー、もう眠いのできょうはおしまい。
(朝または昼読んでいる人へ、これ、夜中に書いてます、いま、2時すぎ。。)
またこんど、暇なときします。


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