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

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

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でシェアする

宇宙戦艦ヤマトの司令室?に、こんなのなかったっけ?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でシェアする

IBM中古PC+SuSEで約2万円から販売-九十九電機

2007-05-29 19:03:16 | Weblog

ここのスラッシュドットニュース
九十九電機、IBM中古PC+SuSEで約2万円から販売
http://slashdot.jp/linux/07/05/29/0348232.shtml

(元ねたはこことのこと)によると
(以下斜体は上記スラッシュドットからの引用)


 九十九電機は2007年5日28日、日本 IBM とノベルの協力を得て、 5月30日から Linux 搭載中古 PC「Refreshed PC with Linux」を販売すると発表したようだ。「SUSE Linux Enterprise Desktop 10」が導入された中古PCの価格は1万9,800円から。


貧しい自治体や、学校みたいなところで、
Linuxを使うようなところにはいいのかな?

企業だと、やっぱWindowsかMac(デザイン・印刷関係)でしょうから・・・

貧しい自治体は贅沢言わず、これで我慢しろと。。(^^;)

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

一般的な編集ソフトの作り方 その1:どんなことをするのか

2007-05-29 14:05:42 | 開発ネタ

 今日から新しいシリーズ「一般的な編集ソフトの作り方」というのをはじめます(きのう「一般的なエディタの作り方」と書いたのですが、こっちのほうがいいので、こうします)。




■どんなことをするのか?-方向性

 編集ソフトというと、

・テキストエディタ
・ドローイングソフト
・レタッチソフト(=写真の加工をするソフト)
・ワープロ
・DTPソフト
・フローチャート作成ソフト
・CASEツール
  :
  :

 といろいろあります。しかし、どれも編集するという行為は同じで、編集しているものが違うだけです。
 このように、「編集する」という行為が同じ以上、これら編集ソフトにおいて、共通した作り方というのがあるのですが、その部分について考えてみたいと思います。




■共通している部分とはなにか。。

共通している部分は、大きく、以下の3点です

1.画面の構成

 メインの画面があり、いろんな操作するための画面(ダイアログを含む)がいくつかでています。常時出ているもの(パレットと呼ばれる)場合もあれば、操作するときに一時的に出るダイアログもあります。
 
 そして、操作するためのメニューがあり、

 操作するには、操作したいものをクリックして選択します(エディタのカーソルのように、かならずしもそのものずばりを選択するわけではないにしても)


2.メモリ上に、要素(編集しているもの)をもつ
 そして、メモリ上に編集しているものをもちます。
 このもちかたは、
   ・配列で持つもの
   ・(連結)リストの形で持つもの
 があります。


3.イベント発生時の動き
 追加、削除、移動などのイベントが発生した場合、
 
  1.メモリ上の要素に変更があれば変更する
  2.表示位置の変更をする
  3.再描画する

 という手順で行います。2の表示位置の変更処理をどの範囲で行うのかはものによってちがいますが、たいていは、紙や画面の大きさを考えないで位置をきめ
(ページはたいてい考える)3の再描画で、そのうちどの範囲を描画するか考えます。




■どんなことをするのか?-概要

 ということで、ここでは、エディタやドローイングソフトなどにおける
・画面構成
・メモリ上への要素展開
・イベント処理方法
 について、一般的なやり方を示しながら、個別の編集ソフトでは、どこをどのように気をつけたらいいかについて説明します。




 で、次回なのですが、まず、「メモリ上への要素展開」について説明します。



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

ドコモ2.0って、Linuxに関係あるの?なわけないか。。。

2007-05-29 10:28:17 | Weblog

ドコモ2.0の宣伝、

「アナコンダ、変わった名前だなあ・・・」
「アンナだよ」

っていうじゃないですか。。

アナコンダ(anaconda)といえば、Linuxのインストーラーですよね・・・
なーぜー、anaconda?

スクラッチから、anacondaでインストールするくらい変わった?
(確かにあの変化は劇的だったが。。。)

なぜ、Linuxのインストーラーがでてくるのか、気になるウィリアムのいたずらなのでした。。

P.S 一応、Gooの辞典でanacondaを引いたら、
  アナコンダという蛇があるらしい。もしくは、一般的に大蛇の意味




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

株価のトレンドラインをハフ変換で引くことを考える

2007-05-29 02:33:04 | Weblog

 ある人と株の話をしていたら、「本に、”トレンドラインは何回も引きなおしましょう”ってある」って言う話をきいた。
 うん?何回も引き直したら、自分に都合のいいように引かれてしまうんではないのかなあ?とおもって、考えたんだけど、そもそも、トレンドを示す線というのを自動的に引くことは出来るのだろうか?




 かりにトレンドラインがでているとすれば、株価データは、点(株価)のあつまりだけど、その点の真ん中あたりを線で繋げるっていうことになる(理科の実験のとき、データの真ん中あたりに線を引くような感じ)。
 そして、その線を中心に、データは正規分布することになると思う。

 つまり

   株価=トレンド+(データのランダムウォーク:これは正規分布に従う)

 っていうことになると思う。

 実際、債権などを求めるブラックショールズの微分方程式の元となる考え方である、伊藤過程は、
   株価=トレンドの関数+(データのランダムウォーク:これは正規分布に従う)

 であり、トレンドの部分が関数だと、伊藤過程、たんなるトレンド「ライン」だと、一般化したウィナー過程であると思う。今回は、トレンド「ライン」の問題なんで、一般化したウィナー過程で考える。つまり、

   株価=トレンドを示す線+(データのランダムウォーク:これは正規分布に従う)

と考えられる。




 そのとき、トレンドを示す線はどのように求められるか?ということになる。
 まあ、最小二乗法でもいい気がする。。。

 でも、ふと思ったんだけど、離散している点の線を引いて、特徴(トレンド)を求めるのなら、ハフ変換でもいいんじゃないかなあ?と思った。

 で、最小二乗法にしろ、ハフ変換にしろ、求めた直線に関して、このトレンドが正しければ、このラインから実際の株価との差を平均との差と同等と考えて、シグマを求めた場合、
 2σの値に95.5%程度が入るはずである。

 同様な理論としてボリンジャーバンドがあるが、一般のボリンジャーは、トレンドからでなく、単純に株価から2σを求めてしまう。
 したがって、ランダムウォーク分だけしか考慮していないので、トレンドが出たような、正規分布を崩す要因(大幅な決算下方修正、TOBによる株価上昇など)が現れると、2σにはりついてしまうことになる。
 そして2σに張り付く前の段階、1σぐらいのときは、ランダムウォークの正常値なのか、トレンドが出ていているのかが、わからない。

 トレンドを考慮することにより、トレンドによる売買と、2σによるリスク範囲の想定ができるようになる。




 このような論点からの具体的な売買は、別のときに考えることにして、今回は、ハフ変換のこの考えが正しいかどうかについての調べ方を考えてみたい。

1.ハフ変換は、ここのひとここにおいていたりする。

2.この人のやり方だと、
(1) 宣言をします.
(2) g_ht.AllocateHoughTable() を用いて、ハフ変換用のメモリを確保します
(3) g_ht.HoughTranform() を用いて、元画像をハフ変換します
(4) g_ht.SaveRecognitionImage() を用いて、逆ハフ変換を実行します

とやるようだ(斜体は上記ソースコードのコメントより引用)

3.元画像は、
画像のサイズは 横 x=360, 縦 y=720pixelのようなので、
横は360日分(180日分で2ドットずつ同じ値を書いてもいい、90日分、4ドットずつ。。)をとる。
縦は、最大最小で幅を決めて、

 株価に相当するところを適当な色で、SetPixel(いろをつける関数)すればいい。

4.かりに線が出てきたとしたら、どうするかについては次の機会に。。


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

ブログで職業、性別、配偶者の有無が分かる?

2007-05-28 21:17:21 | Weblog

ここのニュース
ブログで職業、性別、配偶者の有無が分かる? キーウォーカーがリサーチサービス
http://headlines.yahoo.co.jp/hl?a=20070528-00000034-zdn_b-sci

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

キーウォーカーは5月28日、自然文解析技術を応用したブログ検索エンジン「BlogSphere」を利用した企業向けマーケティングリサーチサービス「BlogSphere for Research」を開始した。


 そうだが、その機能は。。

BlogSphereは、キーウォーカーが開発した自然文解析エンジンによって、ブログに書かれている全テキストの文意を解析できる検索エンジン。ブログの内容からブロガーの年代や性別、居住地、配偶者の有無などの属性を総合的に判断し、グラフなどにビジュアル化して表示する。α版が2006年10月から1カ月間試験的に公開されていた。

 今回開発した「BlogSphere for Research」はBlogSphereのブロガー分析機能、属性表示機能を、マーケティングリサーチ用にブラッシュアップ。自社商品や競合商品などをキーワードとして入力すると、キーワードを含むブログ記事を抽出し、「キーワード毎の言及度」「男女比」「年代構成」「趣味」「職業」「配偶者や子供の有無」「買った物」「欲しい物」など、言及しているブロガーの特性を表示する。また、「視聴メディア(雑誌、新聞、テレビ番組、インターネット)」「好感度の高いタレント」に加え、居住地毎の「地域別言及度」なども解析可能だという。


 なので、たしかにブログから職業、性別、配偶者の有無が分かるんだけど、
人探しサービスのサイト、スポック(Spock)
http://blog.manabiyahonpo.com/archives/category_cat7/spock/#more

のような、個人情報を調べるものではなく、マーケティングに使うもののようだ。。


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

国立国語研究所が大規模コーパスを試験公開

2007-05-28 20:58:29 | Weblog

ここのニュース
国立国語研究所が大規模コーパスを試験公開
http://headlines.yahoo.co.jp/hl?a=20070528-00000001-zdn_ait-sci

によると、日本語コーパスが公開されているということだけど。。

ここ
KOTONOHA
現代日本語書き言葉均衡コーパス
http://www.kotonoha.gr.jp/demo/



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