2008年8月22日金曜日

一時表領域の問題(Oracle)

問題:
・「データベースのホームページに移動」をクリックしても、エラーになった。
・データベースのデータをexportしたいですが、「一時表領域が空です」
 といるエラーが出た。

環境:
・WindowsXP+SP2
・Oracle Database 10g Express Edition

対策:
データベースの表領域のデータファイル容量が足りないと判断し、
データファイルの追加を決めた:

実行のコマンド:
SQL> connect sys/admin as sysdba
SQL> alter tablespace temp add tempfile 'C:\oraclexe\oradata\XE\TEMP2.dbf'
size 45M;

上記コマンドの実行が成功して、「C:\oraclexe\oradata\XE」に新しい
データファイル「TEMP2.dbf」があることを確認できた。

もう一回上記二つの動作をすると、成功!!^〇^

2008年8月19日火曜日

Apacheサーバのページ設定変更

(1)Webサイトのデフォルトページの設定変更:
・デフォルトページの変更:
 DirectoryIndex index.html → DirectoryIndex frontpage.php
・表示候補を優先順に列挙:
 DirectoryIndex frontpage.php headpage.shtml index.html
これで、前のページが表示できない場合、後ろのページが表示される。

(2)エラーページの設定:
エラーメッセージを独自のエラーページに置き換える記述は、
次のような形式です:
・絶対パス:
ErrorDocument (コード) (HTMLファイルの絶対パス)
例:
ErrorDocument 404 /errors/notfound.html
※上記の置き換え用のエラーページパスは、絶対パスを使う。
(http://allabout.co.jp/errors/notfound.html)

・URL:
置き換え用のエラーページは、別のWebサーバにある場合:
ErrorDocument 404 http://www.example.com/err404.html

Apacheサーバの特定フォルダへアクセスの制御

◆方法一:
Apacheサーバのパス「C:\Program Files\Apache Group\Apache2\conf」
にあるファイル「httpd.conf」に制御の設定( セクション中)
を追加、修正。

◆方法二:
Apacheサーバ専用の制御ファイル「.htaccess」を作って、対象
ディレクトリの直下に置いたら、このディレクトリ及びサブディレクトリ
の制御ができる。

◆制御設定の作成手順(一):
下記手順は、サーバ上のあるディレクトリをパスワードで保護する設定手順。

(1)パスワードファイルの作成:
Apache 付属の htpasswd を使います:
例:
htpasswd -c /usr/local/apache/passwd/passwords userA

※userAは、アクセス権限を与えられるユーザです。
※このファイルは、Webからアクセスできない場所に置く必要がある。

(2)アクセスユーザの情報をサーバに知らせる設定:
・特定のユーザ:
AuthType Digest
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user userA

・パスワードファイルにユーザの追加:
htpasswd /usr/local/apache/passwd/passwords userB
(オプション「-c」なし)

・特定せずの複数ユーザ:
AuthType Digest
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
Require valid-user

これでパスワードファイルにある全てのユーザが
特定のフォルダへアクセスできる。
※ひとつのパスワードファイルのユーザ数は限界がある。
多くなると、レスポンスの速度が低下になってしまう。

◆制御設定の作成手順(二):
下記手順は、マシンの ホスト名やホストアドレスより制御。

・許可:Allow from address
・拒否:Deny from address

通常の使い方:
Order deny,allow (コマンドの実行順位設定)
Deny from all   
Allow from dev.example.com

これで、最後指定したホストだけのアクセスを許可する。

2008年8月6日水曜日

jarコマンド(五):war/jarファイル作成の非コマンド方法

◆jarコマンドの補足説明:
 warファイルとjarファイルの作成について、コマンドでできるほか、
 eclipseのメニューにより作成もできる。
 ・javaプロジェクトの場合:
  ①アーカイブしたいソースディレクトリを右クリックし、
   「エクスポート」をクリックする。
  ②選択リストから「Java」あるいは「Web」ディレクトリからjarファイル
   とかwarファイルとかの選択ができる。
  ③次の画面でアーカイブしたいリソースの変更と設定ができ、
   エクスポート先の定義もできる。
 ・Tomcatプロジェクトの場合:
  ①アーカイブしたいプロジェクトを右クリックする。
  ②「Tomcatプロジェクト」をクリックし、「プロジェクト設定に従い
   WARファイルを作成」をクリックすると、WARファイル作成のメッセージ
   が出てきます。

jarコマンド(四):war、jar、earとは?

◆warファイル、jarファイル、earファイル:
 これらのファイルは全部ZIPフォーマットの圧縮形式で作成されるものです。
 ・warファイル:
  Webアプリケーション用のアーカイブファイル。
  *.warには、WEB-INF/web.xml、WEB-INF/classes/*.class、WEB-INF/lib/*.jar、
  *.jsp、*.html などが存在します。
 ・jarファイル:
  Java用のアーカイブファイル。
  (libディレクトリにあるファイルはほとんどjarファイル)
  *jarには、javaのパッケージソースのコンパイルにより、作成された
  Classファイルとリソースファイル(xmlファイルなど)が存在してます。
 ・Earファイル:
  J2EE用のアーカイブ形式のファイル。
  earには、一つの META-INF/application.xml と、複数の *.war と
   *.jar が含まれています。

jarコマンド(三):warファイル内容の確認と解凍

◆作成したwarファイル内容の確認:
 ・コマンド:
   >jar tvf confirmFile.war
 ・説明:
   tvf:jarコマンドのパラメータ組み合わせ
   confirmFile.war:確認したいwarファイル
 ・補足:
   パラメータの中に”v”がなければ、内容リストだけが表示される、
   詳細のサイズ、日付など情報は表示されていない。

◆warファイル/jarファイルの解凍:
 アーカイブされた内容は、warファイル/jarファイルから解凍(抽出)されること。
 ・コマンド:
  >jar xvf confirmFile.war
 ・説明:
  xvf:jarコマンドのパラメータ組み合わせ
  confirmFile.war:解凍したいwarファイル

jarコマンド(二):warファイルの更新

◆Warファイルの更新:
 ・コマンド:
  >jar uvf existedFile.war sourceFile
 ・説明:
  uvf:jarコマンドのパラメータ組み合わせ
  existedFile.war:既存のwarファイルを更新するために、同じな名前は使う
  sourceFile:このところにひとつのファイルでもいいですが、普通の場合
   ”*”を使って、各Classファイルを含むすべてのリソースファイルを
   用いて、一つのwarファイルを作成することです。
  >jar cvf createdFile.war *
 ・補足:
   上記コマンドの場合、既存のwarファイルの内容について、下記のこと
   がある:
   ①更新のソースファイルの内容と違う部分があれば、そのまま新しい
    warファイルに残る。
   ②更新のソースファイルの内容と同じ部分があれば、更新される。

jarコマンド(一):warファイルの新規作成

このコマンドは、warファイルの作成とjarファイルの作成ともに使える。
◆Warファイルの新規作成:
 ・コマンド:
  >jar cvf createdFile.war sourceFile
 ・説明:
  cvf:jarコマンドのパラメータ組み合わせ
  createdFile.war:作成したいwarファイル
  sourceFile:このところにひとつのファイルでもいいですが、普通の場合
    ”*”を使って、
各Classファイルを含むすべてのカレントディレクトリ
    にあるリソースファイルを用いて、
一つのwarファイルを作成する
    ことです。

  >jar cvf createdFile.war *
 ・補足:
  上記コマンドの場合、既存の同じ名前のwarファイルがあった場合、
  中の内容は全部なくなる。

2008年8月1日金曜日

FileChannelクラスのことは、知ってるの?

1、特徴
このクラスは、バイトチャネルに対する一般的な操作 (読み込み、書き込み、
クローズ) のほかに、
次のようなファイル固有の操作を定義します。

◆バイトの読み込みや書き込みは、チャネルの現在位置に影響を及ぼす
ことなく、
ファイル内の絶対位置で行われる

◆ファイルの領域はメモリに直接マッピングされる。ファイルのサイズが
大きい場合は、通常の
read メソッドやwrite メソッドを呼び出すより、この
方法のほうが効率的


◆ファイルの更新は、基準となる記憶装置に強制書き出しされる。
したがって、システムが
クラッシュしてもデータの損失は回避される

◆バイトはファイルからその他のチャネルへ転送できる。反対に、
その他のチャネルから
転送することもできる。多くのオペレーティング
システムをファイルシステムのキャッシュ
と直接接続し、データを非常
に速い速度で送受信することにより、この転送を最適化できる


◆ファイルの領域は、その他のプログラムからアクセスできないよう
にロックできる


2.メソッド:
このクラスは、既存のファイルを開くメソッドや新しいファイルを作成する
メソッドは
定義しません。これらのメソッドは、将来のリリースで追加される
可能性があります。
このたびのリリースでファイルチャネルを取得したい
場合は、既存の FileInputStream、
FileOutputStream、RandomAccessFile の
いずれかのオブジェクトの getChannel メソッドを
呼び出します。こうすること
により、基準となる同じファイルに接続されたファイルチャネルが

返されます。

3.ファイルチャネルの状態:
ファイルチャネルの状態は、チャネルを返した getChannel メソッドを持つ
オブジェクトの状態
と密接な関係にあります。たとえば、チャネルの位置を
明示的に、あるいはバイトの読み込みや
書き込みによって変更すると、
発生元のオブジェクトのファイル位置が変わります (逆も同様)。
ファイル
チャネルからファイルの長さを変更すると、発生元オブジェクトから見た
ときの長さが
変わります (逆も同様)。バイトの書き込みによってファイル
のコンテンツを変更すると、
元のオブジェクトから見たときのコンテンツが
変わります (逆も同様)。


4.読み書きインスタンス:
このクラスは、さまざまな点で、「読み込み可能」、「書き込み可能」または
「読み込みと
書き込みが可能」であるインスタンスが必要なことを条件
として指定します。FileInputStream
インスタンスの getChannel メソッドで取得
したチャネルは読み込み可能です。FileOutputStream
インスタンスの
getChannel メソッドで取得したチャネルは書き込み可能です。そして、
RandomAccessFile インスタンスの getChannel メソッドで取得した
チャネルは、インスタンスが
モード "r" で作成されている場合は
読み込み可能、モード "rw"で作成されている場合は読み込み

書き込みが可能です。


5.チャネルのオーペンとクローズ:
チャネルの状態はオープンまたはクローズです。作成時はオープンですが、
クローズするとクローズ
したままになります。チャネルがクローズしている
状態で入力操作を行おうとすると、
ClosedChannelException がスローされ
ます。チャネルがオープンしているかどうかは isOpen
メソッドの呼び出し
によって判断できます。


===========補足===============
1.FileChannelの親インタフェース:
public interface Channel:
入出力操作に関係するチャネルです。
2.チャネルの定義:
チャネルは、ハードウェアデバイス、ファイル、ネットワークソケットのほか、
個別の入出力操作
(読み込み、書き込みなど) を実行できるプログラム
コンポーネントなどのエンティティへの
オープン接続を表します。

やっと終わった^^^^^

ファイルの読み書きと文字のエンコード

動作環境:
JDK5.0
システム文字コード:Shift-JIS
ファイル文字コード:EUC-JP

1.Javaの文字データ処理流れ:
Javadでは、文字データをUnicodeで管理します。
◆読み込み:
Unicode以外の文字モードのデータを読み込む場合は、Unicodeへエンコードして読み込みます。
◆書き込み:
書き込み先の文字コードはUnicode以外の場合、Unicodeで管理されている文字データを書き込み先
の文字コードへ、エンコードして書き込みます。
書き込み先の文字コードを指定してない場合、Javaを実行しているシステムのデフォルトの
エンコード方式が使用されます。(今回はShift-JISです)
◆システムのエンコードの確認:
関数System.getProperty("file.encoding")を使って、システムのエンコードの確認ができます。

2.ファイル操作Javaクラスの選択:
◆FileReader、FileWriter:
この二つのクラスを使って、文字データを読み書く場合は、システムのデフォルトの
エンコードが使用されます。
◆FileInputStream、FileOutputStream:
エンコードを指定して、ファイルの入出力を行いたい場合、この二つのクラスを使います。

3.エンコード指定の読み込みオブジェクト、書き込みオブジェクトの作成:
◆読み込みオブジェクト:
読み込みの場合、ファイルのエンコードにかかわらず、JavaがUnicodeでファイルの文字データを
エンコードして処理しますから、特にエンコードを指定する必要がないでしょう。

※下記はサンプルソース:
// Readerオブジェクトの作成
FileInputStream reader=null;
try {
reader = new FileInputStream(filePath);
} catch (FileNotFoundException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
return null;
}

InputStreamReader streamReader=null;
try {
streamReader = new InputStreamReader(reader , "JISAutoDetect");
} catch (UnsupportedEncodingException e2) {
// TODO 自動生成された catch ブロック
e2.printStackTrace();
return null;
}
BufferedReader objBufferedReader = new BufferedReader(streamReader);
◆書き込みオブジェクト:
今回書き込み先のエンコード(EUC-JP)は、システムのデフォルトのエンコード(Shift-JIS)と
違いますから、エンコードの指定が必要になります。

※下記はサンプルソース:
// Writerオブジェクトの作成
FileOutputStream writer=null;
try {
writer = new FileOutputStream(filePath);
} catch (FileNotFoundException e3) {
// TODO 自動生成された catch ブロック
e3.printStackTrace();
return null;
}

OutputStreamWriter streamWriter=null;
try {
streamWriter = new OutputStreamWriter(writer , "EUC-JP");
} catch (UnsupportedEncodingException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
return null;
}
BufferedWriter objWriter = new BufferedWriter(streamWriter);

==終わり==