ぬの部屋(仮)
nu-no-he-ya
  •   12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
       1234
    567891011
    12131415161718
    19202122232425
    26272829   
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28      
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
    1234567
    891011121314
    15161718192021
    22232425262728
           
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
         12
    3456789
    10111213141516
    17181920212223
    242526272829 
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
        123
    45678910
    11121314151617
    18192021222324
    25262728   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    15161718192021
    293031    
           
         12
    3456789
    10111213141516
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
          1
    2345678
    9101112131415
    16171819202122
    232425262728 
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
  • javaでWebから.htmlを取得する

     

     

    import java.io.IOException;
    import java.net.URL;
    import java.net.HttpURLConnection;
    import java.util.ArrayList;
    import java.util.List;
    import java.io.BufferedInputStream;
    
    public class GetWave
    {
        public static void main( String[] args )
        {
            HttpURLConnection httpURLConnection = null;
            try
            {
    
                URL url = new URL( "https://suzulang.com/" );
    
                httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod( "GET" );
    
                String ContentType = httpURLConnection.getHeaderField("Content-Type") ;
                String[] cts = ContentType.split("[;/= ]");
    /*
    ↑ HTTPレスポンスヘッダのContent-Typeを取得する。
    Content-Type: text/html; charset=shift_jis
    のような形をしているので、各特殊記号とスペースを区切り文字としてsplitして、
    charsetの次に入っているのが文字列と判断。(↓コード)
    ただし、Content-Type: text/html;で終わっている場合もある。
    */
    
                //文字コードの判別
                String CharSet = null;
                for( int i = 0; i < cts.length; i++){
                    if( cts[i].toLowerCase().equals("charset") ){
                        if( i+1 == cts.length ){
                            CharSet = null;
                        }
                        else{
                            CharSet = cts[i+1];
                        }
                    }
                }
                if( CharSet == null ){ //文字コード指定がなかったらとりあえずUTF-8にする
                    CharSet = "UTF-8";
                }
    
    /*
    ただのInputStreamはreadする度に読みに行くので効率が悪いらしい。
    BufferedInputStreamは一度のアクセスで大量のデータを取得する
    htttp://e-class.center.yuge.ac.jp/jdk_docs/ja/api/java/io/BufferedInputStream.html
    */
                BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream() );
    
                List<Byte> alldata = new ArrayList<Byte>();
                //HTML取得
                byte [] buf = new byte[1024*4];
                int readsize;
                while( ( readsize = bis.read(buf) ) >= 0 ){
                    for(int i = 0; i < readsize; i++){
                        alldata.add( buf[i] );
                    }
                }
                
                //バイトの配列に変換
                byte tostr[] = new byte[ alldata.size() ];
                for(int i = 0; i < alldata.size(); i++){
                    tostr[i] = alldata.get(i);
                }
                
    /*
    Stringはコンストラクタで文字コードを指定できる。
    String(byte[] , Charset)の場合、byteの中の文字コードがCharsetであることを示す。結果、
    resultにはUTF-8に変換された文字列が入る。
    */
                //表示
                String result = new String(tostr, CharSet);
                System.out.println(result);
                
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
            finally
            {
                if( httpURLConnection != null )
                {
                    httpURLConnection.disconnect();
                }
            }
            
        }
    } 

     

    コンパイル:

    >javac GetWave.java

    実行

    >java GetWave

     

    参考文献:

    http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000803.html

    なぜ高性能なパソコンを買うのか。

    私のマシンはi7-2066K (3.40GHz) のRAM 8.00GBと、普段使いにはかなりオーバースペック(必要以上に高性能)なんだが、なぜこんな機械を買ったのかという話。

     

    ひとことでいうと、何に使うかがわからないからだ。

    例えば、最近3DCGを始めたんだが、簡単にこんな絵を作れる。

    3dcgsample

     

    ふーんと言う感じだが、実はこれの元は

    blendersample

    こんな感じののっぺらぼーな立体図形だったりする。

    こういうのを"モデル"といって、3DCGではこのような"モデル"を作ってから、モデルの材質(反射するか、何色か等)や、撮影するカメラの位置や光源の位置を決めて、"レンダリング"という作業をすることで最初に挙げたような絵を作り上げる。

     

    このレンダリングという作業では、「モデルに光があったら、青く反射して、後ろは影にして」という計算をひたすらにやって色をつけていくわけだが、リアルに色づけをしようと思ったら大変なことになる。

    なにしろ、現実世界では光は至る所で反射し続けていて、例えば太陽光がアスファルトに当たったら近くの木に反射して、その反射光は人の服に反射して、さらにその反射光は・・・と無限に繰り返される。

    一昔前まではコンピュータでもそんな計算はできなかったので、「光の反射は一回だけ」のようなところで妥協していた。

    ところが最近はコンピュータの処理能力が高くなったので、3DCGのソフトが "物理的に正しい" 光の計算をするようになってきた。

     

    最初に出した画像を描いたのはLuxRenderというフリーソフトなんだが、このソフト、

     

    現実では無限に反射を続けるって?

    だったら無限に計算すればいいじゃない!

     

    という発想で、ユーザーが中止するまで永遠に計算し続ける。

    最初に出した画像は単純なので、1時間くらいかけたら結構綺麗になったが、もっと複雑で大きなシーンなら二日とか三日とかかけないと満足のいく結果が得られない。

    動画ならどれくらいかかるかって?考えたくないね!

     

     

    最初の話に戻るんだが、もし私が低スペックのマシンを買っていたら、「3DCGをやってみたい」と思っても、一日かかっても満足できる絵が描けなくて、つまらなくてやめてしまっていたかもしれない。

    パソコンなんて嫌いだ!メールとYahooニュースだけあればいいんだ!とはっきり言い切れるなら、それに適した機械を購入すれば十分だ。

    だがパソコンというものに何らかの可能性を見いだしているなら、スペックにはちょっと余裕を持って色々試してみるといい。

     

     

     

     

     

     

    OpenGLでポリゴンの表示枚数が少なくなる怪現象

    OpenGLでテクスチャを視線方向に並べてボリュームレンダリングしていたが、256枚ポリゴンを書いているはずなのに、マシンによっては6枚ぐらいしか表示されないという現象が発生した。

    調査したところ、

     

    glOrtho(-m_aspw, m_aspw, -m_asph, m_asph, -1000.0, 1000.0);

     

    となっていたので

     

    glOrtho(-m_aspw, m_aspw, -m_asph, m_asph, -10.0, 10.0);

     

    に書き換えたら直った。もともとそんな遠くまで表示させる必要はなかったのでこれで解決だが、本当に-1000~1000まで必要な場合はどうするのだろう。

    ドングリ2

    昨日のドングリ。発根していなかったもののその後。

    ちょっと数が多かったのでポットという訳にもいかず、一所においておくことにした。

    乾燥すると死んでしまい発芽しないので、土をかぶせ、ある程度の湿度を維持し続けなければならない。

     

    acorn3 acorn2

     

    出荷前ですか?

     

    という状態なんだが、そういえば過去、どこぞの政治家が女性を生む機械に例えて問題になった事件があった。発言しただけであの騒ぎ。

    ドングリ王国があったら死刑確定である

     

    もちろん、この後ちゃんと土はかぶせておいたがそういう問題じゃないよね

     

    “特定記録メール便” というやつ

    なんかたくさんきていた、以下のようなメール。

     

     

    【重要なお知らせ】
    「セントラル調査事務所」様より、下記内容を特定記録メール便にて送信依頼がありましたのでご確認ください。

    【送信内容】
    弊社は調査業務、情報管理及び和解手続き代行等を主とした調査機関でございます。

    本日ご連絡致しましたのは、現在貴方がご契約されている総合コンテンツ提供サービス会社からの再三の通告を放置し、利用料金を長期延滞している事に対して、同社が起訴準備期間に入った事を報告致します。

    この通知を最終通告と致しますので、本日、当社営業時間までにご連絡が無い場合、管轄裁判所から裁判日程を決定する呼出状が発行され、記載期日に指定裁判所へ出廷となります。
    尚、裁判を欠席されますと、相手方の言い分通りの判決が出され、執行官立ち会いのもと、給料、財産や不動産、有価証券等の差押えを含めた強制執行となりますので、ご注意下さい。

    弊社は、今回運営会社様より和解等の最終判断を委託されましたので、双方にとってより良い解決に向かうためのご相談に乗らせて頂きます。本日弊社営業時間までに早急にお電話にてご相談ください。

    早期解決を望まれるお客様から優先にて、弊社もご対応させて頂きます。
    ※時間帯によって繋がりにくい場合がございますので、その際は恐れ入りますが、再度お掛け直し頂きますようお願い致します。
    尚、メールでの返答には対応しておりません。ご了承下さい。

    ~~お問い合わせ先~~
    セントラル調査事務所
    【担当部署】お客様センター
    担当:黒崎・小石川・多田
    【電話番号】03-4589-4505
    【お問い合わせ時間】午後13:00~午後18:30

    以上

    ※本メールは特定記録メール便のサービスとして、メール開封日時の記録及びメール内容の保管を日本デジタル郵便が第三者機関として行っております。
    尚、本メールアドレスへの返信をされましても、特定記録メール便送信専用となりますので、当社では確認及び対応することが出来ません。
    また、依頼者様へメールが転送されることもありませんので、返信はされませんようお願い申し上げます。

     

     

     

    そもそも、見出しと差出人逆だよな?

    見出し: [親展]重要

    差出人:特定記録メール便

     

     

    のほうがまだ違和感ない・・・よな?というか、業者も不景気で大変だとは思うが、

     

    自分とこのメールアドレスぐらい載せろよ!

     

     

    騙す気あんのか!

    meiwakumail

    注:載せないほうが難しいです。念のため

     

     

    ドングリ

    読書をしようと思って森に入ったら、足下にドングリが落ちていたので拾ってきた。

     

    種類を調べようと思ったがよくわからない(http://dongurikorokoro.fc2web.com/miwakekata_m1.html)。典型的なドングリにこんなに種類があるとは。

     

    土の比較的軟らかく湿った位置に落ちていたものうち、何個かは発根していた。

    acorn

     

    来春には葉が生えるだろうから、種類が特定できるだろう。

     

     

     

    メニュー項目に対するイベントを設定する

     

    ui.java

    package fxdemo;
    
    import java.io.File;
    import java.net.URL;
    import javafx.scene.layout.BorderPane;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class ui extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        @Override
        public void start(Stage stage) throws Exception {
            BorderPane root = FXMLLoader.load(getClass().getResource("sample.fxml"));
            Scene scene = new Scene(root);
    
            stage.setTitle("Menu Test");
            stage.setScene(scene);
            stage.show();
        }
    }

     

    sample.fxml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    
    <BorderPane prefHeight="150.0" prefWidth="300.0" 
                xmlns:fx="http://javafx.com/fxml"
                fx:controller="fxdemo.Controller"
                >
        <top>
            <MenuBar>
                <menus>
                    <Menu text="松" >
                        <MenuItem text="五葉松" fx:id="oomine" onAction="#handle_goyou" />
                        <MenuItem text="黒松" fx:id="okutyou" onAction="#handle_kuro" />
                        <MenuItem text="赤松" fx:id="chichibu" onAction="#handle_aka" />
                    </Menu>
                </menus>
            </MenuBar>
        </top>
    </BorderPane>

     

    Controller.java

    package fxdemo;
    
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import java.net.URL;
    import java.util.ResourceBundle;
    import javafx.event.ActionEvent;
    
    public class Controller implements Initializable {
    
    	@FXML
        public void handle_goyou(ActionEvent event) {
        	System.out.println( "五葉松" );
        }
    	@FXML
        public void handle_kuro(ActionEvent event) {
        	System.out.println( "黒松" );
        }
    	@FXML
        public void handle_aka(ActionEvent event) {
        	System.out.println( "赤松" );
        }
    
    	@Override
        public void initialize(URL url, ResourceBundle rb) {
        }
    }

     

     コンパイル

     javac fxdemo\ui.java fxdemo\Controller.java

     

    実行

    java fxdemo.ui

    各メニュー項目をクリックするとコンソールに文字列が表示される

    menu_action_1

    menu_action_2

     

     

     

     

     

     

     

     

     

     

    ウィンドウ上部へメニューを追加

     

    ui.java

    package fxdemo;
    
    import java.io.File;
    import java.net.URL;
    import javafx.scene.layout.BorderPane;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class ui extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        @Override
        public void start(Stage stage) throws Exception {
            BorderPane root = FXMLLoader.load(getClass().getResource("sample.fxml"));
            Scene scene = new Scene(root);
    
            stage.setTitle("Menu Test");
            stage.setScene(scene);
            stage.show();
        }
    }
     

     

    ここではBorderPaneを使っているが、AnchorPaneやPaneでもできないことはない。

    ただし、BorderPane以外を使う場合は以下のfxml内の<top>を外さないとエラーになる

     

    sample.fxml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    
    <BorderPane prefHeight="150.0" prefWidth="300.0" 
                xmlns:fx="http://javafx.com/fxml">
        <top>
            <MenuBar>
                <menus>
                    <Menu text="落葉高木" >
                        <MenuItem text="銀杏" />
                        <Menu text="桜">
                                <Menu text="エドヒガン" >
                                        <MenuItem text="天城吉野" />
                                        <MenuItem text="雨情枝垂" />
                                        <MenuItem text="薄毛大島" />
                                </Menu>
                                <Menu text="チョウジザクラ" >
                                    <MenuItem text="オオミネザクラ" />
                                    <MenuItem text="オクチョウジザクラ" />
                                    <MenuItem text="チチブザクラ" />
                                </Menu>
                        </Menu>
                        <Menu text="松" >
                            <MenuItem text="蝦夷松" />
                            <MenuItem text="唐松" />
                            <MenuItem text="五葉松" />
                        </Menu>
                        <Menu text="梅" />
                    </Menu>
                    <Menu text="落葉低木" />
                </menus>
            </MenuBar>
        </top>
    </BorderPane>

     

    コンパイル

    >javac fxdemo\ui.java

     

    実行

    java fxdemo.ui

     

    javafx_menu

    • トップレベル(落葉高木,落葉低木)はMenuItemを使えない。
    • 銀杏はMenuItemを使っているので次階層を示す三角が表示されない
    • 梅はMenuを使っているので、入れ子にしていないが三角が表示される(中身はない)

     

     

     

    複数の窓を表示

    JavaFXで複数の窓を表示する。

    FXMLとJavaの関連づけ

     

    で示したコードの、Fxml1.javaを以下のように書き換える

    
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    import javafx.stage.Modality;
    
    public class Fxml1 extends Application {
    
    	public static void main(String[] args) {
    		launch(args);
    	}
    
    	public Stage newStage = null;
    	@Override
    	public void start(Stage stage) throws Exception {
    		AnchorPane root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    		Scene scene = new Scene(root);
    
    		stage.setTitle("FXML Test");
    		stage.setScene(scene);
    		stage.show();
    		
    		newStage = new Stage();
    		newStage.initModality(Modality.NONE);
    		newStage.initOwner(stage);
    		
    		newStage.setScene(
    			new Scene(FXMLLoader.load(getClass().getResource("sample.fxml") ) )
    		);
    		newStage.show();
    		
    	}
    }

     

    新しくStageをnewして、setSceneしてshowするだけ。

    途中、initModalityの引数に関しては以下。

    http://docs.oracle.com/javafx/2/api/javafx/stage/Modality.html

    • APPLICATION_MODAL
    • NONE
    • WINDOW_MODAL

    の三つがある。