ぬの部屋(仮)
nu-no-he-ya
  • 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
           
  • VC++2012で部分的にwarningを無効にする方法

     

    C/C++で警告レベルを高くしていると、意外なところで引っかかる。
    自分で書いたモノならいくらでも直すのだが、他のライブラリや、IDEが勝手に作ったコードなんかの場合できる限り触りたくない。自分の管理下にないコードをいじると、アップデートが入ったとき修正箇所が多くなり大変である。

    よく知られた方法として、

     

    #pragma warning (disable : 4996 )

     

    は特定の警告だけを無視できるが、そうではなく、特定の「箇所」だけに対してそれを行いたい。
    触りたくないから触らないで居ると結局は直せない警告に埋もれて重要な警告を見落とす可能性が出てくる。

     

    以下のコードは、VC++2012で/W4でコンパイルすると、

    warning C4100: 'B' : 引数は関数の本体部で 1 度も参照されません。

    だけが表示される。

     

    #pragma warning(push)
    #pragma warning(disable:4100)
    void function_nouse_arg_A(int A){
    printf("hello world!");
    }
    #pragma warning(pop)
    void function_nouse_arg_B(int B){
    printf("hello world!");
    }

    勿論普通はこんなことは行うべきではない。あくまで、警告に対応できない(すべきでない)合理的理由がある場合にだけ用いるべきだ。

     

     

     

     

     

    獅子は我が子を千尋の谷に落とす

    鳩を飛ばせに行くんです、という曲があって、感覚が正常な人たちはみんな絶賛しているわけだが、私はどうしても納得できない。

     

    http://www.utagoekissa.com/utagoe.php?title=hatowotobaseniyukundesu

     

    考えてほしい。

     

    靴が破れたらはきかえて
    代わりがなければはだしでも
    おなかがすいたらパンを食べ
    なんにもなければがまんして

    ぼくはずんずん行くんです
    道をまっすぐどこまでも
    嵐にあったらひなんして
    熊にあったらうちとって

     

    熊に会ったら避難してはいかんのか。

    なぜ殺す

     

    じゃなくて、なんで鳩を飛ばすだけでこんな大冒険になるんだ?
    鳩だってへんぴな山奥で放されても困るんじゃ無いか。そもそもどうやって連れて行くつもりだろう。
    篭に入れてか?こんな大冒険を篭の中でじっと見ているのか?骨折るぞ。最悪死ぬぞ。

     

    いやそれ以前に、なぜこの鳩は人間に飛ばされなければならなくなったのか。
    怪我をして飛べなくなったのか?だったら拾ったところで放してやるべきだろう。もしやそんな山奥で拾ったのか?だとしたらこの冒険は二度目なんだが、それで歌にするほどの大冒険になるのか。
    それとも人の元で育った鳩だろうか。だったら都会で放しても良さそうなものだが。というか山で生きていけないだろう。まさか獅子が子を千尋の谷に落とすがごとくのスパルタ教育か。なるほど学校で教わるわけだ

     

    考えられる最も納得のいくストーリーはこうだ。つまりこの鳩は異世界の生き物で、時空の裂け目的なところからこちらに迷い込んで蛇ににらまれた蛙のように困惑していたところを主人公が保護して、なんやかやで元の世界に帰るには○月×日の△山頂上に行かなければならないと言うことに・・・・

     

    だめだ。鳩。自力でいけよ、飛べるんだから。

     

    ちなみに、一つわかったことがある。子を谷に落とす獅子は中国の架空の生き物らしい。何にでも疑問を持てば、何かしら新たな知見が得られるということだろう。

    GetHBITMAPはDeleteObjectしないといけないらしい

    アメリカ側の手続きが進んでいなくて先にアパートを追い出されたので☆の家に荷物共々転がり込んでいる。

    ☆もあまりいい顔をしていないが、震災に備えて貯めておいた無駄に高価な粉末青汁とか、真空パック玄米とか、比較的新しい洗濯機とかがただで手に入ったんでなんとか収まっている。賞味期限が切れていることはいわないでおいた方が良さそうである。

    それはさておき、黒猫大和に問い合わせたら荷物30個をヤマト便で送ってくれるというので頼んだら、集配の人がものすごくいやな顔をしていた。というか梱包を自分でするなら引っ越し便使えないといったのはヤマト側なんだが、どうもそんなことはないらしい。受付と現場の認識の乖離が激しい。

     

    さて、四月からの職場の上司との打ち合わせで、VC++2005を使っていることが発覚。でGDIで一生懸命図を書いていて、この人プログラマでもないのに凄いなと思ったんだが、アルファチャンネルをどんなに頑張っても加えられないと嘆いていたので、GDI+使うといいよと教えてあげたら喜んでた。

    で、gdiplusを使うのはいいんだが、コントロール自作してたらDrawImageでちらつくことが発覚し、仕方が無いのでオフスクリーンレンダリングしてAlpaBlendしようと思った。

     

    のだが、問題が発覚した。

    OnPaintの中で以下のコードを走らせる。その際、OnSizingでInvalidateするようにして、マウスパッドを消しゴムで消すようにマウスで振り回しウィンドウサイズを変えていると、だいたい1~2分すると描画が一切されなくなる。

    絶対メモリリーク的な何かがおこってると思ったが、案の定、それを指摘している人がいた。

     

    CPaintDC dc(this); // 描画のデバイス コンテキスト
    RECT rect;
    rect.top = 20;
    rect.left = 40;
    rect.right = 200;
    rect.bottom = 200;
    Gdiplus::Bitmap backbuffer(rect.right, rect.bottom);
    CDC memDC;
    memDC.CreateCompatibleDC(&dc);
    HBITMAP hbmp;
    backbuffer.GetHBITMAP(Gdiplus::Color(0, 0, 0, 0), &hbmp);
    HBITMAP oldbmp = (HBITMAP)memDC.SelectObject(hbmp);
    
    Gdiplus::Graphics g(memDC);
    for (size_t i = 0; i < 10; i++) {
    	Gdiplus::Rect rct(0, i * 50, 50, 50);
    	Gdiplus::SolidBrush brush(Gdiplus::Color(100, 255, 0, 0));
    	g.FillRectangle(&brush, rct);
    }
    dc.BitBlt(0, 0, rect.right, rect.bottom, &memDC, 0, 0, SRCCOPY);
    
    memDC.SelectObject(oldbmp);
    //DeleteObject(hbmp);  ①
    
    CDialogEx::OnPaint();

     

    解決策は最後から三行目、①のコメントを外すこと。

    というか

    https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms536295%28v=vs.85%29.aspx

    説明読むと、

    The Bitmap::GetHBITMAP method creates a Windows Graphics Device Interface (GDI) bitmap from this Bitmap object.

    つまりGDI bitmapを作るっていう関数なので、作ったら破棄しなければいけないのは当たり前だ。

     

     

    とりとめのない記事

    こんばんわ。ぬです。お久しぶりでございます。

    ええ、このたび、私、仕事をさぼっているのがばれたのか、

    アメリカに飛ばされることになりまして

    まあその絡みで、アップル社もソフトバンクもアメリカも嫌いなのに

    ソフトバンクのiPhoneもってアメリカいかにゃならんのですよ

    http://www.softbank.jp/mobile/service/global/america-hodai/

     

    なにこの禁忌のちゃんぽん。

     

    そう思っていたこの頃、中国人留学生から晩飯に招待されて、鍋食べてきました。

    a5a9c1a7-067d-4ce7-9c36-d20de7114ee2

    おいしいですが辛いです。

     

     

    え、何、おまえベジタリアンじゃなかったのかって?

    少し拘りを捨てろと言われてる気がします。

    モラル・ハラスメントの心理構造

    タイトル:モラル・ハラスメントの心理構造

    著者: 加藤諦三

    ページ数:230ページ

     

    この本で扱うモラル・ハラスメントは、「美徳によって他人を支配する」行為を指すという。美徳とは、「人間はみんな仲良く」とか「人を疑ってはいけない」とか「親には感謝するべき」とかそういうものだ。

     

    注意点として、この本、読みやすくはあるのだが、

    ・同じことを何度もいうタイプの文章

    ・とりとめのない文章

    ・学術的なことは載っていない

    という感じなので、知識をつけるための教科書としてはお勧めできない。美徳による支配がどのように行われ、その結果人はどうなってしまうのか、それをざっくりと知りたい場合に読む本だ。

     

    本文には、親子関係からのモラハラを特に重要視しているようで、その例が随所に出てくる。

    P28 喧嘩にならない喧嘩

    いじめを正当化する、それがモラル・ハラスメントである。

    (略)

    とにかくこういう人は、要求の仕方が間接的である。モラル・ハラスメントは美徳による支配だから、喧嘩にならない。

     喧嘩にならない喧嘩がモラル・ハラスメントである。

    「そうですか?」「そうとってしまうのですね」と言われる。喧嘩ができない。

     親が子共に、「好きにしなさい。自分で考えなさい」と言う。しかし、非言語的メッセージとしては、「勉強しなさい」である。

     子供は仕方なく勉強する。すると後で母親に、「遊んでくればよかったのに」と言われる。子供は不満だけれども母親に嚙みつけない。何となく不愉快である。母親は責任を逃れている。

     言葉として「好きにしなさい」と言いながら、非言語的なメッセージとしては「勉強しなさい」である。どっちに転んでも親に責任はない。

    (略)親の偽善である。親がその時その時で立場を変える。だから喧嘩にならない喧嘩しかできない。

     

    P132

    「人間は皆同じだ」という教えは、純粋な人を地獄に堕とす教えである。現実の世の中には質の悪い人もいれば、質のよい人もいる。悪魔から天使までいるのが人間社会である。犬にはこれほどの違いはない。

     それなのに、「人間は皆同じだ」と教えることは、純粋な人に「あなたは悪魔の餌食になれ」と言うのと同じである。断じて人間は同じではない。

    (略)

     搾取タイプの人も相手から取ることしか考えていない。そういう人と「仲良くする」ということは、「あなたは搾取されなさい」ということでしかない。「仲良く」という良識の内容は相手を見ないで言えば、質の悪い人の天国である。

     人間ほど違わない犬でさえも同じことが起きる。五匹の犬が生まれる。そこに何も考慮しないで食事を与える。

     すると気の弱い犬は食べられない。この気の弱い犬に「仲良く」ということは、「あなたは死になさい」ということでしかない。

     「仲良く」という良識は、気の弱い犬を退け、あるいは無視して自分の食べたいものを食べる犬に向かって言うべきことで、五匹の犬皆に言うべきことではない。

     

     

     

     

     


    そういえば311の頃、津波とか原発で混沌としていた時期に、他の地域に逃げる人に対して「自分だけ良ければいいのか」なんて嚙みつく人が非常に多かったが、あれもここでいうモラハラと同種の発想だろう。他人の土地を騙し取って移住するなら確かに自己中だが、危ないから他に行くというだけでどうして自分最優先という発想になるのか理解に苦しんだ。

    むろんモラハラをするサディストが"目立った"のか、それとも人間だれしもそういう側面を持っている、という事なのかは定かではない。

     

     

     

     

     

     

     

     

     

     

     

    Fusion360でファイルの削除をしたい

    ちなみに、Fusion360を触ってみた限り、SolidWorksのほうがずっと好印象なんだけど、SolidWorksに似たインタフェース持ってるDesignSpark Mechanicalがミラーが使えないというとんでもない欠点を抱えているので、やっぱりこっちでいこう。で、Fusion360はデータをクラウドに保存するんだけども、保存したデータを削除する方法がわからなかったのでここに書く

     

     

    つもりだったんだが、

    この記事書くためにFusion360起動したんですよ。そしたらなんか更新入って、日本語化されたじゃないですか。それはまあ設定の問題だろうとして、データパネル上の一覧から右クリック→削除って項目ができた訳で、とどのつまりは

     

    意味ないなこの記事

    fusion360_filedelete3

     

    一応書いておくと、もし上記ができない場合、右上の名前が書いてあるところから[マイ プロファイル]でWebへとんで、左上の[Data]をクリックする。現れた一覧の[○○'s First Project]などをクリックすると、ファイル一覧が出てくる。 ファイル名を右クリックするとDeleteが出てくる。

    fusion360_filedelete4  fusion360_filedelete5  fusion360_filedelete6

     

     

     

     

     

     

    Fusion360をインストールしてみたよ!

    ●プリミティブを配置

    左上の箱の描かれたCREATEボタンをクリックすると、プリミティブ一覧が出てくる。

    クリックすると、配置する面を選択する状態になるので、黄色い三面のどれかをクリック。

    面にドラッグで図を描き終わると、高さ指定ができる

    fusion360_demo1 fusion360_demo2 fusion360_demo3

     

    ●ブーリアン

    配置するときに、Operationを指定すると、ブーリアンができる

    fusion360_demo4 fusion360_demo5

     

    ●面を作る

    立体の面を選択し、CONSTRUCT-Offset Planeを選ぶと、新たに面を作成できる

    立体のエッジを選択し、CONSTRUCT-Plane at Angleを選択すると、自由な角度の面を作成できる

    fusion360_demo6 fusion360_demo7 fusion360_demo8

     

    ●スケッチ

    スケッチはSKETCHの中。

    プリミティブと同じように、描画する面を選択してから描く。

    fusion360_demo9 fusion360_demo10

     

    ●ロフト

    面を沢山作って、そこにスケッチする。

    CREATE-Loftを選択するとつなげられる

    fusion360_demo11 fusion360_demo12

     

    ●スイープ

    スケッチでパスを描画

    CONSTRUCT-Plane Along Pathを選択

    スケッチの端点を選択し、面を作成

    作成した面にスイープの断面になる面を描く

    CONSTRUCT-Sweepを選択。PathとProfileを指定

    fusion360_demo13 fusion360_demo14 fusion360_demo15 fusion360_demo16

     

    ●PATCH

    面だけで、体積を持たない、現実には存在しないオブジェクト。

    一番左上のボタンを「MODEL」から「PATCH」へ変更。

    普通にスケッチ描いて、CREATE→Extrudeで押し出しすると面ができる

    fusion360_demo17 fusion360_demo18 fusion360_demo19

     

     

    ●面に厚みをつける

    PATCHで面を作ったらMODELに戻ってCREATE→Thickenを選択。

    厚みをつけたい面を選択して矢印で引っ張るか数値を入力する

    fusion360_demo20 fusion360_demo21

     

    ●obj形式で保存

    メッシュに変換してobjで保存できる。

    CREATE→Create Base Featureを選択

    MODFY→Mesh→BRep to Mesh

    メッシュ化したいオブジェクトを選択してOK

    三角形になるので、画面左のツリーの中の「MeshBody1」を右クリック→Save as obj

    fusion360_demo22 fusion360_demo23 fusion360_demo24 fusion360_demo25 fusion360_demo26

    一目でわかるglViewport

    http://headlines.yahoo.co.jp/hl?a=20150903-00000078-mai-bus_all

    <マイナンバー>適用拡大 金融資産監視強化 改正法成立

    10月から国民全員に通知されるマイナンバーを、2018年から任意で預金口座にも適用する改正マイナンバー法が3日の衆院本会議で成立し、マイナンバーの活用範囲が現在決まっている制度より広がり、国による金融資産の監視体制が強化されることになった。

    究極のITオンチが年金情報を流出させたのを見て、こいつらに「個人情報」を管理させても大丈夫だと思う国民はいないと思うのだが、個人情報流出の恐ろしさという意味では、

    マイナンバー占い:

    あなたの名前とマイナンバーを入力してください!

     

    なんていう詐欺に引っかかりそうな人が沢山いるとどこかの誰かが懸念していたので、一応周知しておこう。迂闊に入力するもんじゃない。

     

    コンビニから住民票をとれるというのはメリットではあるのだが、そもそも土日祝日に役所を開けてくれさえすれば不便さの七割ぐらいは解消するので、べつにマイナンバーがうれしいわけではない。何も休むなと言ってるんじゃない。休日空けとけといっているだけである。

    今の日本政府がやろうとしているくらいだからどうせろくな事ではないだろうが、徴兵制、預金封鎖を見据えてのことだともっぱらの噂である。不安に思ったらマイナンバー+上記キーワードで検索してみると良い。

     

     

    さて、普段なんとなく使っているglViewportだが、画面を四分割したくなって混乱したのでここに挙動を整理。

    glViewportは基準点がウィンドウの左下なので、ウィンドウズの左上基準で考えると混乱する。

    あとglClearでの指定はglViewportの範囲内だと思っていたのだが、描画領域全部らしいと初めて知った。何年GLいじってるんだ私は。

     

    glviewport

     

     

     

     

    void wm_Paint(HWND hwnd){
    RECT rect;
    GetClientRect(hwnd,&rect);
    long width = rect.right;
    long height = rect.bottom;
    HDC hdc;
    PAINTSTRUCT ps;
    	hdc = BeginPaint(hwnd , &ps);
    wglMakeCurrent(hdc,hRC);
    glClearColor(0 , 0 , 0 , 0);
    glClear(GL_COLOR_BUFFER_BIT);
    //緑の四角を描画
    glViewport(0,0,width/2,height/2);
    glColor3d(0,1,0);
    glRectd(-0.5,-0.5,0.5,0.5);
    //青の四角を描画
    glViewport(0,height/2,width/2,height/2);
    glColor3d(0,0,1);
    glRectd(-0.5,-0.5,0.5,0.5);
    //赤の四角を描画
    glViewport(width/2,0,width/2,height/2);
    glColor3d(1,0,0);
    glRectd(-0.5,-0.5,0.5,0.5);
    //黄色の四角を描画
    glViewport(width/2,height/2,width/2,height/2);
    glColor3d(1,1,0);
    glRectd(-0.5,-0.5,0.5,0.5);
    glFlush();
    SwapBuffers(hdc);
    wglMakeCurrent(0,0);
    EndPaint(hwnd , &ps);
    }
    

     

     

    極力Windows+C言語でスレッドを使うサンプル

    あれだ。サンプル作れといわれたので即興で書きました。仕事は普段CLIなんで個人的には使う機会すくないです。

     

    #include <stdio.h>
    #include <process.h> //スレッドを使用するために読み込む
    #include <windows.h> //HANDLE型のために読み込む
    //スレッドのサンプル(Windows,C言語, beginthread版)
    #define COUNT 40
    //スレッドとなる関数  戻り値void , 引数void*、呼び出し規約__stdcall指定の関数である必要がある
    unsigned __stdcall Thread_Function(void* p);
    //スレッドに渡す引数を束ねた構造体
    struct arg_forThread{
    HANDLE hMutex;
    int uid;
    int start;
    int end;
    int *pInteger;
    double* pDouble;
    int *pprogress;
    };
    ////////////////////////////////////////////////////////
    //エントリポイント
    ////////////////////////////////////////////////////////
    int main(int argc,char* argv[]){
    //処理内容
    //Integer配列の中身を1/2した結果をDouble配列に格納します。
    int Integer[COUNT]; //元データが入った配列
    double Double[COUNT]; //結果を格納する配列
    HANDLE hMutex; //排他処理用の変数
    HANDLE hThread[2];
    int progress = 0;
    for(int i = 0; i < COUNT; i++){
    		Integer[i] = i;
    }
    //スレッド開始の前に排他処理の設定
    	hMutex = CreateMutex(NULL,FALSE,NULL);
    //引数を設定
    	arg_forThread arg1 = {
    		hMutex,
    0,
    0,
    		COUNT/2-1,
    		Integer,
    		Double,
    &progress
    	};
    //引数を設定
    	arg_forThread arg2 = {
    		hMutex,
    1,
    		COUNT/2,
    		COUNT-1,
    		Integer,
    		Double,
    &progress
    	};
    //スレッド開始
    //スレッドどなる関数へは引数を一つしか渡せないため、void*へキャストした構造体のインスタンスへのポインタを渡す
    	hThread[0] = (HANDLE)_beginthreadex(
    NULL,
    0,
    		Thread_Function , //スレッドとして走らせる関数を指定
    (void*)&arg1, //(Thread_Function)が受け取る引数
    0, //すぐ実行
    NULL
    );
    
    	hThread[1] = (HANDLE)_beginthreadex(
    NULL,
    0,
    		Thread_Function , //スレッドとして走らせる関数を指定
    (void*)&arg2, //(Thread_Function)が受け取る引数
    0, //すぐ実行
    NULL
    );
    //両方のスレッドが終了するまで待ちます。
    //スレッドがすべて終了するまでフリーズすることになります。
    WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
    CloseHandle(hThread[0]);
    CloseHandle(hThread[1]);
    CloseHandle(hMutex);
    getchar(); //結果をゆっくり見るためのgetchar
    return 0;
    }
    unsigned __stdcall Thread_Function(void* p){
    //引数を受け取る
    struct arg_forThread* parg = (arg_forThread*)(p);
    HANDLE hMutex = parg->hMutex;
    int uid = parg->uid;
    int start = parg->start;
    int end = parg->end;
    int* pInteger = parg->pInteger;
    double* pDouble = parg->pDouble;
    int* pprogress = parg->pprogress;
    for(int i = start; i <= end; i++){
    Sleep(uid?7:3); //重い処理を入れないと結果がわかりにくい
    
    		pDouble[i] = pInteger[i]/2.0; //処理本体
    //Mutexは同一領域に書き込まない場合は必要ないので、呼出元でstart-endがダブらないようにしているpDoubleに対してはかける必要がない
    //pprogressが指す先のメモリは同時に変更される可能性があるので、排他処理をしないといけない
    WaitForSingleObject( hMutex , INFINITE ); //他のスレッドから参照できなくする
    (*pprogress)++;
    printf("%s\t%.2lf%%\t%d %lf %d\n",uid?"*":"***",(double)(*pprogress)/COUNT*100,i, pDouble[i],pInteger[i]);
    ReleaseMutex( hMutex );
    }
    return 0;
    }
    

     

    ボクセル勾配の式

    ボリュームレンダリングなどをするときに、結果にシェーディングをかけたい場合、光の反射する角度を計算するためにどうしてもボクセルの法線というものが必要になる。

    そんな情報は元々ないので、以下の式で計算する。要は、自分と自分の隣、または自分の隣同士のボクセルの差を求め、その結果をベクトルの成分とする。iとi+1の差を求めるか、i+1とi-1の差を求めるかは、偉い人たちの間でも議論が分かれるようである。まあ下々の者にとってはどうでも良い。

     

    voxelg