SQLの窓

2010年04月30日


WEB 上の MySQL にローカル PC の VBScript からデータを更新する


PHP+VBScript : WEB上のDBをローカルPCから更新する
通常、Ajax と呼ばれる処理で使われる IE の Msxml2.XMLHTTP を使って呼び出します。 関連する記事 JavaScript : prototype.js(1.6.1) の Try.these と XMLHttpRequest Microsoft で使えるオブジェクトは、サーバータイプとクライアントタイプがあり、クライアントタイプはIEの中で使っているものと同じで、IE のキャッシュ等がそのまま使われます。 関連する記事 VBScript でバッチ mixi ボイス投稿 PHP + VBS 分割ダウンロード 以前テストした結果によると、サーバータイプは連続実行でバグっぽいエラーが出るのでそれ以来使っていません。よって、MSXML2.XMLHTTP を使っています。 サーバー側では、PHP で EUC-JP で入力される文字列を、POST メソッドで受け取り、そのデータで MySQL を更新するように作成しておいて、VBScript 側では Shift_jis 文字列を EUC-JP 文字列の URLエンコードしたものに変換して POST します。 エンコードはすべての文字列を行います。( PHP 側ですべてデコードされるはずです )
タグ:MySQL PHP VBScript
posted by lightbox at 2010-04-30 13:36 | 記録 | このブログの読者になる | 更新情報をチェックする

2010年04月28日


Oracle11g をXPモード内でインストールして仮想PCとして複製する

この環境はアカデミックライセンス下で、学習目的の為の初期インストール時に
おけるパックアップの為のテストです。
まず、仮想PCを作成しますが、XPモードインストール時のものでは無く複製したも
のを使っています。

関連する記事

XPモードの複製


元々XPモードをインストールした Administrator ユーザのユーザーディレクトリ
にあった差分ファイルを lightbox ユーザーにコピーして仮想PCを作成し、
そこに、Oracle11g を数台分インストールした後、インストール後の差分データを
別PCにコピーして稼働可能させるテストです。

元の仮想PCは、親PCの PC名に対して頭に V を付けて区別し、外部のネットワーク
にIPアドレスを持つ一つのPCとして見えるようにしています。この際、親PCは、DHCP
で IP アドレスを取得していますが、Oracle がインストールされる仮想PC は、固定
PC を割り振っています。

このインストールでは、Oracleへの の接続確認を Oracle 純正の ODBC ドライバで
確認し、エンタープライズマネージャーを起動してサービスが正しく動いている事
を確認しています。

1) Oracle サービス
2) TNS リスナー
3) エンタープライズマネージャ用(Console)

次に、この差分ファイルを別PC にコピーしたものと、単純にそのPC に複製したもの
からそれぞれ新しい仮想PCを作成して、PC名とIP アドレスがユニークになるように
変更します。PC 名を変更すると、再起動となるので、その前に 仮想PCに親PCと同じ
ユーザを作成して、Administrators グループに追加します。

Oraxpmode1

そして、統合機能を有効にする時に、新しく作った親PCと同じユーザで資格情報を登録
して、次より自動的にログインするようにします。それ以外は、問題を排除する為に、
Windows のファイアーウォールを停止して「手動」にし、セキュリティソフトがイン
ストールされている場合は、後に最適な設定ができるまで無効にしておきます。
( 仮想PCでかつ、実運用は行わないのでセキュリティソフトは必要ありません )

再起動後、PC名を変更した事が原因で、Oracle が動かなくなりますが、以下の手順
で正しく起動する事を、約20台のPCで確認しています


関連する記事

Oracle11g + Windows : PC名を変更してしまった場合の対処方法



posted by lightbox at 2010-04-28 13:00 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

XPモードの複製

XPモードのコアファイル(親ディスク)は、一つのみで、Program Files にイン
ストールされ、初期インストール時に差分ファイルが一つ作成され、これが各仮想
PCの固有のデータの元となります。

そのファイルはおそらく以下の場所にあるはずです
▼ 
▼ 
▼ XPモード初期差分ファイル
C:\Users\ユーザー名\AppData\Local\Microsoft\Windows Virtual PC\仮想マシン\Windows XP Mode.vhd
XPモードのインストールをしたユーザーの場合は、XPモードの複製時にこのファ
イルをコピーして「仮想マシンの作成」を行う事で既存仮想PC(XP)を複製する事
ができます。
※ コピーしたファイルの場所はどこでもいいので、もっと解りやすい場所にします

その際に、コピーした差分ファイルを以下のように指定する事によって内容の
同じ仮想PCが出来上がり、後は統合機能を有効にしてWindows7 との運用に備え
ます。( デフォルトでは有効になりません )

Oraxpmode1

これらは、初回の複製ですが、以降はいずれの差分ファイルを使ってもそれと
同じ仮想PC(XP)を作成する事ができます。それは、他のユーザでも他のPC 間
でも可能です。
また、これは、逆に言えばバックアップのバージョンを容量の許すかぎり自由に作成
できるという事でもあります

※ Administrators グループに所属するユーザでのみテストしました


posted by lightbox at 2010-04-28 12:10 | 記録 | このブログの読者になる | 更新情報をチェックする

XPモードのXPには、フレームワークがインストールされていない

Windiws Update でもインストールできますが、「追加選択(ソフトウェア)」として
表示されるので、意図的にインストールしないとインストールされない可能性があり
ます。

Windows Update を使用せずに単独でインストールする場合は以下からダウンロード
します。

Microsoft ダウンロードセンター

ダウンロードの詳細 : .NET Framework 3.5 Service Pack 1


PHP の 5.3.x をダウンロードしようとすると、VC9 でビルドされたものが手に入り
ますが、フレームワークが無いと動作しませんでした。


posted by lightbox at 2010-04-28 11:02 | 記録 | このブログの読者になる | 更新情報をチェックする

2010年04月26日


Oracle11g + Windows : PC名を変更してしまった場合の対処方法

2014/08/27
Oracle のオンラインマニュアルがリンク切れになっていたので対処しました


影響の出かたとして、接続できなくなりますが対処の内容は二通りです。

1) テキストファイルである、定義ファイルの変更

2) Enterprise Manager Configuration Assistant(EMCA)による処理


1) は昔からポピュラーです。listener.ora と tnsnames.ora の内部に書かれてしまっている PC名(またはIPアドレス)を正しく変更します。これは、DHCP のPC に Oracle をインストールするというような特殊な場合も含まれます。経験からすると、10g では、DHCP だと IP が書かれてるようでした。

ファイルの場所は、インストールディレクトリ(ORACLE_HOME)内の、product\バージョン\db_インストール番号\NETWORK\ADMIN 内です。( ORACLE_HOME は、レジストリを参照 )

▼ Oracle 10g Express Edition の tnsnames.ora 内のエントリのサンプル( HOST = mypc_name )
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mypc_name)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )


2) はエンタープライズマネージャが動かなくなるので、定義情報を再作成する必要がありますが、11g のマニュアルに正しい処理方法が書かれています。
( 目次ページはこちら の 『6 サーバー・プールおよびOracle Enterprise Manager Database Controlの構成』)

実際テストして検証しました。以下がその具体的な内容です。
※ 環境変数は必ずしも必要で無いかもしれません。設定しても入力が必要でした
※ パスワードはインストール時に全て manager としています。 
※ 設定後、エンタープライズマネージャのポートが 10g と同じポートに設定されました



※ 管理対象データベースのOracleホームおよびシステム識別子(SID)
※ を指定するように、次の環境変数を設定します。

ORACLE_HOME
ORACLE_SID

ORACLE_HOME は、レジストリ情報から取り出します


DB・ホスト名またはIPアドレス変更時のEMCAの使用方法

emca -deconfig dbcontrol db -repos drop
( この場合は emca -config dbcontrol db -repos create )
または
emca -deconfig dbcontrol db
( この場合は emca -config dbcontrol db -repos recreate )
>emca -deconfig dbcontrol db -repos drop

EMCAの開始: 2010/04/23 10:48:04
EM Configuration Assistant, リリース11.1.0.5.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

次の情報を入力してください:
データベースのSID: orcl
リスナーのポート番号: 1521
SYSユーザーのパスワード:
SYSMANユーザーのパスワード:

続行しますか。 [はい(Y)/いいえ(N)]: y
2010/04/23 10:49:00 oracle.sysman.emcp.EMConfig perform
情報: この操作はC:\app\lightbox\cfgtoollogs\emca\orcl\emca_2010_04_23_10_48_03.l
ogでロギングされています。
2010/04/23 10:49:01 oracle.sysman.emcp.EMDBPreConfig performDeconfiguration
警告: このデータベースにはEMが構成されていません。EM固有の処理は実行できません。

2010/04/23 10:49:01 oracle.sysman.emcp.EMReposConfig invoke
情報: EMリポジトリの削除中(少し時間がかかります)...
2010/04/23 10:51:13 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に削除されました
Enterprise Managerの構成が正常に完了しました
EMCAの終了: 2010/04/23 10:51:13

emca -config dbcontrol db -repos create
または
emca -config dbcontrol db -repos recreate
>emca -config dbcontrol db -repos create

EMCAの開始: 2010/04/23 11:00:08
EM Configuration Assistant, リリース11.1.0.5.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

次の情報を入力してください:
データベースのSID: orcl
リスナーのポート番号: 1521
SYSユーザーのパスワード:
DBSNMPユーザーのパスワード:
SYSMANユーザーのパスワード:
SYSMANユーザーのパスワード: 通知用の電子メール・アドレス (オプション):
通知用の送信メール(SMTP)サーバー (オプション):
-----------------------------------------------------------------

次の設定が指定されています

データベースのORACLE_HOME ................ C:\app\lightbox\product\11.1.0\db_1

ローカル・ホスト名 ................ VPC-028B
リスナーのポート番号 ................ 1521
データベースのSID ................ orcl
通知用の電子メール・アドレス ...............
通知用の送信メール(SMTP)サーバー ...............

-----------------------------------------------------------------
続行しますか。 [はい(Y)/いいえ(N)]: y
2010/04/23 11:01:09 oracle.sysman.emcp.EMConfig perform
情報: この操作はC:\app\lightbox\cfgtoollogs\emca\orcl\emca_2010_04_23_11_00_08.l
ogでロギングされています。
2010/04/23 11:01:10 oracle.sysman.emcp.EMReposConfig createRepository
情報: EMリポジトリの作成中(少し時間がかかります)...
2010/04/23 11:07:19 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に作成されました
2010/04/23 11:07:24 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepositor
y
情報: 構成データをEMリポジトリにアップロード中(少し時間がかかります)...
2010/04/23 11:08:08 oracle.sysman.emcp.EMReposConfig invoke
情報: 構成データが正常にアップロードされました
2010/04/23 11:08:13 oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
情報: ソフトウェア・ライブラリは正常に構成されました。
2010/04/23 11:08:13 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブのデプロイ中...
2010/04/23 11:08:27 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブは正常にデプロイされました。
2010/04/23 11:08:28 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlの保護中(少し時間がかかります)...
2010/04/23 11:08:38 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlは正常に保護されました。
2010/04/23 11:08:38 oracle.sysman.emcp.util.DBControlUtil startOMS
情報: Database Controlの起動中(少し時間がかかります)...
2010/04/23 11:09:28 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: Database Controlは正常に起動されました
2010/04/23 11:09:28 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: >>>>>>>>>>> Database ControlのURLはhttps://VPC-028B:5500/emです <<<<<<<<<<
<
2010/04/23 11:09:30 oracle.sysman.emcp.EMDBPostConfig invoke
警告:
************************  WARNING  ************************

管理リポジトリは、Enterprise Managerデータが暗号化されるセキュア・モードで配置さ
れています。暗号化キーはファイルC:\app\lightbox\product\11.1.0\db_1\VPC-028B_orc
l\sysman\config\emkey.oraに配置されています。このファイルが失われると暗号化デー
タを使用できなくなるため、このファイルは必ずバックアップしてください。

***********************************************************
Enterprise Managerの構成が正常に完了しました
EMCAの終了: 2010/04/23 11:09:30



▼ 以下は参考情報です。上記処理で一括で問題は解決されるはずです
TNS構成を変更した場合のEMCAの使用方法
emca -config dbcontrol db

Database Controlの構成後に明示的にポートを割り当て
emca -reconfig ports [-cluster]


posted by lightbox at 2010-04-26 14:29 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

2010年04月24日


C言語 : EBCDIC・JIS 相互変換

こういうコードを実際に使ってました。たぶん15年くらい前です。
///////////////////////////////////////
//  EBCDIC -> JIS テーブル
///////////////////////////////////////
static char tbl[256] = {
	0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,		/* 0000 */
	0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,		/* 0010 */
	0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,		/* 0020 */
	0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,		/* 0030 */
	0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,		/* 0040 */
	0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,		/* 0050 */
	0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,		/* 0060 */
	0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,		/* 0070 */
	0x20, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,		/* 0100 */
	0xa8, 0xa9, 0x5b, 0x2e, 0x3c, 0x28, 0x2b, 0x21,		/* 0110 */
	0x26, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0x61,		/* 0120 */
	0xb0, 0x62, 0x5d, 0x5c, 0x2a, 0x29, 0x3b, 0x5e,		/* 0130 */
	0x2d, 0x2f, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,		/* 0140 */
	0x69, 0x6a, 0x7c, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,		/* 0150 */
	0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72,		/* 0160 */
	0x73, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,		/* 0170 */
	0x74, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,		/* 0200 */
	0xb8, 0xb9, 0xba, 0x75, 0xbb, 0xbc, 0xbd, 0xbe,		/* 0210 */
	0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,		/* 0220 */
	0xc7, 0xc8, 0xc9, 0x76, 0x77, 0xca, 0xcb, 0xcc,		/* 0230 */
	0x78, 0x7e, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2,		/* 0240 */
	0xd3, 0xd4, 0xd5, 0x79, 0xd6, 0xd7, 0xd8, 0xd9,		/* 0250 */
	0x7a, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5,		/* 0260 */
	0xe6, 0xe7, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,		/* 0270 */
	0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,		/* 0300 */
	0x48, 0x49, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,		/* 0310 */
	0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,		/* 0320 */
	0x51, 0x52, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,		/* 0330 */
	0x24, 0x9f, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,		/* 0340 */
	0x59, 0x5a, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,		/* 0350 */
	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,		/* 0360 */
	0x38, 0x39, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff 		/* 0370 */
};

///////////////////////////////////////
//  JIS -> EBCDIC テーブル
///////////////////////////////////////
static char tbl2[256] = {
0x00,0x01,0x02,0x03,0x37,0x2d,0x2e,0x2f,
0x16,0x05,0x15,0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x3c,0x3d,0x32,0x26,
0x18,0x19,0x3f,0x27,0x1c,0x1d,0x1e,0x1f,
0x40,0x4f,0x7f,0x7b,0xe0,0x6c,0x50,0x7d,
0x4d,0x5d,0x5c,0x4e,0x6b,0x60,0x4b,0x61,
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
0xf8,0xf9,0x7a,0x5e,0x4c,0x7e,0x6e,0x6f,
0x7c,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
0xc8,0xc9,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,
0xd7,0xd8,0xd9,0xe2,0xe3,0xe4,0xe5,0xe6,
0xe7,0xe8,0xe9,0x4a,0x5b,0x5a,0x5f,0x6d,
0x79,0x57,0x59,0x62,0x63,0x64,0x65,0x66,
0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,
0x75,0x76,0x77,0x78,0x80,0x8b,0x9b,0x9c,
0xa0,0xab,0xb0,0xc0,0x6a,0xd0,0xa1,0x07,
0x20,0x21,0x22,0x23,0x24,0x25,0x06,0x17,
0x28,0x29,0x2a,0x2b,0x2c,0x09,0x0a,0x1b,
0x30,0x31,0x1a,0x33,0x34,0x35,0x36,0x08,
0x38,0x39,0x3a,0x3b,0x04,0x14,0x3e,0xe1,
0xb1,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
0x48,0x49,0x51,0x52,0x53,0x54,0x55,0x56,
0x58,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x88,0x89,0x8a,0x8c,0x8d,0x8e,0x8f,0x90,
0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
0x99,0x9a,0x9d,0x9e,0x9f,0xa2,0xa3,0xa4,
0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xac,0xad,
0xae,0xaf,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,
0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xda,0xdb,
0xdc,0xdd,0xde,0xdf,0xea,0xeb,0xec,0xed,
0xee,0xef,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
};

///////////////////////////////////////
//  EBCDIC -> JIS
///////////////////////////////////////
extern
void
etojis( char *ptr, int len )
{
   int i;

   for ( i = 0; i < len; i++ ) {
      (*(ptr+i)) = tbl[(*(ptr+i))];
   }
}

///////////////////////////////////////
//  JIS -> EBCDIC
///////////////////////////////////////
extern
void
jistoe( char *ptr, int len )
{
   int i;

   for ( i = 0; i < len; i++ ) {
      (*(ptr+i)) = tbl2[(*(ptr+i))];
   }
}



posted by lightbox at 2010-04-24 19:41 | 記録 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり