全ては時の中に…

システム開発全般の技術や開発に役立つツール、プログラミングのサンプルを紹介しています。

2009年02月

【VBScript】環境変数の登録

開発環境が.NETになってからは、環境変数を扱うプログラムを作成することは減っています。
しかし、C言語やVB6以前のプログラム言語を扱う場合には、環境変数を扱うプログラムは当然のようにあります。

プログラムを配布する場合は、セットアッププログラム等を使って登録するため、環境変数を自動的に設定できますが、開発中は手作業で登録することが多くあります。
複数の開発環境を構築する場合等、設定漏れを防ぐために環境変数の登録を自動化したいことがあります。
そこで、VBScriptとWSHを使って環境変数の登録を自動化する方法について説明します。
尚、登録する環境変数は、ファイルから読み込むものとします。

以下、サンプル。
続きを読む

【VB.NET】VB.NETからLuaスクリプトを実行する

VB.NETからLuaスクリプトを実行する方法について説明します。
Luaには、LuaInterface.DLLというものが用意されています。
このDLLを利用することで、.NET用プログラム言語でLuaスクリプトを実行するための関数群を利用できるようになります。

以下、サンプル。
続きを読む

【Web】Tomcat 6.0.18で「http://localhost:8080」にアクセスできない

Windows XPにTomcat 6.0.18をインストールした場合、「http://localhost:8080」にアクセスできないという事象が発生することがあります。
これは、インストール直後のTomcatの設定ファイルの文字コードが正しく設定されていないために発生する問題です。

この事象への対処方法について説明します。
続きを読む

【データベース】ODBCデータソースの保存先

Windowsでは、ODBCデータソースを使ってデータベースの接続管理を行うことがあります。

このODBCデータソースは、ODBCデータソースアドミニストレータを使って管理します。
([コントロールパネル]-[管理ツール]-[データソース (ODBC)]から実行できます)
ここで登録した内容は、レジストリで管理されます。
そのため、該当するレジストリを操作すれば、データソースの操作(追加、変更、削除)が可能となります。

レジストリでは、以下のキーでデータソースを管理しています。
 1.システムデータソース(システムDSN)
  HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
 2.ユーザーデータソース(ユーザDSN)
  HKEY_USERS\[SID]\SOFTWARE\ODBC\ODBC.INI
  
※()内は、ODBCデータソースアドミニストレータのタブの名称です。
 また、ユーザーデータソースのSIDは、ユーザ毎に割り当てられるユーザ識別用IDです。
 特定のユーザのデータソースを操作する場合には、このSIDを確認した上で作業する必要があります。

上記のサブキーに[ODBC Data Sources]というキーがあります。
ここに登録されている値が、ODBCデータソースアドミニストレータのそれぞれのデータソース欄に表示するデータベース名を管理しています。
レジストリを使ってODBCデータソースの操作を行う場合には、上記の2つのキーに対して正しい値を設定する必要があります。

以下、データソースを追加する場合の手順です。
続きを読む

【SQL Server】別名定義を使って「localhost」でアクセスする

Windows XP(または、Windows 2000)にインストールしたSQL Server 2005(または、SQL Server 2000)に対して、インスタンス名を「localhost」として接続すると、接続に失敗する事象が発生することがあります。
(詳細は、以前の記事「【SQL Server】localhostを指定した接続が出来ない」を参照)

この事象が発生した際に、どうしても「localhost」という名前を使ってアクセスしたいのであれば、SQL Serverのインスタンスに対して「localhost」という別名を定義すればアクセスできるようになります。

以下、別名定義の手順。
続きを読む

【C++】動的配列を利用する(其の四)

前回の記事「【C++】動的配列を利用する(其の壱)」の続きです。

今回は、「4.vectorを利用する(C++のみ)」の方法について説明します。

vector型のオブジェクトを利用して動的配列を実装します。
vector型の宣言は、以下の通りです。
vector<データ型> 変数名

vectorをインスタンスかする場合、要素数は省略可能です。
データを追加する場合は、以下のどちらかのメソッドを利用します。
 ・push_back()メソッド
  →配列の末尾にデータを追加します。
 ・insert()メソッド
  →配列の途中(指定した要素の位置)にデータを追加します。
 ※各メソッドの引数には、追加するデータを設定します。
データを取り出す場合は、通常の配列と同じく、添え字を使って参照します。
指定した要素のデータが存在しない場合は、エラーが発生します。

以下、処理概要です。

1.vector型の変数を宣言する。
2.push_back()メソッドかinsert()メソッドを利用してデータを登録する。
3.添え字を使ってデータを取り出す。

以下、サンプル。
続きを読む

【C++】動的配列を利用する(其の参)

前回の記事「【C++】動的配列を利用する(其の壱)」の続きです。

今回は、「3.realloc()関数を利用してメモリを確保する」の方法について説明します。

realloc()関数は、内容を保ったまま、確保したメモリのサイズを変更するための関数です。
これを利用して必要となるメモリを追加して確保することで、動的に領域を確保します。
以下、処理の概要です。

1.作成する配列と同じデータ型のポインタ変数を用意する。
2.このポインタ変数にmalloc()関数で確保したメモリ空間を代入する。
 (正確には、先頭のアドレスを代入します)
3.通常の配列同様、添え字を使ってデータを登録する。
 →データ登録時に領域が不足した場合、realloc()関数を使ってメモリ空間を追加で確保する。
3.通常の配列同様、添え字を使ってデータを取り出す。
5.malloc()関数で取得したメモリをfree()関数を使って解放する。
(解放漏れは、メモリリークの原因となります)

以下、realloc()関数の構文です。
void *relloc(void* ptr, size_t size);

ptrには、mallocでメモリ空間を確保したポインタ変数を指定します。
sizeには、変更後のメモリ容量(既に確保しているメモリ容量+追加で確保するメモリ容量)を指定します。

以下、サンプル。
続きを読む

【C++】動的配列を利用する(其の弐)

前回の記事「【C++】動的配列を利用する(其の壱)」の続きです。

今回は、「2.new演算子を利用する(C++のみ)」の方法について説明します。

new演算子は、オブジェクトを新規に作成するために利用します。
これを利用して必要な分のオブジェクトの領域を確保することで、動的に領域を確保します。
以下、処理の概要です。

1.作成する配列と同じデータ型のポインタ変数を用意します。
2.ポインタ変数に、new演算子を利用してオブジェクトを代入する。
3.アドレスを操作して入出力を行う。
4.delete演算子を使って明示的にリソースを解放する。

以下、動的配列をnew()関数で確保するための構文です。
ポインタ変数 = new データ型[要素数];


以下、サンプル。
続きを読む

【C++】動的配列を利用する(其の壱)

配列を扱う場合、動的に要素数を変動させたいことがあります。
C言語やC++で動的配列を扱う場合、以下のような方法で実装することができます。

 1.malloc()関数を利用してメモリを確保する
 2.new演算子を利用する(C++のみ)
 3.realloc()関数を利用してメモリを確保する
 4.vectorを利用する(C++のみ)

1と2の方法は、確保時点で配列の要素数が明確になっている場合に利用できます。
要素を確保した後に要素数の変動がある場合は、3と4の方法を利用して下さい。
また、2と4の方法は、C++の場合のみ有効な手段です。
(C言語には、new演算子やvector型は存在しません)

今回は、「1.malloc()関数を利用してメモリを確保する」の方法について説明します。

malloc()関数は、指定したサイズのメモリを確保するための関数です。
これを利用して必要な分のメモリを確保することで、動的に領域を確保します。
以下、処理の概要です。

1.作成する配列と同じデータ型のポインタ変数を用意する。
2.このポインタ変数にmalloc()関数で確保したメモリ空間を代入する。
 (正確には、先頭のアドレスを代入します)
3.通常の配列同様、添え字を使ってデータの入出力を行う。
4.malloc()関数で取得したメモリをfree()関数を使って解放する。
(解放漏れは、メモリリークの原因となります)

以下、動的配列をmalloc()関数で確保するための構文です。
ポインタ変数 = (データ型*)malloc(sizeof(データ型) * 要素数);

※malloc()関数の戻り値を配列のデータ型のポインタにキャストする必要があります。

以下、サンプル。
続きを読む

【SQL Server】システムストアドプロシージャを利用してユーザを追加する

以前の記事「【SQL Server】ログインユーザを登録する 」に関連した内容です。
前回は、T-SQLを利用してユーザを作成する方法について説明しましたが、今回は、システムストアドプロシージャを使って登録する方法を説明します。

SQL Serverには、以下の2通りの認証方法があります。
 1.Windows認証
 2.SQL Server認証

認証方法によって使用するシステムストアドプロシージャが異なりますので、注意して下さい。

以下、構文。
続きを読む

【C/C++】コンパイルエラー("xxx" was not declared in this scope)が発生する

C/C++のコンパイル時に以下のコンパイルエラーが発生することがあります。
 "xxx" was not declared in this scope
※ "xxx"の部分には、関数名や変数名が入ります。

このエラーは、該当する関数や変数が有効範囲内で見つからない場合に発生するエラーです。
発生する原因には、以下のようなものがあります。
 1.関数名、変数名が誤っている。
  →スペルミスや大文字小文字の誤り等
 2.必要なヘッダファイルをincludeしていない。
 3.シンボルの定義が複数のファイルで重複している。
  →以下のようなコードがある場合に発生します。
#if !defined "xxxxxxxxxx"
#define "xxxxxxxxxx"
#endif //!defined "xxxxxxxxxx"

※"xxxxxxxxxx"の部分が同じファイルが複数ある場合、上記のエラーが発生する可能性があります。
 (誤ったコードを先に参照すると、後から参照した本来のコードが無視されてしまい、必要な関数や変数が参照できない状態となってしまう)


以下、解決方法です。
続きを読む

【C++】C++からLuaスクリプトを実行する

以前の記事「【Lua】実行環境の構築」でLuaの実行環境を構築しました。
今回は、C++からLuaのコードを実行する方法について説明します。
構築した環境の中にC++からLuaのコードを実行するために必要な開発環境も含まれていますので、それを利用します。

Luaのコードを実行するには、以下の準備が必要です。
 1.Lua用のヘッダファイルをincludeする。
  →"lua.hpp"をincludeする。
  ※Lua用のヘッダファイル(*.h)を直接includeする場合は、
   exturn "C"{}内にinclude文を記述する必要があります。

 2.Luaの初期化を行う。
  →lua_open()関数かlua_newstate()関数で行う。
 3.Luaのコードを実行する。
  →luaL_dostring()関数を利用する。
 4.Luaを終了する。
  →lua_close()関数を利用する。

以下、サンプル。
続きを読む

【Lua】実行環境の構築

Luaというスクリプト言語があります。
このLuaは、組み込み系やゲーム開発等で頻繁に利用されるようになってきているとの事です。
C言語やC++との連携が容易にできるらしいので、実行環境を構築してみました。

以下、WindowsでLuaの実行環境を準備する手順のメモです。
(C言語やC++との連携は、別の記事で紹介します)
続きを読む

【Linux】改行コードの変換(Windows→Linux)

WindowsとLinuxでは、改行コードが異なります。
改行コードは、それぞれ以下の通りです。
 Windows … CRLF(キャリッジリターン+ラインフィード)
 Linux … LF(ラインフィード)

上記の違いにより、Windowsで作成したテキストファイルをLinuxにコピーして利用する場合、改行コードを変更しなければならない事があります。
(プログラム等で処理する場合、改行コードの違いによって正しく処理できないことがあるためです)
このような場合にLinuxのコマンドで改行コードを変換する方法について説明します。

Linuxには、trコマンドという文字列操作用コマンドがあります。
このコマンドでは、文字列の置き換えや削除ができるため、これを利用して改行コードをLinuxのコードに置き換えます。
(正確には、改行コードのCRを削除すれば、Linux用の改行コードになります)

以下、改行コードからCRを削除するコマンドです。
# tr -d '\r' <入力ファイルパス> 出力ファイルパス

オプションについての説明です。
 ・-dは、指定した文字の削除を意味します。
 ・"\r"は、復帰コード(キャリッジリターン)を表します。
 ・入力ファイルパスには、改行コードのCRを削除したいテキストファイルのパスを指定します。
 ・出力ファイルパスには、変換後の結果を保存するファイルパスを指定します。
  入力ファイルパスと同じファイルに上書きする場合には、入力ファイルパスと同じものを指定します。

尚、改行コードを確認するには、odコマンドを利用します。
# od -c テキストファイルパス

ここで確認したテキストファイルに「\r \n」というコードがあった場合、改行コードがCRLFとなります。
単に「\n」となっている場合は、改行コードがLFとなっているため、Linux用の改行コードとなっています。

以下、改行コードを変換する手順です。
続きを読む

【ネットワーク】Wiresharkで自端末へのパケットをキャプチャする方法

ネットワークを流れるパケットをキャプチャするためのソフトウェアにWiresharkというソフトがあります。
このWiresharkでは、送信元と宛先が同じ端末のパケット(自ホストに対して送信したパケット)をキャプチャすることができません。

これを取得できるようにする方法について説明します。

以下は、Windows XP SP2での操作内容です。
(Vista等では異なる可能性があります)

まず、最初に自ホストに対して送信したパケットがWiresharkでキャプチャ出来ないことを確認します。
自ホストに対してパケットを送る単純な方法は、localhostやループバックアドレス(127.0.0.1)に対してpingを送る方法です。

以下、操作手順です。
続きを読む
Recent Comments
Recent TrackBacks
Profile

ふりっつ

システムエンジニア
取得資格:
 ソフトウェア開発技術者
 MCP(70-290)
メールマガジン:
 【出張版】全ては時の中に…

メールマガジン
メルマガ登録・解除
【出張版】全ては時の中に…
 
 powered by メルマガスタンドmelma! トップページへ
ブログランキング
アクセス解析出会い




にほんブログ村 IT技術ブログへ

にほんブログ村 IT技術ブログ プログラム・プログラマへ

Amazon
スポンサー
HonyaClub.com

PCDEPOT WEB本店/OZZIO

FUJIFILMMALL(フジフイルムモール)

IT 関連資格ならクラムメディア問題集

  • ライブドアブログ