プロジェクトを作ってみる
さて、
開発環境の構築が完了し、仮想デバイスを作成できたところで・・・
いよいよプロジェクトを作ってみようかと思います!
まずは簡単な「Hellow World」を出力するところまで。
手順は↓コチラです。
こんな感じで、プロジェクトが作成できます♪
Android開発環境構築
久々の更新です(^-^;
今回はAndroidアプリ開発の環境を構築してみます!
手順は↓こんな感じです。
①JDK(Java Development Kit)をインストール
下記URLからJDKをダウンロード&インストールします。
・Java SE Development Kit 7 Downloads
http://www.oracle.com/technetwork/jp/java/javase/downloads/jdk7-downloads-1880260.html
②統合環境構築
下記必要なKitをADT Bundleでまとめてダウンロード&インストールします。
・Eclipse
・SDK(Software Development Kit)
・ADT(Android Development Tools)
http://developer.android.com/sdk/index.html
③Eclipseの日本語化
(1) 下記よりEclipseの日本語化プラグインをダウンロードします。
http://mergedoc.sourceforge.jp/
(2)ダウンロードしたzipファイルを解凍し、ADTがインストールされているフォルダに下記をコピーします。
・features
・plugins
(3)ADTがインストールされているフォルダにあるeclipse.iniファイルを更新します。
iniファイルの最後尾に以下を追記。
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=default.splash -Dfile.encoding=utf-8
④環境構築完了。
以上でAndroidの開発環境ができました♪
ポート開放
自宅にRedmineを立ち上げました(u_u*)
さっそく使ってみると・・・
同一LAN上の別PCからアクセスできなかったε=ε=ε=ε=\(;´□`)/
まぁどうせファイヤーウォールだろうと思い、
80番ポートを開放してみることに( ̄ー ̄)
って・・・・
WindowsServer2008R2のポート開放って、どこでやるんだ(゚д゚)クワッ
Linuxとかなら定義ファイルを書き換えるだけだけど、
Windowsって違うよね;;;
とりあえずググってみると、↓こんなものがw
http://symfoware.blog68.fc2.com/blog-entry-500.html
いあー
助かりました(*´ェ`*)ポョ
80番ポートを開放してみると、
期待通り、同一LAN上の別PCからアクセスできるようになりましたw
めでたし、めでたし(u_u*)
多次元配列の作り方
いまの仕事現場がネット使えない環境で苦戦中(´・ェ・`)ショボーン
オンラインの環境だと遊んじゃうヒトがいるからって理由で、ネット使えないのです。。
おかげさまで仕事の効率がかなりDOWN!!
なんのための制限なのやら・・・・と思ってみたり(^-^;
さて、今回のお題は多次元配列です。
ファイルから読み込んだ n個の項目に対して、それぞれy個のデータをもっているので、
可変配列の中に可変配列を持たなきゃいけない処理を作ってます。
動的に確保するとしたら、こんな感じに書いたら良いかと思いきや・・・NG
DWORD **dwDat = new DWORD[numX][numY];
どうやら new では、1次元配列しか確保できないみたいで、
こんな感じ(実用的な例)に書けば良いらしいです。
ヘッダ
class CMyClass { public : int m_numX; int m_numY; DWORD **m_dwDat; };
ソース(確保)
// alloc CMyClass::CMyAlloc() { m_dwDat = new DWORD*[m_numX]; for( int i=0; i < m_numX; i++ ) { m_dwDat[i] = new DWORD[m_numY]; } }
ソース(解放)
// free CMyClass::CMyFree() { for( int i=0; i < m_numX; i++ ) { delete[] m_dwDat[i]; } delete[] m_dwDat; }
closed環境だと何も調べられず・・・
こんな簡単なことにもかなりの工数を使用してしまった( ゚∀゚)・∵. ケバァッ
基本的なことは、アタマに叩き込んどけ!ってことですかね(^-^;;
新規プロジェクト作成
VisualStudioで新規プロジェクトを作る場合、
毎度毎度お約束のように設定する項目があります。
ヒトそれぞれ好みはあるでしょうけど、
私としては以下のようなものを設定してます。。
新規プロジェクト作成
アプリケーションの種類
・Unicodeライブラリを使用する = UnCheck
⇒文字列を扱うときにTEXTを付けるのがメンドクサイ
・MFCの使用方法 = スタティックライブラリ
⇒共有DLLだと環境依存のアプリになってしまう
ユーザーーインターフェイス機能
・サイズ変更可能 = Check
・最小化可能 = Check
・最大化可能 = Check
すでにプロジェクト作成済みであれば、
rcファイルのダイアログ属性に以下を付加すれば良いです。
・WS_THICKFRAME(サイズ変更可能) ・WS_MINIMIZEBOX(最小化可能) ・WS_MAXIMIZEBOX(最大化可能)
rcファイル定義のご参考
IDD_NEW_PROJECT_DIALOG DIALOGEX 0, 0, 320, 200 STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
ちなみに、ダイアログをリサイズされたくない場合は以下です。
※WS_THICKFRAMEとは排他して使うイメージですかね。
・DS_MODALFRAME
可変長引数
C言語を習い立ての頃は“そういうものなのか”と、
あまり気にしていなかったのではないでしょうか。
しかしながら、自分で独自のAPIなんか作り出すと
疑問が生じてきたりします。
printf()のように、関数に渡す引数が可変なAPIって
どうやってるんだ?!
実は何も不思議なことはなくて、可変長引数として定義してあげれば良いのです♪
[固定引数の場合]
プロトタイプ宣言:
void DebugKotei(int idx, const char *str);
呼び出し側:
DebugKotei(10, "mojiretsu");
[可変引数の場合]
プロトタイプ宣言:
void DebugKahen(const char* format, ...);
呼び出し側:
DebugKahen("number=%d string=%s", 10, "mojiretsu");
DebugKahen("number=%d,%d,%d string=%s,%s", 1, 2, 3, "moji", "retsu");
等々。自由に引数を変えられる。
可変引数をもつ関数の実装
void DebugKahen( const char* format, ... ) { char str[MAX_PATH]; // 作成後の文字列格納先 va_list args; // 引数の取り出し先 va_start( args, format ); // 可変引数にアクセス _vstprintf( str, format, args );// 書式付き出力を書き込む Output(str); // 作成した文字列を出力する }
作成モジュールによって、出力するログの形が変わる場合には重宝します。
同一環境でのみ開発している場合には、あまり恩恵ないかも(^-^;
業務でよく使われる聞きなれない用語
コリメーター
⇒小さなスリットに光を入れて、平行光線を作るためのもの。らしい。。
んー。よく分からん;;
コンダクションクール
⇒熱伝導で冷やすヒートシンクのようなもの。
スパイクノイズ
⇒スイッチをON/OFFするときに、切り替えのタイミングで電気信号が突出した部分のこと。
グラフで見るとヒゲみたいなのがでているのが分かる。
ハンダブリッジ
⇒ハンダが多すぎて、電気回路がショートしている状態。
ハンダでブリッジってことでしょうかね。
ヒステリシス
⇒チカラを加えることで物体が変形し、チカラを抜いた状態でも元の形に戻らない現象。
バネを少し引っ張って、すぐに手を放すと元に戻る。(ヒステリシスではない)
バネをいっぱいいっぱいまで引っ張って手を放すと、バネが伸びた状態で維持される(ヒステリシス)
レティクル
⇒照準器の+のこと。
狙撃銃などで望遠レンズを覗き込むと、中央に+マークがありますよね。
GOMプレイヤの罠
結構いろんなフォーマットにも対応していて、
コーデックもほとんど心配無いGOMプレイヤ。
また、フレームごとに動画を再生することができるプレイヤというのも希少だったりして
とても重宝しています。
しかしながら、この“フレームごとに再生する”機能には罠がありました・・・
60fpsの動画を1フレームごとにキャプチャするときの話。
以下をマクロ化して自動的にフレームごとの静止画を取り込もうと思ったんです。
①GOMプレイヤの静止画をキャプチャ
②アプリで画像保存
③GOMプレイヤで次のフレームを表示
しかしながら、うまくいきませんでした。
10秒の画像を取り込むので、600枚の画像になるとはずなんですが、
なぜか150枚の画像になってしまうんです。
何度やっても同じ。。
手動で1フレームごと見てみると、確かに60fpsあるんです。。
マクロを少し変えて、①を削ってみました。
②→③だけを繰り返してみると、なんと10秒間で600枚になりました。
少しいじって調べてみたところ、
どうやら①を実施すると、静止画のキャプチャと共に“3フレーム先にスキップする”動作が入っていました;;;
GOMプレイヤの仕様なのか不具合なのか分かりませんが。。
”静止画をキャプチャしただけ”のつもりが、実は“フレームも移動していた”ようです。
GOMプレイヤの未知なる能力に、少しだけ無駄な時間を過ごしてしまったのだ。。。