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

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

6割が「Yahoo!」をトップ(ホーム)ページに設定 2位「Google」に大差

2007-05-31 18:31:40 | Weblog

ここの痛いニュース
6割が「Yahoo!」をトップ(ホーム)ページに設定 2位「Google」に大差
http://blog.livedoor.jp/dqnplus/archives/981576.html

によると(以下斜体は上記サイトより引用)

日経リサーチは30日、トップページの設定するサイトと1カ月以内に利用したサイトに関する調査の結果を公表した。調査は3月15日から20日まで、Webアンケートで実施。
16~69歳の男女5,312人から有効回答を集めた。

それによれば、トップページに設定しているWebサイトでは、60.5%が「Yahoo!」と回答、2位で8.8%の「Google」、3位で7.3%の「MSN」などに大差をつけた。特に10~20代女性では、71.3%がYahoo!としていた。

Yahoo!をトップページに設定する理由としては、「機能が使いやすい」(54.9%)や「利用する機能が多いから(メールやアルバム機能)」(22.0%)など機能面が評価されたほか、「単に使い慣れているから」(48.6%)という回答も半数近くに上った。
http://internet.watch.impress.co.jp/cda/news/2007/05/30/15878.html

また、最近1カ月以内に利用したWebサイトとしては、「Yahoo!」(91.0%)が9割を超えて圧倒的に多く、
次いで「Google」(56.8%)、「楽天」(45.7%)、「MSN」(27.6%)、「goo」(27.6%)の順で利用が多かった。


そうです。。
うーん、日本ではYAHOO圧勝ですね(^^;)

ちなみにウィリアムのいたずら、トップは、
自分のうちのマシンはabout:blank
他のマシン(仕事で使うマシン)は、設定変えてないので、
IEの設定のままで、MSNが出ます。

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

開発の初めから順番に書いていってみる その52:プログラミング(14)入出力自動2JDBC。

2007-05-31 17:01:45 | 開発ネタ

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

 プログラミングでは決定表と自動生成のお話をします。
 今、入出力の自動生成をやっていて、そこでは、画面とDBを取り上げようと思っています。
 今回は、「データベースアクセスの自動生成」についてです。




■DBアクセスの共通部分

 DBアクセス部分としては、前回、
・select
・insert
・delete
・update
と、SQLを自由に書ける、
・execute
・selectExecute
が、考えられると書きました。
今回は、共通部分として、executeとselectExecuteについて考えてみたいと思います。




■executeとselectExecute

この2つのメソッドは、JDBCを使って、DBをSQLでアクセスするもので、どちらも、以下のことをします。
・ドライバクラスをロード
・データベースへ接続
・ステートメントオブジェクトを生成
・SQL実行
・データベース切断(CLOSE)

相違点は、selectExecuteのほうは、検索用のため、検索結果を返すために、
以下の処理を、「SQL実行」と「データベース切断」の間にしています。

・メタデータの取得(項目名を取得するため)
・項目名と項目値をハッシュマップに入れて(項目値はすべてStringにして)
 1レコード分のハッシュマップを作成し
・それらレコードをベクターにどんどん付け加える
 →そのベクターを返す。

このようにすると、テーブル関係無しに、SQL文ができると、どちらかのメソッドを使って、DBが更新できます(したがって、この2つのメソッドだけであれば自動化の必要はなく、このクラスを提供すればいいだけになります。




■ソース

そのときの、executeとselectExecuteは、こんなかんじ
import java.util.*;
import java.sql.*;

public class execSQL {

	/*
	 * 	JDBC ドライバクラス名
	 */
	 public static final String JDBCDriverName = DBKankyo.JDBCDriverName;

	/*
	 * 	JDBC 接続URL
	 */
	 public static final String JDBCURL = DBKankyo.JDBCURL;

	/*
	 *  ユーザー名
	 */
	 public static final String JDBCUserName = DBKankyo.JDBCUserName;

	/*
	 *  パスワード
	 */
	 public static final String JDBCPassword = DBKankyo.JDBCPassword;

	/*
	 * SQL実行<BR>
	 * @return	int		0:OK,1:Error
	 */
	public	int	execute(String cmd)
	{
		try
		{
			
	      		// ドライバクラスをロード
      			Class.forName(JDBCDriverName); 

	      		// データベースへ接続
      			Connection con =
			   DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);

	      		// ステートメントオブジェクトを生成
      			Statement stmt = con.createStatement();

			//	実行
	  		stmt.execute(cmd);

	      		// データベースから切断
      			stmt.close();
      			con.close();
   		} 
   		catch (Exception e)
   		{
     			e.printStackTrace();
     			return	-1;
   		}
		return	0;
	}

	/*
	 * SQLの検索実行<BR>
	 * @return	Vector	結果(1レコード1HashMapで入っている)
	 */
	public	Vector	selectExecute(String cmd)
	{
		Vector allData = new Vector();

		try
		{
			
	      		// ドライバクラスをロード
      			Class.forName(JDBCDriverName); 

	      		// データベースへ接続
      			Connection con = 
			  DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);

	      		// ステートメントオブジェクトを生成
      			Statement stmt = con.createStatement();
      			
      			// クエリーを実行して結果セットを取得
      			ResultSet rs = stmt.executeQuery(cmd);

	      		ResultSetMetaData meta = rs.getMetaData();
      
      			// 検索された行数分ループ
      			while(rs.next())
      			{
   				HashMap mp = new HashMap();
      				for(int i = 1 ; i <= meta.getColumnCount(); i ++ )
      				{
      					mp.put(meta.getColumnName(i),
						rs.getString(meta.getColumnName(i)) );
      				}
   				allData.add(mp);		
      			}
 
      			// データベースから切断
      			stmt.close();
      			con.close();
 	   	}
    		catch (Exception e)
    		{
      			e.printStackTrace();
      			return	null;
    		}

		return	allData;
	}
}

(上記 < > ¥は本当は半角です)
なお、JDBCを行うのに必要な変数は、DBKankyoというところに入れています。
その定数のクラスは、こんなかんじ
public class DBKankyo {

	/*
	 * 	JDBC ドライバクラス名
	 */
	 public static final String JDBCDriverName = "org.gjt.mm.mysql.Driver";

	/*
	 * 	JDBC 接続URL
	 */
	 public static final String JDBCURL
	   = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8";

	/*
	 *  ユーザー名
	 */
	 public static final String JDBCUserName = "ユーザー名";

	/*
	 *  パスワード
	 */
	 public static final String JDBCPassword = "パスワード";
}

(上記 < > ¥は本当は半角です)
ユーザー名とパスワードは、実際のユーザー名、パスワードにします。
MYSQLの場合です。
JDBCURLのjdbc:mysql://localhost/testは
mySQLのローカルホストのtestデータベースを意味しますので、これ以外のサーバーやデータベースにアクセスする場合は、書き換える必要があります。




 ということで、次回は、上記のソースの説明、とくに
・なぜ、DBKankyoというクラスに分けたのか
   →テストのときのため
・selectはなぜ、すべてStringで入れているのか
   →仕様変更にロバストにするため

などについて書くと思います(次回に書けるかどうかわかんないけど、次回以降で書きます)



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

一般的な編集ソフトの作り方 その3:メモリ上への要素展開(個別要素)

2007-05-31 14:43:06 | Weblog

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

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

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

 今回は「メモリ上に、要素(編集しているもの)をもつ」ということについて考えていて、前回、その表現法としての連結リストをやりました。

 今日は連結リストから、個々の要素へのもっていきかたと、前や後の要素が複数ある場合の話についてです。




■連結リストと個々の要素との関係

昨日、連結リストというのをやりました。
public class Item {
	int	id;
	Item	prev = null;
	Item	next = null;
}

のような形で、前と後に来る要素を持っているクラスです。
これによって、nextを順々と辿れば先に、prevを順々と辿れば前にいきます(nullで終わります)

 ですが、これでは、各要素は、あらわせません。
 たとえば、フローチャートだったら、プロセスとか、条件とか、イロイロあるわけですし、ドローイングソフトだと、四角とか丸とか、いろいろあるわけです。それらをどのようにあらわすか?ということなわけですが、

 それら、各要素は、それぞれクラスを作り、連結リストを継承します。

 たとえば、四角形だったら、
public class Shikaku extends Item {

	/*
	 *	座標と幅、高さ
	 */
	int	x;
	int	y;
	int	width;
	int	hight;

	/*
	 *	線の色
	 */
	byte	line_r;
	byte	line_g;
	byte	line_b;
	
	/*
	 *	中の色
	 */
	byte	fill_r;
	byte	fill_g;
	byte	fill_b;
}


などというかんじで、各要素の個別情報をもちます。
円の場合も、
public class En extends Item {

	/*
	 *	座標と半径
	 */
	int	x;
	int	y;
	int	r;

	/*
	 *	線の色
	 */
	byte	line_r;
	byte	line_g;
	byte	line_b;
	
	/*
	 *	中の色
	 */
	byte	fill_r;
	byte	fill_g;
	byte	fill_b;
}


のような感じでもちます。
そうすると、順番と要素の追加、削除に関しては、すべて共通に行え(継承しているItemの中で行うから)表示などは、個別のクラスのほうで行うようにできます。




■前や後の要素が複数ある場合
 いままで、前後の要素が1つだったのですが、switch文のように、いくつかのケースに分かれることもアリ、また分かれたところが1つにまとまるところも、出てきます。

 このようなものに対応するには、prev,nextも
public class Item {
	int	id;
	Vector	prev = null;
	Vector	next = null;
}


のように、複数の値がもてるようにします(今回はVectorにしていますけど、配列でやることもできます)。
 この場合、昨日書いた挿入、削除メソッドも、複数用に書き変わります。




 で、次回は、これを保存する方法を考えます。
 idについて、いままで、どうやって使うか、出てこなかったのですが、
 たぶん、そこで書くと思います。


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

情報処理試験が2008年秋に全面改定されるらしい

2007-05-31 10:38:11 | Weblog

そうそう、情報処理試験のことを書いたので今回も情報処理試験の話。

日経ソリューションビジネスの2007年5月30日号60ページによると、

 情報処理試験が2008年秋に全面改定されるらしい

エントリ試験
基礎試験
ミドル試験
高度試験

 になるようだ、ちなみに、ミドル試験がソフトウエア開発レベルに対応、

 高度試験は、
 ・ストラテジスト
 ・システムアーキテクト
 ・プロジェクトマネジャー
 ・テクニカルスペシャリスト(ネット・DB・組み込み)
 ・ITサービスマネージャー
 ・セキュリティ
 ・システム監査
 の試験区分に分かれる模様。

くわしくはここ(PDF)
http://www.meti.go.jp/committee/materials/downloadfiles/g70418c02j.pdf

で、ニュース記事は、ここ
情報処理試験制度やITSSはこう変わる!
人材育成WGの最終報告案まとまる
http://itpro.nikkeibp.co.jp/article/NEWS/20070426/269619/



 うーん、こーやって、いろいろ変わるから、昔とった試験(例えばアプリケーションエンジニア)が無駄になってしまうので、情報処理試験って、人気ないような気がする。
 またとっても、どっかでまたかわっちゃうんだよね(>_<!)
(読み替えとかいったって、今、情報処理試験に、昔、オンラインなんてあったっていうことを知っている人は。。。)

 また、TACとかで、お勉強しないと(>_<!)

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

IT関連資格取得難易度で、「人生変わるかも」と書いてある資格、持ってても、変わる気配ありません

2007-05-31 02:56:14 | Weblog

ここ
IT関連資格取得 難易度分布表
http://study.goo.ne.jp/special/SP/024/index.html

によると、
難易度5つ星の試験は(以下斜体は上記サイトより引用)

プロジェクトマネージャー
アプリケーションエンジニア
テクニカルエンジニア
システムアナリスト

だそうです。

おお、アプリケーションエンジニアもってますよ(^^)
5つ星って、どんなのだろう。。。


最難関の5つ星資格。取得するのは相当難しいけれど、その資格がないと就けない職業が多いので取得すれば人生変わるかも!


とってから何年もたっているけど、ぜんぜん人生変わらないですけど。。
変わる気配すら、ないですけど。。。

っていうか、それより下の4つ星に日商簿記1級とか、診断士とかあるけど、
診断士のほうが、難しい気がするし、日商簿記1級のほうが、よっぽど勉強したけど。。。
(ちなみに、どっちの資格も持っている)

つーかそもそも、「アプリケーションエンジニア」と、司法試験、司法書士が一緒って(^^;)

うーん、これから人生変わるんでしょうか。。。。
最近、変わったことといえば。。今日、時計のバンドが壊れました。
1ヶ月で(>_<!)(ただし、1000円で買ったので文句はいえん)
。。。でも、そー言うことではないと思うんですけど、人生変わるって。。



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