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

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

ソフトバンクの予想外割のまとめ(26日)

2006-10-26 23:58:41 | Weblog

 きのうのソフトバンクの予想外割のまとめのつづきです。

 今日は、新スーパーボーナスは発表になり、端末頭金が0円と言うのが発表になったことですね。
 あと、開始早々、好調のようです。




では、以下23日から現在までのまとめ

 昨日の段階では、こんなかんじ

<23日>
 2880円で、ゴールドプランに入ると、通話とショートメールがソフトバンク同士だと無料になると発表。

 この時点では、ゴールドプランは
(1)データ通信定額サービス「パケットし放題」
(2)「スーパー安心パック」
(3)留守番電話などの付加機能をパックにした「スーパー便利パック」
の3つに入らないといけない。かつ、上記3つは、解約できないといっていた。
なので、3つのサービス期間が終わると、2025円を追加した4905円(最低、これに
YAHOO!ケータイをつけるともっと高くなる)といっていた




<24日>
 本家に書いたとおり、ITPROによると、上記3つのサービスは、解約できる。
 つまり、解約して、2880円のままでもOKと、発表を変える。
 この変更になった理由は、ITPROの記事によると、ソフトバンクモバイル本社で、情報が錯綜していたため。。

・それにくわえ、S!メールも無料化になった(ソフトバンク間だと思うけど。当然)

・ケータイWatchに
ソフトバンクの「予想外割」は本当に安いのか
http://k-tai.impress.co.jp/cda/article/news_toppage/31660.html

という記事が出る。他社にかける場合は、高い




<25日>

ソフトバンク・ゴールドプランの落とし穴
http://e.willcomnews.com/

などというサイトが、Gooブログランキングに入ってくる。
ここでは、予想外割と、ウィルコムを比較している。




<26日>
・オープニングベルの中のコーナー、「日経でOK」(だったと思う)で、「ソフトバンク、
 大人だった」という記事が紹介される
 →ボーダフォン時代と比べると、実質値上げ
 →同様の記事、日本証券新聞10月27日号、(26日夜に出る)3ページ目、
  フィスコ相場情報の2段目<9984>ソフトバンクにも
  「今回の料金体系は、実質値上げ、割高などの見方は多い」と書かれる

・予想外割の「ゴールドプラン」になるためには、必須の「新スーパーボーナス」
 の内容発表、端末の頭金0円、特別割引により、解約しなければ、機種によっては
 結局、ただになるというプランであることを発表
 ここに詳しく書きました。

ソフトバンクの新料金プラン初日、量販店も予想外な大盛況
 だそうです。

いまここ




<27日(予定)>
ソフトバンク、東芝「810T」、サムスン「706SC」を発売




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

Javaの画面表示-その13:SWTによる画面表示(その3:複数画面を表示する場合)

2006-10-26 18:46:48 | JavaとWeb

 シリーズJavaの画面表示のつづきです。
 現在は、SWTについてやっています。

 前回、1画面用のソースを書いたのですが、これを使って、第二画面を出そうとすると、エラーになります。

 SWTとAWTを混在させ、SWT画面に対して、AWTの画面のプログラムから、何かさせるのは、いけなさそう。。。は、まだしも、
 SWTの第一画面とSWTの第二画面を同時にだしてもだめでした。

 どうも、Displayは、アプリで1個のようです。

 ということで、
  ・アプリ開始時にDisplayを取得して、
   それを共通領域のハッシュマップにいれます。
  ・各画面では、Displayをnewで生成するかわりに、共通領域からとってくる
  ・ウィンドウ(シェル)が破棄されたとき、ディスプレイも破棄していましたが、
   それを中止、そのかわり、アプリを抜ける(System.exit)ときにする。

 それと、いままで、画面を1つしか出さないとき、
  次の画面が出てから消していましたが、
  そうすると、同時に2つの画面がでて、おかしくなることがあるので、
 画面を消してから、次の画面を出すようにしました。

 以上の修正をすると、以下のようなソースになります。




■ソース

●まず、アプリ起動のプログラムは、こちら(test.java)
import java.util.*;
import org.eclipse.swt.widgets.*;

public class test{

	/*
	 * 	メイン処理
	 */
	public static void main(String[] args) 
	{
		HashMap map= new HashMap();

		//	モデルクラスの生成
		Shori shori = new Shori(map);

		//	共通領域への値設定
		map.put("username","ウィリアムのいたずら");

		//	フレームを作成する		
		Display ff	=new Display();
		map.put("display",ff);

		//	削除する		
//		map.put("dispose","yes");
		
		//	第一画面作成
		gamen1 g = new gamen1(map);
	}

}

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

赤字は、複数画面出力のためのポイントです

以下の行
   map.put("dispose","yes");
をコメントにすると(上記の例)2つ(以上)の画面が同時に出せます。

もし、コメントをはずすと、画面は1つしか出ません
(次の画面を出すとき、前の画面を削除します)




●第一画面は、こんなかんじ(gamen1.java)
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import java.util.*;

public class gamen1 {
	
	//	共通領域
	public HashMap	map = null;

	//	モデル
	public Shori	shori = null;	
	//	画面項目項目
	Display		ff;
	Shell		f;
	Button		b1;
	Button		b2;
	Text		t1;
	
	int		seikai 	=	0;
	int		phaseNo	=	0;
	int		curno	=	0;

	/*
	 * 	生成
	 */
	public gamen1(HashMap map)
	{
		this.map = map;
		map.put("gamen1",this);

		this.shori = (Shori)map.get("shori");

		initAppData();
	}

	/*
	 * 	表示
	 */
	public void initAppData()
	{
		
		//	フレームを作成する		
		ff	=(Display)map.get("display");
		f = new Shell(ff);
		f.setText("test");
		f.setSize(240,320);
		f.setLayout(null);

		//	アクションを作成する
		gamen1_HandleEvent al = new gamen1_HandleEvent();

		//	ラベル
		Label l1 = new Label(f,SWT.NULL);
		l1.setLocation(10,30);
		l1.setSize(100,30);
		l1.setText("早うちの練習");

		Label l2 = new Label(f,SWT.NULL);
		l2.setLocation(10,120);
		l2.setSize(150,30);
		l2.setText("これは、練習文です。");

		Label l3 = new Label(f,SWT.NULL);
		l3.setLocation(10,70);
		l3.setSize(100,30);
		l3.setText("以下の文を打とう!");
	
		//	テキスト
		t1 = new Text(f,SWT.NULL);
		t1.setLocation(10,160);
		t1.setSize(150,80);
		
		//	ボタン作成		
		b1 = new Button(f,SWT.NULL);
		b1.setLocation(120,70);
		b1.setSize(100,30);
		b1.addSelectionListener(al);
		b1.setText("挑戦する");

		//	ボタン作成		
		b2 = new Button(f,SWT.NULL);
		b2.setLocation(10,250);
		b2.setSize(100,30);
		b2.addSelectionListener(al);
		b2.setText("打ち終わった!");

		//	表示
		f.open();
		DispAppData();

	   	// ウィンドウが破棄されるまでループ
    	         while (f.isDisposed() == false)
    	         {
      		    if (ff.readAndDispatch() == false)
      		    {
        		       ff.sleep();
      		    }
	          }
//    	          ff.dispose();

	}

	/*
	 * 	再描画
	 */
	public void DispAppData()
	{
		//	画面間引数を受け取る		
		String rensyu = "";
		if ( map	!=	null )
		{
			rensyu	= (String)map.get("rensyu");
			if (rensyu	==	null )
				rensyu = "";
		}

		//	画面表示
		if ( t1 != null )
		{
			t1.setText(rensyu);
		}

	}
	
	/*
	 * 	終了
	 */
	public void freeAppData()
	{
		//	2度目にもとってきたときのため、初期化
		map.remove("rensyu");
		phaseNo	=	0;
		curno	=	0;

		String dis = (String)map.get("dispose");
		if ( dis == null )
			return;
		if ( dis.equals("yes")	==	true )
		{
			f.dispose();
			map.remove("gamen1");
		}
	}
	
		
	/*
	 * 	イベントリスナー
	 */
	private class gamen1_HandleEvent 
			extends SelectionAdapter
	{

		/*
		 * 	ボタンが押されたときの処理
		 */
		public void widgetSelected(SelectionEvent e) 
		{

			Object o = e.getSource();

			if ( o.equals(b1)== true)
			{	//	挑戦する
				System.out.println("挑戦する");
				
				//======================//
				//	内容の取得     //
				//======================//
				map.put("rensyu",t1.getText());
				
				//======================//
				//	処理  	      //
				//======================//
				if ( shori	==	null )
					return;
				shori.shori1();

				//======================//
				//	次の画面処理   //
				//======================//
				phaseNo	=	1;
				curno	=	1;
				DispAppData();
				return;
			}

			if ( o.equals(b2)== true)	
			{	//	打ち終わった!

				//======================//
				//	内容の取得     //
				//======================//
				map.put("rensyu",t1.getText());

				//======================//
				//	処理	      //
				//======================//
				if ( shori	==	null )
					return;
				shori.shori2();
				
				//======================//
				//	次の画面処理   //
				//======================//
				//	先に消す
				freeAppData();

				//	第二画面表示
				gamen2 g2 = (gamen2)map.get("gamen2");
				if ( g2 == null )
				{
					g2 = new gamen2(map);
				}
				else
				{
					//	再描画
					g2.DispAppData();
				}
			}
		}
	}
}

(上記、< > ¥は、本当は半角です)
前回の1つの画面表示のケースと違うところは、赤色にしてあります。



●第二画面は、こんなかんじ(gamen2.java)

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import java.util.*;


public class gamen2 {

	//	共通領域
	public HashMap	map = null;

	//	モデル
	public	Shori	shori=null;
		
	//	画面項目項目
	Display		ff;
	Shell		f;
	Label 		l1;
	Label 		l2;
	Button		b1;
	Button		b2;

	/*
	 * 	生成
	 */
	public gamen2(HashMap map)
	{
		this.map = map;
		map.put("gamen2",this);

		this.shori = (Shori)map.get("shori");

		initAppData();
	}

	/*
	 * 	表示
	 */
	public void initAppData()
	{

		//	フレームを作成する		
		ff	=(Display)map.get("display");
		f = new Shell(ff);
		f.setText("test");
		f.setSize(240,320);
		f.setLayout(null);

		//	アクションを作成する
		gamen2_HandleEvent al = new gamen2_HandleEvent();

		//	ラベル
		l1 = new Label(f,SWT.NULL);
		l1.setLocation(10,30);
		l1.setSize(220,30);

		l2 = new Label(f,SWT.NULL);
		l2.setLocation(10,120);
		l2.setSize(220,30);

		//	ボタン作成		
		b1 = new Button(f,SWT.NULL);
		b1.setText("再挑戦する");
		b1.setLocation(10,250);
		b1.setSize(100,30);
		b1.addSelectionListener(al);

		//	ボタン作成		
		b2 = new Button(f,SWT.NULL);
		b2.setText("終了");
		b2.setLocation(130,250);
		b2.setSize(100,30);
		b2.addSelectionListener(al);

		//	表示
		f.open();
		DispAppData();

	   	// ウィンドウが破棄されるまでループ
    	         while (f.isDisposed() == false)
    	         {
      		        if (ff.readAndDispatch()	==	false)
      		        {
        		             ff.sleep();
      		        }
	          }
 //   	          ff.dispose();
	}

	/*
	 * 	終了
	 */
	public void freeAppData()
	{
		String dis = (String)map.get("dispose");
		if ( dis == null )
			return;
		if ( dis.equals("yes")	==	true )
		{
			f.dispose();
			map.remove("gamen2");
		}
	}
		
	/*
	 * 	再描画
	 */
	public void DispAppData()
	{
		//	画面間引数を受け取る		
		String username = "";
		String sei_ritu = "";
		String byo = "";
		if ( map	!=	null )
		{
			username	= (String)map.get("username");
			if ( username	==	null )
				username	=	"";

			sei_ritu	= (String)map.get("sei_ritu");
			if ( sei_ritu ==	null )
				sei_ritu 	=	"";
				
			byo	= (String)map.get("byo");
			if ( byo ==	null )
				byo 	=	"";
		}

		//	画面表示		
		if ( l1	!=	null )
		{
			l1.setText(username + "さんの結果");
		}
		if ( l2	!=	null )
		{
		   l2.setText("正解率"+sei_ritu+"%"+"時間"+byo+"秒");
		}
	}
	
	/*
	 * 	イベントリスナー
	 */
	private class gamen2_HandleEvent 
			extends SelectionAdapter
	{

		/*
		 * 	ボタンが押されたときの処理
		 */
		public void widgetSelected(SelectionEvent e) 
		{

			Object o = e.getSource();

			if ( o.equals(b1)== true)
			{	//	挑戦する
				System.out.println("再挑戦する");

				//	消す
				freeAppData();

				//	第一画面表示
				gamen1 g1 = (gamen1)map.get("gamen1");
				if ( g1 == null )
				{
					g1 = new gamen1(map);
				}
				else
				{
					g1.DispAppData();
				}
				return;
			}

			if ( o.equals(b2)== true)	
			{	//	打ち終わった!
		    	         ff.dispose();
				System.exit(0);
			}
		}
	}
}

(上記、< > ¥は、本当は半角です)
赤字は、複数画面のためのポイントです。



これで、SWTも複数画面が出ました。
めでたしめでたし。
ということで、SWTのお話もここでおしまいです。

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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その3:使い方)。

2006-10-26 16:50:48 | ケータイ

 シリーズ仕様書からプログラムソースを生成する方法のつづきです。
 前回はExcel仕様書からプログラムソースを生成するマクロを、公開してみると題して、マクロを公開したので、今日は、そのマクロをどのようにExcelに貼りこんで使うかについて、書きたいと思います。




●雛形ファイルについて
 前回の「仕様」で、以下の雛形ファイルと書かれている内容をコピーし、
 自分の、「マイドキュメント」の下に、hina1.txtという名前で保存してください
 (それ以外だと、場合によっては、雛形が見つからないことがあるので)




●Excelファイルの作成

1.Excelを立ち上げます。

2.下図のようにツール→マクロ→Visual Basic Editorを選択し、
  マクロのエディタ(VBE)を表示させます。


3.VBEの左にあるプロジェクトのウィンドウで、VBA Projectを選択
  クリックして(普通のクリックでは出ない)、挿入、
  標準モジュールを選択する


  そうすると、プロジェクトのウィンドウに、「標準モジュール」
  Module1というのができて、右側に、真っ白いウィンドウができる

4.その真っ白いウィンドウに、昨日の「マクロのソースコード」の
  枠内のマクロをコピーして、
  VBEへ「編集」→「貼り付け」する

  正しければ、ちゃんとプログラムがはり付く。
  おかしいと、赤字で表示される。そしたら、ちゃんとコピーされてない

5.ここで、一回保存しましょう。
    ファイル→Book1の上書き保存
  または、
    フロッピーのアイコン
  をクリックすると、ファイルダイアログが出るから、
  「マイドキュメント」フォルダの下に、適当な名前をつけて
  (めんどくさかったらBook1.xlsでもいいけど)保存します。

6.そしたら、
    ファイル→終了してMicrosoft Excelに戻る
  を選択し、VBEを終了させます。

7.Excelが出てきたら、Sheet1と書いてあるタブを右クリック
  して、「名前の変更」と出てきたら、それを選択、シート名を

     画面一覧

  に変更します。

8.下図のように、昨日のExcelデータと同じように、ボタンの
  ところ以外を編集します。
  行と、桁を間違えないでくださいね(間違うと、ちゃんとできません)


9.表示→ツールバー→フォームを確認してください
  下図のように、フォームにチェックが入っていなかったら、フォームを選択します。

  そうすると、チェックされて、フォーム(ボタン等)のメニューが出ます

10.下図のように、フォームのメニュー(こことは限りません。横になって、上に
  あるケースもあります)から、ボタンをクリックします。


11.そうすると、十字カーソルが出ますので、適当なところでクリックし、その後
  適当な大きさのところまでドラッグして離します。

  そうすると、下図のような、ボタンができて、ダイアログが開きます。

  はじめ、ボタン1_Clickのように書かれているのですが、
  下のリストから、shiyoToFileをクリックします。
  そうすると、上も、ボタン1_ClickからshiyoToFileと書き直されますので
  そしたらOKボタンをクリックします(するとダイアログが消えます)

12.ボタン1とか、ボタンに書かれている文字のところをクリックすると
   ボタンの中にカーソルがいきますので、そこを

      ドキュメント作成

   に書き直します(この12の作業はしなくても問題ないです)。

13.ここで、「ファイル」→「上書き保存」を選択し
   (または、フロッピーアイコンをクリックし)
   いったん、保存させましょう。

14.一度、どこでもいいですから、セルをクリックしてください。
   その後、ボタンの上にマウスポインタを持っていき、クリックします。

15.そうすると、「終わりました」というダイアログが出るので、
   それをクリックすると
   マイドキュメントの下に、out1.txtというファイルができてると思います。




 そうならなかったら、どこかおかしいです。
 雛形とExcelファイルがマイドキュメントの下にないと、おかしいときがあります
 その場合、Sub shiyoToFile()の以下の行、

   Call makefile("hina1.txt", "画面一覧", "out1.txt")

  のところのhina1.txtをフルパスにすれば、大丈夫だと思います。
  同様に、out1.txtが見つからないときは、書き出したいパスを、
  out1.txtのところに、フルパスで指定してください。




 このシリーズの次回は、マクロの内容説明です。




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

ソフトバンク、26日のサプライズは、端末が0円ってこと?

2006-10-26 14:25:55 | Weblog

結局、事実上、端末が0円になるということなのだろうか?
で、それが、今日のサプライズなんだろうか。。。

ここのニュース
ソフトバンク、「新スーパーボーナス」は頭金0円の分割払い
http://k-tai.impress.co.jp/cda/article/news_toppage/31686.html



によると、昨日書いた、「新スーパーボーナス」、結局、間違いで、
(わかっていなかった ^^;)
詳細は、こうなるようだ。




まず、昨日書いた話。

現在のスーパーボーナスでは、

・購入時に頭金を払う
・残りを24分割し
・継続なら、割引で事実上0円、ただし、解約時には、分割した、お金を払う

というものだった。これは、正しい。




で、今回の新ボーナスプランは、

(1)頭金0円、要りません

(2)残りを分割払い、ただし、特別割引はあって、割り引いてくれる
   →注意!ハイエンド機の場合、分割払い-特別割引>0
    つまり、負担金がでる機種もある(出ない機種もあるみたい)
   →さらに注意:ただし、ポイントが活用できて、それを活用すると
    やっぱり、ユーザー負担は事実上0になるそーな
    (と、上記記事に書いてある)

(3)解約の場合は、残りの分割金を一括返済する。
   なので、お金を払うけど、その場で、清算するので、後は関係ない
   一方機種変更は、負担金がいろいろ変わって、よくわかんない、
   複雑だ。。。




 というわけで、頭金が0円ですぐに持ち帰れて、ずーっと使い続ければ、
結局端末は0円っていうことになる。。。

 ちょっとまてよ、頭金0円なら、街中で、配ってもOKってことに
ならないか(^^;)

。。。それはないって(^^;)!


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

類似ブログを自動検索 KDDI研

2006-10-26 12:39:53 | Weblog

ここのニュース
類似ブログを自動検索 KDDI研、2年以内に実用化
http://headlines.yahoo.co.jp/hl?a=20061026-00000002-fsi-bus_all


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

 インターネット上に個人が開設しているブログ(日記風の簡易型サイト)などを総合的に分析し、類似するブログ開設者を自動検索する技術を開発した。この技術を使えば、興味や趣向、性格的に似たブログをネット上から検索、抽出でき、ブログ開設者同士の交流促進や閲覧数拡大につながりそうだ。


だそうな。しくみは


 新技術は、ブログに記された文章の娯楽度や芸術度、教育度、科学度、政治度、感情度といった14の項目から全体を分析、それぞれの要素を数値化し、その数値の分布が類似しているブログを抽出する。

 さまざまな分類辞書を活用し、文章自体の内容を総合的に判断することで、文章中のキーワードなどに左右されず、全体像が類似したブログを探すことが可能になったという。


なんだって(^^)

ほー。これができれば、おもしろそう。。。
こーいうのを、情報大航海でやれば、よかったのに。。

P.S この方法なら、そのうち、ネカマ度、アレゲ度とか、さらに違った、いろんな項目を総合判定するっていう方法もでてきそう。。いろいろ、応用、多そうですね!


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

予想外割のソフトバンク間のメール無料って、ケータイアドレスポータビリティ使ってもOK?

2006-10-26 09:18:39 | Weblog

 ソフトバンクモバイルの予想外割って、ソフトバンク間のメールも無料っていってるじゃないですか?

 そこで、疑問なんですけど、最近ケータイアドレスポータビリティってありますよね。

 MNPを単純にやるとケータイアドレスが変わってしまうけど、このケータイアドレスポータビリティをすると、キャリアを変えてもメールアドレスが変わらないというもの。

 で、そーすると、たぶん、それを利用して、DocomoやauからMNPで来た人は、メールアドレス、YAHOO!ケータイの標準的なカタチとは違ってくると思うんだけど、その人から送られてきても、ソフトバンクは、ちゃんと「うん、これは、アドレス違うけど、ソフトバンクから来た人だ!」って認識して、通話料無料にしてくれるんだよねえ。。

 きっと。。。そーなのかなあ。。どーなのかなあ。。
 

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