8/10(Sat)
/** 目指せ! Oracle Master Platinum(9i)!! */
ゲットしました!(^^)
が、試験結果レポートには、
合格点: 38 あなたの点数: 39 結果: 合格
と。(問題数56)
かなぁりヒヤ汗モード(T_T)
ちなみに、不正解リストなるものがレポートに含まれていましたが、
延々17項目も書かれると、何にも分かってないのがバレバレです(>_<;
あとは、仕事で使わないことには、どうしようもないね。
/** ナイスなエンジニアになるために! */
Guide to Software Engineering Body of Knowledge
ソフトウェアエンジニアのためのホームページで、
紹介されていたものです。
ちびちび必要なところから読んで、ナイスなエンジニアになっちゃいましょう(^^)
/** 日本版CMM */
3年も前に公開されてたのねー(>_<;
SEA-SPIN CMM プロジェクトの記録
こっちは日本語だから、ちゃんと読めるような気がするね(^^;
/** 久々に上向き */
マイ保有ファンドの基準価額が、久々に取得元本を超えました(^^)
まだ、販売手数料の分損しているのですが、
きっと、下がり気味の時には低リスク商品で耐えて、
最近の反発傾向に乗じてきたのでしょう。
ファンドマネージャーは、めちゃめちゃ冴えない顔してるんですが(^^;
今週は、良い活躍ぶりだったと言えるでしょう。
8/9(Fri)
/** JCom生きてた! */
単に、ページを移動しただけだったようです。
JCom(Java-COMブリッジ)
/** 障害管理システム(またの名をバグトラッキングシステム) */
障害管理システムであんまりサーチエンジンで引っかからなかったのに、
バグトラッキングシステムで検索したら、結構出てきました。
う〜ん。やられた(+_+;
↓のページで、いくつかオープンソースな
バグトラッキングシステムを紹介しているようです。
バグトラッキングシステム
Bugzillaしか無い訳はないと思ってましたが、
こんなにあるとは思いませんでした...
いくつか見てみましたが、GPLが多いようです。(というか全部?)
まあ、バグトラッキングシステムの性質上、
再利用して売るとかいうケースが考えられないので、
GPLでも問題無いと思うのですが。
ちなみに、今回のプロジェクトの片手間で作った、
障害管理システムを公開してみました。
インストールでてこずるかなぁ。
8/8(Thu)
/** ケーブルテレビ */
いつの間にか、4Mbpsから、10Mbpsに増速してたらしいです(^^;
でもって、早速回線スピードを測ってみると、
2Mbpsぐらいから、4Mbpsぐらいまでアップしてました。
つーか、まったく気づかないっての(^^;
要は、メガ単位までくると、
大して変わらないということなのでしょう...
/** hsqldb完結 */
どうにも使えない気がしてきました。
タダだから、仕方無いのかもしれませんが...
こんなテーブル作って、負荷テストをしたんですが、
(on HSQLDB1.6.0 on JBoss2.4.6、HSQLDB1.7.0)
数十万行のINSERTで、java.lang.OutOfMemoryErrorが起きてしまい、
動作が不安定になることが発覚しました。
(というか、多分データベースサーバを再起動しないと使えない。)
適当にループを回して、適当なデータをINSERTしていったんですが、
INSERT文が実行される度に、*.scriptファイルに、
INSERT INTO 〜 VALUES(〜)
といったSQL文が1行ずつ書き込まれる仕組みらしいです。
(*.script = オンラインログ = データベースの状態そのもの)
まあ、それは良いにしても、
入れたデータを消すのに、「delete * from 〜」ってやったら、
DELETE * FROM 〜 WHERE key = 〜
っていうSQL文が、入っているレコードの件数文だけ、*.scriptファイルに追記されてました。
さらにデータをINSERTすると、
DELETE文の続きから、INSERT文が*.scriptファイルに書き込まれ...
しまいには、メモリ上に乗らなくなってしまうのでしょう。
あくまで想像ですが。
メモリ256MBの環境で、
10万件INSERT + 10万件DELETE + 31万件(ぐらい)INSERT
が限界でした。
どのような高性能なサーバを使ったとしても、
*.scriptを別ファイルに切り替えるような仕組みにならない限り、
使い物にはならないと思います。。
8/7(Wed)
/** XMLデータベース */
なんか、面白そうなプロジェクトが発足してました。
オープンソースなXMLデータベースだそうです。
xindice (ジンダイス? 読めない...(-_-;)
FAQを適当に流して読んでみたところ、
5MByte程度の大きいデータになると、扱えないというデメリットがあるようです。
コレクションを内包するようなドキュメントであれば、分割して対応するようですが、
実際使うとなると、この制限は結構厳しいかも知れません。
/** DB Independent Tool */
3/26に、JDBCのMeta系APIを使ったツール「iSQL」
を紹介した時に、なんでODBCは無いの?
とか言ってましたが、たまたまYahooで階層たどっていったら、
こんなページを発見しました。
MySQLとか、PostgreSQLとかをネイティブでサポートしてる辺り、
かなり意欲的なツールなのではないかと思います。
多分、不満は一つで、
Web対応が無いから、使いたい人のPC全部に入れなきゃだめじゃん(T_T)
ということぐらいでしょうか。
この手のツールを使う理由は、
テーブル定義書などを省くことによる、テーブルレイアウト変更プロセスの簡略化
にあると思います。
従来のテーブルレイアウト変更プロセスは、
1) テーブル定義書修正
2) CREATE TABLE 〜のSQL修正
3) テーブル(再)作成
ですが、このようなツールを使うことにより、
テーブル定義書に相当するドキュメントは、いつでもオンラインで見られることで、
不要になり、上記1)の手順が省略でき、簡略化できます。
恐らく、データベースを使った大抵のプロジェクトでは、
テーブル定義の変更が起こるものなので、
その作業が多いほど、ツールが有効に働くと思います。
8/4(Sun)
/** 世の中資格だらけ!? */
はじめて、フレッシュアイのホームページをじっくり見てみたんですが、
資格カレンダーなるものを発見しました。
そこからたどって、
情報処理関連資格(ベンダー資格以外)
というのがあったのですが、まあ色んな資格があるものです。
「Webマスター・Webクリエイター認定試験」とか、
「インターネットウェブマスター(IWM)」なんてのは、
持ってても、知名度低すぎて、少なくとも自慢はできないでしょう(^^;
ちなみに、おんなじ業界の人で、
「P検でも取ろうかなぁ」
とのたまった人がいますが、
それって、単に逃げてるだけじゃないの?
と思います。
確かに、情報処理は、その合格率から見ても分かる通り、
簡単な試験でありません。
だからといって、自分の目標を下げて、
簡単な試験に逃げるのは、間違ってるような気がします。
大体の場合、資格試験の価値は、難易度に比例しているので、
価値の低い資格をいっぱい持っていても、意味無いですしね。
(まあ、価値の高い資格でも、その知識を実践に応用できなければ意味無いですが。)
資格については、ここに色々あるので、読んでみると役に立つと思います。
8/3(Sat)
/** Yellow Generation */
Yellow Generationの「北風と太陽」かなりイイです(^^)
PVの中で左にポジション取ってる人の、微妙な表情がまたイイです(^^)
/** JBoss付属のhsqldbにつなぐ */
いまいち把握しきれてないのですが、
hsqldbにJDBC経由で接続する方法は、いくつかあるようです。
JDBCのURLを、「jdbc:hsqldb:<データベース名>」にすると、
プログラムを実行した場所にある(もしくは作成される)、
ファイルにアクセスします。
JBoss上で稼動しているWebアプリケーションから、
「jdbc:hsqldb:<データベース名>」
の形式でアクセスすると、%JBOSS_DIST%/jboss/bin以下に、
データベース名.propertiesや、データベース名.dataが作成されます。
まあ、これでも使えないことは無いのですが、
せっかくJBossが起動している、hsqldbのサーバを無視していることになってしまいます。
また、JBoss上で稼動するWebアプリケーション以外からは、接続できません。
(できるかも知れないけど、URLに場所を入れたりしなきゃならないので、使いにくくなる)
そこで、
jdbc:hsqldb:hsql://localhost:1476
というJDBCのURLでアクセスすることで、
JBossがデフォルトで用意している、
%JBOSS_DIST%/jboss/db/hypersonic
以下のデータを使用することができます。
上記URLを用いれば、JBoss上で稼動するWebアプリケーション以外からも、
同様にhsqldbに接続することができます。
使ってみて分かったんですが、
カタログ(SQLServerのデータベース)や、スキーマ(Oracleのユーザ)
などで、一つのデータベース中に、複数の領域を持たせることはできないようです。
感覚的には、一つのデータベース(mdb)に、
全てのオブジェクトを保持する、Accessのようなものなのでしょう。
8/2(Fri)
/** DatabaseMetaData.getTables */
かなりマニアックネタです(^^;
java.sql.DatabaseMetaData#getTablesを呼ぶと、
対象コネクションに関連付けられた、テーブルの情報がResultSetの形式で取得できます。
このResultSetには、テーブル名や、テーブルのタイプ(普通のテーブル、ビュー、シノニムなど。)
などの情報が含まれているのですが、
この中に、REMARKSという列が含まれています。
java.sql.DatabaseMetaData#getTables
のAPIドキュメントを読むと、以下のように書かれています。
> 5. REMARKS String => テーブルに関する説明
直感的には、テーブルのコメントだと思ったので、
Accessのテーブルにコメントを入れ、上記APIを使用してREMARKS列を取得してみましたが、
全てNULLで返ってきてしまい、テーブルの説明は取得できませんでした。
多分、Sunのブリッジドライバが、そこまでサポートしていないのでしょう。
Oracleにも、
「COMMENT ON 〜」
で始まるSQL文で、テーブルや、列にコメントを付与することができるので、
こっちも試してみました。
が、
java.sql.SQLException: 列名が無効です。
と出て、取得できないどころか、例外まで吐いてしまいました...
でも、
ドライバがサポートしていない機能についての情報を取得するメソッドは、SQLException をスローします。
だから、挙動としては正しいのか?
メソッド単位の非サポートならまだしも、
列単位で非サポートなのは、せっかくMetaDataなのに、
データベース製品固有の挙動を意識しなければならないのは、
若干辛いものがあるので、なんとかして欲しいところです。
8/1(Thu)
/** Oracle Servlet Engine 死んでなかった... */
7/13に、oseを止めて、Oracle + Jbossができるとか書いたんですが、
できてなかったです(T_T)
で、よくよく調べてみたところ、以下のような手順で、
無効化できるみたいです。
(まだ、あやしいかも...)
でも、こんなことしなくても、JBossのポート番号変えれば回避できますね。
1) tnsnames.oraから、MODOSEのエントリを削除
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tsukumo)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
)
)
2) 初期化パラメータから、MTSの記述をコメントアウトし、インスタンスを再起動する。
#dispatchers="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)",
"(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"
(実際は1行で記述されている。)
3) sess_shコマンドを使って、サービスを削除する。
> sess_sh -u sys/change_on_install -role SYSDBA -s jdbc:oracle:oci8:@
$ rmendpoint admin main
$ rmendpoint admin ssl
一応これで、リスナを起動後、1分後ぐらいで起動していたサービスが、起動しなくなりました。
この設定には永続性があるようで、OSを再起動しても、有効なようです。
$ORACLE_HOME/network/log/listener.logに、以下のようなログが出力されてなければ、OKです。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=192.168.1.21)(PORT=9090))(PRESENTATION=http://admin)(SESSION=RAW))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.21)(PORT=8080))(PRESENTATION=http://admin)(SESSION=RAW))
ただ、いまだにsess_shがなんなのか、また、
その設定がどこに格納されているのかは不明です。
ちなみに、
$ORACLE_HOME/javavm/doc/readme.txt
辺りを読むと、Oracleインストール時に作成されるデータベースに、
含まれるようなことも書いてあります。
(そして、自動的に有効になっているのが、かなり迷惑(T_T))
やっぱり、自動的に作成されるデータベースでは、
わけの分からないものも、いっぱい入ってそうですね...