音楽に関する話題、プログラムに関する話題、ジョギングに関する話題、後は日々気になったことを綴っていきます。
ザ☆ミュージシャンズ・プログラマー - Exploring Music & Programming -



<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

今までごちゃごちゃと書いてきましたが、お分かりの通り、Derbyのマニュアル、Getting Started with Derby(さあ、Derbyを始めよう!!) からの引用です。

とにかく、今回がその最後になりますが、クラサバ環境でクライアント・ドライバーを使用したJDBCプログラムをこしらえて、動かしてみようと思います。
例の如くDERBYTUTORへ移動します。

前回はその直下にsrcというディレクトリを作成して、デモをコピーしてきています。

その中のWwdEmbedded.javaを弄って動くものを作ります。

■WwdEmbedded.javaをWwdClient.javaとしてコピーします。

> cp WwdEmbedded.java WwdClient.java

■WwdClient.javaを編集する。

クラス定義をまずは変えないといけません。

修正前
    public class WwdEmbedded

修正後
    public class WwdClient

続いて、ドライバー名、URL属性名を変えます。

修正前
    // define the driver to use
        String driver = "org.apache.derby.jdbc.EmbeddedDriver";
    // the database name
        String dbName = "jdbcDemoDB";
    // define the Derby connection URL to use
        String connectionURL = "jdbc:derby:" + dbName + ";create=true";

修正後
    // define the driver to use
        String driver = "org.apache.derby.jdbc.ClientDriver";
    // the database name
        String dbName = "jdbcDemoDB";
    // define the Derby connection URL to use
        String connectionURL = "jdbc:derby://localhost:1527/" + dbName + ";create=true";

■ビルド(コンパイル)します。

> ant -f build-db.xml

■別端末エミュレータにてDBサーバーを起動します。

/var/tmp/DERBYTUTORに移動して、以下のコマンドを入力します。

> java -jar $DERBY_HOME/lib/derbyrun.jar server start
2010-06-24 07:03:35.922 GMT : セキュリティーマネージャーが Basic サーバーセキュリティーポリシーを使用してインストールされました。 2010-06-24 07:03:37.634 GMT : Apache Derby Network Server - 10.6.1.0 - (938214) が起動し、ポート 1527 で接続の受け入れ準備が完了しました

■クライアントを起動します。

まずは、前回作成したbuild-db.xmlのembの次に以下を追加します。

        <target name="client" depends="build">
               <java classname="WwbClient" fork="yes">
                     <classpath refid="cp">
               <java>
        </target>

> ant -e -f build-db.xml client(Emacsモードで)
・・・中略・・・
client:
org.apache.derby.jdbc.ClientDriver loaded.
Connected to database jdbcDemoDB
Enter wish-list item (enter exit to end):
a sunny day
  __________________________________________________
On 2010-06-24 00:49:04.977 I wished for a peppermint stick
On 2010-06-24 00:49:12.258 I wished for a long vacation
On 2010-06-24 16:20:18.104 I wished for a sunny day
  __________________________________________________
Enter wish-list item (enter exit to end):
a new car
  __________________________________________________
On 2010-06-24 00:49:04.977 I wished for a peppermint stick
On 2010-06-24 00:49:12.258 I wished for a long vacation
On 2010-06-24 16:20:18.104 I wished for a sunny day
On 2010-06-24 16:20:22.523 I wished for a new car
  __________________________________________________
Enter wish-list item (enter exit to end):
exit
Closed connection
Getting Started With Derby JDBC program ending.

BUILD SUCCESSFUL
Total time: 1 minute 18 seconds
※ボールド体が入力項目です。

■サーバーが起動している端末とは別の端末エミュレータで停止させます。

/var/tmp/DERBYTUTORに移動して、以下のコマンドを入力します。

> java -jar $DERBY_HOME/lib/derbyrun.jar server shutdown
そうすると、サーバーを起動した端末側で以下が出力されます。
2010-06-24 07:54:03.975 GMT : Apache Derby Network Server - 10.6.1.0 - (938214) はシャットダウンしました

ざっとですが、Derbyを使ってみて、ちょっとしたアプリ開発であれば、問題なさげな感があります。 この後は、もう少し掘り下げて、ツールの使い方や、プログラミングを勉強していこうと思います。 フレーム・ワークへの組み込みなんかも意外と簡単にできそうです。 <form action="http://www.google.co.jp/cse" id="cse-search-box">
<input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="&#x691c;&#x7d22;" />
</form> <script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>

コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

次は組み込みドライバーを使ったJDBCプログラムを試してみます。
例の如くDERBYTUTORへ移動します。

> /var/tmp/DERBYTUTOR

ここでDERBYのデモプログラムを使ってみます。

> mkdir src
> cp $DERBY_HOME/demo/programs/workingwithderby/* src/
> ls src

WwdClientExample.class WwdEmbedded.class WwdUtils.class readme.html
WwdClientExample.java WwdEmbedded.java WwdUtils.java

.classファイルは邪魔なので削除してください。

DERBYTUTOR直下で以下のようなbuild.xmlを作成しました。

■build-db.xml

<?xml version="1.0" encoding="EUC-JP"?>

<project name="derby-demo" default="build" basedir=".">
    <property name="src.dir" value="src" />
    <property name="dest.dir" value="classes" />
    <property environment="env" />

    <path id="cp">
        <pathelement location="${dest.dir}" />
        <fileset dir="${env.DERBY_HOME}/lib">
            <include name="**/*.jar" />
        </fileset>
    </path>

    <target name="echo">
        <property name="echo.path" refid="cp" />
        <echo message="${echo.path}" />
    </target>

    <target name="init">
        <tstamp />
    </target>

    <target name="build" depends="init">
        <mkdir dir="${dest.dir}" />
        <javac srcdir="${src.dir}" destdir="${dest.dir}" debug="yes">
            <classpath refid="cp" />
            <include name="*.java" />
        </javac>
    </target>

    <target name="emb" depends="build">
        <java classname="WwdEmbedded" fork="yes">
            <classpath refid="cp" />
        </java>
    </target>

</project>

■プログラムのコンパイルおよび起動の確認

> ant -f build-db.xml build
> ant -f build-db.xml emb
emb:
     [java] org.apache.derby.jdbc.EmbeddedDriver loaded.
     [java] Connected to database jdbcDemoDB
     [java]  . . . . creating table WISH_LIST
     [java] Enter wish-list item (enter exit to end):
a peppermint stick
     [java]   __________________________________________________
     [java] On 2010-06-24 00:49:04.977 I wished for a peppermint stick
     [java]   __________________________________________________
     [java] Enter wish-list item (enter exit to end):
a long vacation
     [java]   __________________________________________________
     [java] On 2010-06-24 00:49:04.977 I wished for a peppermint stick
     [java] On 2010-06-24 00:49:12.258 I wished for a long vacation
     [java]   __________________________________________________
     [java] Enter wish-list item (enter exit to end):
exit
     [java] Closed connection
     [java] Database shut down normally
     [java] Getting Started With Derby JDBC program ending.

<form id="cse-search-box" action="http://www.google.co.jp/cse">  
    <input type="hidden" value="partner-pub-3407383286528802:x1hdk1ewp2s" name="cx" />     <input type="hidden" value="UTF-8" name="ie" />     <input type="text" size="31" name="q" />     <input type="submit" value="検索" name="sa" />  
</form>

<script src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja" type="text/javascript"></script>



コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

第2弾として、クラサバ環境でJavaDBを使用してみます。
前回作成したDERBYTUTORへ移動します。
> /var/tmp/DERBYTUTOR
■別の端末エミュレーターを使ってネットワーク・サーバーを起動します。

> java -jar $DERBY_HOME/lib/derbyrun.jar server start
2010-06-23 14:49:32.045 GMT : セキュリティーマネージャーが Basic サーバーセキュリティーポリシーを使用してインストールされました。
2010-06-23 14:49:33.738 GMT : Apache Derby Network Server - 10.6.1.0 - (938214) が起動し、ポート 1527 で接続の受け入れ準備が完了しました

■ijツールを起動します。

> ij

■クライアント・ドライバーを使ってデータベースに接続します。

> CONNECT 'jdbc:derby://localhost:1527/seconddb;create=true';

■次のSQLステートメントを使って2つのカラムを定義したテーブルを作成します。

> CREATE TABLE SECONDTABLE(ID INT PRIMARY KEY,NAME VARCHAR(14));
0 行が挿入/更新/削除されました

■3レコード追加します。

> INSERT INTO SECONDTABLE VALUES(100,'ONE HUNDRED'),(200,'TWO HUNDRED'),(300,'THREE HUNDRED');
3 行が挿入/更新/削除されました

■テーブルを全件検索します。

> SELECT * FROM SECONDTABLE;
ID         |NAME
--------------------------
100        |ONE HUNDRED
200        |TWO HUNDRED
300        |THREE HUNDRED

3 行が選択されました

■WHERE句を使ってテーブルのサブセットを検索します。

> SELECT * FROM SECONDTABLE WHERE ID=200;
ID         |NAME
--------------------------
200        |TWO HUNDRED

1 行が選択されました

■ijツールを終了します。

> exit;

■Derbyネットワーク・サーバーを停止します。

> java -jar $DERBY_HOME/lib/derbyrun.jar server shutdown

そうすると、別端末エミュレータで起動したネットワーク・サーバーが以下を出力して停止します。
2010-06-23 15:15:15.660 GMT : Apache Derby Network Server - 10.6.1.0 - (938214) はシャットダウンしました

<form id="cse-search-box" action="http://www.google.co.jp/cse">  
    <input type="hidden" value="partner-pub-3407383286528802:x1hdk1ewp2s" name="cx" />     <input type="hidden" value="UTF-8" name="ie" />     <input type="text" size="31" name="q" />     <input type="submit" value="検索" name="sa" />  
</form>

<script src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja" type="text/javascript"></script>



コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

前回はOSとしてWindowsを使用しましたが、やっぱり運用がUnixというだけに、Unixバージョンで行きます。

環境は以下の通りです。

  1. OSはSolaris10(SPARC版)
  2. Javaは1.6.0_20
  3. JavaDB(Apache Derby)は別途10.6.1.0で行きます。
  4. Javaでプログラムを書くこともあるので、Antも使います。バージョンは1.8.1です。

Windowsと同様にJava(JAVA_HOME)、JavaDB(DERBY_HOME)、Ant(ANT_HOME)の環境変数を定義し、各APのbinをPATHに追加します。

> java -version
java version "1.6.0_20
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)

> ant -version
Apache Ant version 1.8.1 compiled on April 30 2010

> sysinfo
------------------ Java 情報 ------------------
Java バージョン: 1.6.0_20
Java ベンダー: Sun Microsystems Inc.
Java ホーム: /usr/jdk/instances/jdk1.6.0/jre
Java クラスパス: /opt/db-derby-10.6.1.0-bin/lib/derby.jar:/opt/db-derby-10.6.1.0-bin/lib/derbynet.jar:/opt/db-derby-10.6.1.0-bin/lib/derbytools.jar:/opt/db-derby-10.6.1.0-bin/lib/derbyclient.jar
OS 名: SunOS
OS アーキテクチャー: sparc
OS バージョン: 5.10
Java ユーザー名: XXX
Java ユーザー・ホーム: /export/home/XXX
Java ユーザー dir: /export/home/XXX
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_20-b02
--------- Derby 情報 --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[/opt/db-derby-10.6.1.0-bin/lib/derby.jar] 10.6.1.0 - (938214)
[/opt/db-derby-10.6.1.0-bin/lib/derbytools.jar] 10.6.1.0 - (938214)
[/opt/db-derby-10.6.1.0-bin/lib/derbynet.jar] 10.6.1.0 - (938214)
[/opt/db-derby-10.6.1.0-bin/lib/derbyclient.jar] 10.6.1.0 - (938214)
------------------------------------------------------
----------------- ロケール情報 ----------------
現行ロケール : [日本語/日本 [ja_JP]]
ロケールのサポートが見つかりました: [cs]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [de_DE]
&nbs;&nbs; バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [es]
     バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [fr]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [hu]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [it]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [ja_JP]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [ko_KR]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [pl]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [pt_BR]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [ru]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [zh_CN]
    バージョン: 10.6.1.0 - (938214)
ロケールのサポートが見つかりました: [zh_TW]
    バージョン: 10.6.1.0 - (938214)
------------------------------------------------------

DERBY_HOMEからデモ用のスクリプトをコピーします。

> cd /var/tmp

> mkdir DERBYTUTOR

> cd DERBYTUTOR

> cp $DERBY_HOME/demo/programs/toursdb/* .

> ls

ToursDB_schema.sql insertMaps.java loadFLIGHTAVAILABILITY1.sql loadTables.sql
build.xml loadAIRLINES.sql loadFLIGHTAVAILABILITY2.sql smallisle.gif
cupisle.gif loadCITIES.sql loadFLIGHTS1.sql toursdb_readme.html
disconnect.sql loadCOUNTRIES.sql loadFLIGHTS2.sql witchisle.gif

Derbyデータベースの作成とSQLステートメントの確認

Derbyツールのij(シェル・スクリプト)を使うと良く見えてこないんで、javaコマンドを明示的に起動してみます。

> java -jar $DERBY_HOME/lib/derbyrun.jar ij
ij バージョン 10.6
ij>

最初のデータベースに接続してみましょう(前回もやりましたが、おさらいの意味で)

> CONNECT 'jdbc:derby:firstdb;create=true';

コネクション・コマンドを説明します。

connect:データベースとの接続を確立します。

jdbc:derby:Derbyドライバーに関するJDBCプロトコル設定です。

firstdb:データベースの名前です。

;create=true:データベースを作成するために使用するDerbyURL属性です。Derbyには「create database」コマンドはありません。

;:セミコロンがijの終端子です。これは必ずです!!

■標準的なSQLを使って2つのカラムを定義したテーブルを作成します。

ij> CREATE TABLE FIRSTTABLE(ID INT PRIMARY KEY,NAME VARCHAR(12));
0 行が挿入/更新/削除されました

■3レコード追加します。

ij> INSERT INTO FIRSTTABLE VALUES(10,'TEN'),(20,'TWENTY'),(30,'THIRTY');
3 行が挿入/更新/削除されました

■テーブル中の全レコードを簡単な問合せで検索します。

ij> SELECT * FROM FIRSTTABLE;
ID         |NAME
------------------------
10         |TEN
20         |TWENTY
30         |THIRTY

3 行が選択されました

■カラムID=20で絞り込み検索をします。

ij> SELECT * FROM FIRSTTABLE WHERE ID = 20;
ID         |NAME
------------------------
20         |TWENTY

1 行が選択されました

■SQLスクリプト ToursDB_schema.sql を実行します。

ij> run 'ToursDB_schema.sql';
・・・中略・・・
ij> COMMIT;
ij>

■ijツールを終了します。

ij> exit;

<form action="http://www.google.co.jp/cse" id="cse-search-box">  
    <input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" />     <input type="hidden" name="ie" value="UTF-8" />     <input type="text" name="q" size="31" />     <input type="submit" name="sa" value="検索" />  
</form>

<script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>



コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

ちょっとした開発案件があって、3階層システム(3 Tier Model)でやりますと。
フル・オープン・ソースということで、DBに何を使うか。
PostgreSQLやMySQL、SQLiteといろいろあがって、そういえば、JavaDBってあったよね。
ということになって、勉強がてらJavaDBに触ってみました。

JDK1.6からJavaDBが標準で付いてくるのですが、最新のものを使ってみたかったので、単独でダウンロードしました。

JavaDBの正体はApache Derbyです。以下のJakartaサイトよりダウンロードします。

Derby Download

2010.6.23時点の最新は10.6.1.0となっています。

お試し環境は以下の通りです。

OS:WindowsXP
JDK:JDK1.6.0_20(JAVA_HOMEはいつものように予め設定しておいてください)

  1. db-derby-10.6.1.0-bin.zipをダウンロードして、Cドライブ直下に展開しました。
  2. 環境変数DERBY_HOMEとPATHを設定します。
  3.    DERBY_HOME=C:\db-derby-10.6.1.0-bin

       PATH=%PATH%;%DERBY_HOME%\bin

  4. コマンド・プロンプトを起動して、sysinfo.batをキックします。以下のような結果が表示されれば、環境変数の設定は上手くいっています。

     

    ------------------ Java 情報 ------------------Java バージョン:       1.6.0_20Java ベンダー:         Sun Microsystems Inc.Java ホーム:           C:\Java\jdk1.6.0_20\jreJava クラスパス:       .;C:\Java\jre1.6.0_16\lib\ext\QTJava.zip;C:\tani\lang\java\db-derby-10.6.1.0-bin/lib/derby.jar;C:\tani\lang\java\db-derby-10.6.1.0-bin/lib/derbynet.jar;C:\tani\lang\java\db-derby-10.6.1.0-bin/lib/derbyclient.jar;C:\tani\lang\java\db-derby-10.6.1.0-bin/lib/derbytools.jarOS 名:                 Windows XPOS アーキテクチャー:   x86OS バージョン:         5.1Java ユーザー名:       XXXXXXXXXXJava ユーザー・ホーム: C:\Documents and Settings\bttaniguchisgJava ユーザー dir:     C:\tani\lang\java\DERBYTUTORjava.specification.name: Java Platform API Specificationjava.specification.version: 1.6java.runtime.version: 1.6.0_20-b02--------- Derby 情報 --------JRE - JDBC: Java SE 6 - JDBC 4.0[C:\tani\lang\java\db-derby-10.6.1.0-bin\lib\derby.jar] 10.6.1.0 - (938214)[C:\tani\lang\java\db-derby-10.6.1.0-bin\lib\derbytools.jar] 10.6.1.0 - (938214)[C:\tani\lang\java\db-derby-10.6.1.0-bin\lib\derbynet.jar] 10.6.1.0 - (938214)[C:\tani\lang\java\db-derby-10.6.1.0-bin\lib\derbyclient.jar] 10.6.1.0 - (938214)----------------------------------------------------------------------- ロケール情報 ----------------現行ロケール :  [日本語/日本 [ja_JP]]ロケールのサポートが見つかりました: [cs]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [de_DE]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [es]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [fr]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [hu]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [it]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [ja_JP]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [ko_KR]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [pl]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [pt_BR]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [ru]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [zh_CN]         バージョン: 10.6.1.0 - (938214)ロケールのサポートが見つかりました: [zh_TW]         バージョン: 10.6.1.0 - (938214)------------------------------------------------------

設定はこんな感じで楽々ですね。

早速、DBにアクセスしてみます。OracleのSQL*Plusみたいなクライアント・ツールがあるので、試して見ます。

  1. ijを起動する。

    ij バージョン 10.6
    ij>

  2. 新規にDBを作成します。

    ij> CONNECT 'jdbc:derby:sampledb;create=true';
    ちなみに、sampledbが存在する場合は、以下の警告がでます。
    警告 01J01: データベース 'sampledb' は作成されませんでした。代わりに既存のデータベースに接続されました。

  3. 接続確認をします。

    ij> SHOW CONNECTIONS;
    CONNECTION0* - jdbc:derby:sampledb
    * = 現行接続

  4. 表(テーブル)の作成

    ij> CREATE FIRSTTABLE(ID INT PRIMARY KEY, NAME VARCHAR(20));
    0 行が挿入/更新/削除されました

  5. データの投入

    ij> INSERT INTO FIRSTTABLE VALUES(10,'TEN'),(20,'TWENTY'),(30,'THIRTY');
    3 行が挿入/更新/削除されました

    なんか、すごいINSERT文ですね。これで一括で入るんですね。。。

  6. 検索

    ij> SELECT * FROM FIRSTTABLE;
    ID         |NAME
    ------------------------
    10         |TEN
    20         |TWENTY
    30         |THIRTY

    3 行が選択されました

    ij> SELECT * FROM FIRSTTABLE WHERE ID=20;
    ID         |NAME
    ------------------------
    20         |TWENTY

    1 行が選択されました

今回は、組み込み環境としての確認までしました。
次回は、クラサバ環境としてチャレンジします。

<form id="cse-search-box" action="http://www.google.co.jp/cse">  
    <input type="hidden" value="partner-pub-3407383286528802:x1hdk1ewp2s" name="cx" />     <input type="hidden" value="UTF-8" name="ie" />     <input type="text" size="31" name="q" />     <input type="submit" value="検索" name="sa" />  
</form>

<script src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja" type="text/javascript"></script>



コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

最近、気づいたのですが、祖師ヶ谷大蔵駅にツバメの巣を発見しました。

子供のツバメがお母さんが餌を持って帰ってくるのを鳴いて待っています。

写真撮影が下手で、上手く撮れませんでした(^^♪

Sparow1

可愛いですね(^^♪

田舎では、今は取り壊してしまいありませんが、納屋があり、毎年5月くらいになると、ツバメがやってきて、同じような感じで、出入りしていました。

しかし、こんな時期に、このような光景を見るなんて思ってもいませんでした。

<form action="http://www.google.co.jp/cse" id="cse-search-box">
<input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="&#x691c;&#x7d22;" />
</form> <script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>

コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

Pro*Cプリコンパイラが作成したCソースファイルで問題が発生。
一応、Cソースファイルは中間ファイルであるため、今まで粗野に扱っていたのですが、
今回はSolaris8からSolaris10への移行があったため、Oracleも入れ替えたので、
とりあえず、オブジェクト以外に差分がないかを確認しました。
流石に、PCファイルはライブラリ管理をしているので、差分はありませんでした。

CコンパイラはSun Studioから、時流に乗ってgccに乗り換えたので、オブジェクトの差分は出てしまうので、仕方がないのですが、流石にCソースは差分はないだろうと、たかを括っていました。
ところが、1ファイルだけ差分が出てしまいました。

実装部分より前の行の

/* CUD (Compilation Unit Data) Array */
static short sqlcud0[] =
{
・・・中略・・・
};

の部分が微妙に違っていました。

DB保守契約は結んではいるのですが、ことプログラムの保守はないんですね。。。
なので、現状サポートにも聞けずに途方にくれています。
実装部分が違えば、実装部分の差分がでるので、違いが分かるのですが、そうではないのが非常に困る!!

プリコンパイラなので、Cコンパイラとは全然関係がないとは思っています。
また、困ったことに、このソースファイルを元のSolaris8上でプリコンパイルしたところ、Solaris10でコンパイルしたものと同じものになっていました。

ん?どういうこと?

元の中間ファイルがお・か・し・い!?

あーっ、もうわけがわからん ☆☆☆彡

問題なく、.soファイルは作成できているので、問題はないと思っていますが、なんとなく、気持ち悪いです。こんな状況に陥っている人がいたら、教えて下さい!!

明日につづく...

----- 検索エンジン ----- <form action="http://www.google.co.jp/cse" id="cse-search-box">
<input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="&#x691c;&#x7d22;" />
</form> <script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>

コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

遠い昔、エクセルライフさんのサイトの立ち上げをしました。

その時の遺産 です。

今では、その面影は全くありません。

<form id="cse-search-box" action="http://www.google.co.jp/cse"></form>

<script src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja" type="text/javascript"></script>

<form action="http://www.google.co.jp/cse" id="cse-search-box">
<input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="&#x691c;&#x7d22;" />
</form> <script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>

コメント ( 0 ) | Trackback ( )




<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

Zopeが普通に使えるようになったので、次のステップとしては、もう少し楽に画面の編集ができればなぁ。
ということで、コンテント・パネル(CMFContentPanel)を使ってみようと思います。
ところが、コンテント・パネルの追加で行き詰っている最中です。

インストールをざっと見てみましょう。
環境は以下の通りです。
PythonとZopeは今まで通です。
・Python・・・ActivePython2.6.5.12
・Zope2・・・2.12.6(Zope2-2.12.6-py2.6-win32.eggをセットアップツールで)
・Zope2・インターフェース・・・3.6.1(これがないとmkzopeinstance.exeでエラーになる)
・CMFContentPanel・・・Products.CMFContentPanels-2.6a7-py2.4.egg
 (Python Package Indexで「CMFContentPanel」で検索)
・Archetypes・・・1.6b10
 (Python Package Indexで「Archetypes」で検索)
・Plone・・・4.0b3
 (Python Package Indexで「Plone」で検索)
・TranslationService・・・2.0b5
 (Python Package Indexで「TranslationService」で検索)
・eggtestinfo・・・0.2.2
 (Python Package Indexで「eggtestinfo」で検索)
・elementtree・・・1.2.6-10050316
 (downloads.effbot.org から取得)
・PIL(PythonImageLibray)・・・1.1.6
 ( Python Imaging Library (PIL)から取得※Windows onlyと記載がある箇所)
インストールしていたり、runzope.batを起動したり、試行錯誤の上、導き出しました(^^♪

インストールを纏めると以下のようになります。

 1) Zope2・インターフェースのインストール

   > eggをダウンロードしたフォルダヘ移動する。

   > python ez_setup.py zope.interface-3.6.1-py2.6-win32.egg

 2) Archetypesのインストール

   > unzip Products.Archetypes-1.6b10.zip

   > cd Products.Archetypes-1.6b10

   > python setup.py install

 3) TranslationServiceのインストール

   > unzip Products.PlacelessTranslationService-2.0b5.zip

   > cd Products.PlacelessTranslationService-2.0b5

   > python setup.py install

 4) eggtestinfoのインストール

   >  unzip eggtestinfo-0.2.2.zip

   > cd eggtestinfo-0.2.2

   > python setup.py install

 5) elementtreeのインストール

   > unzip elementtree-1.2.6-20050316.zip

   > cd elementtree-1.2.6-20050316

   > python setup.py install

 6) PILのインストール

   Windowsのインストーラを起動して、Pythonのインストール・フォルダを指定して、後はデフォルトのインストールで完了。

 7) Ploneのインストール

   > unzip Plone-4.0b3.zip

   > cd Plone-4.0b3

   > python setup.py install

 8) ContentPanelのインストール

   > eggをダウンロードしたフォルダヘ移動する。

   > python ez_setup.py Products.CMFContentPanels-2.6a7-py2.4.egg

 9) ContentPanelsTools.pyの編集およびバイト・コンパイル

   インストール後にrunzope.batを実行すると以下のようなエラーが表示されました。

・・・中略・・・
    from Products.CMFPlone.migrations.migration_util import safeEditProperty
ImportError: No module named migrations.migration_util

   で、原因を探っていくうちに、「Migrating to Plone 4.」を見つけました。パッケージ名が変わっていることが分かったので、該当のソース・ファイルを見つけ出して、以下のように修正しました。

   ファイル名:C:\Python26\Lib\site-packages\products.cmfcontentpanels-2.6a7-py2.6.egg\Products\CMFContentPanels\ContentPanelsTool.py

   修正内容:「from Products.CMFPlone.migrations.migration_util import safeEditProperty」を「from plone.app.upgrade.utils import safeEditProperty」に修正

   バイト・コンパイル:上記フォルダへコマンド・プロンプトで移動してから「python -m py_compile ContentPanelsTool.py」を実施。

これでひとまずインストールは完了です。では、Zope2をrunzope.batで起動しましょう。

私のマシンでは起動に非常に時間がかかりました。読込むファイル量が多いのかなぁと思いますが。。。

プロンプトは以下のような感じになりました。

Contentpanelrunzope

では、ブラウザで確認してみましょう。

Plone01

いい感じですね。では、早速サイトを作ってみたいと思ったのですが、最後の最後で例外が発してしまいました。

「新しいPloneサイトを作成」ボタンをクリックすると、作成画面表示されます。とりあえず、適当に入力してみます。

1) パス識別子に「Plone01」

2) タイトルに「最初のサイト」

3) 言語は「日本語」を選択(デフォルトです)

4) 「Ploneサイトを作成」ボタンをクリック!!

おおおおおーっ、例外発生!!

・・・中略・・・
TypeError: 'NoneType' object is unsubscriptable
2010-06-13 13:28:16 ERROR ZServerPublisher exception caught
Traceback (most recent call last):
  File "C:\Python26\lib\site-packages\zope2-2.12.6-py2.6-win32.egg\ZServer\PubCore\ZServerPublisher.py", line 31, in __init__
    response=b)
  File "C:\Python26\lib\site-packages\zope2-2.12.6-py2.6-win32.egg\ZPublisher\Publish.py", line 438, in publish_module
    environ, debug, request, response)
  File "C:\Python26\lib\site-packages\zope2-2.12.6-py2.6-win32.egg\ZPublisher\Publish.py", line 264, in publish_module_standard
    if request is not None: request.close()
  File "C:\Python26\lib\site-packages\zope2-2.12.6-py2.6-win32.egg\ZPublisher\BaseRequest.py", line 215, in close
    notify(EndRequestEvent(None, self))
  File "C:\Python26\lib\site-packages\zope.event-3.5.0_1-py2.6.egg\zope\event\__init__.py", line 23, in notify
    subscriber(event)
  File "C:\Python26\lib\site-packages\zope.component-3.9.4-py2.6.egg\zope\component\event.py", line 26, in dispatch
    zope.component.subscribers(event, None)
  File "C:\Python26\lib\site-packages\zope.component-3.9.4-py2.6.egg\zope\component\_api.py", line 138, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "C:\Python26\lib\site-packages\zope.component-3.9.4-py2.6.egg\zope\component\registry.py", line 323, in subscribers
    return self.adapters.subscribers(objects, provided)
AttributeError: adapters

  なんじゃぁ、このエラーは。。。ネットを調べると、同じ境遇に合われている方が数名(日本人はいないようですね。。。)いましたが、レスポンスが全くないため、対処の方法がわからず、現在、途方にくれています。Ploneパッケージを使えば、こういうことは起きないんですかね?

とりあえず、対処方法を日々見ています。



コメント ( 0 ) | Trackback ( )




今日は午前中仕事で休みをとったので、久しぶりに街を散歩しました。

コースは特に決めてませんでしたが、最終地点は、日比谷にしました。

13:00までには豊洲へ着くように、がんばって12:30までには日比谷に着けばと思ったのですが、結果的には14:00を若干回ってしまいました。

まず、出発地点は「原宿」です。

山手線沿いをフラフラと歩き、渋谷を越え、恵比寿を越え、目黒を越え、五反田でひとまず、休憩しました。

さぁ、ここからどのような経由で行こうかちょっと思案しました。

とりあえず、日比谷通りを目指して歩きました。

しかし、今日はなんという、いい天気なんでしょう。めちゃくちゃ、汗かきまくりです(^^♪

大門を通過して、目指していた日比谷通りにようやくたどり着きまして。ここからひたすらに、日比谷駅を目指して一直線です。

途中、新橋あたりの交通が激しくて、かなりしんどかったが、30分くらいですか、やっとの思いで、駅に到着!!

地下鉄はいつも歩きなれているので、そのまま有楽町線まで。

ここで、今日の散歩は終了。

会社に到着したかと思うと、本番環境で故障が発生していたため、またもや大手町まで歩くことに。

長い散歩だと思えば、まぁいいかな。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <form action="http://www.google.co.jp/cse" id="cse-search-box">
<input type="hidden" name="cx" value="partner-pub-3407383286528802:x1hdk1ewp2s" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="&#x691c;&#x7d22;" />
</form> <script type="text/javascript" src="http://www.google.co.jp/cse/brand?form=cse-search-box&amp;lang=ja"></script>

コメント ( 0 ) | Trackback ( )



« 前ページ