「P.011」の編集履歴(バックアップ)一覧はこちら
「P.011」(2010/02/18 (木) 10:34:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
MGWSIを導入したときの作業メモです。(2010年1月16日 初版作成)
* 導入環境
- マシン
-- hp の Compaq 6710b (ノートPC)(CPU:Core2Duo T7100)(メモリ:2GB)
- OS
--アスキームックについてた Ubuntu 9.10 (デスクトップ版)
- HTTPサーバ
-- Apache 2.2.12
-- PHP 5.2.10
-- 双方とも apt-get で適当に ※注意 最初に apt-get update;apt-get upgrade を実行しておく
- MUMPS環境
--GT.M
--- 米F.I.S社がフリーで公開しているM言語(MUMPS)のひとつ
--- 現状は、商用の Caché(キャシエ) か GT.M しか選択肢はないのかな~
- MUMPSと各環境との仲介(Gateway)
-- MGWSI
--- 商用のMUMPSは別として、GT.M単体では外部からデータを扱うことができません
--- そこで、各実行環境との仲介をしようってのが The M/Gateway Services Integrator (MGWSI) です
--- 英 M/Gateway Developments 社が提供しています
--- 商用利用でなければフリーで使えるようです(詳しくはホームページを参照ください)
* MUMPS - GT.M 導入
** 導入手順
- アーカイブをダウンロード
-- http://sourceforge.net/projects/fis-gtm/ → gtm_V53004A_linux_i686_pro.tar.gz
- 展開すればすぐに使えます (バイナリになってます)
- 日本語(UTF-8)も使えますが、マルチバイト対応の組込関数が使いたいなら utf8 ディレクトリを使います
- 本格的に導入するなら同梱の configure を使うようですが、今回はやってません。
* 使い方
- 環境変数を設定
-- gtm_dist=実行ファイルmumpsのあるディレクトリ
-- gtmgbldir=$gtm_dist/mumps.gld
-- とりあえず動かすときはこんくらいでOK
- データベースファイルをつくる
$ mupip
MUPIP> create
MUPIP> exit
- これで mumps.dat が作られます。そこに実際のデータが格納されます。
- あとは通常のMUMPSと同じ感じで使えると思います。
- 同梱の mumps.hlp (英語のテキストファイル) が参考になると思います。
* MGWSI 導入
** ダウンロード
- http://gradvs1.mgateway.com/main/ → mgwsi_lx-x86_95b.tar.gz
-- 名前、会社、役職、メールアドレスを入力します。個人なので会社と役職は no にしときました。
-- メールアドレスにライセンスキー(*2)が届きます
- これも展開した中身はバイナリなので、そのまま使えます
- 同梱の Mgwsi.pdf (英語) を参考にしました
** セットアップ
*** MGWSI - 仲介用デーモンプロセス(*1)
- mgwsi と同じディレクトリに mgwsi.key を作成
-- 中身はメールで送られてきたライセンスキーです
-- [MAIN] の行から [OPTIONS] の下の行までをコピペします
- 起動
$ mgwsi
- 停止
$ mgwsi stop
- nph-mgwsic を cgi-bin ディレクトリにコピーしてブラウザから見たら管理画面?出たけど詳細は未調査
*** MGWSI - MUMPS向けの通信プロセス
- GT.M から (*1)とやりとりします
- ~/m/gtm/ZMGWSI.RO を GT.M のディレクトリへコピー
- 登録
$ mumps -direct
GTM> DO ^%RI
(Enter)
(Enter)
ZMGWSI.RO(Enter)
(Enter)
- 開始
$ mumps -direct
GTM> DO START^%ZMGWSI(0)
- 停止
$ mumps -direct
GTM> DO STOP^%ZMGWSI
*** MGWSI - 各環境向けの拡張モジュール
- PHP から (*1)とやりとりします ※ここでは PHP 用のモジュール(m_php)を使います
-- 他にも m_jsp, m_aspx, m_python, m_ruby, m_apache, m_cgi, m_websphere_mq があるよう
- php5210_mgw.so を /usr/lib/php5/20060613+lfs/ 配下へコピー (数字がバージョンに対応してると仮定して)
- /etc/php5/conf.d/mgwsi.ini を作成 (たぶん名前はなんでもいいのかな?)
extension=php5210_mgw.so
- Apache を再起動
-- sudo /etc/init.d/apache2 restart
-- phpinfo() で m_php が組み込まれていることを確認します
* 動かしてみる
<?php
// データの格納はこんな感じ
m_set('^animal','dog','wanwan');
m_set('^animal','cat','nya-nya-');
m_set('^animal','snake','...');
// データの参照はこんな感じ
$animal = 'cat';
echo 'Hey, ' . $animal . ' ! -> ' . m_get('^animal',$animal) . '<br />';
// データの削除はこんな感じ
m_kill('^animal','snake');
?>
上記を GT.M でやってみると…
set ^animal("dog")="wanwan"
set ^animal("cat")="nya-nya-"
set ^animal("snake")="..."
set animal="cat"
write "Hey, ",animal," ! -> ",^animal(animal),!
kill ^animal('snake')
- わざとまぎらわしく書きましたが ^animal はデータベースへのアクセス、animal はローカル変数へのアクセスになります
- 事前に ^animal を用意する必要はありません
- このまま使う分にはコミット等は必要ありません
- 全体を削除する場合は kill ^animal のようにします
- つまり、データベース(ファイル)とローカル変数の扱いがほとんど同じってことなのです
<?php
// もちろん n次元配列のアクセスも可能です。
$data = m_get($table,$country,$part,$date,$name);
?>
--------------------------------------------------------------------------------------------------
※ Ruby で使ってみました → [[m_ruby]]
※ Python で使ってみました → [[m_python]]
※ JSP で使ってみました → [[m_jsp]]
※ Apache で使ってみました → [[m_apache]]
MGWSIを導入したときの作業メモです。(2010年1月16日 初版作成)
* 導入環境
- マシン
-- hp の Compaq 6710b (ノートPC)(CPU:Core2Duo T7100)(メモリ:2GB)
- OS
--アスキームックについてた Ubuntu 9.10 (デスクトップ版)
- HTTPサーバ
-- Apache 2.2.12
-- PHP 5.2.10
-- 双方とも apt-get で適当に ※注意 最初に apt-get update;apt-get upgrade を実行しておく
- MUMPS環境
--GT.M
--- 米F.I.S社がフリーで公開しているM言語(MUMPS)のひとつ
--- 現状は、商用の Caché(キャシエ) か GT.M しか選択肢はないのかな~
- MUMPSと各環境との仲介(Gateway)
-- MGWSI
--- 商用のMUMPSは別として、GT.M単体では外部からデータを扱うことができません
--- そこで、各実行環境との仲介をしようってのが The M/Gateway Services Integrator (MGWSI) です
--- 英 M/Gateway Developments 社が提供しています
--- 商用利用でなければフリーで使えるようです(詳しくはホームページを参照ください)
* MUMPS - GT.M 導入
** 導入手順
- アーカイブをダウンロード
-- http://sourceforge.net/projects/fis-gtm/ → gtm_V53004A_linux_i686_pro.tar.gz
- 展開すればすぐに使えます (バイナリになってます)
- 日本語(UTF-8)も使えますが、マルチバイト対応の組込関数が使いたいなら utf8 ディレクトリを使います
- 本格的に導入するなら同梱の configure を使うようですが、今回はやってません。
* 使い方
- 環境変数を設定
-- gtm_dist=実行ファイルmumpsのあるディレクトリ
-- gtmgbldir=$gtm_dist/mumps.gld
-- とりあえず動かすときはこんくらいでOK
- データベースファイルをつくる
$ mupip
MUPIP> create
MUPIP> exit
- これで mumps.dat が作られます。そこに実際のデータが格納されます。
- あとは通常のMUMPSと同じ感じで使えると思います。
- 同梱の mumps.hlp (英語のテキストファイル) が参考になると思います。
* MGWSI 導入
** ダウンロード
- http://gradvs1.mgateway.com/main/ → mgwsi_lx-x86_95b.tar.gz
-- 名前、会社、役職、メールアドレスを入力します。個人なので会社と役職は no にしときました。
-- メールアドレスにライセンスキー(*2)が届きます
- これも展開した中身はバイナリなので、そのまま使えます
- 同梱の Mgwsi.pdf (英語) を参考にしました
** セットアップ
*** MGWSI - 仲介用デーモンプロセス(*1)
- mgwsi と同じディレクトリに mgwsi.key を作成
-- 中身はメールで送られてきたライセンスキーです
-- [MAIN] の行から [OPTIONS] の下の行までをコピペします
- 起動
$ mgwsi
- 停止
$ mgwsi stop
- nph-mgwsic を cgi-bin ディレクトリにコピーしてブラウザから見たら管理画面?出たけど詳細は未調査
*** MGWSI - MUMPS向けの通信プロセス
- GT.M から (*1)とやりとりします
- ~/m/gtm/ZMGWSI.RO を GT.M のディレクトリへコピー
- 登録
$ mumps -direct
GTM> DO ^%RI
(Enter)
(Enter)
ZMGWSI.RO(Enter)
(Enter)
- 開始
$ mumps -direct
GTM> DO START^%ZMGWSI(0)
- 停止
$ mumps -direct
GTM> DO STOP^%ZMGWSI
*** MGWSI - 各環境向けの拡張モジュール
- PHP から (*1)とやりとりします ※ここでは PHP 用のモジュール(m_php)を使います
-- 他にも m_jsp, m_aspx, m_python, m_ruby, m_apache, m_cgi, m_websphere_mq があるよう
- php5210_mgw.so を /usr/lib/php5/20060613+lfs/ 配下へコピー (数字がバージョンに対応してると仮定して)
- /etc/php5/conf.d/mgwsi.ini を作成 (たぶん名前はなんでもいいのかな?)
extension=php5210_mgw.so
- Apache を再起動
-- sudo /etc/init.d/apache2 restart
-- phpinfo() で m_php が組み込まれていることを確認します
* 動かしてみる
<?php
// データの格納はこんな感じ
m_set('^animal','dog','wanwan');
m_set('^animal','cat','nya-nya-');
m_set('^animal','snake','...');
// データの参照はこんな感じ
$animal = 'cat';
echo 'Hey, ' . $animal . ' ! -> ' . m_get('^animal',$animal) . '<br />';
// データの削除はこんな感じ
m_kill('^animal','snake');
?>
上記を GT.M でやってみると…
set ^animal("dog")="wanwan"
set ^animal("cat")="nya-nya-"
set ^animal("snake")="..."
set animal="cat"
write "Hey, ",animal," ! -> ",^animal(animal),!
kill ^animal('snake')
- わざとまぎらわしく書きましたが ^animal はデータベースへのアクセス、animal はローカル変数へのアクセスになります
- 事前に ^animal を用意する必要はありません
- このまま使う分にはコミット等は必要ありません
- 全体を削除する場合は kill ^animal のようにします
- つまり、データベース(ファイル)とローカル変数の扱いがほとんど同じってことなのです
<?php
// もちろん n次元配列のアクセスも可能です。
$data = m_get($table,$country,$part,$date,$name);
?>
--------------------------------------------------------------------------------------------------
※ Ruby で使ってみました → [[m_ruby]]
※ Python で使ってみました → [[m_python]]
※ JSP で使ってみました → [[m_jsp]]
※ Apache で使ってみました → [[m_apache]]
※ m_aspx は Windows のサーバ環境が無いので試せないかなあ
※ m_websphere_mq は、何者かわからないのでパス
※ m_cgi を /usr/lib/cgi-bin/ にコピーしてみたけどエラーになった →時間があったら調べる