2013年11月23日土曜日

第1回 xamlの勉強

XAMLのMVVMを利用したパッケージを自分で作成しようと考えてやってみたら、
完全にはまってしまった。
今後に同じ間違いが起きた時に、忘れないように以下に記載しておく。

下記のページをコピーしてアプリを自分で創ろうとしたら、
  http://code.msdn.microsoft.com/windowsdesktop/MVVM-d8261534
名前空間の中にクラス名が見つかりませんというエラーが出て、
解決できなくなった。
なんでだ???と調べ続けて、2時間たって、同ページから正しいソースを
ダウンロードできることに気付いて、以下の2点を修正したら治ったように思う。

 1.名前空間とソリューションプロジェクトの階層を同じにする。
 2. ソリューションの名前とトップの名前空間名は同一にする。

上記二つが上手くいかないスパイラルで解決に非常に時間がかかった。


今回やってみたときに反省点があるので注意!!!
・まず、正しいソースを手に入れよう。
・Webページを写すときは全て同じにするように心がけよう


本当はMVVMの中身をもっと知りたかったのに、その手前で時間がかかりすぎた。。。
MVVMについてはまた今度まとめたい。

2013年8月30日金曜日

第一回Fessサーバ構築

どうも、色々書きすぎな気もしますが、Fessサーバの構築についても備忘録を残しておこうと思います。

それほど、役に立つ情報は少ないかもしれませんが、書きたいから書いてるかんじです!

まず、Linuxサーバで運用しており、環境はCentOSです。
会社内のサーバをFessにしているため、プロキシを経由する必要があります。
また、基本的にコマンドラインのリモートsshでサーバを操作しています。

今日はFessの構築時に、プロキシの設定とネットからデータをダウンロードしてくるコマンドが分かりませんでした。なので、それについて記載します。

プロキシ設定のページは以下を参照
http://oscasierra.net/2011/05/redhat-proxy/

データをダウンロードするためのwgetのページは以下を参照
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230995/

で未だ、上手くダウンロードできません。wget時にDNSエラーが出ます。なんでかな。
リモートデスクトップしなければ、問題ないので、一旦そちらで解決しましたが、ssh接続できないのは不便なので、引き続き解決手法は検討します。設定ファイルに入れたスペースが怪しいと今は思ってます。

以上。
ではでは



追記
ちなみに、fessとは全文検索システムです。サーバ内のファイルを簡単に検索できたりします。最初に書くべきだった。。。
http://fess.sourceforge.jp/ja/

2013年7月30日火曜日

8回目2013/07/30C#勉強

今日の備忘録を書きます。

簡単にインパクトに書きます。

一つ目が、sandCastleの警告の消し方について
XMLを有効化した時に、警告が一杯出て、非常に見にくいので、警告を消す方法を調べました。
警告番号の1591を除去すると、消えます。
参考ページ
http://www.shise.net/wiki/wiki.cgi?page=C%23%A5%E1%A5%E2

2つ目が、sandCastleの名前空間にコメントを入れる方法
新しいファイルを作らないと、できないみたいです。なんでやねんという感じですが、
それ以外方法を見つけられませんでした。
一応メモです。
参考ページ以下
http://blogs.wankuma.com/yamada/archive/2008/12/24/164922.aspx

3つ目がC#のオーバーライド機能について
C#にはC++と違い、オーバーライドに2つの機能があります。
通常のオーバーライドとnewを使ったオーバーライドです。
違いは継承元の関数の扱いになります。オーバーライドだと、常に継承先の関数が呼び出されますが、
newを使うと、継承元のクラス内から呼び出した場合、継承元の関数を使います。
参考ページ
http://moated.wordpress.com/2010/05/03/c-method%E3%81%AEnew-%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89/


以上になります。
何か間違った点などあれば、ご指摘頂ければ、可能な限り修正致します。

ではではー

2013年7月29日月曜日

7回目2013/07/12C#勉強

今日のC#の備忘録を書きます!

今日の学びは1つで、C#の自動ドキュメント作成ツールについてです。
sandcastleというドキュメント作成ツールがVisualStudio2005からよく使われているみたいです。

以下のページを参考に、ひと通りインストール出来るパッケージがあり、それを入れれば、特に問題ありませんでした。
http://d.hatena.ne.jp/tiri_tomato/20120629/1340922468
http://ufcpp.net/study/csharp/st_comment.html

日本語化するためには以下をダウンロードして、フォルダを指定の場所にコピーすれば、終わりです。
https://code.google.com/p/sandcastle-help-file-builder-japanese-help-file-pack/

注意点としては、上記ページ内に書いてますが、VisualStudio内で、XMLドキュメントを生成するようにしないといけません。
プロジェクトごとに全部設定を変えないといけないです。
警告がすごい出るようになるのが、面倒で、今度また調べたい。

以上です。

これだけで、結構見た目が綺麗なドキュメントツールを作ることができます。
興味がある人は是非お試しあれ。


問題点などあるようでしたら、ご指摘頂ければ可能な限り修正いたします。
よろしくお願いします。

2013年7月24日水曜日

今日のC#の備忘録を書きますー。

今日はC#のテキストボックスを使っていて学んだことです。

一つ目が、入力した文字が16進数かどうかをチェックする方法があるかどうかを調べたところ、
余裕でありました。C#良い!
http://msdn.microsoft.com/ja-jp/library/vstudio/zf50za27.aspx

bool result = Int32.TryParse(textBox_addressReadWrite.Text, System.Globalization.NumberStyles.HexNumber, null, out data);
でチェック可能です。返り値がfalseの時は16進数ではありません。

文字列を変更時に、上記のチェックを入れています。
唯、この場合、文字列が空の場合もエラーを出すので、入力文字列が空の場合のスルー処理も必要です。


2つ目が、テキストボックスの桁数制限です。これはC++にもあったと思います。
プロパディから簡単に設定可能です。
http://program571.blog91.fc2.com/blog-entry-52.html


3つ目に、スレッド処理についてです。
シングルスレッドの限界に直面し、スレッドを利用することで、U_Iを自由に動かせるようにしたい!
でやってみましたが、めっちゃ複雑です。全然理解は足りていないですが、ある程度動くようになりました。
まず、デリゲートとイベントの機能を作る必要が合ったのですが、
public delegate void WindowUpdateHandler(List byteData, string readString, string epcString, bool endResponse);
public event WindowUpdateHandler WindowUpdate;
上記のようなものを作るだけで、OKです。
後は、関数の登録して、使用出来ます。正直、想像していた以上に簡単に使えるので、(理解は未だ完全にできていない。。。)使ってみて、覚えるのが良いです!使えるようになると、関数ポインタをすごい簡単に作れることに気づいて、楽しくなります 笑

4つ目に、スレッド化した後のU_Iの操作についてです。理由はわかっていないですが、新規スレッドから、メインスレッドU_Iのユーザーインターフェースコントロールにアクセスすると、以下のようなエラーがでます。
 
 有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール ‘textBox1′ がアクセスされました。

で、Invokeという関数を使うとうまくいくようになりました。
Invokeを使うと、メインスレッドから、呼び出したことになります。
ここで、注意点としては(僕だけかもしれませんが、)メインスレッドが無限ループに入っているとkInvokeは反応しなくなります。でおろおろすることになります。メインスレッドの無限ループは解除してから、Invokeを実装するようにすると、すごい幸せに実装できます。
参考URLは以下です。
http://blog.ume108.mobi/?p=1654
http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html
http://www.ecoop.net/memo/archives/2007-04-10-2.html

以上です。

何か、間違った点などあれば、ご指摘頂ければ、可能な限り対応します。
ではでは

2013年7月19日金曜日

6回目2013/07/19C#勉強

今日の備忘録を書きます。

今日はシリアル通信部を書いてました。


一つ目が、書き込むタイミングについてで、組み込みのレスポンスはめっちゃ早いことがわかりました。
どれくらい早いかというと、メッセージを送って、次の行を実行する前に、返事が帰ってくる位早いです。だから、メッセージを送る前に準備は完全に終わらせていないと失敗します。ぶるぶる。次から気をつけよう。


2つ目が、Release版で落ちる問題が合ったが、Try-Catchが足りないことが原因の一つでした。それで時間をとられた。。。
改めて、入れる癖を付けようと思いました。

今日は、こんなかんじです。
今日は実機を借りて、開発したんですが、すごい開発しやすかった。エミュレータなり、テスト環境を作ることを本気で考えたいです。でも時間がないのが悩ましい。


何か、間違いなどありましたら、ご指摘ください。
可能な範囲で修正致します。
ではではー

2013年7月17日水曜日

5回目2013/07/10C#勉強

今日も学んだことを書いていきます。

今日はバイトデータ、asc2コード、string、バイナリデータの変換手法についてです。

一つ目が、バイトデータ(アスキーコード)からstringデータを取得する手法について
Encoding.AscⅡ.GetStringを使うと、
string asc2String = Encoding.ASCII.GetString(asc2Byte);
上記の形で、stringデータを取得出来ます。

2つ目にバイトデータ(unicodeデータ)からstringデータを取得する手法について
Encoding.Unicode.GetStringを使うと、
string asc2String = Encoding.Unicode.GetString(asc2Byte);
上記の形で、stringデータを取得出来ます。

3つ目に、stringデータ(16進数)から、intデータを取得する手法について
Convert.ToInt32を利用すると、
output = Convert.ToInt32(asc2String, 16);
上記の形で、intデータを取得出来ます。
2つ目の引数が進数を表しているので、データが10進数の場合は、
2つ目の引数を10にします。



次に、try-catch構文について

基本的にはthrowを投げられると、catchが呼び出されます。
catchが呼び出される順序は下の階層から順に呼び出されて、一度、catchに入ると、
更に上の階層のcatchも呼び出したい場合は、もう一度、throwを投げる必要があります。
そのため、catchでエラーが拾えるかどうかはその関数次第になります。
catchに引数データを付けた場合、対応するcatchが呼び出され、引数データがない場合、
全ての例外が取得されます。
以下のページを参考にしています。
http://msdn.microsoft.com/ja-jp/library/0yd65esw(v=vs.80).aspx
http://ufcpp.net/study/csharp/misc_exception.html


dataGridViewのアクセスの仕方について
dataGridView1.Rows[0].Cells[selectedRow].Value.ToString()
上記の書き方で、指定のセルにアクセス可能
dataGridView1.CurrentCell.RowIndex;
上記の書き方(CurrentCell)で、現在、選択されているセルにアクセス可能
(上記のRowIndexでセルの行番号を取得できる。)

今日は以上になります。
何か、指摘事項があれば、可能な限り対応するので、ご指摘ください~。

2013年7月10日水曜日

4回目2013/07/10C#勉強

備忘録です。

アンマネージコードデバッグを有効にしないと、VisualStudioのブレークポイントが使えなくなりました。

以下の設定をすると、使えるようになります。
http://msdn.microsoft.com/ja-jp/library/tdw0c6sf(v=vs.80).aspx

COMポートを使うと、必要になるらしい。。。


ではでは。

2013年7月2日火曜日

3回目2013/07/2C#勉強

今日は備忘録に近いことを書いてます。
今、通信プログラムをC#を利用して書いていますが、その時に、感じたことの備忘録です。

1.
まず、書いててはまったのが、アクセシビリティがありませんのエラーが出て、意味が分からなくて、はまった。。。これは、メソッドを呼び出すときにpublicを付けてないことが原因だった。クラス自体にもpublicをつけておく必要があることに直ぐ気付けなかった。C++をやってた時の感覚だと、直ぐに気付けないかも。

2.
後、これもC++の感覚だが、(今日はそういう記述が多いです。汗 備忘録なので、あしからず)クラスを宣言した時に、必ずnewする必要があることに気付けず、少しはまった。C#ではすべてのクラスは参照型なので、インスタンスを作らないと使えない。


3.
C#で通信のプログラムを書くときにバイナリを扱う必要があるのだが、memoryStreamが便利。自動で、メモリの拡張をしてくれるのが、便利。バイトデータ〈8bitデータ)と文字列やint型の変換は専用のクラスがあるので、それを使えば大丈夫。後、文字のエンコード型には注意すること。エンコードもUTF-16をasc2コードに変換するクラスがある。C#って便利だ。


4.
C#には関数の宣言時にconstを利用した変数の宣言は出来ない。これは注意が必要。ネットで調べたところによると、後から、全体の処理を扱うときに、constが付いていると不便だとかあったが、よくわからんかった。。。
それとは少しが話がずれるが、outという修飾子がある。これは関数の引数で値を返すことを約束していて、引数を初期化する必要が無いことを明示している。逆に言えば、refの時は必ず明示する必要がある。ちなみにrefは関数の引数を参照渡しするときにつける修飾子。

下記みたいな感じで、refを使う。outもrefを置き換える感じ。
public void test(int data, ref string buf);
なんか、文字ばっかりかいているから、少しコードを書いてみた。(あんまり雰囲気が変わらない。。。)


今日はこんな感じでした。
備忘録に書いておきます。

もし、最後まで読まれた方がいらっしゃったら、ありがとうございました。
失礼します~!!!



2013年6月30日日曜日

第2回アンドロイド開発備忘録

今日は書けることが少ない。

まず状況が、前回の
http://www.atmarkit.co.jp/fdotnet/special/monoforandroid/monoforandroid_01.html
のページのインストールを行なっていたが、
ビルドできなくなってしまった。
1回目は確かに出来たのに、2回めが出来ない。
何故だ。。。

で悩み続けて、全部アンインストールして、再インストールして、それでも上手く行かず、javaのバージョンがおかしいのかと、いろいろな
バージョンを入れてみるも治らず
2時間半もつまった。

結論はSDKManagerで、Android SDK Build-toolsをインストールしていなかったからだった。
次からはSDKManager.exeをきちんと確認するようにしよう。。。


ちなみに、順序立てて現象を書くと、環境構築→ビルド→ビルド失敗→エラーが出る。以下のようなエラー

エラー 1 "Aapt" タスクが予期せずに失敗しました。
System.InvalidOperationException: シーケンスに要素が含まれていません
場所 System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
場所 Xamarin.Android.Tasks.BuildToolsUtils.GetBuildToolsPath(String androidSdkDirectory)
場所 Xamarin.Android.Tasks.Aapt.GenerateFullPathToTool()
場所 Microsoft.Build.Utilities.ToolTask.ComputePathToTool()
場所 Microsoft.Build.Utilities.ToolTask.Execute()
場所 Xamarin.Android.Tasks.Aapt.Execute()
場所 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
場所 Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext() AndroidApplication3
http://forums.xamarin.com/discussion/4249/error-msb4018-the-aapt-task-failed-unexpectedly-on-new-android-application-no-code-added/p2
上記のページより、

SDKManagerから、Android SDK Build-toolsをインストールする。

エラー消える。

超うれしい気持ちになる。やったーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。

失礼しました。2時間半の反動が出てしまいました。

以上です。
何か間違いなどあれば、可能な限り対応しますので、ご指摘ください。

追記
インストール時はmono for Androidで入れれば、他に必要な環境は全て自動で入れられているみたい。
いちいち、javaやandroidSDKを入れる必要は無いように見えたのでメモ。
後、私見だが、英語のページを見るときはsolveってかいてあるコメントを重点的に見れば、
答えを見つけやすいことに気がついた。少しだけ賢くなった気がする。





2013年6月29日土曜日

第1回アンドロイド開発の備忘録

どうもこんにちは

アンドロイド開発で調べたことを雑多に書いていきます。
あくまで、備忘録になるので、読みやすくは無いですが、私が学んだことを少しでも公開していきます

今日はVisual Studioでandroid開発が出来ないか調べてみました。一般的には、android開発といえば、Eclipseで開発するのが、主流です。タダだしね。僕も普通はタダの方を選びます。
でも、僕のPCにたまたま、VIsualStudioを入れていたため(へんなたまたまですが)、HDDの容量を下げるために、VIsual Studioを使えんもんかと思い、調べてみました。

結論を言えば、制限のある開発しか出来ません。第1候補としてはNDKを入れると、開発できそうですが、構築が大変な感じがしたので、やめました。第2候補として、monoがパッケージを出してくれていました。monoさん最高ー! タダ、タダで出来るのが、32Kのコードまでになります。それ以上だと、android上に転送できない。。。むむむと思いましたが、今、僕がやりたいことは全然、容量がいらないはずなので、まあ、やってみようと考えました。
というわけで、
http://www.atmarkit.co.jp/fdotnet/special/monoforandroid/monoforandroid_01.html

上記ページを見ながら、インストール中です。

2013年6月28日金曜日

2回目2013/06/21C#勉強

第2回目の勉強結果を記載します。
基本的には
http://www.atmarkit.co.jp/ait/subtop/features/da/dt_csharp_abc2_index.html
のページ利用です。

まず、自分で、C#のコードを書いてみました。
http://blog.kassyi.com/2011/04/c.html

20分くらいでかけました。中身もそれほど、難しくなかったです。
#の便利さを思い知りました。
C++でこんな簡単にGUI作れないよ。。。

書いていて、分からなかったのが、クラスの先頭にあるpartialという文字の意味。
調べてるみると、クラスを複数ファイルに分断できる機能だった。
OSが自動生成してくれるコードとユーザーが自分で書くコードをファイルで分離することが出来る。
すごい!!!InitializeComponentが実装どこに有るのとは思ったら、きちんともう一つの
分断先に実装が書かれていた。ユーザーが意識しないでいいのがありがたいです。



他にhttp://www.atmarkit.co.jp/ait/articles/0209/25/news001.html#cs0601
で変数の自分の考え方が合ってるか確認してみた。
全然違っててめちゃめちゃ悲しい。。。

調べてみると、C#では参照型と値型がある。これはC++でもあるは合ったのだが、
少し概念が違ってるところがあって、間違えた。
一言で言うと、C#では構造体とクラスの違いが値型と参照型だけの違いになる。
構造体はメソッドを持つことができてしまう。逆にクラスは参照型なので、
インスタンスをもたせる場合、基本点にnewが必要!(これはC++も一緒)

そんな感じの勉強でした。
次からは値型と参照型の違いには気をつけよう。。。



以上です!!!
間違いなどあれば、指摘頂ければ可能な限り修正します。
よろしくお願いします

2013年6月26日水曜日

20130626C#、C++/CLI、ネイティブC++のコードの速度について

今日は雑多な書き込みをします。
自分は色々と手を広げて、わかりにくくなるところがあるので、出来る限り絞りますが。。。

1. C#、C++/CLI、ネイティブC++のコードの速度について、
C#は一番遅く、C++/CLI、ネイティブC++のコードは同じくらい早いそうです。
しかし、C++/CLIは書き方によっては遅くなってしまう(ある程度上級者向け)ということと、ネイティブC++だと、
Intel C++ Compilerを使うと、1,2割の最適化が行われることから、速度重視であれば、C++を使うのが良いみたいです。
http://xptn.dtiblog.com/blog-entry-113.html



2.仮想COMポートについて
COMポートは2種類の意味があり、
1.コミュニケーションポート → 通信ポート全般を指す
2. RS232C等のシリアル通信ポートを指す
それがわかりにくくさせていると思う。

仮想COMポートはコミュニケーションポートを使う時に、直接IOを叩かないで済むように、通信しやすくするための仮想上の通信ポートだと思われる。
お互いに仮想COMポートを持つことで、簡単にライブラリを介した通信が出来るようになると考えられる。

以下のページがCOMポート機能作成で使いやすそう。
http://code.msdn.microsoft.com/windowsdesktop/COM-howto-4b79a479



3. C#でC++で作成したdllを作成する機能を調べました。
前も調べたことがあるので、やってみれば、難しくないことは知っていました。分かりやすいページを見つけたので、以下に乗せておきます。
http://wgag.blog.fc2.com/blog-entry-59.html
個人的には文字列を渡す時に変換が必要なことが不思議な気持ちです。そこら辺は使いながら理解を深めていこう。

もし、間違ってるようなら、ご指摘頂ければ幸いです。



4. Outlookが再起動できない!
番外で、聞かれたので、調べてみた
プロファイルデータがバグると上手く行かなくなるらしい
http://stella-le.seesaa.net/article/121626191.html
消せば治るかな。。。という感じ



2013年6月21日金曜日

1回目2013/06/21C#勉強

これから、C#について、学んだことをここに書いて行きたい。

C#は完全に初心者なので、勉強した履歴が何かの役に立つことを期待して書いていきます。
あくまで、備忘録に近くもなるので、わかりにくいところがあると思いますが、ご容赦願います。

今日はC#のサンプルプログラムを探しましたが、あまり使いたいと思うのは見つけられませんでした。

以下のページはサンプルが多くて使いやすそうです。
http://uchukamen.com/index.htm

NUnitという、.Net用のテスト・ツールがあることを知りました。

以下のページで、C#に関する勉強ページのまとめがあります。
http://matome.naver.jp/odai/2133454861369781601

まず、基礎を勉強しようと思い、以下のページを見ています。
http://www.atmarkit.co.jp/ait/subtop/features/da/dt_csharp_abc2_index.html
C#独自の概念で、インデクサーとプロパディの概念を知りました。
インデクサーは配列と似た機能をユーザーが作成出来ます。ちなみに、string型は配列でアクセスできるように見えますが、実際はインデクサーを利用しているので、C++のような配列の参照は出来ないとのことです。今までの配列の使い方をしたい場合、Char型を使う必要があるらしい。

プロパディは数字と文字列を置き換えて、クラスに保存できるように出来ます。(他にもいろいろな機能がありそうですが、わからなかった。)


今日、一番の驚きはC#にはハッシュテーブルが標準で用意されていること。インデクサーの添字を文字列で表現できることが新鮮だった。唯、使いドコロはまだ分からないのが残念だ

しばらく、基礎の勉強毎日して行きたい。