« 2005年11月 | トップページ | 2006年1月 »

2005年12月31日 (土)

Mac De Oracle Heterogeneous! #3

前回MySQLをインストールした PowerBook G4 1Ghz 17inch (MacOSX 10.4.3 Tiger)にPostgreSQL 7.4.9 もインストールしデータベースを構築する。

http://wwwmaster.postgresql.org/download/mirrors-ftp?file=source%2Fv7.4.9%2Fpostgresql-7.4.9.tar.gzからpostgresql-7.4.9.tar.gzを入手し、適当なフォルダ(/tmpなどで解凍する)。
この例では、/Volumes/WorkVol/temp以下で解凍した。

注意)
今回もPostgreSQLのインストールやデータベース作成は簡単に(それなりに端折って)記述しているのであしからず。
また、MacOSXにPostgreSQLをインストールする記事を書いているBlogも多数あるのでそれらも参考にしてほしい。
(Mac De Oracleでは、MySQLやPostgreSQLの構築方法がメインではなく、Oracle Generic Connectivityの動きを確認する事が目的なので。)

Terminalを起動しPostgreSQL 7.4.9を解凍して出来たディレクトリに移動する。作業はrootで行うので、sudo shでrootになっておく。


Last login: Fri Nov 25 15:56:39 on ttyp1
Welcome to Darwin!
pb17:˜ discus$ sudo sh
Password:
sh-2.05b#
sh-2.05b# cd /Volumes/WorkVol/temp/postgresql-7.4.9
sh-2.05b# ls -l
total 1752
-rw-r--r-- 1 root wheel 1192 Nov 26 08:43 COPYRIGHT
-rw-r--r-- 1 root wheel 3460 Nov 26 08:43 GNUmakefile.in
-rw-r--r-- 1 root wheel 269744 Nov 26 08:43 HISTORY
-rw-r--r-- 1 root wheel 40847 Nov 26 08:43 INSTALL
-rw-r--r-- 1 root wheel 1432 Nov 26 08:43 Makefile
-rw-r--r-- 1 root wheel 1376 Nov 26 08:43 README
-rw-r--r-- 1 root wheel 442 Nov 26 08:43 aclocal.m4
drwxr-xr-x 19 root wheel 646 Nov 26 08:42 config
-rwxr-xr-x 1 root wheel 523803 Nov 26 08:43 configure
-rw-r--r-- 1 root wheel 39896 Nov 26 08:43 configure.in
drwxr-xr-x 53 root wheel 1802 Nov 26 08:42 contrib
drwxr-xr-x 30 root wheel 1020 Nov 26 08:42 doc
drwxr-xr-x 22 root wheel 748 Nov 26 08:43 src


日本語EUCが利用できるようにconfigureする。


sh-2.05b# ./configure --enable-multibyte=EUC_JP
checking build system type... powerpc-apple-darwin8.3.0
checking host system type... powerpc-apple-darwin8.3.0
checking which template to use... darwin
checking whether to build with 64-bit integer date/time support... no
checking whether NLS is wanted... no
checking for default port number... 5432
checking for gcc... gcc

中略

configure: using CPPFLAGS=
configure: using LDFLAGS=
checking for gawk... no
checking for mawk... no
checking for sgmlspl... no
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking ./src/backend/port/dynloader/darwin.c to src/backend/port/dynloader.c
config.status: linking ./src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking ./src/backend/port/dynloader/darwin.h to src/include/dynloader.h
config.status: linking ./src/include/port/darwin.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.darwin to src/Makefile.port
sh-2.05b#

エラーもなくconfigureできたのでコンパイルする。


sh-2.05b# make
make -C doc all
gzip -d -c man.tar.gz | /usr/bin/tar xf -
for file in man1/*.1; do ¥
mv $file $file.bak && ¥
sed -e 's/¥¥fR(l)/¥¥fR(7)/' $file.bak >$file && ¥
rm -f $file.bak || exit; ¥
done
/bin/sh ../config/mkinstalldirs man7
mkdir man7
for file in manl/*.l; do ¥
sed -e '/^¥.TH/s/"l"/"7"/' ¥
-e 's/¥¥fR(l)/¥¥fR(7)/' ¥
$file >man7/`basename $file | sed 's/.l$/.7/'` || exit; ¥
done
make -C src all
make -C port all
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c -o path.o path.c
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c -o sprompt.o sprompt.c
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c thread.c
ar crs libpgport.a path.o sprompt.o thread.o
make -C backend all

中略

rm -f libplpgsql.so
ln -s libplpgsql.so.1.0 libplpgsql.so
All of PostgreSQL successfully made. Ready to install.
sh-2.05b#


コンパイルエラーもないようなので、インストールする。


sh-2.05b# make install
make -C include install
mkdir /usr/local/pgsql/include
mkdir /usr/local/pgsql/include/libpq
mkdir /usr/local/pgsql/include/internal
mkdir /usr/local/pgsql/include/internal/libpq
mkdir /usr/local/pgsql/include/internal/lib

中略

make[4]: Nothing to be done for `all'.
/bin/sh ../../../config/install-sh -c pg_encoding /usr/local/pgsql/bin/pg_encoding
make -C pl install
make -C src install
/bin/sh ../../../../config/install-sh -c -m 755 libplpgsql.so.1.0 /usr/local/pgsql/lib/plpgsql.so
PostgreSQL installation complete.
sh-2.05b#


次に キャタクタセット EUC_JP でデータベースクラスタを作成する。
データベースクラスタを作成しないと、インスタンスが起動できないので注意する。
(尚、MySQL、PostgreSQLは、Oracleとは異なり1インスタンスで複数データベースを管理することができる)

データベースクラスタを作成するには initdb コマンドを利用する。
尚、データベースクラスタは、/usr/local/pgsql/data以下に作成することにする。

インストールが終了すると postgres というユーザが作成されているのでそのユーザで作業する。


pb17:˜ discus$ su - postgres
Password:
pb17:˜ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data -E EUC_JP
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale C.

fixing permissions on existing directory /usr/local/pgsql/data... ok
creating directory /usr/local/pgsql/data/base... ok
creating directory /usr/local/pgsql/data/global... ok
creating directory /usr/local/pgsql/data/pg_xlog... ok
creating directory /usr/local/pgsql/data/pg_clog... ok
selecting default max_connections... 50
selecting default shared_buffers... 300
creating configuration files... ok
creating template1 database in /usr/local/pgsql/data/base/1... ok
initializing pg_shadow... ok
enabling unlimited row size for system tables... ok
initializing pg_depend... ok
creating system views... ok
loading pg_description... ok
creating conversions... ok
setting privileges on built-in objects... ok
creating information schema... ok
vacuuming database template1... ok
copying template1 to template0... ok

Success. You can now start the database server using:

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

pb17:˜ postgres$

データベースクラスタができたのでPostgreSQLのインスタンスを起動する。


pb17:˜ postgres$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
postmaster successfully started

問題なく起動したようだ。


Oracleでいうところの、SQL*Plusに相当するpsqlを起動する前に環境変数は以下のように設定しておく。
クライアントのキャラクタセットはSJISにする。


pb17:˜ postgres$ cat .bash_profile
export PATH=$PATH:/usr/local/pgsql/bin
export PGDATA=/usr/local/pgsql/data

# client encoding
export PGCLIENTENCODING=SJIS

pb17:˜ postgres$
pb17:˜ postgres$ . .bash_profile


次に postgresql749 というデータベースを作成する。
作成済みデータベースは、psql -l で確認できる。


pb17:˜ postgres$ createdb postgresql749
CREATE DATABASE
pb17:˜ postgres$

pb17:˜ postgres$ psql -l
List of databases
Name | Owner | Encoding
---------------+----------+----------
postgresql749 | postgres | EUC_JP
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(3 rows)


psql で postgresql749 データベースに接続する。


pb17:˜ postgres$ psql postgresql749
Welcome to psql 7.4.9, the PostgreSQL interactive terminal.

Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quit

postgresql749=#

※ scott ユーザを作成する。


postgresql749=# create user scott with password 'xxxxxxx';
CREATE USER
postgresql749=# ¥du
List of database users
User name | User ID | Attributes
-----------+---------+----------------------------
postgres | 1 | superuser, create database
scott | 100 |
(2 rows)

postgresql749=#
postgresql749=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+----------+----------+-----------
postgres | 1 | t | t | t | ******** | |
scott | 100 | f | f | f | ******** | |
(2 rows)

postgresql749=#

ユーザと同じ名称のスキーマを作成し所有者をscottにする。このようにすることでscottユーザがログインすると優先スキーマがscottスキーマになり、Oracleに近い感覚で利用できることになります。
(Oracleに慣れてしまっていると、つい、ユーザとスキーマが同じようなイメージで固まってしまいますが、実際には違うオブジェクトだということ思い出しますね。たまにはOracle以外のデータベースで遊ぶのもいいかもしれません。)

postgresql749=# create schema scott authorization scott; CREATE SCHEMA postgresql749=#
 postgresql749=# ¥dn
List of schemas
Name | Owner
--------------------+----------
information_schema | postgres
pg_catalog | postgres
pg_temp_1 | postgres
pg_toast | postgres
public | postgres
scott | scott
(6 rows)
pb17:˜ postgres$ psql -U scott postgresql749 Welcome to psql 7.4.9, the PostgreSQL interactive terminal.

Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quit

postgresql749=> select current_schema();
current_schema
----------------
scott
(1 row)


さて、psqlというクライアントでは、AUTOCOMIT ON がデフォルトになっている。これでは都合が悪いので ホームディレクトリに .pgsqlrc を作成し、¥set AUTOCOMMIT off と記述しておく。


postgresql749=#
pb17:˜ postgres$ cat .psqlrc
¥set AUTOCOMMIT off
pb17:˜ postgres$

さて、最後に表を作成する。MySQLと同じくemp表を作成してデータの登録、参照までを行う。


pb17:˜ postgres$ psql -U scott postgresql749
Welcome to psql 7.4.9, the PostgreSQL interactive terminal.

Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quit

postgresql749=>
postgresql749=> create table emp
postgresql749-> (
postgresql749(> empno numeric(10,0) primary key,
postgresql749(> ename varchar(40)
postgresql749(> );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "emp_pkey" for table "emp"
CREATE TABLE

postgresql749=> ¥d emp
Table "public.emp"
Column | Type | Modifiers
--------+-----------------------+-----------
empno | numeric(10,0) | not null
ename | character varying(40) |
Indexes:
"emp_pkey" primary key, btree (empno)

postgresql749=>
postgresql749=> ¥dt
            List of relations
Schema | Name | Type | Owner
--------+--------+-------+-------
scott | emp | table | scott
(1 row)

postgresql749=> insert into emp values(1,'¥202¥331¥202¥260¥202¥331¥202¥260');
INSERT 25420 1
postgresql749=> insert into emp values(2,'¥202¥331¥202¥260');
INSERT 25421 1
postgresql749=> insert into emp values(3,'¥211¥273¥202¥257¥202¥310¥202¥242¥202¥346¥202¥313¥201`¥201[');
INSERT 25422 1
postgresql749=> commit;
COMMIT


postgresql749=> select * from emp;
empno | ename
-------+------------------
1 | ほげほげ
2 | ほげ
3 | 化けないよね〜ー
(3 rows)

postgresql749=>

ここまでで、PowerBook G4 1Ghz 17inch (MacOSX 10.4.3 Tiger)に MySQL 4.0.25 mysqldb (SJIS) と PostgreSQL 7.4.9 postgresql749 (EUC_JP) という2つのデータベースができた。

次回は、MacOSX 10.4.3 Tiger Server に MySQL4.1.13a、そしてWindows XP Proに MySQL4.0.26-ntのデータベースを作成しODBCドライバの構成まで書く予定である。(尚、Windows XP Proには、Oracle10g R1 EEがインストール済みでデータベースも作成済みである)

| | | コメント (0) | トラックバック (0)

2005年12月30日 (金)

Mac De Oracle Heterogeneous! #2

さて、Generic Connectivityを試す環境作りです。

まず最初は、MacOSX 10.4.3 Tiger (PowerBook G4 1Ghz 17inchに、MySQL 4.0.25 Standardをインストールしてデータベースを構築、表の作成、最後にデータ登録まで行う。

MacOSXでのMySQL構築を書いているBlogも多数存在するので、Mac De Oracleではその辺りは簡単に(端折ってとも言う)書く事にするので悪しからず。

MacOSX 10.4 Serverならば、MySQL4.1も付属していますが、Server版ではないのでダウンロードしてインストールする。
これをダウンロードして利用した。
インストーラをダブルクリックするだけでインストールできるので簡単です。
後は、インストーラに付属しているコントロールパネルをライブラリ/PreferencePanes/以下にコピーすればシステム環境設定から起動停止できるようになります。


gencon_blog2_img1


gencon_blog2_img2



MySQLは、/usr/local/mysql にインストールされるので以下のような感じで環境変数を設定しておく


pb17:〜 discus$ cat .bash_profile

export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

pb17:˜ discus$

以下のようにコマンド起動しても構わないが、システム環境設定にインストールしたコントロールパネルから起動したほうが楽ですね。自動起動の設定もこれでできます。


$ sudo mysqld_safe --user=mysql &

または、以下のコントロールパネルで起動。(私はGUIで起動してます。楽なので)


gencon_blog2_img3


gencon_blog2_img4



文字化けが気になるのでGeneric Connectivityで接続する環境はなるべく同一キャラクタセットにしておきたいがうまい具合に統一されていない場合も多々ある。今回はMySQLのデータベースはすべてsjisを想定しているので作成するデータベースのデフォルトキャラクタセットはsjisに設定しておく。 設定は、/etc/my.cnf で行う。

今回作成する mysqldb データベースのデフォルトキャラクタセットを以下のように設定しておく。


pb17:˜ discus$ cat /etc/my.cnf
[mysqld]
default-character-set = sjis
[mysqldump]
default-character-set = sjis
[mysql]
default-character-set = sjis
[mysqldb]
default-character-set = sjis
pb17:˜ discus$

念のため起動しているか確認。


Last login: Tue Nov 15 21:59:49 on console
Welcome to Darwin!
pb17:˜ discus$ sudo mysqladmin -u root -p ping
Enter password:
mysqld is alive

rootユーザで接続し、jobs というユーザを作成。localhostとWindows XP Proからだけ接続できれば十分なのだが、今回は全ホストからの接続を受け付けるようにした。
(セキュリティ上はNGなのだが。。)
ちなみに、ちゃんとやるのであれば、localhostとWindows XP Proからの接続を受け付けるように grant文を2回実行する必要がある。


pb17:˜ discus$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 239 to server version: 4.0.25-standard

Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.

mysql> use mysql
Database changed
mysql> grant all on mysqldb.* to 'jobs'@'%' identified by 'xxxxxxxxxx';
Query OK, 0 rows affected (0.04 sec)

mysql> exit
Bye

mysqldb というデータベースを作成する。


pb17:˜ discus$ sudo sh
Password:
sh-2.05b# mysqladmin -u root -p create mysqldb
Enter password:
sh-2.05b#
sh-2.05b#
sh-2.05b# exit
exit


作成した jobs ユーザで mysqldbに接続し、キャラクタセットの確認後 MyISAMの表及び、InnoDBの表を作成する。最後にマルチバイトを含む文字列の登録と参照を行う。


pb17:˜ discus$ mysql -u jobs -p mysqldb
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 100 to server version: 4.0.25-standard

Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.


※デフォルトキャラクタセットを確認しておく。

mysql> show variables like '%char%'¥G
*************************** 1. row ***************************
Variable_name: character_set
Value: sjis
*************************** 2. row ***************************
Variable_name: character_sets
Value: latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
*************************** 3. row ***************************
Variable_name: convert_character_set
Value:
3 rows in set (0.00 sec)

※ emp表をMyISAMエンジンで作成する。

mysql> show create table emp¥G
*************************** 1. row ***************************
Table: emp
Create Table: CREATE TABLE `emp` (
`empno` int(11) NOT NULL default '0',
`ename` varchar(40) default NULL,
PRIMARY KEY (`empno`)
) TYPE=MyISAM
1 row in set (0.00 sec)

※Terminalから日本語を入力すると以下のようになるが、問い合わせると正常に表示される。
(現時点のTerminalの問題点なのでしかたない。)
  ちなみに、Terminalの文字エンードは 日本語MacOS(SJIS系)にしてある。


mysql> insert into emp values(1,'¥202¥250¥202¥347¥202¥250¥202¥347');
Query OK, 1 row affected (0.00 sec)

mysql> insert into emp values(2,'¥202¥331¥202¥260');
Query OK, 1 row affected (0.00 sec)

mysql> insert into emp values(3,'¥211¥273¥202¥257¥202¥310¥202¥242¥202¥346¥202¥313¥201[¥201`');
Query OK, 1 row affected (0.00 sec)


mysql> select * from emp;
+-------+------------------+
| empno | ename |
+-------+------------------+
| 1 | おらおら |
| 2 | ほげ |
| 3 | 化けないよねー〜 |
+-------+------------------+

3 rows in set (0.00 sec)

mysql>
mysql>


トランザクションをサポートしているinnoDBをエンジンに使った表も用意する。(BDBやMAXDBも存在するようだが、InnoDBを使っているところのほうが多そうなのでInnoDBに絞る。
InnoDBは、Oracleのようなマルチバージョニングを行っているエンジンであり、先日Oracleが買収したことでも有名。

(前述の表は、MyISAMをエンジンに利用しているため、commitや、rollbackが行えない。つまり、INSERT文や、UPDATE文、DELETE文は ”常に”AUTOCOMMIT されてしまう。
ROLLBACKができないので、その手の処理はプログラムに実装する必要があるのだ。常にトランザクションを意識している世界でプログラミングしていた方は要注意!)

当然、OracleにあるようなFlush back queryや、Flush back dropも無いのでバックアップから戻すことになる。rollback入力し、エラーが帰ってきたところで、あ! という声が発せられることになる。。。(自分で実験済み! ^^;;; )

ちなみに、今回はMySQLやPostgreSQL側にOracleからデータを参照することをメインに考えているのであまり影響ないが、どのような動きをするのかも確認しておきたいので、MyISAM及びInnoDB両エンジンを利用した表を準備しておく。

注)
show create table inno_emp; としても内容は確認できるが非常に読みにくく表示されるので show create table inno_emp¥G として表示形式を読みやすくしてある。
詳細は、mysql> help  としてヘルプで確認してもらいたい。
 
mysql> show create table inno_emp¥G
*************************** 1. row ***************************
Table: inno_emp
Create Table: CREATE TABLE `inno_emp` (
`empno` int(11) NOT NULL default '0',
`ename` varchar(40) default NULL,
PRIMARY KEY (`empno`)
) TYPE=InnoDB
1 row in set (0.07 sec)

emp表と同じデータを登録しておく。


mysql> insert into inno_emp select * from emp;
Query OK, 3 rows affected (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from inno_emp;


+-------+------------------+
| empno | ename |
+-------+------------------+
| 1 | おらおら |
| 2 | ほげ |
| 3 | 化けないよねー〜 |
+-------+------------------+
3 rows in set (0.00 sec)

mysql>

ここまでで、 MacOSX 10.4.3 Tiger (PowerBook G4 1Ghz)のMySQL4.0.25のデータベースの準備は完了した。
次は、同じMacに PostgreSQL7.4.9を構築する。

余談だが、妻は今 Scarab De MySQL と格闘中?!(環境できたかな〜)

| | | コメント (1) | トラックバック (0)

2005年12月29日 (木)

Mac De Oracle Heterogeneous! #1

さて、しばらくご無沙汰していた記事投稿再開第一弾は、Generic Connectivityに関するものにした。

Generic Connectivityは、Oracle Database Heterogeneous Connectivity(異機種間接続)機能の一部で、

他に Transparent Gatewayという有償オプションも用意されている。(詳細は、マニュアル「Oracle Database Heterogeneous Connectivity管理者ガイド 10g」を参照するとよいだろう。)

Generic Connectivityは、ODBC又は、OLE DBを利用して行えるOracle Databaseの基本機能の一つ。
今回はODBCドライバが提供されている


MySQL4.0.25 (MacOSX 10.4 Tiger)
MySQL4.0.26-nt (WindowsXP Pro)
MySQL4.1.13a (MacOSX 10.4 Tiger Server付属のもの)
PostgreSQL7.4.9 (MacOSX 10.4 Tiger)

という4つのリモートデータベースに、Mac De Oracleらしく、MacOSX 10.4 Tiger Serverに無理矢理構築した、Oracle10g R1 EE 10.1.0.3から接続して動作上の癖を把握しておくことにした。

しかし、ここで問題発生。
現時点では、MacOSX版 Oracle10g には Heterogeneous Serviceが提供されていないのである。
どうするかしばし考えて浮かんだのが、Windows版又は、Linux版 Oracle10g R1 EEを踏み台にしてMacOSX Server上のOracle10gからアクセスするという方法。
そこまでしてそんなことやりたいのかという声が聞こえてきそうだが、最近、PostgreSQLやってくれとかMySQLがどうの。。。という話も多くなり、それらの勉強も兼ねて試してみることにした。(こんなことも試しておけば何かの役に立つこともあるだろうから。)
#そのうち FireBirdなどでも試してみるかもしれない。

ではまず、各リモートデータベースとするデータベースの構築から行っていく。尚、踏み台にするOracleはWindowsに構築することにした。
(LinuxはOracle9iで遊んでいるため今回は利用しないが、Unix/LinuxではunixODBC(ODBC driver Manager)及び、各データベースに対応したlinux向けODBC Driverがリリースされているし、Blogなどでも結構記事を見かけるのでそれを参考にするとよいだろう。また、unixODBCのODBCConfig(GUI)は、Windowsのデータソース管理の操作性に類似しているので戸惑うことは少ないと思う)

環境は以下の通り。
(キャタクタセットが統一できていれば一番よいが現実問題としてそうも行かない。が、今回、MySQLのデータベースはすべてSJISで作成した)

1、MacOSX 10.4.3 Tiger (PowerBook G4 1Ghz)


PostgreSQL 7.4.9 (キャラクタセット EUC。キャラクタセットにSJISが無いのでEUCにした。)
MySQL 4.0.25 standard (キャラクタセット SJIS)

  #ほんとうは、iMacG5に作りたかったけど、奥さん専用のMacなので今回は遠慮した。(^^;;

2、MacOSX 10.4.3 Tiger Server (Power Mac G5 Dual 2.7Ghz)


MySQL 4.1.13a (キャラクタセットSJIS、MacOSX 10.4 Serverに付属しているもの)
Oracle10g R1 EE 10.1.0.3(キャラクタセット JA16SJISTILDE、無理矢理構築したもの)

3、WindowsXP Professional (AMD AthronMP Dual 2800+)


Oracle10g R1 EE 10.1.0.3(キャラクタセット JA16SJISTILDE)
(これを踏み台にしてMacOSX のOracleから各リモートデータベースをアクセスする)

MySQL 4.0.26-nt standard(キャラクタセット SJIS)


イメージはこんな感じ


Deploymentdiagram_1


次回は、MacOSX 10.4.3 Tiger (PowerBook G4)にMySQL4.0.25 standard のデータベースを作成し、接続確認するための表を作成する。

| | | コメント (0) | トラックバック (0)

2005年12月19日 (月)

Safari De Java Console

Blogに時計を表示している方がいるが、そのほとんどがFlashで作られた時計。ということで java applet で時計を作るのもいいかなと思い早速追加してみました。

ただ、Safariでアプレットを表示させるのもデバッグするのも初めてだったので Java Console の表示方法がわからなかった。。。

調べてみると、Safariのメニューや環境設定から行うのではなくjava プラグイン設定という別アプリケーションから行うとのこと。
java 1.4.2プラグイン設定は以下にあります。


p1


起動するとこんな画面が現れるので、「java コンソールを使用」チェックボックスをチェックー>「適用」ボタンをクリック。あとは Safari を再起動させ、applet を実行すれば java consoleが起動してくれます。


p2


p3

メモっておいてくれと言われたので備忘録として記録しておく。

| | | コメント (0) | トラックバック (0)

2005年12月 6日 (火)

命名規則は大切だよ!

xxx_flag なんて名称にしたらOracleならNUMBER(1) not null としてチェック制約で0,1のチェックを行わせデフォルト値を設定することが多い。そうすれば0,1以外の値にはできないわけです。はい。

ですが、世の中、広いもので、xxx_flagと名付けておきながら、9 をセットしている。意味わからん。
さらに、怖いのはxxx_flagという名称なのにintegerで定義されていてデータベース側もプログラムもザル状態。

−100をセットしてもダイジョブみたい。そんなフラグ! ありえん!

0と1の意味は想像できるが、9 とか −100 なんてどういう意味? 
だいたい、フラグじゃねえだろ。こんな値が設定されるカラムなんだから!

命名規則は守ろうよ。 というより命名規則が存在しないのね。
しかし、命名規則が無くたって、これはひどい。。。。
5年前に見た________のシステムがこれに近かったが、久々に見たよ、こんなの。。、目眩が。。。

#データベースの使い方以前の問題ですな。これは。意識改革から始めなければ。。。。

| | | コメント (3) | トラックバック (0)

2005年12月 4日 (日)

Mac Da! Marcus も!

溜まってきている記事があるがまだ、纏めてないのでとりあえず、昨日のBluenote Tokyoのライブ話。

Marcus MillerもPowerBook使ってました。 キーボード上のPower Book G4。 ステージのライティングの中でも、光るリンゴマークは絵になるねぇ。 

予定通りBluenote Tokyoのライブに行ってきました。

CIMG7235

ライブ後、Marcus Millerのサイン会もあったので、きっちりサインをもらってきました。(^^/

CIMG7239 CIMG72382


本気で長い前置きは、このくらいにしておいて、HTML DB のサンプルは。。。進んでない。。でも、検索してみるとたくさんあるのね、HTML DB のサンプル記事。HTML DB 2.1かつ Oracle Database 10g Express Editionを使っているみたいです。 Mac の HTML DBのサンプルはあまりみたことないので、いずれやる予定ですが、、、最近、
HTML DB以外のネタのほうがいろいろ溜まってきたので、そちらを先に載せることになるかもしれない。

| | | コメント (1) | トラックバック (0)