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

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

YAHOOのネタりかって何?「フル武装精密ガンプラ発売」とか、載ってるから

2007-06-07 22:06:06 | Weblog

 YAHOOニュースとは、違いそうだ。。

 で、まず、そのYAHOOのネタりかは、
 ここ http://netallica.yahoo.co.jp/

 左上のおじさんの絵もかなり気になるが、まあ、ここではおいておいて、

 ランキングのマーク数??(って意味わかってないんだけど)に、
 こんな記事が。。
機動戦士ガンダム:ビームサーベルからナパームまで フル武装精密ガンプラ発売
http://netallica.yahoo.co.jp/collect/mark/1864

記事の内容からして、ただのニュースとは違いそうだ

つーか、色(マーク?)ついてるし・・・

 うーん、とにかく新サービスなのね(^^;)

 時代に取り残されているウィリアムのいたずらなのでした。


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

ソフトバンクが初のトップ、5月携帯電話契約の純増数

2007-06-07 18:51:59 | Weblog

 おお、とうとうですか。。。
5月携帯電話契約の純増数、ソフトバンクが初のトップ
http://headlines.yahoo.co.jp/hl?a=20070607-00000289-reu-bus_all

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

電気通信事業者協会(TCA)が7日発表した5月の携帯電話契約数によると、新規契約から解約を差し引いた純増減数は、ソフトバンク<9984.T>の携帯電話子会社ソフトバンクモバイルが16万2400件の純増でトップとなった。
 同社が月間純増数で首位に立つのは、前身のデジタルホンとJフォン、ボーダフォン時代を含めて初めて。ソフトバンクモバイル広報部は「(月額基本料980円などの)新料金プランの効果が大きい」とみている。


 そーいえば、ソフトバンクのCM,上戸彩さん(だよねえ)で、いいかんじ
になってきたし。。。。

 CMでみたら、上戸さんのソフトバンクと、仲間さんのauと、わけわかんないDocomoってことで、Docomo一人まけのような気がする。。
 MNPの結果も

番号継続制(MNP)を利用した転入出数はKDDIが5万5100件の転入超過、ソフトバンクモバイルが3100件の転入超過、NTTドコモが5万8300件の転出超過となった。

 ってことで、Docomo2.0じゃなかった、Docomoに移転ゼロ(Docomoに、いい点ゼロとまではいわないけど)ってかんじだし。。。


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

Javaのサーブレットでのファイルアップロード方法

2007-06-07 17:22:55 | JavaとWeb

以前、CGIでのファイルアップロードについては、ここに書いたけど、それを、Javaのサーブレットでやる方法についてのメモ。

ここ
Servlet-12.ファイルアップロード
http://www.javaroad.jp/servletjsp/sj_servlet12.htm


に書かれている方法でやってできました。

つまり、

1.Apacheの
Commons Downloads
http://jakarta.apache.org/site/downloads/downloads_commons.html

で、
Commons FileUpload
をダウンロードして、libの中にある、commons-fileupload-1.2.jarと

Commons IO
をダウンロードして、commons-io-1.3.1.jarを取得し、

2.Eclipseでプロジェクトを作ったら、プロパティで、それらのjarを加えて、
 (Eclipseでない場合、コンパイルでクラスパスが通るようにして)

3.Eclipseで、一番初めに書いた、「ファイルアップロード」のサイトにある
  UploadFileServlet.javaを作成しクラスをつくって、
  →packageのところや(10)upFile.htmlページに戻るのところは、
   適当に直したかったらなおす。

4.upFile.htmlもエディタで保存して
  →action先も適当に直したかったらなおす。

5.2で入れたjarを、Tomcatのcommonのlibとか見えるところにおき

6.3と4で作成したファイルを適当なところに置くと

なんかできた。




ここにもあるんだけど、このソースではうまくいかなかった。

 報告終わり!


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

一般的な編集ソフトの作り方 その8:メモリ上への要素展開(読み書き)

2007-06-07 14:10:02 | 開発ネタ

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

 いま、メモリ上に、要素を展開したとき、必要なメソッドは何で、どこにおくか?という話をしています。
必要なメソッドは、
<<メソッド>>
・insert
・delete
・read
・write
・print(表示)
・位置決め

 で、今まで、insert,delete,printはやったので、今回はread,writeについてです。




■配列に入れる方法と、親子ツリーをそのまま保存する方法

 といっても、以前これはやりました(ここ)。

 ただ、あのときは、配列を用意し、IDを振って、そのIDどおりに入れていきました。

 もうひとつの方法として、親子関係をそのまま書き出してしまう方法があります。

たとえば、こんなかんじ
<ページ>
  <ページ番号>1</ページ番号>
  <枠>
    <id>1</id>
    <X>0</X>
    <Y>100</Y>
    <WIDTH>100</WIDTH>
    <HIGHT>100</HIGHT>
    <TEXT>一番目の枠です</TEXT>
  </枠>
  <枠>
    <id>2</id>
    <X>120</X>
    <Y>100</Y>
    <WIDTH>100</WIDTH>
    <HIGHT>100</HIGHT>
    <TEXT>二番目の枠です</TEXT>
  </枠>
  <枠>
    <id>3</id>
    <X>220</X>
    <Y>100</Y>
    <WIDTH>100</WIDTH>
    <HIGHT>100</HIGHT>
    <TEXT>三番目の枠です</TEXT>
  </枠>
</ページ>



のように、ページの中に枠があるとき、子の要素を順番に書くものです。




■ツリーなら、親子関係のほうが楽

 で、XMLにあらわせるような、ツリー関係なら、上記の親子関係のほうが楽です。しかし、親子関係が複雑に入り混じってしまうと、わけ分からなくなってしまっています。たとえば、ある子に親が2つある場合や、フローチャートのIF文のように、いくつかが集まって1つのところに来る場合、どれを先に保存すればいいのか、良くわかんなくなってしまいます。

 その場合は、配列のほうが楽です。




■実際には
 実際には、親子だけ、配列だけというのではなく、親子関係で書いているけど、子の順番は、配列のように並べて書くなど両方の中間に位置した書き方になります。




■メソッドのある場所

 親子関係のようなものの場合、自分のシリアル化(ファイルに書き出せるように、クラスの中身を文字列で表現する)だけを行い、親は、子から集まってきた情報をまとめて、自分の情報もあわせて書いて、自分のシリアル化にします。

 たとえば、子供がVector childLisに入っていたとすると、

 この保存用データのシリアル化、saveDataは

String saveData()
{
      StringBuffer retBuf = new StringBuffer();

   //	自分書き出し
      retBuf.append("<ページ>);
    retBuf.append("<ページ番号>" + pgno + "</ページ番号>");

   //	子供の書き出し
   for(int i = 0 ; i <childList.size(); i++)

みたいな形で書きます。
こっちの書き方のほうが、全部配列に入れるより、一般的だと思います。




ってことで、読み書きもおしまい


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

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

2007-06-07 10:54:30 | 開発ネタ

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

 プログラミングでは決定表と自動生成のお話をします。
 今、DB入出力の自動生成をやっています。

 DB入出力は、JDBCで行うのですが、JDBCアクセス部分は、
  execute
  selectExecute
 で行い、それは、ここで説明しました。

 その上の部分として、テーブルごとに用意した、
  ・select
  ・update
  ・insert
  ・delete
 メソッドから、SQLを発行し、executeとselectExecuteを呼び出すという話で、前回selectをやったので、今日はinsertをやります。




■発行するinsert文

INSERT文は、

INSERT INTO テーブル名(項目,・・・) VALUES (値,・・・)

という形のものを発行することとします。
項目を挙げないで、全部の値を書くという方法も考えられなくはないのですが、そうすると、すべての値を設定してもらわないといけない上に、項目が追加されたら、設定する値も追加してもらわないと。。。

 と、たいへんなので、この形にします。




■処理するメソッドの形と処理内容

 変数はしたがって、項目名と値の組をもらえばいいので、
 これをハッシュマップに入れて、

public int insert(HashMap taisho)

とします。

そして処理内容ですが、

・ハッシュマップに入っている値を受け取り、
・”INSERT INTO テーブル名(”を書き出し、
・ハッシュマップに値が入っていたら、項目名を書き出し
  →このとき、先頭でなかったら、,を書き出し
・") VALUES ("を書き出し、
・ハッシュマップに値が入っていたら、値書き出し
  →このとき、先頭でなかったら、,を書き出し
・")"を書いて、executeを呼び出し、SQL実行

となります。




■ソース

 ソースはこんなかんじ。

	/*
	 * 追加<BR>
	 * @param	HashMap	taisho	対象、NULLのときエラー
	 * @return	int		0:OK,1:Error
	 */
	public	int	insert(HashMap taisho)
	{

		// ハッシュマップに入っている値を受け取り
		String	name	=	(String)taisho.get("name");
		String	pass	=	(String)taisho.get("pass");
		String	auth	=	(String)taisho.get("auth");

		int	out_flg;
			
		// ハッシュマップに入っている値を受け取り
      	         StringBuffer sqlbuf 
                     = new StringBuffer("INSERT INTO userTBL(");

		//==========================//
		//	項目名の書き出し	//
		//==========================//
		out_flg	=	0;
 		//ユーザー名の設定
		if ( name	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}
			sqlbuf.append("name");
		}      		
 		//パスワードの設定
		if ( pass	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}
			sqlbuf.append("pass");
		}      		
 		//権限の設定
		if ( auth	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}
			sqlbuf.append("auth");
		}      		


		// ") VALUES ("を書き出し      		
		sqlbuf.append(") VALUES (");
		
		//==========================//
		//	値の書き出し	//
		//==========================//
		out_flg	=	0;
 		//ユーザー名の設定
		if ( name	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}

			sqlbuf.append("'");
			sqlbuf.append(name);
			sqlbuf.append("'");
		}      		
 		//パスワードの設定
		if ( pass	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}

			sqlbuf.append("'");
			sqlbuf.append(pass);
			sqlbuf.append("'");
		}      		
 		//権限の設定
		if ( auth	!=	null )
		{
			if ( out_flg	==	0 )
			{
				out_flg	=	1;
			}
			else
			{
				sqlbuf.append(",");
			}

			sqlbuf.append("");
			sqlbuf.append(auth);
			sqlbuf.append("");
		}      		

		//	おしまい部分      		
		sqlbuf.append(")");

		//	実行
		return	execute(sqlbuf.toString());
	}

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

ここでは、userTBLというテーブルに、
name 可変の文字
pass 可変の文字
auth 数字
という項目があるときの、INSERT部分です。




ということで、INSERT文はおしまい。




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