Friday, September 23, 2011

Java - メモ

Java - 正しい例外処理メモ

■起こらない例外の処理方法
例外処理しないのではなく、ErrorまたはRuntimeExceptionをthrowするとさらに安全

悪い例:
try{
  url = new URL("http://www.google.com");
}catch(MalformedURLException){
  // do nothing
}

良い例:
try{
  url = new URL("http://www.google.com");
}catch(MalformedURLException){
  throw new RuntimeException(e.toString());
}

■ArrayListはListインタフェースを実装したクラス(Implemented Class)

■Iterator
参考1

■正規表現
参考1


Tuesday, September 20, 2011

Java Oracle アクセス JDBC 関連


■Oracle Thin Driverで接続
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection=Driver.Manager.getConnection(
       "jdbc:oracle:thin:@host_name:port:SID", //
       "user_name",
       "pwd");

■コンパイルでのCLASSPATH設定

コンパイル対象:
D:\Project\src\dbtest\DBTest.java

現在のDIR:
D:\Project\src\dbtest\

コンパイル仕方が間違った:
D:\Project\src\dbtest\javac -classpath D:\Project\lib\ojdbc6.jar;. DBTest.java
Exception in thread "main" java.lang.NoClassDefFoundError: Dbtest (wrong name: dbtest/Dbtest)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)


再コンパイルしてOK:
cd D:\Project\src
javac -classpath D:\Project\lib\ojdbc6.jar;. dbtest.DBTest.java

参考
Javaのクラスファイルは、packageの階層と同じディレクトリ構造にしないといけません。



[参考文献]
1.Techscore.com : 大変わかりやすい
2.Oracle JDBCインストール: JDK 1.6、Oracle 11g R2、Eclipseのドライバ取り込みなどわかりやすい
3.Oracle 10g Jdbc thin サンプルコード: コードがわかりやすい
4.Eclipse JDBC の使い方: Classpathの設定など

Monday, September 19, 2011

Oracle 11g r2 メモ

メモ
ユーザ確認
show user;

テーブル一覧
select * from tab;

テーブル情報
desc テーブル名;(SQL*Plus)



環境変数確認
Unix環境 

Unix環境だと、env コマンドで環境変数で調べれるはず、試していないけど

Windows環境 

環境変数がレジストリに登録されているため、レジストリを調べればわかる。調べ方は直接レジストリを開いて調べるか、DOSコマンド"reg query"でも調べれる。 (参考1
C:\Documents and Settings\USER_NAME>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE" /s

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
    inst_loc	REG_SZ	C:\Program Files\Oracle\Inventory

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
    ORACLE_HOME	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1
    ORACLE_HOME_NAME	REG_SZ	OraDb11g_home1
    ORACLE_GROUP_NAME	REG_SZ	Oracle - OraDb11g_home1
    NLS_LANG	REG_SZ	JAPANESE_JAPAN.JA16SJISTILDE
    ORACLE_BUNDLE_NAME	REG_SZ	Standard
    OLEDB	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\oledb\mesg
    ORAMTS_CP_TRACE_LEVEL	REG_SZ	0
    ORAMTS_CP_TRACE_DIR	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\oramts\Trace
    ORAMTS_CONN_POOL_TIMEOUT	REG_SZ	120
    ORAMTS_SESS_TXNTIMETOLIVE	REG_SZ	120
    ORAMTS_NET_CACHE_MAXFREE	REG_SZ	5
    ORAMTS_NET_CACHE_TIMEOUT	REG_SZ	120000
    ORAMTS_OSCREDS_MATCH_LEVEL	REG_SZ	OS_AUTH_LOGIN
    OO4O	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\oo4o\mesg
    ORACLE_HOME_KEY	REG_SZ	SOFTWARE\ORACLE\KEY_OraDb11g_home1
    MSHELP_TOOLS	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\MSHELP
    SQLPATH	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\dbs
    ORACLE_BASE	REG_SZ	D:\Oracle
    RDBMS_CONTROL	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\DATABASE
    RDBMS_ARCHIVE	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\DATABASE\ARCHIVE
    ORA_ORCL_AUTOSTART	REG_EXPAND_SZ	TRUE
    ORA_ORCL_SHUTDOWN	REG_EXPAND_SZ	TRUE
    ORA_ORCL_SHUTDOWNTYPE	REG_EXPAND_SZ	immediate
    ORA_ORCL_SHUTDOWN_TIMEOUT	REG_EXPAND_SZ	90
    ORACLE_SID	REG_SZ	orcl

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\OLEDB
    CacheType	REG_SZ	Memory
    EnableCmdTimeout	REG_SZ	0
    ChunkSize	REG_SZ	100
    DistribTX	REG_SZ	1
    FetchSize	REG_SZ	100
    OSAuthent	REG_SZ	0
    PLSQLRset	REG_SZ	0
    PwdChgDlg	REG_SZ	1
    SchRstLng	REG_SZ	10000
    UserDefFn	REG_SZ	0
    DisableRetClause	REG_SZ	1
    VCharNull	REG_SZ	1
    TraceCategory	REG_SZ	0
    TraceFileName	REG_SZ	c:\OraOLEDB.trc
    TraceLevel	REG_SZ	0
    TraceOption	REG_SZ	0
    SPPrmDefVal	REG_SZ	0
    StmtCacheSize	REG_SZ	0
    MetaDataCacheSize	REG_SZ	0
    DBNotifications	REG_SZ	0
    DeferUpdChk	REG_SZ	0

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\OO4O
    CacheBlocks	REG_SZ	20
    FetchLimit	REG_SZ	100
    FetchSize	REG_SZ	4096
    HelpFile	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\oo4o\doc\oraclec.chm
    PerBlock	REG_SZ	16
    SliceSize	REG_SZ	256
    TempFileDirectory	REG_SZ	c:\temp
    OO4O_HOME	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\oo4o

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\2.112.1.0
    DllPath	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\bin
    TraceFileName	REG_SZ	C:\odpnet2.trc
    TraceLevel	REG_SZ	0
    TraceOption	REG_SZ	0
    PromotableTransaction	REG_SZ	promotable
    SelfTuning	REG_SZ	1
    StatementCacheWithUdts	REG_SZ	1
    UdtCacheSize	REG_SZ	4096
    PerformanceCounters	REG_SZ	0
    MaxStatementCacheSize	REG_SZ	100
    DemandOraclePermission	REG_SZ	0

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Protid_0
    Name	REG_SZ	HTTP
    Host	REG_SZ	alphapc
    Port	REG_SZ	49152

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Setup
    NumberOfInstalls	REG_DWORD	0x1

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Setup\All Versions

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Setup\All Versions\1
    Version	REG_SZ	11.2.0.1.0
    Home	REG_SZ	SOFTWARE\ORACLE\KEY_OraDb11g_home1

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Setup\Current Version
    Version	REG_SZ	11.2.0.1.0
    Home	REG_SZ	SOFTWARE\ORACLE\KEY_OraDb11g_home1

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\SYSMAN

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\SYSMAN\OracleDBConsoleorcl
    EMDROOT	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1
    ORACLE_HOME	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1
    EMSTATE	REG_SZ	D:\Oracle\product\11.2.0\dbhome_1\alphapc_orcl
    CONSOLE_CFG	REG_SZ	dbconsole
    ORACLE_SID	REG_SZ	orcl
    TIMEOUT	REG_SZ	15
    TRACE_LEVEL	REG_SZ	16


ドライバなど

Friday, September 16, 2011

gmail pop imap 受信 (kuroboxから)

送信は先日できたが、こんどは受信。

use Mail::IMAPClient;
use IO::Socket::SSL;

2つのモジュールを入れて、受信できました。 問題があったのはメールのSubjectの部分で、エンコード、デコードしない場合、

=?ISO-2022-JP?B?Base64でエンコードされたSubject?=

になるので、まず、

Base64でエンコードされたSubjectの部分をDecodeして、そのあと ISO-2022-JPからutf8にDecodeすればよい。具体的には
use Encode;
use MIME::Base64;
$subject =~ s/=\?ISO-2022-JP\?B\?([A-Za-z0-9\+\/=]*)\?=/ decode_base64($1)/eg;
print decode("ISO-2022-JP", $subject), "\n"; 

Sunday, September 11, 2011

KuroBox Gmail (3)

Sep 11 01:23:45 KURO-BOX postfix/cleanup[2860]: 47D0A8785: message-id=
Sep 11 01:23:45 KURO-BOX postfix/qmgr[2708]: 47D0A8785: from=, size=363, nrcpt=1 (queue active)
Sep 11 01:23:46 KURO-BOX postfix/smtp[2862]: certificate verification failed for smtp.gmail.com: num=20:unable to get local issuer certificate
Sep 11 01:23:46 KURO-BOX postfix/smtp[2862]: certificate verification failed for smtp.gmail.com: num=27:certificate not trusted
Sep 11 01:23:49 KURO-BOX postfix/smtp[2862]: 47D0A8785: to=, relay=smtp.gmail.com[74.125.127.109]:587, delay=4.6, delays=0.26/0.24/1.5/2.6, dsn=2.0.0, status=sent (250 2.0.0 OK 1315671829 z1sm28490831pbz.6)

Gmail経由で送信できたが、証明書の認証は失敗している

Gmailの証明書を追加

http://stevejenkins.com/blog/2011/06/fixing-postfix-certificate-verification-failed-for-gmail-untrusted-issuer-error-message/
mail.cfに次の設定を追加
smtp_tls_CAfile=/etc/postfix/certs/cacert.pem

Saturday, September 10, 2011

時間あわせ ntpd, ntpdate

時間あわせ

# hwclock;date
Sat Sep 10 00:25:49 2011  -0.204517 seconds
Sat Sep 10 00:27:03 JST 2011

ハードウェアクロックとシステムクロックの時間に誤差があり、
合わせる必要がある

# hwclock --systohc
# hwclock;date
Sat Sep 10 00:28:33 2011  -0.670399 seconds
Sat Sep 10 00:28:32 JST 2011

同じになった。


-----------------------------------------------------------------------------
# ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 210.173.160.27  210.173.160.86   2 u    5   64    7   25.119  71299.2   0.310
 210.173.160.57  210.173.176.4    2 u    3   64    7   27.898  71298.9   0.047
 210.173.160.87  210.173.176.4    2 u    5   64    7   25.001  71298.8   0.483

# ntpq -pd
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.jst.mfeed. 210.173.160.86   2 u   43   64  377   24.471    0.349   0.508
+ntp2.jst.mfeed. 210.173.160.86   2 u   41   64  377   27.768   -0.081   0.395
+ntp3.jst.mfeed. 210.173.160.56   2 u   36   64  377   24.733    0.051   4.143

Friday, September 09, 2011

run-partsのファイル名制限

crontabの設定で実行してくれない 調べてみたら、run-partsコマンドの制限で実行してくれませんでした。

実験、2つのファイルを作成して実行してみる
% vim temp/echo.sh
#!/bin/bash
echo AAA

% vim temp/echo
#!/bin/bash
echo BBB

% chmod 755 temp/*

% run-parts temp
BBB

Debian系ではファイル名で使用できる文字は [0-9A-Za-z-_] だけらしい