2013년 11월 7일 목요일

byte[] 를 String으로 변환 할 때 마지막 글자가 ?로 될 때

한글은 두바이트 글자이므로 byte로 변환을 하면  0보다 작은 같이 된다. 
따라서 변환전에  마지막  byte 부터 0보다 작은 값의 수가 짝이 맞는지 검사 하여 변환 길이 값을 조절 하면 된다. 

int cnt=0;
for( int i=len-1; i >= 0 ; i-- ){
if( b[i] < 0 ) cnt++;
else break;
}
if( cnt % 2 == 0)
str = new String( b, 0, len, "euc-kr"); // 짝이 맞으면 길이대로 변환 
else

str = new String( b, 0, len-1, "euc-kr"); // 짝이 맞지 않으면 마지막 byte는 버린다. 


* 변환된  string의 마지막 char가 ? 인지 검사하는 방법은 무슨 이유인지 동작하지 않음.

str.charAt( str.length() - 1 ) == '?' ==> false 
str.substring( str.length() - 1).equals("?") ==> false 

--------
테스트 코드 ( Java 1.6으로 테스트 함 )
--------
public class EncTest {

public static void main(String[] args) throws Exception{
String str = "한글테스트;";
byte[] b = str.getBytes("euc-kr");
System.out.println(b.length);
printByte( b );
for( int len = 10; len > 7 ; len--){
int cnt=0;
for( int i=len-1; i >= 0 ; i-- ){
if( b[i] < 0 ) cnt++;
else break;
}
if( cnt % 2 == 0)
str = new String( b, 0, len, "euc-kr");
else
str = new String( b, 0, len-1, "euc-kr");
System.out.println(str.length()+":"+str+":"+str.getBytes().length);
printByte(str.getBytes() );
}

}

private static void printByte( byte[] data ){
int i=0;
for( byte b : data){
System.out.printf("%d : %d %x; ",i++,b,b);
}
System.out.println();
}
}

2013년 7월 30일 화요일

sqlplus 실행 로그 남기기 - script 실행 결과 로그 남기기


spo c:\temp\spo.log

@c:\sql\test.sql
 ...
 spo off


이렇게 하면 c:\temp 폴더에 spo.log 파일이 생기며, 그 안에 test.sql의  실행 결과가 있다.

2013년 7월 23일 화요일

Websphere Application Srever 8.5 에 JDK 7 설치 하기

참고 : http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/index.jsp?topic=%2Fcom.ibm.websphere.installation.base.doc%2Fae%2Ftins_installation_jdk7.html

IBM Installation Manager를 통해서 설치 한다.
  1. 저장소에 아래 URL을 추가 한다.  
    http://www.ibm.com/software/repositorymanager/com.ibm.websphere.IBMJAVA.v70 
  2. 설치를 선택한다.
  3. 기존패키지를 WAS 8.5 선택, 해당 SDK 버전을 설치 한다. 
  4. managesdk를 이용하여 sdk 버전을 변경 한다. 
> managesdk -listAvailable
CWSDK1003I: 사용 가능한 SDK:
CWSDK1005I: SDK 이름: 1.6_64
CWSDK1005I: SDK 이름: 1.7_64


> managesdk  -enableProfileAll -sdkName 1.7_64
CWSDK1017I: AppSrv01 프로파일에서 이제 SDK 1.7_64을(를) 사용할 수 있습니다.
CWSDK1017I:
AppSrv02 프로파일에서 이제 SDK 1.7_64을(를) 사용할 수 있습니다.
CWSDK1001I: 요청된 managesdk 태스크를 수행했습니다.


※ WAS 시작로그에 아래처럼 Java version이 1.7.0으로 나오면 성공 !!!

************ Start Display Current Environment ************
WebSphere [IBMJAVA7 7.0.4.1 gm1318.03]Platform 8.5.5.0 [BASE 8.5.5.0 gm1319.01] running with process name kr900963Node02Cell\kr900963Node02\server1 and process id 36744
Host Operating System is Windows 7, version 6.1
Java version = 1.7.0, Java Compiler = j9jit26, Java VM name = IBM J9 VM

2013년 4월 19일 금요일

WebSphere 서버이름 가져오기

jar : WebSphere/AppServer/plugins/com.ibm.ws.runtime.jar

class : com.ibm.websphere.runtime.ServerName

api

ServerName.getFullName() - cell , node 이름이 포함된 전체 이름
ServerName.getDisplayName() - cell , node 이름은 제외된 서버 이름
ServerName.getjsabpref() - z/WAS 인 경우 servant ID ( job id )