Web Artisan Blog - ウェブ アルチザン ブログ

Javaで参照渡しの関数を作るには

Java

2004年05月31日

Javaでは参照渡し(OUT引数)ができないが、
以下の様に、
参照渡し用のクラスを使用する事で実現できる。


//参照クラス

public class TestAdd {

  public static int execute(
   String i_cd,
   TestOutparam outparam
  ) {

    outparam.o_outcd = i_cd.concat("OUT");

  }

   //参照渡し用クラス(ここではTestAddのインナークラス)
   public static class TestOutparam {
    public String o_outcd = "";
   }

}





--呼び出し側処理

//参照渡し用クラス

TestAdd.TestOutparam outp = new TestAdd.TestOutparam();

String id = "IN";
int ret = 0;

ret = TestAdd.execute(id, outp);

System.out.println outp.o_outcd;
→"INOUT"


0 Comment  0 Trackback  Permalink

ASPでクライアントのキャッシュを見てしまう

ASP・VB・Excel

2004年05月31日

【環境】
Windows・IIS5.0・ASP

【現象】
サーバにリクエストが飛ばず、クライアントのキャッシュを見てしまう。

【原因】
ASPの最初の場所に下記のように記述していた為(IIS4の時はこれでいけたはず)

Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-control", "no-store"
Response.Expires = 0



【対処】
下記のように記述すればOK

Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"


0 Comment  0 Trackback  Permalink

fedoraにwindowsよりSSH接続すると日本語が文字化する

Linux・Unix・Apache

2004年05月31日

【環境】
Fedora・EXCEL2003マクロ

【現象】
fedora linuxサーバーにwindowsよりSSH接続すると日本語が文字化する

【原因】
fedora の文字コードが UTF-8 になったのが原因
(今までの Linux は eucJP)
TeratermがUTF-8に対応していない為

【対処】
puttyで代用

参考サイト
0 Comment  0 Trackback  Permalink

ASPでRequestの後を省略した場合

ASP・VB・Excel

2004年05月31日

Request.〜の「〜」は省略可能。
省略した場合、
QueryString、Form、Cookies、ClientCertificate、ServerVariables
の優先順位で処理を行う。
0 Comment  0 Trackback  Permalink

Eclipse ant JBossでコンパイルエラー

Java

2004年05月31日

【環境】
Windows2000・Java・Eclipse・JBossプラグイン

【現象】
JBoss環境をEclipse、antでコンパイルしようとしたところ、
Javaのバージョンが違うというエラーが発生する

【原因】
Dos窓でjava -versionを実行すると違うバージョンが表示される
(Eclipseが違うバージョンのJavaを見ていた為)

【対処】
OracleをインストールするとPathに「%JAVA_HOME%」
と記述されるので、その部分を本来のJAVA_HOMEの
フルパスで記述するように変更する
0 Comment  0 Trackback  Permalink

Excelマクロでフォーカスが移動しない

ASP・VB・Excel

2004年05月31日

【環境】
Windows・EXCEL2003マクロ

【現象】
エラーチェックなどでフォーカスをセットしているにもかかわらず、フォーカスが移動しない

【原因】
処理速度を上げる為にApplication.ScreenUpdating を falseにしていた為

【対処】
Application.ScreenUpdating = True 'フォーカス移動の為に設定を一時的に戻す
フォーカス移動
Application.ScreenUpdating = False '画面を更新しない(高速化)
0 Comment  0 Trackback  Permalink

マクロの処理速度を早くする方法

ASP・VB・Excel

2004年05月31日

【環境】
Windows・EXCEL2003マクロ

【現象】
マクロの処理速度が遅い

【原因】
セルに値をセットしている時に他のセルの計算処理が自動で行われていた為

【対処】
変数 = Application.Calculation '元の計算方式を保存
Application.Calculation = xlCalculationManual '計算しない(高速化)
処理・・・・
Application.Calculate '計算実行
Application.Calculation = 変数 '元の計算方法に戻す
0 Comment  0 Trackback  Permalink

global.asaを使用すると 「'OraSession' を作成中にエラーが発生しました。」のエラーが発生する

ASP・VB・Excel

2004年05月31日

【環境】
Windows・IIS・ASP・Oracle9.2

【現象】
global.asaを使用すると 「'OraSession' を作成中にエラーが発生しました。」のエラーが発生する

【原因】
オラクルサポートセンター曰く
IIS ASP/ASP.NET で 9.2 以降のミドルウェアを使用した場合にエラーが発生する

【対処】

解決方法詳細

0 Comment  0 Trackback  Permalink

EclipseでStrutsのデバッグが出来ない

Java

2004年05月31日

【環境】
Windows2000・Java・Eclipse・Tomcatプラグイン・Struts

【現象】
Eclipseでデバッグを行うとデバッグポイントで停止するのだが、
ソースがないと怒られる。

【原因】
Eclipseの環境設定ミス
Eclipse-Window-設定-Tomcat-Source Pathにデバッグするプロジェクトが設定されていなかった為

【対処】
上記を設定後
設定後Eclipseを再起動すればOK。
0 Comment  0 Trackback  Permalink

JavaのRMIって何?

Java

2004年05月31日

○RMI(Remote Method Invocation)
RMIでは、クライアントからサーバー上にあるJavaクラスのメソッドを呼ぶ事が出来る。
(別PCにあるJavaの関数を呼べる)

−−−−−−−−−−−−−−
★クライアント                     ★サーバー

@クライアントプログラム             @リモートオブジェクト

1.↓     2.↑                      4.↓     3.↑

@スタブ             5.←→        @スケルトン
−−−−−−−−−−−−−−


1.リモートメソッド呼び出し
2.戻り値
3.リモートメソッド呼び出し
4.戻り値
5.通信

※スタブはリモートオブジェクトと同じメソッドを持っていて、
クライアントから呼ばれると、その情報をスケルトンに送る。
スケルトンはリモートオブジェクトのメソッドを読んで戻り値をスタブに返却、
スタブはそれをクライアントに返す。


(1)コンパイルは「rmic」コマンドで行う
(2)生成物は4つ。
1、リモートインターフェース
2、リモートオブジェクト
3、スタブ
4、スケルトン


0 Comment  0 Trackback  Permalink

VIEWのCREATE文中で定数を使いたい

SQL

2004年05月31日

パッケージ定数は、VIEWのCREATE文では参照できない。
この場合は、定数を返却するFUNCTIONを作成し、
CREATE文中では、そのFUNCTIONを参照することで実現できる。
0 Comment  0 Trackback  Permalink

JOINを使った外部結合・・(+)を使わない

SQL

2004年05月31日

A.Key = B.Key(+)

例)

FROM A LEFT JOIN B ON A.Key = B.Key



→RIGHT JOIN
→OUTER JOIN(両方にあってもなくても取得)
0 Comment  0 Trackback  Permalink

自動でカウントアップするような値を持ちたい(Oracle)

SQL

2004年05月31日

Oracleシーケンスを使用

例)

CREATE SEQUENCE testseq 〜 ← シーケンス作成

SELECT testseq.CURRVAL FROM DUAL ← 現在のシーケンスの値を参照

SELECT testseq.NEXTVAL FROM DUAL ← 次のシーケンスの値を参照 ※参照した時点でカウントアップ


3 Comments  0 Trackback  Permalink

SQL文で、ある月の最終日を取得したい場合

SQL

2004年05月31日

LAST_DAY(対象日)で可能。

例)

SELECT LAST_DAY(TO_DATE('20040120')) FROM 〜



@検索結果
20040131・・・DATE型で返却される。
0 Comment  0 Trackback  Permalink

PL/SQLのカーソルの使い分け

SQL

2004年05月31日

検索結果1件を求めるなら、SELECT INTO 〜 でSQL発行。
複数件を求める場合は。カーソルを使用。
0 Comment  0 Trackback  Permalink

PL/SQLのIF文でのNULL値の扱い

SQL

2004年05月31日

PL/SQLでは、
NULL値はISNULL以外の条件式を無視する。

例)

IF a < b THEN ← aにNULL、bにNULLでも結果はELSEになる
・・・・
ELSE
・・・・
END IF;




0 Comment  0 Trackback  Permalink

SQLの中でIF文を使いたい(Oracle)

SQL

2004年05月31日

1、CASE式で可能。
SQL文中で、IF文論理を使用できる。

例)

SELECT SUM(CASE WHEN B='1' THEN A
ELSE A*-1 END)〜



2、DECODE式で可能・・・値を比較し結果を戻す。

例)

SELECT DECODE(a_id, 1, 'a',
2, 'b',
3, 'c',
'd' ← どれにも当てはまらない場合(DEFAULT値)
)
FROM 〜



※a_idが1の場合は、'a'を返す。。。

0 Comment  0 Trackback  Permalink

1回のSQLで小計、合計を計算するには(Oracle)

SQL

2004年05月31日

ROLLUP操作で可能。
・・・GroupBy句に使用する。検索結果がツリー構造イメージで返ってくる。
(対象件数が1件であっても、複数件返って来ることになる)
パフォーマンスはいいらしい。。

例)
@検索SQL

SELECT table_a.COL1, table_b.COL2, SUM(table_c.COL3)
FROM table_a, table_b, table_c
WHERE 〜
GROUP BY ROLLUP (table_a.COL1, table_b.COL2);



@検索結果

COL1         COL2           COL3
−−−−−−−−−−−−−−−−−−−−−−−−−−−
XXXX         YY             10
XXXX         YY             20
XXXX                        30 ←小計取得
WWWW         ZZ             5
WWWW         ZZ             10
WWWW                        15 ←小計取得
                            90 ←合計取得


0 Comment  0 Trackback  Permalink

ASPでの全角と半角の扱い

ASP・VB・Excel

2004年05月31日

ASPでは、全角・半角の区別が出来ない。

○"AA"(半角)→ Len("AA") = 2、LenB("AA") = 4
○"AA"(全角)→ Len("AA") = 2、LenB("AA") = 4



上記のように、全角・半角とも同じ結果になる。

<関連記事>
ASP:全角・半角を考慮した文字数(バイト数)取得例:Len、LenB
0 Comment  0 Trackback  Permalink

Appletでローカルファイルに書き込みを行う事はできる

Java

2004年05月31日

ローカルPCの、java.policyファイルの設定を変えることで可能。

・ローカルPCに対して全ての処理を許可

permission java.security.AllPermission;



・ローカルPCに対してファイルの読み書きを許可

permission java.io.FilePermission "c:\\temp\\*", "write";



※システムとしては、あまり好ましくない。社内イントラシステム等で使用。

1 Comment  1 Trackback  Permalink

Appletクラス等のgetImage(URL)で画像がリフレッシュされない

Java

2004年05月31日

Appletクラス等のgetImage(URL)で引数のURLの値が同じ場合、
URL先の画像が更新されていても、JVMが最初の画像のみ表示し続ける。

画像をリフレッシュしたい場合は、ToolkitクラスのcreateImage関数を使用する。

※リアルタイムに画像を更新し、
その画像をリフレッシュすることで動画イメージを実現する様なシステムに利用できる。

例)
Appletを使ったビル監視システムなど

0 Comment  0 Trackback  Permalink

SQLの実行計画

SQL

2004年05月31日

実行したSQLのパフォーマンスを測定する為に、実行計画を計測する。

※SQL*PLUSで、”set autotrace on”コマンドの実行後、
SQLを実行することで、測定できる。
1 Comment  0 Trackback  Permalink

SQL*PLUSでPL/SQL内のデバッグを行うには

SQL

2004年05月31日

DBMS_OUTPUT.PUT_LINEを使用。

例)

--PL/SQL内でデバッグを行いたい箇所に挿入
DBMS_OUTPUT.PUT_LINE(〜);



※SQL*PLUSで、”set serveroutput on”コマンドの実行が必要。

0 Comment  0 Trackback  Permalink

PL/SQLでUPDATEした件数を取得したい

SQL

2004年05月31日

SQL%ROWCOUNTを使用。

例)

wk_cnt := SQL%ROWCOUNT;



0 Comment  0 Trackback  Permalink