ぬの部屋(仮)
nu-no-he-ya
  •    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
           
  • C++ 勝手にfalseになるboolを作る

    今日は仕事でこんなクラスを作った。

     

    class BOOLatOnce{
    private:
        bool flag;
    public:
        BOOLatOnce(){
            flag = false;
        }
        explicit BOOLatOnce(const bool b){flag = b;}
        BOOLatOnce& operator=(const bool b){flag = b;return *this;}
        operator bool(){
            //評価が行われたら自動でfalseに戻す。
            bool b = flag;
            flag = false;
            return b;
        }
    };

    こいつの使い方は簡単。

    BOOLatOnce bat;

     bat = true; // bat == true

    if( bat ){  // ifの中はtrue

        // ここではすでにbat == false

        /* … */

    }

    普通のboolと違い、一度評価されたら勝手にfalseに戻る

    ソースコードが食中毒にかかったかのようにスマートになること請け合いだ。

     

    後でメンテナンスする人間(一月後の自分含む)が困惑する様子が目に浮かぶ。

     

    十月末の薔薇と銀杏

     

    もう11月になろうかと言うところで薔薇が咲いている。

    さすがにつぼみが開くまでにはかなりかかった。

    本当は赤+黄なのだが、いつも赤が出ない。肥料が悪いのだろうか。

    bara20141029

     

    銀杏のほうは季節にふさわしく紅葉している

    ityou_20141029y

     

     

    が、同じ日に撮影した銀杏。こいつは室内管理なんだが、青々としている。やはり部屋は暖かいのか。暖かいと駄目なのか。

    ityou_20141029g 

    Blenderでテクスチャで面に凹凸をつける

    法線マップ・バンプマップではなく、実際にメッシュの表面に凹凸をつける。

    blendernml0

     

    1.立方体を用意

    blendernml1

     

    2.Tabを押してEditモードに入り、wキーをしてメニューを開く

    Subdivideを繰り返して分割数を増やす

    blendernml2

    blendernml3

    3.Objectモードに戻り、モディファイア[displace]を追加

    blendernml4

     

    4.テクスチャへ行き、Newをクリック

    blendernml5

     

    5.好きなテクスチャを選ぶ

    blendernml6

     

    6.再びDisplaceモディファイアの設定画面へ行き、Textureを選択する。

    Strengthで凹凸の高さを変更できる。

    blendernml7

     

     

    MFC Staticコントロールの枠とセパレータ化について

    MFCで、メニューではなく普通のウィンドウ内にセパレータを置きたい場合、リソースエディタからは、Picture Controlを配置して高さをなくして、Static EdgeプロパティをTrueにすればいい。

     

    sepa

     

    ただこれをソースコードからどうやるかと言う話。

     

    CRect separator   = CRect(10,0,250,4);
    static = new CStatic();
    static->Create( _T(“”) , WS_VISIBLE | WS_CHILD | SS_ETCHEDHORZ , separator , this , ID );

     

    thisはここでは親ウィンドウ。

    IDは整数値。

     

     

     

    とりあえずウィルスセキュリティZEROを勧めておいた

    ☆の旦那が、パソコンのセキュリティソフトの期限が切れそうだが何を入れればいいかと聞いてきたので、とりあえずウィルスセキュリティZEROを挙げておいた。

    自分なら、ZERO使うぐらいならフリーのを使う。

    ただ、フリーの場合、パソコンとの相性が有料ソフトより出やすい印象がある。私がかつてAVASTAVGを使っていた頃は特にトラブルに見舞われた経験はないのだが、☆の旦那のPCではフリーのを入れるとよくフリーズしたりした。あれは使い方が悪いんじゃないか。。。

     

    もう一つ、フリーのセキュリティソフトは、アンチウィルス(対不正プログラム)とファイヤウォール(対不正侵入)が分かれていることが多く、それぞれ別にインストールして面倒を見ないといけない。否、私が面倒を見ないといけない。

    まあOutpostのように両方持っててフリーのもあるにはある。

     

    ☆の旦那は今はちゃんと働いているので、1980円ぐらいなら出してもいいんじゃないかと思う。

    なにしろZEROはOSのサポートが切れるまで更新料が不要だ。ソフト作ってるK7がWin7のサポート終了まであるかどうかのほうが怪しいだろう。あ、SOURCENEXTもか。

     

    まあ☆家の他のパソコンはみんなカスペルスキーを使っていて、そいつの更新が来年四月だというので、それまでのつなぎにはちょうどいい。多分。

    Win7の更新終了は2020年。それまでにPCが増えたとして、とりあえずZEROいれておけば金もかからない。

    メインに使うのはどうかと思うが、保険をかけとくには手頃なソフトかもしれない。

     

     

     

     

     

    電子書籍vs紙

    電子書籍は便利だ。端末だけ持ち歩けば本棚数個分の本を読めるし、暗いところでもバックライトで読めたりする。

    液晶を使ってる電子書籍リーダーはすぐ電池切れになるので論外だが、電子インクを使っている端末ならかなり長持ちするので、かろうじて書籍を名乗ってもいいぐらいではあると思う。

    紙の本が不経済だからと減っていき、変わって電子書籍が普及するとすれば、電子書籍がどんなに本として不十分であろうと、必然的に従来の本に置き換わるだろう。

    問題は電子書籍が、紙の本の欠点によってではなく、電子書籍の魅力によって置き換わることができるかという点だ。

     

    今のままの電子書籍リーダーなら、それは絶対にないと思う。

    なぜかというと電子書籍リーダーは便利だが、便利なだけだからだ。

    紙の本は「媒体+情報」で「本」となるが、電子書籍は「リーダー」と「情報」が分離している。

    言ってみれば本と読書台のような関係になる。

    これがどう関係するかというと、本は一種のコレクションでもあるという事だ。本を読む人間の中には、本棚にずらりと並んでいるところを眺めて満足したりすることが割と重要になる人種がいる。例えば私だ。

    これが電子書籍やパソコンの画面上の文字になってしまったら、はっきり言って興ざめだ。

    もちろん、コレクション性のない本もある。私なら、一過性の雑誌やビジネス本など、ある程度必要に迫られて読むような本には100年たっても愛着などわかないだろうから、データでかまわない。中の情報が大事なだけなので、検索機能が使える電子書籍が圧倒的に有利だ。

    今さらりと愛着という言葉を使ったが、データに愛着を持てるだろうか。あるいは電子書籍リーダーにはどうだろう。

    データには自信がない。例えなくしてもコピーすればいいだけなので、逆にありがたみがないのだ。リーダーは、少なくとも今のままでは無理だ。SONYだのAMAZONだのとメーカーがこれでもかと自己主張している機械で、自分では修理もできない。そのくせ充電ができなくなったら買い換えだ。これが100年使えるんなら大事にしようとも思うが、メーカーの意図はどうあれ使い捨てでは、愛着がわく暇がない。

    データにも端末にも愛着を持てないなら、読書が単なる、情報を取り入れるための作業になってしまう。

     

    JavaFXでタイマー ( Timeline )

    JavaFXでタイマーを使う。

    タイマー処理はanimation関数の中だけ。

    Timeline t = new Timeline( new KeyFrame ( 間隔 , 処理内容 ) );

     

     

    import javafx.application.Application;
    import javafx.stage.Stage;
    import javafx.scene.Group;
    import javafx.scene.shape.Box;
    import javafx.geometry.Point3D;
    import javafx.scene.Scene;
    import javafx.scene.paint.Color;
    import javafx.scene.PerspectiveCamera;
    
    //タイマー用のimport
    import javafx.animation.Timeline;
    import javafx.animation.KeyFrame;
    import javafx.util.Duration;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    
    
    public class jfx3d_anime extends Application {
    
        int i;
        Timeline timeline;
        
        void animation(Box box){
            
            //3D表示に関する記述
            Point3D p3 = new Point3D(1,1,0);
            p3.normalize();
            box.setRotationAxis( p3 );
            
            //タイマーの定義
            timeline = new Timeline(
                new KeyFrame(
                    new Duration(25),//25ミリ秒
                    new EventHandler<ActionEvent>(){
                        @Override
                        public void handle(ActionEvent event){
                            //ここに処理を記述
                            i+=1;
                            box.setRotate(i);
                        }
                    }
                )
            );
            
            //タイマーの開始
            timeline.setCycleCount(Timeline.INDEFINITE);
            timeline.play();
        }
        
        
        
        @Override
        public void start(Stage stage) {
            Group root = new Group();
            
            // 辺の長さが20の立方体
            Box box = new Box(20, 20, 20);
            
            //回転軸を定義
            Point3D rotaxis = new Point3D(0.0, 1.0, 1.0);
            rotaxis.normalize();
            
            //立方体に回転軸と回転角を設定
            box.setRotationAxis( rotaxis );
            box.setRotate(45.0);
            
            root.getChildren().add(box);
    
            //ウィンドウのサイズを指定
            Scene scene = new Scene(root, 600, 600);
            
            //背景色を指定
            scene.setFill(Color.BLACK);
            
            // 透視投影カメラを設定
            PerspectiveCamera camera = new PerspectiveCamera(true);
            
            // カメラの位置を (0, 0, -100) にする
            camera.setTranslateZ(-100.0);
            
            //カメラが写す最近距離と最遠距離を指定
            camera.setFarClip(200);
            camera.setNearClip(50);
            
            scene.setCamera(camera);
            
            stage.setScene(scene);
            stage.setTitle("3Dサンプル");
            
            stage.show();
            
            
            animation(box);
        }
    
        public static void main(String... args) {
            launch(args);
        }
    }

     

    JavaFXで3D 立方体を表示

     

    import javafx.application.Application;
    import javafx.stage.Stage;
    import javafx.scene.Group;
    import javafx.scene.shape.Box;
    import javafx.geometry.Point3D;
    import javafx.scene.Scene;
    import javafx.scene.paint.Color;
    import javafx.scene.PerspectiveCamera;
    
    public class jfx3d extends Application {
    
        int i;
        @Override
        public void start(Stage stage) {
            Group root = new Group();
            
            // 辺の長さが20の立方体
            Box box = new Box(20, 20, 20);
            
            //回転軸を定義
            Point3D rotaxis = new Point3D(0.0, 1.0, 1.0);
            rotaxis.normalize();
            
            //立方体に回転軸と回転角を設定
            box.setRotationAxis( rotaxis );
            box.setRotate(45.0);
            
            root.getChildren().add(box);
    
            //ウィンドウのサイズを指定
            Scene scene = new Scene(root, 600, 600);
            
            //背景色を指定
            scene.setFill(Color.BLACK);
            
            // 透視投影カメラを設定
            PerspectiveCamera camera = new PerspectiveCamera(true);
            
            // カメラの位置を (0, 0, -100) にする
            camera.setTranslateZ(-100.0);
            
            //カメラが写す最近距離と最遠距離を指定
            camera.setFarClip(200);
            camera.setNearClip(50);
            
            scene.setCamera(camera);
            
            stage.setScene(scene);
            stage.setTitle("3Dサンプル");
            
            stage.show();
            
        }
    
        public static void main(String... args) {
            launch(args);
        }
    }

     

    JNA JavaからWin32API

    JNAを使用し、JavaからWin32APIのメッセージボックスを表示する

     

    import com.sun.jna.Native;
    import com.sun.jna.win32.StdCallLibrary;
     
    public class Hello {
        public interface User32 extends StdCallLibrary {
            User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
            int MessageBoxA(int hwnd, byte[] text, byte[] caption, int type);   //①
            int MessageBoxA(int hwnd, String text, String caption, int type);   //②
        }
     
        public static void main(String[] args) {
            User32 user32 = User32.INSTANCE;
        	try{
    	        user32.MessageBoxA(0, "こんにちは".getBytes(), "◎★♪".getBytes(), 0);
    	        user32.MessageBoxA(0, "Hello World", "MessageBox", 0);
        	}
        	catch( Exception e ){
        		
        	}
        }
    }
    

     

    ※全角文字を表示するときは①、半角英数の時は②を使用する。さもないと文字化けする。

     

     

    前準備

    .;C:\dev\JNA\jna.jar;C:\dev\JNA\jna-platform.jar;

    のように、jna.jar,jna-platform.jarをCLASSPATHに追加する。

    ※コンパイル時・実行時に -cpオプションで追加しただけでは不十分な場合がある

     

    コンパイル

    javac Hello.java

     

    実行

    java Hello

     

    薔薇の挿し木

     

    品種にもよるが、バラは丈夫な植物だ。

    綺麗な花を咲かせようとさえしなければ、木自体を維持するのはさして難しくない。

    挿し木も簡単で、最初は全敗するが、慣れると増えすぎて困る。

     

    以下は今年春(確か。昨年冬だったかも?)挿し木した枝なのだが、元気に育っている。育っているのは喜ばしいが、

     

    bara_sasiki_1

    bara_sasiki_2

     

    邪魔だ

     

    なぜ上を向いてくれなかった。なぜそこまで面積を欲する。

     

    いい加減どうしようもなくなったので、どの程度根が生えているのか確認してみることにした。

    てっきりポットの形に土が抜けるくらいびっしりと張っているかと思ったが、以外とそうでもなかった。

     

    bara_ne

     

    さて、再びポットに移してもいいが、結局手に負えなくなるので、どこかに置いてこよう。きっと親切な人が拾ってくれる