fc2ブログ

C++/CLIフォームアプリの怪

 今まで気付かなかったのですが、C++/CLIでフォームアプリを作成していて、気持ち悪いと思っている内容(私のPC環境だけ??)をお話します。

 最近、Visual Studio 2015 Community Update3を用いて、プロジェクトを読み込んだ際に、以下のエラーが出てギョッとしたことが始まりです。trouble160716.png
 今まで出ていなかったので何でだろう?と思いながら、ネットでその関連記事を探しているのですが、明解で私の理解できる回答にまだ出会っていません。

 このエラーが出たときは、このメッセージ(MainForm.h [デザイン])をX印でいったん消して、再度、ソリューションエクスプローラのMainForm.hをクリックすることで、以下の正常なフォームが出てきます。その後、普通にコーディングできるのですが、非常に気持ち悪いですね。no_trouble160716.png
 その後、さらに気持ち悪いことに、Visual Studioを終了させる際の編集タブが、フォーム(MainForm.h)でない時には、このエラーが出ないことが分かりました。
例えば、ImageProc.cppを編集・保存をした後にVisual Studioを終了させ、プロジェクトを再読み込みした時には、エラーが出ませんでした。つまり、フォームを編集・保存した直後に、Visual Studioを終了させて、プロジェクトを再読み込みをした際に、エラーが発生しました。

Visual Studio側の不具合なのか、私のPCの環境だからそうなっているのかは、よく分かりませんが、「C++/CLIの怪」なのかもしれません。引き続き、原因を調べてみようと思います。
スポンサーサイト



Windows 32bit環境にOpenCV 3.1をセットアップする

 Windows7(32bit)環境にVisual Studio 2015でOpenCV 3.1をセットアップすることがあり、難儀したので、その備忘録です。自宅のPCは、Windows10(64bit)環境なので、OpenCV 3.1を苦労もなくセットアップできましたが、32bit環境になるだけですんなりと行かないものですね。

 セットアップする環境は、以下の通り。
   OpenCV 3.1
   Windows7 Professional 32bit
   CMake 3.5.2
   Microsoft Visual Studio Community 2015 Update3
 
① OpenCV 3.1をサイトからダウンロードして、C:\ドライブに解凍して、フォルダ名をopencv310にリネームしました。
② 次に、CMakeを起動させ、以下のフォルダ設定をしました。
   Where is the source code: c:\opencv310\sources
   Where to build the binaries: c:\opencv310\build
➂ "configure"ボタンを押して、コンパイラの設定を"Visual Studio 14 2015"、"Use default native compilers"にしました。

 CMakeが実行されると早速のエラーです。エラーメッセージは"Error in configuration process, project files may be invalid."とのこと。エラーの詳細を確認すると、FFMPEGに関するものでした。
 今回は、動画変換等を行わないので、”WITH_FFMPEG"のチェックを外しました。同時にCUDAも使用しないので、"WITH_CUDA"のチェックも外しました。

④ 再度、"configure"ボタンを押しましたが、またまたエラー。今度は、Intel IPPのサブセットであるIPPICV関するものでした。結局、”WITH_IPP”もチェックを外しました。

⑤ 三度目の正直で、"configure"ボタンを押しました。今度はエラーは出ませんでした。ただ、この時CMakeの画面は赤色のままだったので、再度、"configure"ボタンを押しました。これで、画面が白色になりました。”Generate"ボタンを押して、何とかOpenCV.slnを作成できました。

⑥ Visual Studio 2015で、バッチビルドからDebug/Releaseの個々ALL_BUILDを選択し、ビルドを実行しました。無事、ビルドも成功しました。プログラム作成後の動作確認もOKでした。

 PCの環境が変わるとCMakeの設定も当然のことながら変わるんですね。最新のライブラリは、使用環境として、ハードウェアも新しいものでそれなりのスペックを要求されているので、古いOSやPCで使う場合は要注意ですね。

統計解析ソフトRを使う(2)

 今回は、RSQLiteのデータベースからデータを読み込み、基本的な解析を行います。 まず、SQLiteのデータベースを使えるようにするため、"RSQLite"のパッケージをインストールします。操作の途中でパッケージのダウンロード先(CRANのミラーサイト)を指定するように聞かれましたので、Tokyoを指定しました。

> install.packages("RSQLite")
install.packages("RSQLite") で警告がありました:
'lib = "C:/Program Files/R/R-3.3.1/library"' は書き込み可能ではありません
--- このセッションで使うために、CRAN のミラーサイトを選んでください ---
依存対象 (dependency) ‘DBI’ もインストールします

URL 'https://cran.ism.ac.jp/bin/windows/contrib/3.3/DBI_0.4-1.zip' を試しています
Content type 'application/zip' length 207665 bytes (202 KB)
downloaded 202 KB

URL 'https://cran.ism.ac.jp/bin/windows/contrib/3.3/RSQLite_1.0.0.zip' を試しています
Content type 'application/zip' length 1264262 bytes (1.2 MB)
downloaded 1.2 MB

パッケージ ‘DBI’ は無事に展開され、MD5 サムもチェックされました
パッケージ ‘RSQLite’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\Users\xxxxxx\AppData\Local\Temp\Rtmp6z9pcc\downloaded_packages
無事にダウンロードされました。次にダウンロードした"RSQLite"パッケージを読み込みます。

> library(RSQLite)
要求されたパッケージ DBI をロード中です
以下、データベース”walkdata.db"を読み込む操作です。このデータベースはテーブル名walkdataを持ち、date、week、total_calory、activity、weight、step、PW、JOG、km、Exの10個のフィールドを持っています。これは、私が日々身に着けているYAMASA製の活動量計MC-500のデータです。かれこれ、3年半ぐらいデータが入っています。

> drv<-dbDriver("SQLite") #"SQLite"のデータベースドライバをロードする
> con<-dbConnect(drv,dbname="walkdata.db") #データベースに接続する
> rs=dbGetQuery(con,"SELECT * from walkdata;") #クエリ送信(すべてのフィールドを取得
取得したデータを表示させると以下の通り。

> print(rs)
date week total_calory activity weight step PW JOG km Ex
1 130216 Sat 2094.5 287.6 5.20 2002 789 58 1.50 0.40
2 130217 Sun 2450.6 608.4 51.50 9016 8249 0 6.73 4.40
3 130218 Mon 2225.7 405.8 24.60 4881 3942 0 3.64 2.10
...中略...
1223 160701 Fri 2340.9 546.1 45.90 8800 7261 83 6.62 3.90
1224 160702 Sat 2450.6 644.9 61.70 11178 9874 0 8.40 5.20
1225 160703 Sun 2324.5 531.3 45.60 8159 7298 0 6.13 3.90>
問題なく取り込めました。
次に膨大なデータからの抽出です。先頭からのデータを取得する場合はhead関数、末尾からのデータを取得する場合はtail関数を用います。

> head(rs,n=10) #先頭から10データ取得
date week total_calory activity weight step PW JOG km Ex
1 130216 Sat 2094.5 287.6 5.2 2002 789 58 1.50 0.4
2 130217 Sun 2450.6 608.4 51.5 9016 8249 0 6.73 4.4
3 130218 Mon 2225.7 405.8 24.6 4881 3942 0 3.64 2.1
...中略...
8 130223 Sat 2084.1 278.2 8.9 2541 1434 0 1.89 0.7
9 130224 Sun 2034.1 233.2 5.5 1648 835 56 1.24 0.5
10 130225 Mon 2395.9 559.1 48.1 8896 7710 0 6.64 4.1
> tail(rs,10) #末尾から10データ取得
date week total_calory activity weight step PW JOG km Ex
1216 160624 Fri 2589.0 769.6 79.7 14083 12678 82 10.59 6.8
1217 160625 Sat 1954.1 197.6 6.1 1662 980 0 1.24 0.5
1218 160626 Sun 2616.8 794.6 65.2 11720 9934 509 8.92 5.7
...中略...
1223 160701 Fri 2340.9 546.1 45.9 8800 7261 83 6.62 3.9
1224 160702 Sat 2450.6 644.9 61.7 11178 9874 0 8.40 5.2
1225 160703 Sun 2324.5 531.3 45.6 8159 7298 0 6.13 3.9
条件付きの抽出はsubset関数を用います。

> xx<-subset(rs, total_calory > 2700) #total_caloryが2700より大きいレコードを抽出
> print(xx)
date week total_calory activity weight step PW JOG km Ex
99 130525 Sat 2717.2 848.6 62.8 12268 8056 1996 9.82 6.5
192 130826 Mon 2818.8 940.1 76.1 14674 12154 28 10.96 6.4
398 140320 Thu 2730.9 860.9 77.5 14196 12026 384 10.67 6.8
...中略...
1212 160620 Mon 2876.8 1028.9 107.7 19353 17129 108 14.57 9.2
1222 160630 Thu 2803.0 962.4 93.6 17058 14960 26 12.83 8.0
ここで、16年3月と16年6月のデータをそれぞれ抽出し、比較してみます。

> data1603 <- subset(rs, (date >= 160301) & (date <= 160331))
> data1603
date week total_calory activity weight step PW JOG km Ex
1101 160301 Tue 2293.8 503.6 42.6 8126 6715 110 6.13 3.7
1102 160302 Wed 2175.3 396.9 31.9 5931 5104 0 4.46 2.7
1103 160303 Thu 2212.2 430.1 38.1 7218 5999 105 5.43 3.3
...中略...
1129 160329 Tue 2227.4 443.8 36.0 6792 5771 0 5.10 3.1
1130 160330 Wed 2301.1 510.2 41.8 8219 6666 27 6.18 3.6
1131 160331 Thu 2241.2 456.2 41.1 7822 6496 83 5.89 3.5
>
> data1606 <- subset(rs, (date >= 160601) & (date <= 160630))
> data1606
date week total_calory activity weight step PW JOG km Ex
1193 160601 Wed 2641.1 816.5 83.0 14914 13175 108 11.23 7.1
1194 160602 Thu 2500.8 690.1 74.5 13468 11870 58 10.13 6.4
1195 160603 Fri 2236.6 452.1 40.2 7939 6369 78 5.97 3.4
...中略...
1220 160628 Tue 2274.3 486.1 39.5 7631 6293 27 5.74 3.3
1221 160629 Wed 2589.1 769.7 76.6 13705 12186 79 10.31 6.6
1222 160630 Thu 2803.0 962.4 93.6 17058 14960 26 12.83 8.0
>
> apply(data1603[,3:10],2,mean) #16年3月の平均演算実行
total_calory activity weight step PW JOG km Ex
2268.400000 480.738710 43.109677 8022.000000 6858.645161 46.741935 6.035161 3.680645
> apply(data1606[,3:10],2,mean) #16年6月の平均演算実行
total_calory activity weight step PW JOG km Ex
2431.290000 627.493333 57.243333 10609.066667 9093.466667 72.300000 7.986000 4.896667
16年3月よりも6月の方が活動量Upです。4月から早朝散歩をしている結果が表れています。ただし、このデータベースにデータはありませんが、本人の体重減少にはさほど効果がないようです・・。

統計解析ソフトRを使う(1)

 複雑な統計解析を行う前に、まずはRの基礎から勉強です。算術演算、比較演算、論理演算の一覧は以下の通りです。R_演算160712また、端末から演算式を入力した結果は以下の通りです。

> 1+2 #加算
[1] 3
> 2*3 #乗算
[1] 6
> 3^3 #累乗
[1] 27
> 5/3 #除算
[1] 1.666667
> 5%/%3 #整数商
[1] 1
> 5%%3 #剰余
[1] 2
> round(2.643,2) #四捨五入して小数以下2桁で表す
[1] 2.64
> round(2.643,0) #四捨五入して小数以下0桁(一の位)で表す
[1] 3
> round(12345,-2) #四捨五入して小数以下-2桁(百の位)で表す
[1] 12300
> trunc(2.13) #小数点以下切り捨てた整数を表す
[1] 2
> trunc(2.67)
[1] 2
> trunc(-2.67)
[1] -2
> floor(3.14) #3.14より小さい最大の整数を表す
[1] 3
> ceiling(2.33) #小数点以下を切り上げた値を表す
[1] 3
> ceiling(2.63)
[1] 3
> sqrt(3) #平方根
[1] 1.732051
> sin(pi/2) #三角関数
[1] 1
> 3>2 #比較演算
[1] TRUE
> 3!=3
[1] FALSE
> !F #論理演算
[1] TRUE
> xor(T,T)
[1] FALSE
基本的な演算のルールは理解できました。次回は、さらに高度?なことにトライしようと思います。

統計解析ソフト開発環境 R をインストールする

 最近の流行を追うわけではありませんが、クラウドコンピューティング、ビッグデータ活用、AIなどに興味があります。アルファ碁の影響でしょうか、AIに関する書籍を最近書店で多く見かけます。便乗出版の感はありますが、素人が理解できるような易しい内容のものはあまりないような気がしています。AIを使うこと自身が「目的」になってはならない、何か目的があって、その「解決手段」としてAIを使うようにしないと効果も出ないような気がします。当たり前のことですが・・。
 今回はAIではなく、データ解析に関するフリーのソフトウェア開発環境のRをインストールしたので、その備忘録です。簡単なデータ解析、統計処理はExcelでやってしまいますが、データが膨大になるとその取り扱いに難儀するものです。専用の統計ソフトでどのようなことができるかに興味があったので、今後調査していきたいと思います。

1.The Comprehensive R Archive Network (CRAN)のホームページからインストーラをダウンロードする。Download R for Windowsをクリックする。R0001_160702.png
2.baseのinstall R for the first timeをクリックする。R0002_160702.png
3.Download R 3.3.1 for Windowsをクリックすると、ダウンロードが始まる。R0003_160702.png
4.DownloadされたR-3.3.1-win.exeをダブルクリックで、インストールを開始する。R0004_160702.png
5.セットアップに使用する言語の選択で、日本語を選択し、OKする。R0005_160702.png
6.セットアップウィザードが開始される。次へボタンを押して進む。R0006_160702.png
7.次へボタンを押して進む。R0007_160702.png
8.インストール先を決めて(今回はデフォルト)、次へボタンを押して進む。R0008_160702.png
9.コンポーネント選択で、必要なコンポーネントを設定し(今回はデフォルト)、次へボタンを押して進む。R0009_160702.png
10.起動オプションで、いいえ(デフォルトのまま)を選択し、次へボタンを押して進む。R0010_160702.png
11.次へボタンを押して進むと、インストールが完了です。R0011_160702.png
12.完了ボタンを押して、セットアップウィザードを終了させます。R0012_160702.png
デスクトップ上には、32bit版と64bit版の2種類のアイコンが作成されていました。R0013_160702.png64bit版のアイコンをダブルクリックすると、無事に起動しました。
R0014_160702.png
次回からは、実際に使ってみての内容をお話しします。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: