ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

Java のプログラム (26)

2012-03-31 20:59:27 | 暮らし

記事一覧
ソースコードについて

6.4 パラパラ漫画

パラパラ漫画はフリーソフトの Giam 等で容易に作れるので [6-19],教材作成等の目的にはこれで十分ですが(),「パラパラ漫画 アプレット」で検索すると,パラパラ漫画の作り方に関する説明がいくつか見つかります.「パラパラ漫画」では見つかりませんでしたが,[6-25] のプログラムが使い易いと思います.例えば Giam で作成した(右クリックで確認できます)

                

は,[6-25] のサンプルプログラムを真似して次のように作れます(青字は変更部分).

//------------------------------------------
/**
 *
 * @author http://www.javadrive.jp/applet/sample/index1.html
 */
import java.applet.Applet;
import java.awt.Graphics;
//import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.MediaTracker;

public class JDS1 extends Applet implements Runnable{
  Image img[];
  MediaTracker tracker;
  Thread thread = null;
  int picNo;
  Dimension size;
  Image back;
  Graphics buffer;

  public void init(){
    tracker = new MediaTracker(this);
    img = new Image[3];
    for (int i = 0 ; i < 3 ; i++){
      String file = "fig" + (i + 1) + ".gif";
      img[i] = getImage(getCodeBase(), file);
      tracker.addImage(img[i], i);
    }
    picNo = 0;
    size = getSize();
    back = createImage(size.width, size.height);
    buffer = back.getGraphics();
    thread = new Thread(this); thread.start();
  }

  public void start(){
    try {tracker.waitForAll();} catch (InterruptedException e){ }
  }

  public void update(Graphics g){paint(g);}

  public void paint(Graphics g){
    //buffer.setColor(getBackground());
    //buffer.fillRect(0, 0, size.width, size.height);
    buffer.drawImage(img[picNo], 0, 0, this);
    g.drawImage(back, 0, 0, this);
  }

  public void run(){
    while(true){
      picNo += 1; if (picNo >= 3){picNo = 0;}
      repaint();
      try{Thread.sleep(100);}catch (InterruptedException e){ }
    }
  }
}
//------------------------------------------
//parapara.html (全角の不等号は半角にしてください)
HTML><BODY
    applet height=250 width=250 code="JDS1.class"></applet
/BODY></HTML
//------------------------------------------
http://www.hakurei-isl.org/m-miyata/applet/parapara/JDS1.html は実行可能です.
(fig1.gif, fig2.gif, fig3.gif もこのフォルダにあります)

・クラス名は JavaDriveSample1 に由来します.オリジナルを尊重して変数名等も変えていません.
・メディアトラッカーは [6-26] で説明されています.
・NetBeans IDE では「新規 > Applet フォーム」にするとデザイン画面付きのクラスが生成されます.
  デザイン画面の設定に関する部分は消去不能なので,上記のようなプログラムは「Javaクラス」を選びます.
  「ファイルをデバッグ」でアプレットビューアが起動されます.

progJ.pdf は progC.pdf の発展としてデータ構造とイベント駆動を主題にするので,「Java のプログラム」はこれで終り,sys.pdf に戻ります.お付き合い有り難うございました.
※ すみません.気が変わり,XML を勉強したくなりました.(04-04追記)

[6-19] Giam ダウンロードのページ
  http://homepage3.nifty.com/furumizo/giamd.htm
[6-20] 10 ぱらぱら漫画アニメーション
  http://crew-lab.sfc.keio.ac.jp/lectures/2009s_tcafe/html4/index_p3_c10.html
[6-21] 第 6週:アプレットの基本(2) - SFC
  http://web.sfc.keio.ac.jp/~tsaito/1bc/06.html
  6.6 「ぱらぱらマンガ」を表示するアプレット
[6-22] プログラミング課題
  http://www.fumikichan.net/prog/Java/kd030401.jsp
  パラパラ漫画のようにアプレット上に動かすプログラムを作成します。
[6-23] アニメーションの 巻
  http://www.interq.or.jp/snake/koteitan/tips/java/anime/anime.htm
  下記に1つのバグを含むサンプルコードを示します。
[6-24] Applet(アプレット)入門
  http://www.javadrive.jp/applet/
[6-25] Applet(アプレット)入門 > 画像を切り替える
  http://www.javadrive.jp/applet/sample/index1.html
[6-26] Applet(アプレット)入門 > MediaTrackerによる画像読み込み待ち
  http://www.javadrive.jp/applet/image/index5.html
----------------------
[6-27] Swingを使ってみよう
  Swingを使ってみよう - Java GUIプログラミング
  http://www.javadrive.jp/tutorial/
[6-28] Swingを使ってみよう > CardLayoutクラス
  http://www.javadrive.jp/tutorial/cardlayout/
  first(), last(), next(), previous() があり,パラパラ漫画向き.
[6-29] JLayeredPane (Java 2 Platform SE 5.0)
  http://e-class.center.yuge.ac.jp/jdk_docs/ja/api/javax/swing/JLayeredPane.html
  高度なアニメを作るときに便利.[6-12] は表示できなくなりました
 (sun → oracle で英語だけになりましたが,上記サイトで日本語ドキュメントを提供)
[6-30] How to Use Layered Panes(英語)
  http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
   


復興応援国債 (2)

2012-03-29 17:08:18 | 日記
記事一覧
                              家計資産の 55% が現金・預金 [9]

学生諸君向けの補足です --- この記事に限らず,他人の意見を鵜呑みにせず自分で調べ,考えることが肝要!

復興応援国債の初回の募集が明日で終ります.復興国債(通常の個人向け国債と用途が違うだけ)と比べると
  変動10年(第801回)当初3年間 0.05% 4年目以降「基準金利×0.66」
  変動10年(第38回)  「基準金利×0.66」基準金利 0.97%
  固定5年(第26回)    「基準金利-0.05%」基準金利 0.32%
なので,当初3年間は 2011-03-15 のブログで述べた“純”無利子国債に近い“準”無利子国債であると言えます.

Web では資金運用の話が中心で,国債について調べ難いと思いますが,個人向け国債が紙くずになるのはお金より命の心配をする非常事態です [11].祖父母が資金運用にあまり関心が無く,元本の保証だけでよさそうなら個人向け国債 (余裕のある祖父母には復興応援国債) の話をされてはいかがでしょうか.少なくとも犯罪には銀行の保護預かりの方がタンス預金より安全です.インフレに弱いのは定期預金も同じです: [8] の

公的債務残高がこのまま増え続ければ、「本当に返済できるのか?」という不安が高まり、金融機関だって見向きもしなくなる。買い手が現れるまで、国債の金利をどんどん引上げないとならなくなり、ダイナミックな緊縮財政か増税の決断に迫られる。

で生じる元本の価値の低下は個人向け国債の元本保証とは無関係です.眠っている(?)大量の預貯金が活かされるといいですね.
補足: 今のところ基準金利が低くなり適用利率がゼロや負になっても金利の下限は 0.05% です([4] Q.25).金利の下限は見直される可能性はありますが([4] Q.26)負にはならないというのが元本保証です.


[8]
第1回 国の借金「872兆円」!いったい誰が返すの? 2010年4月2日
  http://www.nissay.co.jp/enjoy/keizai/01.html
  海外投資家の保有が増えると、国債市場は海外の政治・経済情勢の影響を強く受けることになる。
[9] 第2回 個人金融資産「1439兆円」! そんなにあるの? 2010年4月2日
  http://www.nissay.co.jp/enjoy/keizai/02.html
  実感により近い数字である中央値は、1世帯あたり500万円。
  ※ 「日本の借金時計」の [3]: 466兆円
[10] 第5回 外貨準備高「100兆円」、何のための準備なの? 2010年7月1日
  http://www.nissay.co.jp/enjoy/keizai/05.html
  これを防ぐために、政府・日銀は市場で外貨を売って円を買ったり・・・
[11] 個人向け国債の魅力とリスク | Money Lifehack
  http://money-lifehack.com/asset-management/267
  日本国債がデフォルトしたら、円の価値もなくなり円建て資産のほとんど・・・
[12] 個人向け国債の信用リスク | OKWave
  http://okwave.jp/qa/q4661855.html
  預貯金は間接的に国債を買っているのと同じ事.
[13] 個人向け国債はボッタクリ商品だ
  http://www.777money.com/tameru/bank_fx/kokusai_dame.html
  この理由は「国が元本での買い取りを保証しているから」
[14] 株メルマガ-買ってはいけない!?個人向け国債
  http://kabukiso.com/manager/vol4.html
  元本は大きく割れるだけでなく、最悪の状態ではなかったことになります・・・
  ※ ???
[15] おカネを刷らないと負ける・・おカネを刷る世界と刷らない日本 ... - 阿修羅
  http://www.asyura2.com/11/hasan72/msg/551.html
  


ストロンチウム

2012-03-28 21:47:21 | 日記
記事一覧  
                             ストロンチウムの測定値 [2]

我々の世代はビキニの水爆実験に関する報道でセシウムよりストロンチウムの方が記憶に残っています.
ストロンチウムの記事が少ない理由がよく分からなかったので [2] は非常に参考になりました.

[1] 汚染水また流出 ストロンチウムも NHKニュース (3月26日 22時39分)
  http://www3.nhk.or.jp/news/html/20120326/t10013985081000.html
  水漏れに備え、「せき」の設置が進められていましたが、一部でまだ完成しておらず、・・・
[2] 武田邦彦 (中部大学): 横浜のストロンチウムと子供の守り方(緊急の2)(2011-10-13)
  http://takedanet.com/2011/10/post_81fe.html
  何から何まで双子の兄弟と言ってよいでしょう。


復興応援国債 (1)

2012-03-21 21:17:52 | 日記

記事一覧

[2]の差し替え: 2012-04-03

 
                                          国債の買取先 [3]

勉強不足でウソを書きました.謹んで訂正します.

  復興応援国債に限らず個人向け国債は財務省が買い取るため,「誰も買い手がつかなかった」ということはない

そうです [3](銀行で確認).中途換金するときに減額される額も利益に比例した値で,速やかに中途換金でき, (インフレによる貨幣価値の下落はあっても)元本は保証されています --- 復興応援国債の利子は 100万円 当たり 0.05万円 ですが,無利子でもよいと思っている人は検討してみませんか [7].非常事態になれば安心とは言えないのはペイオフの1000万円も同様です [2].

[1] 『個人向け復興応援国債』のご案内 : 財務省
  http://www.mof.go.jp/jgbs/individual/kojinmuke/fukkou_ouen/
[2] 【日本の解き方】“個人向け”復興国債が好調なワケ - 政治・社会 - ZAKZAK
  http://www.zakzak.co.jp/society/politics/news/20111211/plt1112110830000-n1.htm
  ※ アクセス不能になっています(一部の人に都合の悪い話でした).(2012-09-23 引用文削除)
[3] 国債投資のメリット
  http://www.koku-sai.com/article/meri.html
[4] 個人向け国債 Q&A(質問)
  http://www.mof.go.jp/jgbs/individual/kojinmuke/main/qa/more.html
  Q10.個人向け国債を保有することができる『個人』とは、どのような者ですか。 A10.・・・自然人
  ※ 外資ファンドは法人を代理人にできないということです--- 運転免許証,健康保険証の類が必要. 
  Q34.中途換金の換金金額は、いつ支払われるのですか。A34 ・・・ 概ね4営業日後
[5] 国債と金利のはなし
  http://club.pep.ne.jp/~nonoyama/KokusaiKinri.htm
  金融機関の説明として 「発行体である日本国の信用状況の悪化等により、元本や利子の支払いが滞ったり、支払不能が生じるリスクがあります。」
  ※ HTMLコピー(). 個人向け国債と通常国債では全然違います[7].
[6] 根拠なき「日銀券ルール」撤廃急げ :イザ!
  http://tamurah.iza.ne.jp/blog/entry/2454372/
[7] 国債 - Wikipedia
  http://ja.wikipedia.org/wiki/%E5%9B%BD%E5%82%B5
  日本のように自国民から自国通貨建てで借金している場合は形式上デフォルトはありえない(ハイパーインフレによる事実上のデフォルトはありえる)。

 

 


Java のプログラム (25)

2012-03-16 23:01:55 | 暮らし

記事一覧
ソースコードについて

6.3 アニメーション

アニメーションのプログラムは多数例示されているので,下図の黒い円周を動かすプログラムの
詳細な説明は省略します.[6-6]の「Swingのペイントのためのガイドライン」の一部しか引用して
いませんので,意味が十分に理解できないときはぜひ全文を読んでください.

・Swingコンポーネントは
  jPanel1(外枠,"Draw2"), jPanel2(描画用), fp(Fig2 < JPanel),
  jButton1("reset"), jButton2("start"), jButton3("stop"),
  jLabel1("dx"), jLabel2("dy"),
  jTextField1(dx 用), jTextField2(dy 用).
・「jPanel2.setDoubleBuffered(true);」は不要([6-6]).
・「fp.repaint(x, y, 100, 100); fp.repaint(fp.x, fp.y, 100, 100);」
  とすると画面にゴミが残ります.

//------------------------------------------
//Draw2.java
package draw2;
import javax.swing.* ;
import java.awt.*;

public class Draw2 extends JApplet implements Runnable {
    Thread th = null;
    Fig2 fp;

    public void init() {
        initComponents();
        getContentPane().setBackground(Color.white);
        fp = new Fig2(); jPanel2.add(fp);
    }

    public void run() {
        int x, y;
        while (th != null) {
            x = fp.x; y = fp.y;
            if(x < -100 || x > 300 || y < -100 || y > 200){
                fp.x = fp.y = 50;
            }else{
                fp.x += fp.dx; fp.y += fp.dy;
            }
            fp.repaint(x-1, y-1, 102, 102);
            fp.repaint(fp.x-1, fp.y-1, 102, 102);
            try{Thread.sleep(100);
            }catch (InterruptedException e) { }
        }
    }

    public void paint(Graphics g){
        fp.paintComponent(g);
    }

/*----------------------------
    @SuppressWarnings("unchecked")
    // editor-fold defaultstate="collapsed" desc="Generated Code"
    ******** デザイン画面による設定の結果 ********
    }// /editor-fold                       
----------------------------*/

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        th = null; fp.x = fp.y = 50;
        fp.dx = Integer.parseInt(jTextField1.getText());
        fp.dy = Integer.parseInt(jTextField2.getText());
        fp.repaint();
    }                                    

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                     
        th = new Thread(this); th.start();
    }                                    

    private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {                                     
        th = null;
    }                                    

    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;

}
//------------------------------------------
//Fig2.java
package draw2;
import javax.swing.* ;
import java.awt.*;

public class Fig2 extends JPanel {
    int x, y, dx, dy;

    public Fig2(){
       setBounds(0, 0, 300, 200);
       setOpaque(false);
        x = y = 50; dx = dy = 0;
    }

    public void paintComponent(Graphics g) {
       super.paintComponent(g);
       g.setColor(Color.yellow);
       g.fillOval(50, 50, 100, 100);
       g.setColor(Color.black);
       g.drawLine(0, 0, 100, 100);
       g.drawOval(x, y, 100, 100);
    }

}
//------------------------------------------
//draw2.html (全角の不等号は半角にしてください)
HTML><BODY
    applet height=250 width=400 code="Draw2.class"></applet
/BODY></HTML
//------------------------------------------

"reset" で (dx, dy) を読み "start" で動かして "stop" で止めたときの表示例:
http://www.hakurei-isl.org/m-miyata/applet/draw2.html (ソースコード


[6-6](=[5-16]再掲) AWTとSwingのペイント(paint)の仕組み
  http://homepage1.nifty.com/algafield/paint.html
  Swingのペイントのためのガイドライン
  1. ・・・Swingのコンポーネントでは、update()は呼び出されません。
  2. ・・・直接、paint()を呼び出してはいけません。 
  3. ・・・引数のあるrepaint()を呼び出して、更新を要する矩形領域を
  6. ・・・opaqueプロパティをtrueにセットすると・・・毎回、自分の領域を背景色で
 10. ・・・すべて、ダブルバッファリングをonにすることを、強力におすすめします。
[6-10] Component (Java Platform SE 6)
  http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Component.html#repaint()
  public void repaint()・・・ 軽量コンポーネントである場合・・・ paint メソッドを
  ・・・。そうでない場合は、update メソッドを・・・
[6-11] 軽量コンポーネント
  http://wisdom.sakura.ne.jp/system/java/awt/Gjava54.html
  コンテナのウィンドウに描画,背景を透過.
[6-12] JLayeredPane (Java 2 Platform SE 5.0)
  http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JLayeredPane.html
----------------------------
[6-13] JAVA Applet のヒント
  http://www.f.waseda.jp/sakas/sakalab/semi.java/applet/javaAnimation.html
  簡易アニメーション,ボタンとテキストフィールド,ダブルバッファ,マルチスレッド
[6-14] グラフィックス(4) -- アニメーション(1) --
  http://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-05/cp-05-12-1.html
[6-15] グラフィックス(5) -- アニメーション(2) --
  http://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-05/cp-05-13-1.html
  停止と再開,画面をクリアしない作図,複数のスレッド
[6-16] アニメーションを作る - Hokusei Gakuen Univ.
  http://www.ipc.hokusei.ac.jp/~z00104/java/anim.html
[6-17] マウス・キーボードから入力する
  http://www.ipc.hokusei.ac.jp/~z00104/java/control.html
[6-18] アニメーションのちらつきをなくしたい
  http://www.geocities.jp/ntaka329/java/faq/ques_anim.html
  ダブルバッファリング.あとはオフスクリーンにいつも通りに