ぬの部屋(仮)
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
           
  • Oracle+Java (JDBC) 環境設定

    OracleデータベースにJavaからアクセスすることを考える。JDBCを使う。

     

    ①JDBCドライバをダウンロードする

    http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html へアクセスし、ojdbc6.jarをダウンロードする

     

    ②プログラム

    import java.sql.*;

    public class jdbctestApp{

        public static void main(String[] args) {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "ユーザ名", "パスワード");
                con.close();
                System.out.println("Success JDBC");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     

    ③適切なクラスパスの設定をする

    方法1 CLASSPATH

    C:\>javac jdbctestApp.java
    C:\>set CLASSPATH=.;C:\dev\ojdbc6.jar
    C:\>java jdbctestApp

     

     

    方法2  -classpath

    C:\>javac jdbctestApp.java

    C:\>java -classpath .;C:\dev\ojdbc6.jar jdbctestApp

     

     

    方法3 jre/lib/ext/

    C:\Program Files\Java\jre8\lib\ext\ojdbc6.jar という具合にobjdbc6.jarを配置する。

     

     

    参考文献:

    http://www.intra-mart.jp/download/product/iap/setup/iap_setup_guide/texts/install/common/jdbc.html#oracle-database

    http://blog.livedoor.jp/eitake0002/archives/34100490.html

    http://itref.fc2web.com/java/jdbc.html#classpath

     

    sqlplusでvarchar2なのにカラム幅が広くとられる問題への対処

    Oracleでsqlplusを使っていると、文字列のカラムの幅が無駄に広くとられる。

    varchar(N)は可変長文字列なのだが、selectするとN文字分の幅が確保されて読みにくい

    column1

     

     

    COLUMNを使って解決する。

    column2

    結果:

    column4

     

     

     

    column3

    線分や面の方程式

    線分Fの方程式

    lineplane0

    面Sの方程式

    lineplane1

    面と線分の交点

    lineplane2

    二次元における線分の交点

    lineplane3

    三次元空間上の二線分の交点(最近点)

    線分の交差(三次元)(改)

    GNU Source HighlighterをCentOSでコンパイルする

    1.yumをアップデートする

    >yum -y update

     

    2.そのままではコンパイラ関係が入っていないのでgccをインストールする

    >yum install gcc-c++

     

    3.BoostのRegexを使っているのでライブラリをインストールする

    >yum install boost boost-devel

     

    4.Doxygenをインストール

    yum -y install doxygen

     

    5.GNU source highlightのソースコードをダウンロード

    ・作業用ディレクトリを作る
    >mkdir srchighlight
    ・作業用ディレクトリにソースコードをダウンロード・展開
    >cd srchighlight
    >wget ftp://ftp.gnu.org/gnu/src-highlite/source-highlight-3.1.7.tar.gz
    >tar xpvf source-highlight-3.1.5.tar.gz

     

    6.環境変数 CC,CXXを設定する

    export CC=gcc
    export CXX=g++

    7.コンパイル

    >cd source-highlight-3.1.7
    >./configure --with-doxygen
    >make

     

    8.インストール

    >make install

    Terragen 3で草原を作る(2)

    0.前回までのあらすじ。

    Untitled

    地面に緑色の点が描かれるようになった。

    草が描かれる範囲を示す白い四角の集合が、カメラに写っていないことがある。そういうときはカメラをバックさせたりすると現在の視点より後ろに見つかる(多分)。

     

    1.[Object] を開き、Pop Grass clump 01/Grass clump 01 を選択する

    Grass Clumpのタグで、草の量と広がりを調整する。

    Number of blades ...草の数

    Clump diameter ...一つの群の密集具合

    Blade length ... 草の長さ

    草はいくつかの塊に密集して生え、それが草の描画範囲に多数出現する。

    従ってNumber of bladesをただ多くしても、一つの点が濃くなるだけだ。

     

    Number of blades : 100000
    Clump diameter: 10

    Untitled100000

     

    Number of blades: 1000000

    Clump diameter: 10

    Untitled1000000

     

    Number of blades: 10000000
    Clump diameter: 10

    Untitled10000000

     

    草の数が足りているなら、Number of bladesではなくClump diameterを大きくすると、草がちゃんと広がる。

    ②改

    Number of blades: 1000000 (変更なし)

    Clump diameter: 50 (前10)

    Untitled_ClumpDiameter50

     

    ただ、Number of bladesが大きくなればなるほど処理が重くなる。

    そこで、地形を緑にすることで草のまばらさをごまかす。

     

    2.[Shaders]から/Base coloursを選択する

    ColourタブのApply high colour、Apply low colourの右側の黒と灰色のボタンをクリックし、緑色系統の色を選択する。

    terragen3_11

     

    Number of blades:300000

    Clump diameter:50

    地形:灰色+黒

    Untitled_300000

     

    地形緑色+黒

    Untitled_300000green

    上図はApply high colourだけを緑色にしたもの。low colourをいじらなくてもうまくいった。

     

    3.[Object]からPop Grass clump 01 を選択し、Scaleタブを開く。

    Minimum scale,Maximum scaleを入力すると、最小、最大各数値分草の背丈がスケーリングされる。

    つまりMaximum scaleに5を入れると最大でBlade length×5の高さになる。

    Untitled_scale5

     

    Number of blades: 300000

    Clump diameter: 50

    Blade length: 0.7

    Minimum scale: 1

    Maximum scale: 5

     

     

    デスバレーの動く石

    アメリカにはデスバレーという観光地があり、そこで干上がった湖底にある石がいつの間にか移動しているという珍現象はわりと有名。

     

    記事では、その謎がついに解けたといって、犯人は氷と風だとしている。

    石は今年2月まで都合5回に渡って動いたのですが、ノリス博士たちがたまたま寄った12月には、レーストラック・プラヤには深さ7cmの水が溜まっていました。夜間に氷が張って、昼になるとその氷が溶けてパキパキと割れ、やがて氷片が絶え間ない風に流されて前にある邪魔な石をズリズリと推し始めたんです。

    氷の厚さは3~5mm、風速は秒速3~5m、その程度でも石は動いたんだそうですよ? これには論文共著者のローレンツ博士も、「思ったより氷が薄いので正直驚いた。僕が思ったような浮力は関係なかったんだね」と話してます。

     

    デスバレーの動く石の実働シーン初撮影、謎氷解…なのか?

    http://www.gizmodo.jp/2014/08/post_15434.html

     

     

     

    Terragen 3で草原を作る(1)

    1.Terragen 3を起動。

     

    2.地形等、何も追加しなくていいのでそのまま[Objects]選択

    terragen3_1

     

    3.[Add Object] - [Population] - [Grass clump] で草を追加

     

    4.Pop Grass clump 01 を選択し、[Distribution]タブの[Area length a]及び[Area length b]をそれぞれ300程度の小さな値にする。

    この値を小さくするのは確認のためで、こんな小ささで描いても普通は得しない。

    terragen3_2

     

    5.Pop Grass clump 01/Grass clump01 の[+]をクリックし、 Default shader 01 を選択する。

    [Colour]タブの中の、[Diffuse colour]の右側の四角をクリックし、緑色(草の色)にする。

    terragen3_3

     

    6.[Renderers]をクリックし、 /Render 01 を選択。 [Render Image]を選択し、とりあえずレンダリングする。

    terragen3_5

    terragen3_4

     

    7.レンダリング結果。

    Untitled

    所々に緑色の島ができている筈だが、できていないかもしれない。

    ちなみにこのレンダリングは途中でやめても次に行くのに差し支えない。

     

    8.プレビューを見ると白い四角がたくさん描かれている。この四角がちりばめられている範囲に草が描かれる。

    terragen3_6

    9.もし四角が描かれていないようなら、右上のアイコンのような物をクリックしてカメラを操作し、高い位置から眺めるような視点にする。

    白い四角が密集している場所があるので、そこにカメラを固定すれば草が描かれた範囲をレンダリングできる

     

    右上の白い物体をクリックし、カメラ操作のボタン類を出す

    terragen3_7

     

    高いところから見下ろすと、四角が密集している領域が見える。

     

    terragen3_8

    この領域は、4の[Area length a]及び[Area length b]で広げられる

    カメラを固定するには、プレビュー画面の左下の一番左側のボタンをクリックする

     

    terragen3_9

     

    見下ろした状態でレンダリングしたところ。縦長に緑色の点がランダム配置されている。

    Untitled

     

    次回は辺り一面緑にする作業。

     

     

    ICUライブラリによる文字コード変換

     

    ファイルを見込み、shift-jisからeuc-jpへ変換する

     

    #include <unicode/ucnv.h>
    #pragma comment(lib, "icuuc.lib")
    void Converter(){
    	
    	std::fstream r("C:\\dev\\shiftjis.txt");
    	std::string src_data;
    	r >> src_data;
    //エラーを受け取る変数
    UErrorCode err = U_ZERO_ERROR;
    //入力・出力の各文字コード
    char srcCode[] = "shift-jis";
    char dstCode[] = "euc-jp";
    //UnicodeStringに渡す文字列の文字コードを指定する
    	UConverter* srccnv = ucnv_open(srcCode, &err);
    //入力された文字の文字コードを内部形式に変換
    	icu::UnicodeString srcstr(src_data.c_str(), src_data.length(), srccnv, err);
    //内部形式の文字コードを目的の文字コードへ変換
    char* dst_data = new char[100];
    	srcstr.extract(0, srcstr.length(), dst_data, dstCode);
    using namespace std;
    	std::fstream w("C:\\dev\\dst.txt", ios::out | ios::binary | ios::trunc);
    	w << dst_data;
    }
    

     

     

     

    MISTでGIFを読んでOpenCVで表示する

     

    OpenCVではgifは扱えない

    MISTでgifの読み込みができる。

     

    #include <Mist/include/mist/mist.h>
    #include <Mist/include/mist/io/gif.h>
    
    #include <OpenCV/include/opencv2/opencv.hpp>
    #include <OpenCV/include/opencv2/highgui/highgui.hpp>
    
    #pragma comment(lib,"OpenCV/lib/x86/vc12/lib/opencv_core249")
    #pragma comment(lib,"OpenCV/lib/x86/vc12/lib/opencv_highgui249.lib")
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	typedef mist::rgb< unsigned char > value_type;
    	typedef mist::array2< value_type > image_type;
    
    	image_type mistimg;
    	if (!mist::read_gif(mistimg, "C:\\test.gif")){
    		return 1;
    	}
    	else{
    		
    		cv::Mat cvimage(mistimg.height(), mistimg.width(), CV_8UC3);
    
    		for (int x = 0; x < mistimg.width(); x++){
    			for (int y = 0; y < mistimg.height(); y++){
    				cv::Vec3b p;
    				p.val[0] = mistimg(x, y).r;
    				p.val[1] = mistimg(x, y).g;
    				p.val[2] = mistimg(x, y).b;
    				cvimage.at<cv::Vec3b>(y, x) = p;
    			}
    		}
    		cv::namedWindow("hoge");
    		cv::imshow("hoge", cvimage);
    		cv::waitKey(0);
    	}
    
    
    	getchar();
    
    	return 0;
    }

     

    mist側:

    画像の読み込み

    bool read_gif(読み込む先のMISTコンテナ , ファイル名)

    Mist/include/mist/io/gif.hをインクルード

    bool mist::read_gif (
     array2< T, Allocator > & image,
     const std::string & filename
    );

    http://mist.murase.m.is.nagoya-u.ac.jp/document/group__image__gif__group.html

     

     

    画素へのアクセス

    operator() ( X座標, Y座標)

    reference mist::array2< T, Allocator >::operator() (
     size_type i,
     size_type j,
     size_type = 0
    );

    i:コンテナ内のX軸方向の位置

     

    jコンテナ内のY軸方向の位置

     

    http://mist.murase.m.is.nagoya-u.ac.jp/document/classmist_1_1array2.html#adaacb132a18b787f30dbc61c00a2a846

     

    mistinstance.operator() ( x , y );

     

     

     

     

     

    C言語ソースコード ある日付と今日の差を求める

    参考:
    http://www1.cts.ne.jp/~clab/hsample/Time/Time5.html
    
    
    #include <time.h>
    
    
    double diffTimeFrom(struct tm& tmlimit){
    
    	//西暦 1970 年1月1日からの秒へ変換
    	time_t ttlimit;
    	ttlimit = mktime(&tmlimit);
    
    	//今日の日付を西暦 1970 年1月1日からの秒で取得
    	time_t now = time(NULL);
    
    	double sa = difftime(ttlimit, now);
    
    	return sa;
    }
    
    tm getDate(const int Year, const int Month, const int Day,const int Hour=0,const int Minutes=0,const int Second=0){
    	struct tm tmlimit;
    
    	tmlimit.tm_sec = Second;       /* 秒 */
    	tmlimit.tm_min = Minutes;       /* 分 */
    	tmlimit.tm_hour = Hour;      /* 時 */
    	tmlimit.tm_mday = Day;      /* 日 */
    	tmlimit.tm_mon = Month-1;       /* 月 ( 1月=0 ) */
    	tmlimit.tm_year = Year-1900;    /* 西暦年 - 1900 */
    	tmlimit.tm_isdst = -1;    /* サマータイムフラグ */
    
    	return tmlimit;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	double result = diffTimeFrom(getDate(2014,8,25));
    
    	printf("%lf", result);
    	getchar();
    
    	return 0;
    }