情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

Excelの文字入力が遅い このエントリーを含むはてなブックマーク

Office 2007 の Excel で文字入力をしているとき、異様に文字入力が遅くなり、入力した文字が時間差で表示されるほどでした。

まぁ、あまり使わないので我慢しており、なんとなくATOKのせいかなと思っていました。

でも、冷静に考えてみると、遅くなるところはいつも同じ列で、 なんでその列だけ遅いんだろうと考えてみると、オートコンプリートじゃないかということに。

スポンサーサイト
Excel | コメント:6 | トラックバック:0 | 編集

Microsoft公式「.NET Framework 開発ガイド」がWebで登場 このエントリーを含むはてなブックマーク

「.NET Framework 開発ガイド」が、Microsoftから公開されました。内容は、.NET Framework

「.NET Framework の仕組みを紹介した ".NET Framework 開発ガイド ブック" が Web で登場」
.NET Framework 開発ガイド ブックは .NET Framework の動作の仕組みを分かりやすく説明したコンテンツです。.NET Framework の心臓部である CLR (Common Language Runtime) を中心に、.NET Framework をしっかり理解するための情報が満載です。.NET Framework をより深く学びたい開発者にも、.NET Framework を初めて学ぶ人にもピッタリなコンテンツです。ぜひ、.NET Framework スペシャリストへの第一歩としてご活用ください。

というわけで、読んでみました。→「Microsoft .NET Framework 開発ガイドブック

Microsoft .NET Framework 開発ガイドブック

.NET Frameworkの仕組みや、構成、概要がよく分かります。目次は以下のようになっています。

  1. .NET Framework の概要
  2. アセンブリの仕組み
  3. .NET アセンブリのバージョン管理
  4. セキュリティ機構
  5. CLRの機能
  6. アプリケーションの実行までの流れ
  7. アプリケーションの配置
  8. Side-by-Side 実行

全体としては短いですが、ボリュームはたっぷりで、これを読むだけで、.NET Frameworkの知識が一気に手に入ります。図も多く、読みやすいです。

どの章も興味深いのですが、気になったところを抜粋して紹介します。

ildasm.exe

ILDASMは、MSIL Disassemblerの略であり、MSILとは、Microsoft Intermediate Languageのことです。つまり、ILDASM.exeは、MSIL(.NETでの中間言語)で記述されたファイル(.exe、.dll)の内容を読み取ることができるツールと言えます。

実際に、ildasm.exeを利用してみます。ildasm.exeの場所は、少し探すのが大変ですが、次のようなパスにありました。

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ildasm.exe

ダブルクリックで簡単に実行可能です。

ダブルクリックで実行すると、ウィンドウが表示されるので、「ファイル」から、EXEファイルや、DLLファイル(もちろん、.NET Frameworkを利用したもの)を読み込んでみます。すると、ツリー構造が表示されます。

MANIFESTダブルクリックするとDLLもしくはEXEに埋め込まれたマニフェスト(ファイルに関する情報)を表示することができます。

また、「表示(V)>メタ情報(M)>表示!(S)」をクリックすることで、ファイルのメタ情報(どのような型が宣言されているかなど)が表示されます。表示する必要があるかは別として、ファイルにどのような情報が格納されているかが見られるというのは勉強になります。

はじめにファイルを開いたときに表示されたツリーをたどっていくことでもどのようなメソッドやクラスが定義されていて使用可能であるかが分かります。

ほかにもたくさんの機能がありますが、とくにおもしろいものとしては、「表示(V)>統計値(I)」から見られる統計情報です。ファイル自体の何パーセントがどのような要素から校正されていて、いくつのメソッドが宣言されているか、そのサイズはどれくらいかなどの詳細な情報をチェックできます。これまた、実用的な意味があるかは別にしても、とても興味深いです。

.NET | コメント:0 | トラックバック:0 | 編集

C#での、正しいマルチスレッドプログラムの書き方を求めて このエントリーを含むはてなブックマーク

注意:.NET Framework 4、Visual Studio 2010に対応してアップデートした記事はこちら→「C#での、正しいマルチスレッドプログラムの書き方を求めて(2011年11月版)

C#におけるマルチスレッドプログラムの作成方法は、たくさんのホームページで紹介されています。しかし、それらは正しく動いたとしても、それがC#や.NET Frameworkを作成した人々の期待したコードであるかどうかは残念ながら、コードを見るだけでは分かりません生意気なこと言ってすいません

また、BackgroundWorkerという、簡単に別スレッドを作成してメソッドを実行する方法も用意されてはいますが、それで満足していいのかという欲求もあります。より高度なスレッドの扱い方を会得したい。

そんなとき、やはり頼るべきはMicrosoft謹製 msdnライブラリでしょう。

しかし、実際にmsdnライブラリでマルチスレッドプログラミングついて調べていると、リンクが散らばっていて、どこを見ればいいのか分かりません。

そこで、msdn内のマルチスレッドに関するページをまとめてみました。msdnは重く、検索に時間がかかるので、このページをブックマークしておくと楽だと思います。

C# | コメント:0 | トラックバック:0 | 編集

msdnが新デザインに このエントリーを含むはてなブックマーク

msdnライブラリが新デザインになりました。

msdnライブラリはほぼ毎日見ているので、だんだんと変化したのが分かりました。

今までは、濃いオレンジ色がベースで、msdnのロゴには、右下に矢印がありました。

そして、ついこの間、その濃いオレンジ色だった背景が、濃い青のグラデーションになりました。ちなみに、背景に模様はありません。また、背景は変わりましたが、オレンジ色の矢印のあるロゴはそのまま。

そして、何より大きな変化が、右下に出るようになったビューの切り替えというボタン

ボタンを押すと、

  • クラシック
  • ライトウェイト
  • ScriptFree
という3つの選択ができます。

クラシックは今までと同様です。

ライトウェイトは、すっきりとしたデザインで、言語ごとに表示されていたサンプルコードが、一つにまとめられ、タブ表示になっています。また、いままで左のツリー表示が、ただのリンクになっています。

ScriptFreeは、まさしく、JavaScriptなしのページです。ライトウェイトよりも、さらにシンプルですが、見た目は今までの表示に近いままです。しかし、左のツリーはシンプルなものに変わっています。なぜかライトウェイトよりも見やすい

結論から言うと、見た目は好みですが、ライトウェイトと言いつつ、msdnが重いのはそういう問題じゃないよねということです。検索や、ページ間移動に時間がかかりすぎます。

そんなときのためのオフラインで利用できるmsdnライブラリですが、これまた、ローカルといえども、フリーワード検索にはとても時間がかかります。さすがにページ間の移動は早いですが、たまに、リンク切れ(?)になっているリンクがあったり。。。Visual Studio 2010がもうすぐということでわくわくしていますが、こんなところも改善されるといいですね。なんだか、2010のbetaは遅いみたいですが

Visual Studio | コメント:0 | トラックバック:0 | 編集

DataReaderオブジェクトに、結果の行数を表すプロパティがない理由 このエントリーを含むはてなブックマーク

System.Data.SQLiteを利用していて、"SELECT DISTINCT"を利用して、格納されている値にどのようなものがあるのかを調べようと思いました。

using (SQLiteConnection cnn = new SQLiteConnection("Data Source=data.db"))
using (SQLiteCommand cmd = cnn.CreateCommand())
{
    cnn.Open();

    cmd.CommandText =
        "SELECT DISTINCT ATTRIBUTE_NAME FROM TABLE_NAME";

    using (SQLiteDataReader reader = cmd.ExedcuteReader())
    {
        result = new string[###  謎  ###];
        int i = 0;
        while (reader.Read())
        {
            result[i] = reader[0];
            i++;
        }
    }
}

return result;

コードは以上のようになります。data.dbというSQLiteデータベースファイルのTABLE_NAMEテーブルのATTRIBUTE_NAME属性に含まれている値の一覧を、重複を除いて取得しようとしています。一覧は、SQLiteDataReader型の、readerオブジェクトから得られます。

ここで、結果を配列に格納したいので、まず配列のサイズを決定する必要が出てきます。

すると、readerオブジェクトのLengthプロパティがあるのだろうと思ったりしますが、Lengthはおろか、行数を表すプロパティは一切ありません。つまり、配列のサイズを決定することができないのです。

このことについて調べていると、「Visual C# で OleDbDataReader クラスまたは SqlDataReader クラスを使用するときに、フェッチされるレコード数を示す RecordCount プロパティが存在しない 」というページを発見し、結果の行数をreaderオブジェクトから取得することはできないということが分かりました。

そのページには、SELECT COUNT(*)を利用するようにと記述されています。そこで、その通りに、上記のプログラムを書き直すと、以下のようになります。

using (SQLiteConnection cnn = new SQLiteConnection("Data Source=data.db"))
using (SQLiteCommand cmd = cnn.CreateCommand())
{
    cnn.Open();

    cmd.CommandText =
        "SELECT COUNT(*)" +
        "FROM (" +
        "SELECT DISTINCT ATTRIBUTE_NAME FROM TABLE_NAME" +
        ")";

    int resultCount = int.Parse(cmd.ExecuteScalar().ToString()); 

    cmd.CommandText =
        "SELECT DISTINCT ATTRIBUTE_NAME FROM TABLE_NAME";

    using (SQLiteDataReader reader = cmd.ExedcuteReader())
    {
        result = new string[resultCount];
        int i = 0;
        while (reader.Read())
        {
            result[i] = reader[0];
            i++;
        }
    }
}

return result;

ちなみに、DataReaderの、FieldCountは、行数ではなく、結果の列数を表すプロパティです。今回の例では、必ず1になっているはずです。

データベース | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。