独り言 Vol.3

一人でボヤいているだけです。
独り言なので、内容へのクレームはご容赦ください。
というか、読まないでいいです...(汗)

非常に個人的なモノで申し訳ないです m(_ _)m
偏った内容で申し訳ないです
もし、検索エンジンでウッカリ来てしまった方。申し訳ないです
えーっと、あと申し訳ないことは...

「独り言」は更新履歴に書き込まないことに勝手に突然決定しました
申し訳ない事は隠す方向で...(汗


独り言 vol.1 - 独り言 vol.2 - 独り言 vol.3


◆vol.3作成によせて

  更新全くせずにいてごめんなさい!

  言い訳すると、帰るのが朝5時だったりするの。
  夜11時に帰ると、早すぎる気がして罪悪感とワクワク感が味わえるの。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆高尚?

引き継いだソースの中で、こんなのを発見。(Java)

ArrayList[] aaa = new ArrayList[10];
ArrayList[] bbb = new ArrayList[15];

... ( 中略 ) ...

String hoge = "hoge";
Date   foo  = new Date();
int some = 1;

... ( 中略 ) ...

aaa[1].add( hoge );
aaa[2].add( foo );

if(some == 1) {
	bbb[1].add("1");
} else if(some == 2) {
	bbb[1].add("2");
} else if(some == 3) {
	bbb[1].add("3");
} else if(some == 4) {
	bbb[1].add("4");
} else if(some == 5) {
	bbb[1].add("5");
} else {
	bbb[1].add("");
}

ArrayList ccc = new ArrayList();
for(int i = 0; i < aaa.size(); ++i){
	ccc.add( aaa[i] );
	ccc.add( bbb[i] );
}



追記:ついにこのソースの本格的修正が必要な事態になった。
      よく見たら、同じオブジェクトに別の所で別々の値を入れていたり、
      変数名と関係ない値を入れていたり、継承元と継承先の同一名メソッド
      で(ほぼ)逆の動作していたり、マジックナンバー書いてたり。こやつめ、ハハハ!

追記2:作り直したわ、ハハハ!

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆「高尚?」の、その後

↑の話の後。

「○○画面に表示している項目を1つ増やして欲しい」というお客様の要望を頂く。

  その修正個所を見ると、ここにも ArrayList の配列が... _| ̄|○


  とりあえず、修正、というか作り直しするためにプログラムを追う。

  ふむ。ArrayList配列のサイズは 20 個で宣言しているな。
  下にずーっとスクロールすると...。あった。セットをしている for ループだ。

  ループの中で 1 から順にセットして...、19番目までセットしている。

  19番目!?  20番目は無視なのか!?


  さらに下には、別のif条件の時に実行される for ループを発見。
  1 から 18 番目までセットしている...。残りの 19番目 と 20番目は無視されるのか。

  さらに追っていくと、別の場所で 20番目に数字(toStringでデータ型は文字になって
いる)がセットされていることが判明。
  ふむ。20番目の目的は何だろう?番兵の役割でもしてるかな?


  だが、セットした後で20番目を参照している様子は無い。
  ほ、本当か!? 本当に20番目はセットするだけなんだな。
  こっそり Collections.copy したりセッションにセットしたりしていないだろうな?

  ...(GREP中&コーヒー飲んで落ち着き中)...。

  し、していないようだ。本当に20番目は使っていないらしい。断言はできないけど。

  さらに、配列の15番目には定数が入るようだ。いや、全くの定数ではないが値が決まるのが
for ループに入る前だ。
  い、要らないのか。15番目は。普通の変数ではマズいのか?



  配列の使用をやめて、beanクラスにセットしたりするべきだな。
  まず、n番目に何の値が、どういう目的で入っているかを解明しないと...。


  ・・・。



  配列のサイズを 21 個に増やして、他の行のマネして項目を1つ追加。21番目にセットする。

  修正完了。



  1.今、動いているものをムヤミに変えるのは良くない。
  2.時間は貴重である。
  3.さらにこのソース引き継ぐ人。本当にごめんなさい。



追記:さらに別の所で ArrayList[50] を発見。もう、お許しください...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆膨大

膨大な量のデータをデータベースから取って来て、その内容をCSVに書き出す機能。
検索の条件を殆ど無しにして検索すると10M単位のCSVファイルを作ってしまう。
(最低でも、この検索条件は入れないと検索させない、という制御はしているんだけど、如何せん...)


お客様「この機能、検索が遅いんだよね...。」

私    「申し訳ありません。速度向上の検討を行っておりますが、現在のところは
        検索の条件を増やしていただければ、その分早く...」

お客様「その検索条件だけど、今、最低○○の条件は入れないと検索できないよね。
        何も条件を入れずに検索できるようにできない?」

私    「・・・。け、検討いたします。(涙」

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆条件

こんなのを発見。(Java)

	if( 条件A ){
		処理A;
	}else if( 条件B ){
		処理B;
	}else{
		処理A;
	}

まあ、いいけど...。
もしかしたら、「処理C」もあったけど削除されたのかもしれないな。

・・・。

いや、もしそうでもこの記述はやっぱりないな。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆風が吹けば桶屋が...

長袖のYシャツを着るとお金の節約になる法則を発見。

自転車で通勤している私。夏場は暑いので、半そでのYシャツで出勤。(上着はカゴの中)
でも社内はクーラで寒いくらいなので、上着を着て過ごす。

で、仕事時間の私の行動は。
  自分の机で作業 ->
  廊下のトイレへ ->
  トイレ横の自販機でコーヒー購入 ->
  自分の机へ戻って作業再開 ->
  コーヒー飲んだのでトイレに行きたくなる ->
のエンドレス。ひどい時は一日に1000円ほど使う。


しかし、長袖のYシャツを着た場合。上着を着るとさすがに暑いので、Yシャツ姿で作業をする。
上着は自分の机の横の空いている座席に置いておく。

で、仕事時間の私の行動は。
  自分の机で作業 ->
  廊下のトイレへ ->
  自販機でコーヒーを...。しまった!サイフは上着のポケットの中だった...。orz
  自分の机へ戻って作業再開 ->
  廊下のトイレへ ->
  自販機でコーヒーを...。しまった!サイフは上着のポケットの中だった...。orz

これで、マジでコーヒーの消費量が減った。
胃の具合も前よりいい感じだ。(<あたりまえ?)


ただし、この法則の発動には使用者の学習能力の無さが必須。ご注意を。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆セット購入

移動の時は音楽を離せない私。(さすがに、自転車の時は聞かないけど)
  今までは256Mの容量を持つMP3プレイヤを愛用していたが、CD4,5枚分の音楽しか入らない
ので何回も同じ曲を聴いてしまう。
  しかし、MP3プレイヤの値段が全般的に下がってきたことに気付いて、思い切って(?)1Gの
容量を持つプレイヤの購入を思い立つ。(HDD内蔵のは衝撃に弱いので嫌)

試しに、いくつか1Gの容量を持つ各社のMP3プレイヤをGoogleで調べてみる。
# 音質とか、使いやすさは広告だけでは判らないので...。

で。某通販のサイトでは、購入したい商品に関連する商品を自動的に検索して、勧めてくれる。
 ( 例えば、デジカメ + フラッシュメモリとか。マク○ナルドのセット商品を連想してしまう...)
もちろん、MP3プレイヤも例外ではなく、セット購入を勧めてくれた。

	「○○○ (容量:1G)」+ 「○○○ (容量:512M)」

・・・。
いや。同一シリーズで、容量が違うだけの2種類をセットで販売しても...。
それをする人って、明らかに転売しようとしてるんじゃ?

追記:結局、Creativeの TX FM (1G)を購入。バックライト点灯時の高音ノイズはご愛嬌。
      イアホンをE931にして、イコライザ弄ったら私の耳には十分満足。
      FMラジオも聞けるし、かなりオススメ。

追記2:いや、転売じゃなく。友人や兄弟を掴まえて一緒に購入もアリだな。
        というか、そっちの方が普通か...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆便利な時代に

  インターネット通販って便利。

  検索すれば、価格や性能順に商品を見れる。
  クリックすれば、詳細な情報etc を確認できる。

  「購入」を押せば数日以内に届く。

  買うほどポイントが貯まる。
  出張のホテル予約もポイントになる。
  クレジットカードの使用もポイントになる。
  キャンペーン中なので、ANAに乗ってもポイントが貯まる。

# なので、出張に行くと ホテル予約 + ホテル支払 + 飛行機 分が貯まる。

  貯まったポイントはお金代わりに使える。

  ↑の MP3プレイヤもコレで購入。E931も然り。ノートパソコン(InterLink MP-XV831)然り。

  気を付けないと危ないなぁ。
  1000円分のポイントを使うために10000円分の買い物しているようではバカを見そうだ。

  要らない物は買わない。欲しい!と思っても、数日考えてみる。
  そんなところかな。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆新語

Yahooニュースの記事の一つ。
ハードディスクについての記事のようだが。

「直径0.85インチのプラターについて...(中略)...ハードディスク全体のなかでプラターが大部分を
  占めるため...(中略)...プラターサイズの小型化は...(後略)」

プラターって何?
個人的なblogとかならいいけど、公のニュースサイトでは寒いよ。
用語の正確性(というか、カタカナ表記のお約束?)にもう少し注意を。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ネタにすべき話題でないが。

Yahooニュースの記事の一つ。
「××で全裸女性の遺体」というタイトルの記事を発見。

内容を見ると
「...(前略)...、靴下だけを履いた女性の遺体が発見され...」

それって"全裸"?
○曜サスペンス劇場の視聴率狙いじゃないんだから、そんな記事タイトル...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆汗

某企業のオンラインシステム障害。(結構ニュースになった、かな?)
その原因と対処の内容がWebに掲載されていた。

原因:Oracleの共有プール不足のため、ハングアップ。
対処:共有プール設定値を2倍に変更

す、捨て身のネタ?
データ量、アクセス量云々の見積もりくらいしたほうがいいとおもうな。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆なぞ

道を走っていたら、幼稚園の送迎バスを見かけた。
車体の横には大きく

  (学)はなぞの幼稚園

と、書かれていた。

な、ナゾの(学)?

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆WindowsUpdateで失敗。

  社内のマシン(WindowsXP)で WindowsUpdate ができない問題が発生。
(接続失敗で常にダウンロード率 0% になる)
  SP2を当てたからか?と思いながら調べていたら、プロクシの設定が必要なことが判明。

  コマンドプロンプトで

    「proxycfg -u」と打ち込めば、IEのプロクシ設定を反映。
    「proxycfg -d」でプロクシなし(直接接続)。
    「proxycfg -p 」で、指定のプロクシを経由。

  これで"proxy.pac"(<-社内で指定されているもの)に記載されているサーバを指定したら、
WindowsUpdateできるようになりました。
  先達の知恵(?)というものはスバラシイ。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆3年も前の話題でいまさらだけど

  2002年の2月の話題らしいので、激しくいまさらでしょうが。

  種子島ゴールデンラズベリー賞

    リ  レ  ー  っ  て  何  で  す  か  ?


  かっこよすぎ。

  詳細は→からどうぞ。google検索「リレーって何ですか 種子島」


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ネタ?

某ソフトのFAQにて。

Q:×××をアンインストールしたら、Program Filesフォルダが削除されました。

A:×××をProgram Filesフォルダ直下に指定してインストールした時に、
  アンインストール作業でProgram Filesフォルダが削除される場合があります。


お、おいおい。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ネタ2?

某ソフト(↑と同じ)のFAQにて。

Q:OutlookExpress5.x をメーラとして使用している環境で、×××を使用した際、
  受信トレイからメッセージが削除されてしまう場合がある。

A:修正モジュール(xxxx)を適用してください。


おいおいバグかよ。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ネタ3?

某ソフト(↑と同じ)を、会社のパソコンにインストールしようとしてエラーが出た。

    「ディスクの空き容量が足りません」

  「あれ?確かに、このパソコンは空き容量が少ないけど...」と思いながら
必要なHDDの空き容量を確認すべく、ヘルプを確認する。

  "必要な容量は ○○M です。"

  うーん。インストール先ドライブも、システムドライブも、そのン十倍のサイズが空いて
いるのに、何が気に食わないのだろう?
  試しに、キャッシュファイルetcを消して、些か空き容量を増やしてみる。

    「ディスクの空き容量が足りません」

コマンドラインからインストラにオプションを付けて、試してみる。

    「ディスクの空き容量が足りません」

インストール先のパスに" "が含まれるからか? 短いパスにして...。

    「ディスクの空き容量が足りません」

HDDが壊れたか?  スキャンディスク&デフラグしてみる。

    「ディスクの空き容量が足りません」

よし。今日は帰って、次の日に出社してから試すか!

    「ディスクの空き容量が足りません」

よし。OSの再インストールだ!

#  このソフトは、社内で使うパソコンには"必ず"入れないといけないソフトなので、
#インストールせずにパソコンをLANに接続すると、警告を喰らう。
#  それで、「このソフトが入れられない」 = 「使用禁止」になる(泣

追記:OSを入れなおしたら、正常にインストールできました。
      やれやれ、何だったんだろう...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆全角、半角

社内で使用するパスワードに関するメールが来た。
あるシステムの使用には、そのパスワードを使用するように、という内容だ。

メールには  2バイト文字でパスワードが書かれていたのが気になった。

うーん。普通、パスワード(それも英字のみで構成)は1バイト文字使うだろ...。
別に問題があるというほどじゃないけど、ソフトウェア会社なのに"寒い"気がする。

追記:あと、機種依存の文字をバンバン使う人も気になる。
      人の苗字とかで、勝手に簡略化するのが失礼というのは仕方ないとしても。
      世の中、Windowsだけじゃないんだし。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Oracleの一時表領域のサイズ変更

TEMP用の表領域追加
  ALTER TABLESPACE TEMP ADD TEMPFILE
  '[DBファイルパス]' SIZE [ファイルサイズ(MB)]M AUTOEXTEND OFF
  /

OFFLINE
  ALTER DATABASE TEMPFILE '[DBファイルパス]' OFFLINE

削除
  ALTER DATABASE TEMPFILE '[DBファイルパス]'
  DROP INCLUDING DATAFILES
  /


# Oracle覚えないとイカンなぁ...

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆バカなSQLを放ってしまった時!

  結合が失敗したSQLとか、むちゃくちゃなVIEWにWHERE条件なしでSELECTやっちゃったとかで、
応答なしに陥ったことのある人。
  それは私です。それも、ちょくちょくやっちゃいます(ぉぃ

  そんなときには、以下の方法で強制的にセッションを切ることができます。
  (ただし、ALTER SYSTEM の権限を持っている必要があります。)


1.セッションを一覧で表示させる。

     SELECT sid, serial#, username,program,osuser,machine
     FROM v$session
     WHERE username IS NOT NULL
     ORDER BY username, OSUSER, MACHINE
     /

     こんな感じで結果が出ます。
     プログラム名や、ユーザから暴走しているSQLを実行しているセッションを探します。

     SID  SERIAL# USERNAME     PROGRAM      OSUSER   MACHINE
     ---- ------- ------------ ------------ -------- ------------------
       9      106 ORACLE_USER  sqlplus.exe  user001  PC001
      13      144 ORACLE_USER  sqlplus.exe  user002  PC002


2.SID, SERIAL# を指定してセッションを切断する。
    '&SID, &SIRIAL' で切断するセッションを指定します。

     ALTER SYSTEM KILL SESSION '9,106'

  これで、応答無しになったセッションを切断できます。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆手が勝手に

いつも常駐させているカレンダーソフトがある。
スケジュール管理や記念日機能があって便利に使っている。

×××会議室で会議があるというスケジュールを入力しようと↓のように入れようとした。

  「○○会議 in ×××会議室」

だが、実際に入力したのは、

  「○○会議 int ×××会議室」

そうか、会議室は整数になったか。
手が、この3文字をセットで打ち込む仕様になっているもので...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Solaris10ユーザへの道1

ついにSunのSolarisがversion10から無償配布になりました!(2005/01/31)
#  いや、今までSolarisはマトモに使ったこともないんだけど。
#使ったって言っても、全部環境が整った状態でbashとjavac使ったくらい...。
#  でも、OSが無料で手に入るんだから手に入れないと!

  さて、早速ダウンロードをするか!とばかりにSunのサイトに行ってみると、
そのファイルサイズ2.5G!

  ニイテンゴギガですって!

  うーん。ダウンロードサイトは米国にあるしウチはADSLだし。まあ 100k/秒 出ると
すれば恩の字だな。ということは...

  ( 2.5 * 1024 * 1024 ) / 100 = 26214.4[秒] = 7.28[時間]

  今日の夜から、パソコン付けっ放し決定。
  帯域を常時占拠するので、プロバイダに怪しまれそうだな(笑

  というか、100k/秒なんて絶好調の時の速度だよな。実際はどのくらいの速度になるやら。

追記:Solaris10の入手にはダウンロード以外にメディアキットの購入の方法もあるとか。
      貧乏&趣味人な私にはダウンロード一択ですが。

追記2:やっぱり一晩かかった。いや、一晩で終わって良かったというべきか...。
        DVDイメージを選択した場合は、ファイルが分割されているので copy /b で結合する
      必要があります。老婆心ながら...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Solaris10ユーザへの道2

ダウンロードが完了したので、ホクホク顔でVMWareにインストールを開始。
isoファイルをCD-ROMとして認識させてぇ、CDブートにしてぇ、といつもの手順を踏む。

が、インストール画面になった直後に kernel panic 発生(ガッカリ
ネットワークカードのエミュレートが拙いのか?  と設定を弄るもダメ。

で、探してみるとSunのフォーラムで、そっくり同じ現象の人を発見。

  VMWareは32bitのCPUをエミュレートするのに、ホストマシンがAthlon64(64bit)
なので、インストラーが64bitで動作をしようとしているのでは?
  ↓の方法で明示的に32bitで動作させなさい!
  ttp://iforce.sun.com/protected/solaris10/adoptionkit/x86/techinfo.html
との下知

  なるほど!

追記:このやり取りの中で「I've googled ...」って質問者が書いてるんだけど、
      「ググる」って日本語じゃなかったんだ!と感動。(違

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Solaris10ユーザへの道3

  VMWareは バージョンv4.5.2以降じゃないと Solaris10 に対応していないことが判明。
  64bit以前の問題だったか...。(汗

  早速、v4.5.2 を試してみると、インストールが正常に始まった!

  インストールの時点から、もう日本語を選択できるので簡単簡単。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Solaris10ユーザへの道4

  インストール完了!
  VMWareのバージョン上げただけで、アッサリと行ってしまった。

  インストール完了後の起動では、↑の 64bit/32bit の問題で止まった。
  ふふふ。オレは知っているぜ。教わった通りに「b kernel/unix」で起動してみる。

  これもアッサリと起動。root のパスワードをいれて普通に起動。
  普通にインターネット接続もできた。
  普通にJavaの環境も入った。javac も使えた。パスの設定も自動らしい。

  これ、VMWareの事で詰まらなかったら簡単すぎ?

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆?

Yahooニュースで見つけた記事。(以下、斜体はその記事からの引用です)

  空き巣等の複数の事件現場から、××署に勤務する30歳代の署員の指紋が相次いで
見つかったらしい。
  だが、その署員が現場を捜査以外で訪れたことはなく、空き巣の犯人というわけではない。

この署員詰問されて曰く。
  「現場に行った際、何らかの捜査に役立つ証拠品を収集しなければならないと思った。
何も見つからない場合は、仕方なく、自分の指紋を現場に付着させ、証拠として採取していた」

・・・。
・・・・・・。
(゚Д゚)ハァ?  ゆにーくな方がおられるものですね。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ガァ!

仕事ではOracleを触っている私。

ある条件でデータを取り出せるようにしてほしい、とのことでSQL文を書くことになる。
テスト用の環境で動作を確認したあとで、その作ったSQL文をメールで送る。

数刻後。SQLが動かないとの連絡が。

ゲ、メール送る前に確認したのになぁ(<あたりまえ)。と思いつつエラーの発生した行を教えて貰い修正を...。
うーん。テスト環境では再現しないなぁ。トリッキーな記述もしてないしなぁ。
試しにエラーの起きている行を、同じ結果を返す別の書き方に変えたものを作成し、メールで送る。

動かない。

うーん?もう1種類書き方が考えられるので変えてみる。

動かない。

こちらのテスト環境と、あちらの環境とでOracleのバージョンが違うワケはないし。
あと考えられるのは...。
ヘンなデータが入っていなければ、コレでも同じ結果が返ってくると思われる記述に変えてみるか。

動かない。

・・・。
なぜだ?ナゼだ?何故だ?ウガァァァァ!

追記:「プログラムは思った通りではなく書いたとおりに動く」でしたっけ?
      名言ですよね...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆マクロ

某技術系掲示板で見つけたマクロ。(C++)


    #define     switch(N)   tmp = N; if(tmp){if(0){}
    #define     case(N)     if( tmp == N )
    #define     caseelse()  else
    #define     elif        else if
    #define     for         while
    #define     break       continue
    #define     if_         int
    #define     _if         width
    #define     i_f         height
    #define     printf      std::cout
    #define     scanf       std::cin


これで、「printf << "なんたらかんたら";」

の様に使用する。(たぶん、記入者は"狙って"やっていると思うんだけど...)
す、スゲエ!
  if_、_if、i_f はシュールだな...。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆混乱

こんなソースを発見。(Java)

  ちなみに、AAAA, AAAA_sub, BBBB, BBBB_sub というクラスが別にあり、AAAAとBBBBは
似ている形のクラスだけど、互いに継承等の関係はない。

    AAAA bbbb = new AAAA();
    AAAA_sub bbbb_sub = bbbb.getSub();


た、タイプミス...だよね。(ドキドキ
オレ、絶対 bbbb_sub を BBBB_sub 型のオブジェクトだと思って使っちゃうよ。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆写

「書類(写)」と打ち込もうとして「うつし」で変換したら、「鬱死」と一発変換した。

学習しすぎのIMEめ。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆catch

こんなソース見つけた。(Java)

  try{
    ...(中略)...
  }catch(AaaaException a){
  }catch(BbbbException b){
  }catch(CcccException c){
  }

catchする意味は?

まあ、私も似たような事を、たまぁぁにやらなくはないけど...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆三項演算子

こんなソース見つけた。(Java)

private boolean hoge(){

  String aaa;
  ...(中略)...

  return ( aaa == null || aaa.equals("") ) ? false : true;

}


判定式(=boolean)をわざわざ三項演算子使って、booleanに変更しても...。
まあ、間違っているわけじゃないが...。

# 正直に言うと、1年ぐらい前に自分が書いたソースで見つけたんだけどさ(汗

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆そしてループは回る

こんなソース見つけた。(Java)

  for( int i = 0; i < 3; i++){
    if( i == 0 ){
      ...(中略)...
    }
    if( i == 1 ){
      ...(中略)...
    }
    if( i == 2 ){
      ...(中略)...
    }
  }

こ、これが伝説の!?
話では聞いたことがあったけど、まさかリアルで拝めるとは。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆好みの問題だけど

  String val = "";
  if( i == 0 ){
    val = "aaa";
  }else if( i == 1 ){
    val = "bbb";
  }else if( i == 2 ){
    val = "ccc";
  }

というソースを発見。(Java)

好みの問題だけど、↓の方が個人的には好き。

  String[] def = {"aaa","bbb","ccc"};

  String val = "";
  if( i < def.length ) val = def[i];

  i に入っている数字とその文字の組み合わせ次第だけど。
  渡される i の値が並んで定義されていて、対応する文字の内容に規則性が無いなら有効じゃないかな?


追記:このパターンで60行くらい羅列されているソースを発見。うーん。気になる...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆念押し

こんなテーブル定義を発見(Oracle)
(データ型、サイズ等は省略)

--
-- 依頼者管理テーブル
--
create table L_IRAISYA_MNG (
  MNG_ID,           -- 管理番号
  IRAISYA_KBN,      -- 依頼者区分
  IRAISYA_ADDRESS,  -- 依頼者住所
  IRAISYA_SYOKU,    -- 依頼者職種
  IRAISYA_SIMEI,    -- 依頼者氏名
  BIKOU             -- 備考
);


"依頼者"を管理するテーブルなのは、よーく判ったから。
そんなに念を押さなくても、依頼者以外の情報を入れたりしないから。

でも、備考(BIKOU)だけは"依頼者"にこだわらないのか。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆大文字小文字

Javaは、変数名の大文字小文字が区別される(他の言語でも大抵そうだけど...)

  で、「atesaki」とか「Atesaki」とか大文字小文字の違いだけの違う変数がゴロゴロあるソー
スを発見。
  書いた人の流儀なのかもしれないけど...。おまけに、どの場合の変数が大文字で始まるのか、
小文字で始まるのかの規則が良く判らない。

おぉぉ。私がメンテするようなことにはなりませんように...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆ハンガリアン記法?

こんなソースを発見(Java)

    objHoge = ...
    objFoo  = ...
    objBar  = ...

いや、確かに全てオブジェクトではあるが...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆病気

  出張に個人所有のノートパソコンを持っていく。
  会社から貸与(?)されているノートパソコンもあるので、計2台を持ち歩くことになる。

  いや、個人のノートパソコンの方が圧倒的に性能がいいし。
  いや、会社のパソコンをインターネットに繋ぎたくないし。
  いや、インターネットに室内から繋げるホテルを探して優先的に予約してるし。

  終電でホテルに移動して、コンビニ弁当食べつつインターネット。

  もはや、病気?

追記:いや、メールチェックや飛行機予約とかにインターネットが必要なのも理由だけどね。
      お客さんの所に入りっきりで出張先にある自社ビルに行けないと、インタ
      ーネットが使えないし。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆感謝状

  クレジットカード会社から感謝状が来た。
  (正確には、1年間に一定額以上使った人へ送られる封筒)

  明細を見ると、出張の飛行機代+αだけで 125万以上使っていたようだ。

  どんだけ飛行機好きやねん。>俺

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆よく使う...

  プログラムを書いていると、しょっちゅう使う処理がある。
  例えば、日付を「平成××年×月×日」の形式に変換したいとか、半角で入力された文字
を全て全角に統一したいとか...。
  そういう場合は、その機能(メソッド)を一つのクラスに書いておいて使いまわすのが便利。

  いつも通り(?)、そんなクラスを"とある方"が作成してくださったので、ありがたく共用する。
  でも、クラスやメソッドが public static で宣言されていないので、一々インスタンスを作ら
ないといけない...。
  まあ、これも全く好みの問題だけど。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆VSS

  会社では Visual SourceSafe (略してVSS) というソフトをバージョン管理に使っている。
  他の人と同時に同じファイルを編集してしまうことが無いようにロックしたり、
ファイルの変更履歴を保存して誰が何時、どんな修正をしたかを管理できる。

  ふと、ファイル一覧の最終更新時刻を見た。

  23:43
  01:02
  02:58
...(以下略)..


何故だろう。視界が霞んでよく見えないや...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆無駄足

こんなソースを発見(Java)

Iterator it = list.iterator();
int i = 0;
while( it.hasNext() ){
    i++;

    ...(処理)...

}

return;

せっかくカウントしたんだから、i を使ってやれよ...。
というか、このテの無意味な変数が散在。ソースをそのまま貼れないのが残念...。

まあ実害は無いし、デバッグ用に作ったけど(or処理に必要だったけど)、消し忘れたって
だけだろうなぁ。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆悲劇

いつものように、カップの自販機でコーヒーを買う。
ピッ という電子音を合図に、熱いコーヒーの入ったカップを取り出だ...

出そうとしたら、外側がコーヒーで濡れそぼったカップが中に。

カップの中は微かにコーヒーが入っているが、乾いた底が見えている状態。

文句言うの邪魔くさいから、まあいいか。もう一杯買ってみよう...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆SQL文の自動生成

  条件検索を行う画面での話。

  ユーザが入力した条件に合致するデータを取り出すため、SQLを自動生成&実行して
結果を返すクラスがあった。
  訳あって、そのソースを見たのですが。

  PreparedStatement をSELECT文の発行の時だけ使わずに、ゴリゴリ String を作っていた。orz

#  同じ内容の検索(条件の値だけ微妙に違う)を繰り返すときには、PreparedStatementを
#つかうと DBのキャッシュが効くので、高速に検索ができます。

  UPDATE文やINSERT文の生成にはPreparedStatement使っているのに...。

  しゅ、宗教上の理由?

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆喧嘩?

技術系の掲示板で喧嘩しているのを発見。

質問者への回答を書き込んだAさんと、それに反感を抱いた(抱いていた?)Bさんが揉めていた。

質問者の訊いている内容と関係無い話での応酬。
別のスレッドの内容を引用した個人的な攻撃。
「ア○」とか「被○妄想」とか侮蔑的な単語の連続。

そんな中で、質問者への回答を何事も無いかのように書き込んでいる方がおられた。
質問者も、その回答に対する礼と解決した経緯の書き込みをされていた。

うん。なんか、いいな。

追記:喧嘩はオフラインか2○hでやってくれ...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆栄養ドリンク

仕事の関係で、徹夜や朝帰りが続いたので薬局の栄養ドリンクに頼ってみる。

似たようなものが沢山あるので、どれがいいのか判らない。(<買うのは初めて)
とりあえず、奮発して \1,000 のヤツを買ってみる。

箱のワリに、中のドリンクのビンは小さいんだな。
ほう。小さいストローが付いているな。これで飲むのか。
うん。結構マズいもんだな。

そして、飲んでも、一向に効いた気がしてこない...。
\1,000 返せ...。

追記:いや。まだブッ倒れずに、こんな独り言書いているだけ効いてるのかもしれないけど。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆凹むエラー

個人的にかなり凹むエラーのランキング。(Java)

1位:NullPointerException
        はい。私は、オブジェクトがあるか、それともnullかさえ把握できておりません...。

2位:IndexOutOfBoundsException
        はい。私は、配列やリストのサイズさえ判っておりません...。

3位:NoSuchMethodException
        はい。私は、どのファイルが古いか新しいかさえ理解しておりません...。
        (<私は、更新が必要なファイルをサーバに上げそこねてやってしまう)


DOMExceptionやNumberFormatException なら凹まない! とかってワケではないんですが、
バカバカしいというか、もうちょっと落ち着けよ、というか。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆闘い?

仕事を終えて家に帰ったら、留守番電話のランプが点灯していた。

  番号非通知だ。AM1:30に着信だ。伝言メッセージなしだ。

は! タワケめ! 電話するのが早すぎるわ。
オレと話したければ、AM5:00にでも電話しろ!

さあ、風呂入って"晩飯"食べて寝るか...。
夏だと、朝日を見ながら寝ることになるんだよな...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆古時計

  大きなのっぽの古時計の曲が、頭から離れない。

  原因が↓なのは明白。
  google検索「のっぽ 古時計 プログラマ」

  家のパソコンの中のファイルを整理していていたら、このFLASHがあったもので。

  チクタク、チクタク、...

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆Outpost

  このサイトで公開しているOutpostの使用方法。

  ふとしたことから「Outpost 設定」で Google検索すると、ベスト10(つまり最初のページ)に
月世界市が出てくることに気付く♪

  ごめんなさい。更新せずに放置な管理人で...。
  今のプロジェクトの先に光が見えたら更新します...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆「次のことを試してください」

  InternetExplorerで、存在しないサーバを指定したときやDNSエラーの時の、
「検索中のページは現在、利用できません」云々... のページ。
  誰もが一度は見たことのある(たぶん)画面のためか、パロディネタにしやすいようで。

  google検索「次のことを試してください」

  結構、面白いな。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆テストデータ

  プログラムを作った後は、テストをする。

  そのテストの時に、「画面から15文字以内の名称を入れる」とか「××と△△に数字を
入れると、◇◇に合計値が出る」とかの操作手順を踏むことがある。
  別に「テストの時は××という単語を入れる」などとは決まっていないので、みんなテキトー
な言葉を、その場の思いつきで入れる。

  この前、見つけたそんな入力データ。

  受注品名  :鹿
  数量(単位):2メートル

  鹿をメートル売りしないでください...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆テストデータ2

  ↑の話を書いた数日後にこんなニュース報道が。(一部省略。ソースは www.asahi.com です。)

NHKが携帯サイトに誤情報 「都内でJR各線炎上」

NHKは18日、インターネットサイト「NHKオンライン携帯版」に17日午後4時から
13分間、「都内全域でJR各線の線路が炎上中」といったテスト用の架空の災害情報を誤
って掲載した、と発表。謝罪し、「再発防止に全力を挙げる」としている。


  試験用に使っているサーバへ、外部から接続できる状態にしちゃったらしい。
その結果、テストのために入れた出鱈目の情報が、本物のニュースサイトに流れたと。

  こ、怖わぁ...。

  万が一のことを考えて、客先のテスト環境に変なデータいれるの自粛しよう(反省)。
  人名は「山田 太郎」とか、品名は「納入品A」とか無難なデータにして。

  でも、もしこの情報がもう少しリアルな「××で土砂災害」とか「△△駅で異臭騒ぎ」と
か「航空機事故」とかだったら、ソッチの方が問題になってたんだろうな。
  誤表示されたのが、明らかにウソな内容だったのは不幸中の幸いというやつかも...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆OracleのセッションとSQL

  セッションを喰っているSQL文を調べるために。

  select count(*), o.sid, osuser, machine, q.sql_text
  from v$open_cursor o, v$session s, v$sql q
  where o.sid=s.sid
    and q.hash_value=o.hash_value
  --  and user_name = 'testuser'
  --  and osuser = 'user'
  group by o.sid, osuser, machine, q.sql_text

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆OracleXE の障害(?)

  ついにOracleも出したフリーのDBMS。
  その名も Oracle Database 10g Express Edition。略してOracleXE。

  商用とは違うため、いろいろ制限もある。メモリー(SGA+PGA)に1GB以上のサイズを使え
ないとか、ユーザデータ領域が4GB(総合計サイズが5GB)までとか、1CPUとか。
# 今見たらデータ領域の50%程が既に使用済だった。orz。
  とはいえ、個人使用には十分。なにより、仕事で使い慣れたOracleが自宅でも使えるの
が嬉しい。日本語も問題なし(今のところ)。PL/SQLも使える。JDBC接続もできる。上記の
制約以外は全然使える。
# 試したら OracleText も使えました。GJ!

  ということで、早速自分のPCに入れてみたけどインストールが簡単スギ。
ただし、ポート8080が(問い合わせなく勝手に)使用されるのが要注意。(<アトで変更できま
す。↓のほうにある「追記」を見てください。)
# インストールの時に ポート8080を使用していれば別のポートを設定できるらしい(未確認)
  動かしてみても、予想以上にサクサク動いて快調の様子だ。ふむ使える。かなり使える。
  (試したのはAthron64 3000+を入れているマシンと、PentiumM 1.7Gのマシンの2台)

  ××××××××××××××××××××××××××××××××××××××××

  しかし、ある日突然(<と感じた)、OracleXEが使えなくなった。それも、インストールした
2台の中の片方のマシンだけ。
  サービスの「OracleXETNSListener」が起動しなくなったのだ。手動で起動しようとしても
起動直後に直ぐ落ちてしまう。
  いろいろ調べたり環境を変えてみたけど変化なし。やはりサービスが起動しない。

  仕方が無いのでOracleXEを再インストールしてみる。
  すると、インストラーが「サービスを作成および開始中..」で止まってしまった。
  タスクマネージャで確認すると、IDriver.exe と services.exe がCPUを100%使用した状態
で止まっているようだ。

  試しに、その状態のままでサービスの一覧を表示させると、あった。
  件の「OracleXETNSListener」が停止状態になっている。
  このサービスを手動で起動してみる。と、再インストールする前のようにサービスが一瞬
だけ起動してから落ちてしまった。やはり、現象は直っていない。
  しかし、CPU使用率100%で止まっていたインストラーが、少しだけ動いた様子。

  つまり、インストラーが止まっている問題も「OracleXETNSListener」が起動しないことが
原因だったのだ。
  手動で何度か、「サービスの起動」->「勝手に落ちる」->「サービスの起動」->.... と繰
り返す内に、インストラーが正常に(?)終了した。
  しかし、そんなムリヤリで完了させたインストラーが成功しているハズもなく、現象は改善
されていない。
# ログ見たら、DBの中身がメチャメチャになっている様子。。。

  OracleXEが変になったマシンと、なっていないマシンの違いと言えば、他のバージョンの
Oracleクライアントが入っているかどうかの違いだ。
(変になったマシンには、Oracle9iのクライアントが入っている)
  しかし、このクライアントが入っているマシンでも、しばらくの間は OracleXE が使えて
いたのも事実。
  他にOracleに関係しそうで環境やシステムに変化があったことは...。

  そーいえば最近、環境変数に「ORACLE_HOME」を追加した。
  (いや、バッチを実行するときに Oracle9i の場所が欲しかったので...)

  試しに環境変数から ORACLE_HOME を削除する。
  OracleXEをアンインストールして、ついでに、レジストリ「HKEY_LOCAL_MACHINE\SOFTWAR
E\ORACLE」の以下にある OracleXE に関係ありそうな部分を削除する。(自己責任で...)

  そして、OSを再起動してから再度インストールを試みた。

  。。。(インストール中)。。。

  やった!正常に完了した。長い道のりやった。。。
# ここではサクッとやったように書いているけど、実際は試行錯誤に時間がかかってます。

  結論的に言うと、環境変数の ORACLE_HOME がマズい様子。同一現象になっている方はお試
しあれ。
# レジストリの掃除に実際的な効果があるかは不明です。


  追記:Oracleが使用する 8080 ポートについて。以下のSQLで変更できるそうです。
        私の環境で確かめたところ、ちゃんと別のポート番号に変えることができました。
        call dbms_xdb.cfg_update(updateXML(
          dbms_xdb.cfg_get()
        , '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()'
        , 8080));

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆mod_auth_oracle

  せっかく↑でOracleを使えるようにしたので、Apacheの認証にOracleを使えるようにし
てみる。
  使用したのは mod_auth_oracle 。私が見た時点では公式サイトが死んでいたので、Goo
gleキャッシュetcを辿って入手。

  入手した後は簡単。「mod_auth_oracle.so」ファイルを Apache の modules フォルダの
下に置いて、httpd.conf にSIDやらテーブルやらの記述を追加するだけ。
  「Auth_Ora_pwd_whereclause」や「Auth_Ora_grp_whereclause」を記述すれば、パスワ
ード/ユーザ検索のSQLにWhere条件を追加することもできる。
# けど、ログイン認証用のVIEWか何か作って、それに対するSELECTしかできないユーザを
#作った方がいいかと。

  ...のハズだったんだけど。

  何故かApacheごと落ちたり、ORA-12154 が発生したりする。
  
  試行錯誤したところ、以下の操作で直った模様。
  ・httpd.conf に Auth_Ora_home を記述しない。
  ・OSの環境変数「PATH」に tnsnames.ora を置いているディレクトリを追加する。
    (Oracleクライアントへのパスが通っているだけでは不十分)
  
  まあ、環境やバージョンに依存する話だとは思うけど、ウチの場合はこれで正常に動作
するようになりました。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

◆mod_auth_oracle その後

  せっかく↑でmod_auth_oracleを使えるようにしたので、ProxyPass 使って転送(?)してい
る先にも認証がかかるようにする。
  といっても、 で指定するだけだけど。
  
  ただ、ここでも問題が1つ。
  ProxyPass先に、JBoss(Tomcat)を入れていたんだけと、そちらにアクセスすると調子が悪
い。
  解決にはならないけど、そのJBossへの接続には mod_auth_oracle 認証を行わないように
変更。うーむ。。。
# JBoss上で動いているAPの方でも認証をしているからだと思うんだけど...。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/




独り言 vol.1 - 独り言 vol.2 - 独り言 vol.3


トップページに戻る

左側にフレームのINDEXが表示されていなければクリック!