728x90

특정 경로(URL)를 특수 기호문제로 encoding 해야되는 경우 URLencode.escape("url 경로") 를 사용한다

 

=============================================== Example ===========================================

Ex)

String url = ""; //변환된 url를 담을 변수

String tempUrl = "/test/fold/test.jsp"; //변경할 url

link = URLencode.escape(tempUrl); //url encoding

= %2Ftest%2Ffold%2Ftest.jsp"// 슬러시(/) 기호가 %2F 로 치환된 것을 확인, &기도 등도 치환된다.

특정 값(value)를 UTF-8 or EUC-KR encoding 해야되는 경우 java.net.URLEncoder.encode("value", "type")를 사용

 

=============================================== Example ===========================================

Ex)

String encodeVal = java.net.URLEncoder.encode("가나다라", "UTF-8");

=> "가나다라" 를 UTF-8 로 인코딩(encoding)
String decodeVal = java.net.URLEncoder.encode(encodeVal, "EUC-KR");

=> UTF-8 로 인코딩 된 "가나다라" 를 EUC-KR 로 재 인코딩(encoding) => "가나다라" 가 원상복귀됨

 

728x90

'프로그래밍 > java' 카테고리의 다른 글

Java 정규식  (0) 2015.07.24
오픈소스 링크  (0) 2015.06.26
전자정부(Spring) Framework] iBatis 입력(INSERT) 결과  (1) 2015.05.19
java jdbc db instance 설정  (0) 2015.05.06
오라클 페이징  (0) 2014.07.23
728x90

작년에이어 올해에도 이 시기에는 시스템 오픈을 앞두고 정신없이 개발 진행중!

 

Spring Framework에서 iBatis에서 제공하는 라이브러리들을 이용하여

XML에 정의되어 있는 쿼리문을 실행하는 도중에 당황스러운 일을 경험했다.

다음과 같이 XXXDAO.java 파일에 iBatis에서 제공하는

insert(queryId, parameterObject) 함수를 사용하여

insert문을 수행하였고, DBMS는 Oracle을 사용하기 때문에

기본적으로 insert된 row의 수가 return 될 것이라고 생각했다.

int result = 0;
result = (Integer)insert("kipo.po.is.dao.insertDpst.002", paramVO);
if(result != 0){
     return true;
}else{
     return false;
}

 

하지만 수행결과 NullPointerException을 당하게 됐다.

당황하며 iBatis 라이브러리를 조사해보니 insert(queryId, parameterObject) 함수는 수행 후

새로 생성된 row의 PK를 Object로 return한다고 명시되어 있다.

 

간단한 해결 방법은, insert(queryId, parameterObject) 함수 대신

update(queryId, parameterObject) 함수

사용하면 쿼리 수행 성공 시 1, 실패 시 0을 반환 받을 수 있다.



728x90

'프로그래밍 > java' 카테고리의 다른 글

오픈소스 링크  (0) 2015.06.26
java get 방식 한글 전송 시  (0) 2015.05.26
java jdbc db instance 설정  (0) 2015.05.06
오라클 페이징  (0) 2014.07.23
eclipse에서 javadoc utf-8로 생성하기  (0) 2013.09.17
728x90

JDBC DB 인스턴스 Resource  설정 


* SERVIE NAME은 데이터 베이스의 군 (미러링을 하던지.. 등등)
* SID는 각각의 디비 인스턴스

설정도 위에 따라 바뀐다.
각각의 호스트 스트링은 다음과 같다.

from SID
jdbc:oracle:thin:@host:port:sid

from SERVICE NAME
jdbc:oracle:thin:@//host:port/service name



728x90
728x90

 
문제) 오라클 10g : export 실행할때나 토드로 접속할때 아래의 에러발생.
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized

조치1) sysdba로 로긴하여 아래 구문 실행

SQL> @ $ORACLE_HOME/javavm/install/rmjvm.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> @ $ORACLE_HOME/rdbms/admin/catalog.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/catproc.sql

==> 문제 해결 안됨.


원인) 아래 쿼리를 날렸을때 데이터 타입이 중복되어서 나옴

쿼리)

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);

결과)

CHARACTERSET  TYPES_USED_IN
----------------- -------------
WE8ISO8859P1      VARCHAR2
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
WE8ISO8859P1       CHAR
AL16UTF16            NCLOB
KO16KSC5601        CLOB
AL16UTF16            NVARCHAR2
KO16KSC5601        NVARCHAR2
WE8ISO8859P1       CLOB
AL16UTF16            NCHAR


조치2) sysdba로 아래 구문들 실행

주의사항)

a) Make sure the parallel_server parameter in INIT.ORA is set to false or it is not set at all.
b) Run the next script in SQLPLUS connected "as sysdba"


SQL> sqlplus /nolog 
SQL> conn /as sysdba 
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> COL VALUE NEW_VALUE CHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
SQL> COL VALUE NEW_VALUE NCHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
-- yes, 2 times startup/shutdown . This is not a typo
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

실행중 오류발생)

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE KO16KSC5601
==> ORA-12714: invalid national character set specified

원인)

NATIONAL CHARACTER SET 은 Oracle9i 이후에는 UTF8과 AL16UTF16 만 제공
확인)  

SELECT VALUE 
FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET')
결과)

PARAMETER                                  VALUE
---------------------------------- ---------------
NLS_CHARACTERSET                     KO16KSC5601

NLS_NCHAR_CHARACTERSET         KO16KSC5601

조치)

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';


이후 위의 조치2)를 다시실행하면 아래와 같은 결과를 얻을수 있다..


문제해결)

CHARACTERSET   TYPES_USED_IN
----------------- -------------
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
KO16KSC5601        CLOB
AL16UTF16            NCLOB
AL16UTF16            NVARCHAR2
AL16UTF16            NCHAR



 

Export 할때 아래문장을 자세히 봤으면 조치하는데 시간이 들 걸릴듯 했건만..

조치전) Export done in KO16KSC5601 character set and KO16KSC5601 NCHAR character set

조치후) Export done in KO16KSC5601 character set and AL16UTF16 NCHAR character set

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
728x90

-- 테이블 정보 보기

SELECT * FROM sysobjects WHERE xtype='U';

SELECT * FROM  INFORMATION_SCHEMA.TABLES;

SELECT * FROM ::FN_LISTEXTENDEDPROPERTY(NULL, 'User','dbo','table', null, NULL, NULL) order by objname

SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '[테이블명]', 'column', default)



728x90

'프로그래밍 > MS_SQL' 카테고리의 다른 글

mysql procedure  (0) 2022.08.02
MSSQL IDENTITY 값 재 설정  (0) 2015.04.27
MSSQL 자동 증가 시드값 가져오기  (0) 2015.04.27
sqlexpress 백업 및 복원  (0) 2015.04.24
mssql 파일 크기 줄이기  (0) 2015.04.14
728x90

초등학교 2학년 담임 선생님이 아이들에게 숙제를 내 주었습니다.

"부모님께서 가장 소중하게 생각하시는 물건을 그려 오는 거다.
엄마나 아빠가 가장 소중하게 생각하시는 물건을
한 가지만 예쁘게 자알 그려 오는 거야. 알았지?"

선생님의 말씀에 아이들은 저마다 많은 생각에 잠깁니다.
엄마나 아빠가 가장 소중하게 생각하고 계신 것이 무엇일까?
학생들 각자는 머리 속에 그 물건이 무엇인가를 상상하며 그려 봅니다.

다음 날, 발표시간이 되었습니다.
첫째 아이가 나와서 자신이 그린 그림을
친구들에게 보여 주면서 설명을 합니다.

"이건 우리 아빠가 부는 나팔인데요,
우리 아빠가 이것을 불면 엄마는 노래를 하십니다.
두 분이 다 아주 소중하게 여기시는 악기입니다.
노란 금으로 도금이 되어 비싼 악기라고 하셨습니다."

또 다른 아이가 나왔습니다.

"저희 할아버지가 다른 사람에게는
손도 못 대게 하는 아주 비싼 도자기입니다.
우리 집안의 가보라고 하십니다.
우리 고조의 고조 할아버지 때부터
오래오래 보관해 온 도자기라고 하십니다.
값이 얼마인지도 모르는 아주 비싸고 귀중한 도자기라고 하셨습니다."

이렇게 여러 아이들의 그림을 보면,
카메라를 그려온 아이, 승용차를 그려온 아이,
엄마의 보석반지를 그려온 아이,
아이들의 그림 속에는
정말 비싸고 귀해 보이는 물건들이 가득히 있었습니다.
선생님도 그 아이들의 가보 자랑에 놀라지 않을 수가 없었습니다.

그런데 마지막으로 발표를 한 영준이가 자신의 도화지를 펼쳐 보이자
아이들이 깔깔대며 손가락질을 하였습니다.
영준이가 들고 있는 도화지에는
쭈글쭈글한 베개 하나가 덜렁 그려져 있었습니다.
하지만 영준이는 친구들의 웃음 소리에
아랑곳 하지 않고 발표를 계속하였습니다.

"이건 우리 엄마가 베고 주무시던 베개인데요.
그런데 우리 엄마는 작년에 돌아 가셔서 이 세상에는 안 계십니다.
엄마는 더 이상 이 베개를 벨 수가 없습니다.
그런데 우리 아빠는 이 베개만은 절대로 버리지 않으셨어요.

그리고 이 베개를 엄마가 살아 계셨을 때와 똑같이
침상에 나란히 놓고 주무십니다.
우리 아빠에게는 이 베개가 가장 소중한 물건입니다.
난 우리 아빠의 침상에 가서 엄마의 베개를 보면 엄마 생각이 납니다.
엄마의 베개를 가슴에 안고 여러 번 울기도 했습니다.
엄마가 너무너무 보고 싶어요. 너무너무.. 우리 엄마가.."

영준이는 목이 메어 더 이상 설명을 못하였습니다.
떠들썩 하던 교실의 분위기가 갑자기 조용해졌습니다.
영준이 짝꿍은 영준이의 엄마를 생각하며 훌쩍거리기 시작하였습니다.
그 옆에 있던 아이가 또 눈물을 닦고 있었습니다.
순간적으로 교실 안이 눈물바다가 되었습니다.

엄마가 없는 영준이,
그리고 엄마가 베던 베개를 침대 위에 고스란히 간직하고 주무시는
영준이 아빠의 외로운 모습이 눈 앞에 그려졌기 때문일 것입니다.

선생님도 콧날이 시큼해 지셨지만 억지로 눈물을 참고 있었습니다.
선생님은 살며시 영준이의 옆으로 다가 가서
떨리는 영준이의 어깨를 꼬옥 감싸 안아 주셨습니다.
엄마가 살아 계셨을 때에 자식을 껴안아 주듯이..

그리고 여러 학생들에게 말씀하셨습니다.

"정말로 이 베개는 무엇보다도 가장 값지고 소중한 물건이로구나!"

눈물을 훔치던 모든 아이들은
다 일어서서 영준이에게 박수를 보냈습니다.

- TV동화 "행복한 세상"에서 –


부모는 자식의 거울이란 말이 있습니다.
자녀가 올바른 길을 걸을 수 있도록,
물질보다 더 소중한 것을 아끼는 모습을 보여주는 것도
자녀교육에 있어 큰 가르침이 될 수도 있을 것입니다.


# 오늘의 명언
당신과 내가 할 가장 중요한 일은 우리의 집 울타리 안에 있을 것이다.
- 해롤드 비 리 -

728x90

'향기나는글' 카테고리의 다른 글

여기서 기적이란 걸 팔지 않는단다  (0) 2015.07.20
최부자 6훈  (0) 2015.07.16
아내를 위해 혼수상태에서 깨어난 남편  (0) 2015.04.16
행복 찾는 법  (1) 2014.07.31
안중근 의사 어머님 편지  (0) 2014.03.26
728x90

httpd를 시작할 때 아래와 같이 뜰때가 있다. 다만, 왜 그런지는 정확히 모른다. (혹시 아는분 댓글로 남겨주세요.)

httpd: apr_sockaddr_info_get() failed for ABC


이럴 때는 다음과 같이 하면 된다. (초기 세팅을 기본으로 합니다.)

vi /etc/hosts

예) 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 가장 뒤에 예) "ABC"를 추가.

:wq

service httpd restart


확인한다.

apache/conf/httpd.conf 파일에 ServerName 주석 풀고 127.0.0.1 써도 됩니다.

행인

httpd: apr_sockaddr_info_get() failed

Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

VirtualHost overlap on port 80, the first has precedence

 

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

apache server 버전 확인  (0) 2015.09.14
리눅스 언어 설정  (0) 2015.07.24
리눅스 링크 거는 법  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30
728x90

ln -s 기존파일 대상파일

이게 ln 옵션

뒤의 인수는 디렉토리도 됩니다.

 

 

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 언어 설정  (0) 2015.07.24
httpd: apr_sockaddr_info_get() failed  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30
리눅스 심볼릭 링크 걸기  (0) 2013.09.30

+ Recent posts