ぬの部屋(仮)
nu-no-he-ya
  •      12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        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      
         12
    3456789
    10111213141516
    17181920212223
    2425262728  
           
      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
           
       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
           
  • 地球

    たしか地球は https://free3d.com/free-3d-models/earth このあたりから。

    untitled

     

     

    三井住友VISAカードの「マイペイすリボ」とは

    マイペイすリボについて調べたときの話。

    リボ払いについては腐るほど説明があるのに、なぜかマイペイすリボの説明がどこにもなくて、数日間さまよった経験がある。

     

    結論を書くと、

    マイペイすリボ」とは、三井住友VISAカードにおける、「リボ払い」の商品名である

    つまり、

    リボ払いのことを、三井住友VISAカード用語で、「マイペイすリボ」という

     

    らしい。言うまでも無いが、完全に辞書的なものではなく、三井住友VISAカードならではの優遇はある。

    とはいえ、随所で「マイペイすリボはおトク」等と言われているが、所詮はリボ払い。

    年会費やポイントにつられて数千円をケチると、将来利息で数万円も持って行かれる危険がある。

     

    「小銭拾って札束落とす」私は「おトク」という言葉を決して信用しない。釣り針がでかすぎるからだ。

     

     

    C++ std::vector resizeとreserveの違い

    resize()とreserve()の違い。

    一言で言うと、end()の位置が違う。 あと、resizeするとその個数分のコンストラクタが走る。

    それぞれのend()の位置

     

    resize_reserve_0

    end()の位置が違うので、push_backした時の挙動が異なる

    resizeしてからのpush_back

    resize_reserve_2

     

     

     

    reserveしてからのpush_back

    resize_reserve_3

     

    解説:

    vectorはnewのラッパーであるから、newの使い方から考えると分かりやすい。

    resizeにせよreserveにせよ、その分のメモリを確保することに変わりはない。

    これがうれしいときはreserve:

    ・push_backした時に「使用済みの要素の次の要素」に値が入る。リストの末尾に追加していくような感じになる。size()を見れば保存した項目の個数がわかる。

    ・少なくともreserveで指定した回数分のpush_backに関しては、再確保が発生しないことが保障される。

    これがうれしいときはresize:

    ・size()が確保した要素数になるので、普通の配列と同じように使える。

    余談

    動作の違いから、resizeした後にpush_backすることは少ない。

    また逆に、reserveしてから、size()以上の要素に対してoperator[]でアクセスしてはいけない。

    これらのことをやっているコードは、バグである可能性がある(特に後者)

     

    余談だが、こんなことをしてもいいかもしれない。

     

    	std::vector<char> v;
    	v.reserve(100*100); //画像サイズは100*100が相場
    
    	printf("100*100 size:%d capacity %d\n",v.size(),v.capacity() );
    	v.resize(30*30); //実際には30*30に設定された
    	printf("30*30 size:%d capacity %d\n",v.size(),v.capacity() );
    	v.resize(50*50); //わけあって50*50に変更した
    	printf("50*50 size:%d capacity %d\n",v.size(),v.capacity() );
    	v.resize(200*200);//結局200*200も使ってしまった
    	printf("200*200 size:%d capacity %d\n",v.size(),v.capacity() );
    

     

    100*100 size: 0 capacity 10000
    30*30 size: 900 capacity 10000
    50*50 size: 2500 capacity 10000
    200*200 size: 40000 capacity 40000

     

    最初にある程度の大きさをreserveしてcapacityを広げておけば、後のresize時に再確保の可能性が減り、高速化が図れる(かも)。

     

    あと、最初に書いたが、resizeした時はその分のコンストラクタが走る。

     

    #include <vector>
    class CC{
    public:
    	CC(){
    		printf("construct...\n");
    	}
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	std::vector<CC> v;
    	v.reserve(100);
    	v.resize(5);
    	getchar();
    
    	return 0;
    }
    

     

    実行結果:resizeした5個分のコンストラクタが走っている

    construct...
    construct...
    construct...
    construct...
    construct...

    謹賀新年

    年賀状、途中まで作って「あ、干支って戌だ」と気づいてめんどくさくなって諦めました。

    今年末こそはちゃんと年賀状を(落ち着け

    nengajou

    PlantFactory→Blender Cycles

    PlantFactory → Blender Cycles 用

    使い方:

    ①Blenderで、PlantFactoryからfbxエクスポートした植物オブジェクトををShiftキーを押しながら一つ以上選択します。

    ②このスクリプトを走らせます

     

     

    import bpy
    for obj in bpy.context.selected_objects:
        for mat in obj.data.materials:
            thisTree = mat.node_tree;
            thisTreeNodes = mat.node_tree.nodes
            for node in thisTreeNodes:
                if node.type == 'TEX_IMAGE':
                    if 'alpha' in node.image.name:  # ex. 'alpha map.016'
                        alphaTex = node
                        colorout = alphaTex.outputs['Color']
                        alphaout = alphaTex.outputs['Alpha']
                        if alphaout.is_linked:
                            MixNode = alphaout.links[0].to_node
                            MixColor1in = MixNode.inputs['Color1']
                            MixColor2in = MixNode.inputs['Color2']
                            thisTree.links.new( colorout , MixColor1in )
                            thisTree.links.new( alphaout , MixColor2in )
    

     

    物事には、順序がある

    英語の勉強をしようとしていて、英語力アップ!的なサイトを沢山読んだ結果、そもそも単語や熟語の数が足りなければどうしようもないという知見を得た。

     

    日本人の英語に対する感覚が概ね

    1.試験に必要だから渋々やる

    2.I love English!

    3.アルファベット見ると吐き気がする

     

    の三択なので、ちょうどいいサイトが少ないのだろうと勝手に思っている。

     

    lagranlearn2

     

    データ型とは

    クラスをどう説明するか。クラスはデータ型を定義するためのものだが、ではそもそもデータ型とは何なのか、という説明が必要だと思い至った。

    ?データ型とは?

    コンピュータの世界では、すべてが二進数で表される。文字だろうと絵だろうと音楽だろうと、全ては数値化されており、それは二進数で保存され、常に「ただの二進数の塊」として扱われている。しかも、「二進数」とかっこよく言うが、もっとよく見れば二進数とは、「ただの0と1がたくさん並んだもの」でしかない。

    つまり、コンピュータ内では、全てが「ただの0と1の並びで表現されている」のである。この点において、一切の例外はない。

     

    では、その「0と1がたくさん並んだもの」の例を見てみよう

    0101

    これは、ゼロイチゼロイチという、0と1の並びである。これを、「二進数で表現された整数」と考えれば、整数である以上、十進数に直すことも可能だという話になり、「十進数の5」と読むことも可能である。あるいは、「音が鳴っているかどうかの状態の推移」とし、「0を無音、1を有音」と読むと決めれば、0101は、「ピー・ピー」という音を表現しているともとれる。

    全てが0と1の並びであるから、それをどう解釈するかがとても重要になってくるのである。

    では、もう少し高度かつ実用的な例を挙げる。

    11111101

    これは、「素直に」二進数で表現した整数と考えると、253という数値になる。しかしもし、二の補数による負数だと考えれば、-3という数値になる。

    これは「符号付整数です」という条件が与えられているなら、-3が正解で、「符号なし整数です」という条件が与えられているなら、253が正解ということである。どのように見るかによって、答えが変わってくるのだ。

    もっとややこしい例を挙げてみる。

    00111111100000000000000000000000

    これは、1065353216という整数だろうか?何度も言うように、何を表現しているかがわからないと、そうだとも、違うともいえない。そこで条件を与える。「上記の0と1の並びは、浮動小数点で表現された数値である」。

    そうすると、この001111...は、実は1.0という実数を表そうとして並べられたということがわかる。

    ※C言語の32bit浮動小数点は少し複雑だ。一番左側が0ならプラス、1ならマイナスの数であるとし、次の01を8個まとめて指数部とし、残り23個の01を仮数部としている。

     

    以上の例から、「0と1の並びを見ただけでは、それが何を表現したデータなのか、皆目見当がつかない」ことが、わかっていただけたと思う。コンピュータで正常な計算をするには、

    01の並んだ「データ」と共に、その01の並びを意図した通りに解釈する「ルール」の情報が、どうしても必要になるのである。

    「データ型」とは、このルールのことなのだ。「01010101+00101111を計算して!」とコンピュータに頼んでも、「そうはいってもそれって整数?小数?符号は想定するの?そもそもそれ数として扱ってもいいの?」と、わからないことだらけで計算できない。そこで、

    「符号なし整数01010101 + 符号なし整数00101111を計算して!」と、データを扱うルールと共に与えてやって初めて、「10000100」という計算ができるのである。

    例えば、以下のプログラムを見てみる。

    char A = 10;

    これはまずAという変数名に、charという型情報が紐づけられる。今後Aという変数が出てきたら、それは8個の01で表現した整数であるとみなしなさいと、コンパイラに命令しているのである。以後、Aは整数として扱われることが保証され、万が一、浮動小数点演算などが入れば、「プログラマのおまえが整数として扱えと言ったのに、なんで浮動小数点演算をさせようとするんだ?正気か!?」と、コンパイラが警告を発するようになる。

     

    つまり、新たなデータ型を作るとは、ある0と1の並びに対して、どう扱うか?というルールを、新たに作ることなのである。

     

    ?データ型を作ってみる?

    では、実際にルール、つまりデータ型を作ってみる。作るといっても、計算して求める作業ではない。どういう風に計算するかという決め事を作ることなので、一般的に、「データ型を定義する」という表現のほうが好まれる。

    ルールを作るためには、まず「何をしたいか」を明確にしなければならない。ここでは単純に、複素数を計算したいという目的を設定する。

    複素数は、

    3+4i

    のように、二つの整数で表す。(実数にすると二進数での表現が複雑になるから)

    これをどのように0と1で表現するかだ。まず、iや+といった記号を書くことはできない。0と1以外ないからだ。そうすると、並んだ順番で判断するのが最も妥当そうだ。

    00110100

    はて、これがなぜ3+4iになるのか。それは、

    0011 0100

    と、4桁ごとに区切り、左側を実数部、右側を虚数部と表す。そのように今、著者である私が決めたからだ。そして、「足し算を行うときは、実数部ごと、虚数部ごとに行い、4桁の区切りを跨がない」というルールも作っておく。01を解釈するルールを作ったからには、それに対して計算をするときのルールも必要になるのだ。

    それでは、このルールで1+1iを0と1で表現してみよう

    00010001

    では、 (3+4i)  + (1+i1)を計算してみよう

    実数部 虚数部
       0011
    +0001
    --------
      0100
       0100
    +0001
    --------
       0101

    従って、この答えは、
    01000101ということになる

     

    この複素数を表示するときは、

    01000101 という0と1の塊を、右と左に分け、

    ● 0100を4桁の二進数整数とみなし「4」を表示し、

    ● +を表示し、

    ● 0101を4桁の二進数整数とみなし「5」を表示し、

    ● iを表示する

    という手順になる。間違って、コンピュータに「符号なし整数01000101」を表示して!」と命令してしまうと、69という値が出力される。コンピュータは、人間が指示した通りの仕事をするのである。人間の意図は関係ない。

     

    freeglutをCMakeでコンパイルする

    freeglut使おうと思ったがコンパイルではまったのでメモ。

    というか、デバッグ版をコンパイルしないなら何も詰まることはない。強いていうならVisual Studioが本文中C:\dev\直下に作業ディレクトリを作りまくることだ。

    2017/08/27時点で:

    ・CMake-3.9.1-win64-x64
    ・Visual Studio 2017
    ・freeglut 3.0.0

     

    なお、特にこだわりがないなら下記DLページのPrepackaged Releasesの[Martin Payne's Windows binaries(MSVC and MinGW)]からダウンロードすればいいと思う。libもdllも32bit/64bit両方はいっているので何の問題もない。

     

    1. まずDLページ[http://freeglut.sourceforge.net/index.php#download]へ行って、Stable Releaseの一番上 Freeglut 3.0.0 をダウンロードする

     

    2. C:/dev/ にtar.gzを展開。ビルドディレクトリとインストールディレクトリを作る。おおむねこうなる:

    C:\DEV
    ├─freeglut-3.0.0
    │ ├─android
    │ ├─progs
    │ └─src
    ├─install_x64
    ├─install_x86
    ├─sln_x64
    └─sln_x86

     

    3 CMake-guiを起動。

    3.1 ディレクトリ設定
    Where is the source code: → C:/dev/freeglut-3.0.0
    Where to build the binaries: → C:/dev/sln_x86

     

    3.2 コンパイラ設定
    Configure →
    Specify the generator for this project: → Visual Studio 15 2017
    下のオプションは、Use default native compilersで、Finish

     

    3.3 設定変更
    Configureが終わったら、Advancedだけチェックして、
    3.3.1 CMAKE_INSTALL_PREFIX → C:/dev/install_x86

     

    3.4 再度Configure

    3.5 Generate

    3.6 Open Project

     

    4 Visual Studioが起動するので、
    4.1 Debugでfreeglut_staticを右クリックし、プロパティ
    4.2 構成プロパティ → C/C++ → コマンドライン と進み、以下を追加:
    /Fd"freeglut_static.dir\Debug\freeglut_staticd.pdb"

    4.3 ALL_BUILDを右クリックし、ビルド
    4.4 INSTALLを右クリックし、ビルド

     

    解説:
    4.2を行わないと、4.4の時に、
    --------------------------------------------
    コマンド "setlocal
    cmake.exe -DBUILD_TYPE=Debug -P cmake_install.cmake
    if %errorlevel% neq 0 goto :cmEnd
    :cmEnd
    endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
    :cmErrorLevel
    exit /b %1
    :cmDone
    if %errorlevel% neq 0 goto :VCEnd
    :VCEnd" はコード 1 で終了しました。

    プロジェクト "INSTALL.vcxproj" のビルドが終了しました -- 失敗。
    --------------------------------------------

     

    と怒られる。少し上を見ると、

    27>-- Install configuration: "Debug"
    27>-- Installing: C:/dev/install_x86/lib/freeglutd.lib
    27>-- Installing: C:/dev/install_x86/bin/freeglutd.dll
    27>-- Installing: C:/dev/install_x86/bin/freeglutd.pdb
    27>-- Installing: C:/dev/install_x86/lib/freeglut_staticd.lib
    27>CMake Error at cmake_install.cmake:74 (file):
    27> file INSTALL cannot find "C:/dev/sln_x86/lib/Debug/freeglut_staticd.pdb".

     

    と、なんかpdbがないと言われているので作るようにしてやっているのだが、そもそもpdbをはき出すこと自体があれなので、

    CMakeの時点で、
    3.3.2 INSTALL_PDB → チェックを外す

    をしてConfigureすれば、この問題に遭遇しない。

    めぐみさんとべんごしさん

    児童文学(?)作った・・・

     

    めぐみさんとべんごしさん

     

     

    希望が、ほしい

    希望が、ほしい