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 側ですべてデコードされるはずです )
2010年04月30日
WEB 上の MySQL にローカル PC の VBScript からデータを更新する
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 グループに追加します。 そして、統合機能を有効にする時に、新しく作った親PCと同じユーザで資格情報を登録 して、次より自動的にログインするようにします。それ以外は、問題を排除する為に、 Windows のファイアーウォールを停止して「手動」にし、セキュリティソフトがイン ストールされている場合は、後に最適な設定ができるまで無効にしておきます。 ( 仮想PCでかつ、実運用は行わないのでセキュリティソフトは必要ありません ) 再起動後、PC名を変更した事が原因で、Oracle が動かなくなりますが、以下の手順 で正しく起動する事を、約20台のPCで確認しています 関連する記事 Oracle11g + Windows : PC名を変更してしまった場合の対処方法
XPモードの複製
XPモードのコアファイル(親ディスク)は、一つのみで、Program Files にイン ストールされ、初期インストール時に差分ファイルが一つ作成され、これが各仮想 PCの固有のデータの元となります。 そのファイルはおそらく以下の場所にあるはずです
▼ ▼ ▼ XPモード初期差分ファイル C:\Users\ユーザー名\AppData\Local\Microsoft\Windows Virtual PC\仮想マシン\Windows XP Mode.vhd
XPモードのインストールをしたユーザーの場合は、XPモードの複製時にこのファ イルをコピーして「仮想マシンの作成」を行う事で既存仮想PC(XP)を複製する事 ができます。 ※ コピーしたファイルの場所はどこでもいいので、もっと解りやすい場所にします その際に、コピーした差分ファイルを以下のように指定する事によって内容の 同じ仮想PCが出来上がり、後は統合機能を有効にしてWindows7 との運用に備え ます。( デフォルトでは有効になりません ) これらは、初回の複製ですが、以降はいずれの差分ファイルを使ってもそれと 同じ仮想PC(XP)を作成する事ができます。それは、他のユーザでも他のPC 間 でも可能です。 また、これは、逆に言えばバックアップのバージョンを容量の許すかぎり自由に作成 できるという事でもあります ※ Administrators グループに所属するユーザでのみテストしました
XPモードのXPには、フレームワークがインストールされていない
Windiws Update でもインストールできますが、「追加選択(ソフトウェア)」として 表示されるので、意図的にインストールしないとインストールされない可能性があり ます。 Windows Update を使用せずに単独でインストールする場合は以下からダウンロード します。 Microsoft ダウンロードセンター ダウンロードの詳細 : .NET Framework 3.5 Service Pack 1 PHP の 5.3.x をダウンロードしようとすると、VC9 でビルドされたものが手に入り ますが、フレームワークが無いと動作しませんでした。
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]
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))]; } }
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。 Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。 また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。 ※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです 対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。 ※ エキスパートモードで表示しています アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります<% if:page_name eq 'archive' -%> アーカイブページでのみ表示される内容 <% /if %> <% if:page_name eq 'category' -%> カテゴリページでのみ表示される内容 <% /if %> <% if:page_name eq 'tag' -%> タグページでのみ表示される内容 <% /if %>この記述は、以下の場所で使用します
|