Skip to main content

.NET 配列Dictionary及びIDictionaryの活用

Dictionaryはキー(Key)/値(Value)を1対1ペア形式で保持するジェネリック型の配列です。内部にハッシュ配列アルゴリズムに基づいて実装されており、.NETプログラミングにおける汎用性の高い中堅クラスです。

このクラスを熟知し、様々な場面で活用すれば、効率をよくわかりやすいプログラミングの作成ができます。これらのクラスの継承およびインターフェースの活用について、ネコ技術自身の経験と発想も皆様に共有したいと思います。

Read More

Linuxで高性能仮想マシンを作る(KVM+QEMU)

KVM (Kernel-based Virtual Machine)はLinuxのコアによってサポートされている仮想技術であり、ハードウェアベースの制御が可能、Intel VT-xとAMD-Vの仮想技術を利用し高性能の仮想CPUを作成できるという特徴があります。Qemuは仮想マシンCPU以外のシミュレート、メモリとリソース管理、外部との通信、付加ハードウェアの仮想化などを行うソフトです。さらに今回はlibvirtとvirshも利用して複数台マシンの作成や削除などを一元管理できる方法を紹介いたします。

Read More

Chrome新バージョンで文字がきれいに表示されない場合の改善方法

Chrome最新バージョン(ver37)はDirectWriteを利用した文字の描写処理を搭載しています。この新機能によって一部のDPIが100%以上の日本語OSで、文字が綺麗に表示できない現象が起きているようです。Chromeの開発チームが正式に修正するまで(または修正しないかもしれません)、以下の方法で改善できますので、お試しください。 Read More

日本語入力ツールで半角スペースを入力する方法

日本語入力ツールで文書を入力する際に、一時半角スペースを入力したい場合がよくあります。そのとき日本語入力ツールを英語に変換し、キーボードのスペースを押せば半角スペースを入れることができますが、この方法では若干手間が掛かります。ネコ技術がそれで悩んでより速い方法があるかと試したところ、たまたまこの方法を見つけました。 Read More

SQLite使用説明(VC++言語)(3)

4.パラメータ設定

SQLにパラメータを渡すには、二つの方法があります。

1. SQL文を組み立てて、値を埋める

CString sql;
sql.Format( _T("SELECT name FROM Names WHERE name = '%s'"), _T("Tom") );

CStringを使用するためUnicodeに対応するsqlite3_prepare16を使用します。

int rc = sqlite3_prepare16( db, sql, -1, &stmt );

この方法でSQL文を組立てる場合、SQLインジェクションという不正利用がおこる可能性がありますので、以下の方法2を推奨します。 Read More

SQLite使用説明(VC++言語)(1)

1.入手&準備

1.1. 入手

sqlite3本体はC言語で作成されたため、VC++のMFCプログラム、Win32プロジェクト、
及びWin32コンソールプログラムに適用します。本文ではMFCのダイアログプログラムを使用します。

サンプルの作成環境は以下の通りです。

  • Microsoft Visual Studio 2008 Professional Edition 英語版
  • Windows 7 英語評価版

SQLiteの公式サイトから以下二つのファイルをダウンロードしてください。

  • sqlite-amalgamation-3_6_22.zip コンパイラ用のSQLiteソースコード
  • sqlite-3_6_22.zip WindowsプラントフォームでのSQLite管理用コンソールツール

1.2. 準備

Microsoft Visual Studio 2008で、下図のようにMFCのダイアログのプログラムを作成してください。 Read More

SQLite使用説明(VC++言語)(2)

3.SQL操作

3.1. INSERT操作

以下の手順で操作を行います。

  1. SQL文をコンパイルする(sqlite3_prepare)
  2. 値を設定する(sqlite3_bind)
  3. SQLを実行する(sqlite3_step)
  4. SQL文を破棄する(sqlite3_finalize)

イメージは:

sqlite3_prepare_repeat_using

UPDATE、DELETE、SELECTも同じ手順です。

まずデータベースオブジェクトを作成します。

sqlite3* db;
int rs = sqlite3_open( "test.db", &db );

そしてSQLをコンパイルしてコンパイラステートメントを作成します。

sqlite3_stmt* stmt;
rc = sqlite3_prepare( db, "INSERT INTO Names ( Name ) VALUES ( ? )", -1, &stmt, NULL );

Read More