2008년 11월 20일 목요일
IE에서 getElementsByName 오류 해결방법
2008년 11월 4일 화요일
2008년 10월 1일 수요일
[에러와 해결] Eclipse SVN 업데이트 오류
다음과 같은 오류가 발생하면서 업데이트가 되지 않는다.
Attempted to lock an already-locked dir
파일이름의 대소문자를 변경했을 때, SVN이 제대로 인식하지 못하여 발생하는 문제인 것으로 보인다.
파일이름 자체를 변경해서 해결하도록 한다.
간단한 엑셀 다운로드 프로그램(JSP)
최근엔 2007 포맷을 지원하는 POI 3.5 버전이 나오기도 하였다.
그런데 화면에 출력하는 것과 동일한 내용을 POI로 다시 작성하는 것은 매우 귀찮은 일이다.
간단하게 엑셀 다운로드 프로그램을 작성하는 법.
JSP 프로그램에 다음과 같이 Reponse Header 를 설정해주면 된다.
response.setHeader("Content-Disposition","attachment; filename=파일이름.xls");
물론 이렇게 작성된 파일은 엑셀파일 형식은 아니고 웹페이지 형식의 문서이다.
엑셀에서 웹페이지 형식의 문서를 열수 있기 때문에.. 테이블로 잘 작성된 HTML페이지는 엑셀에서도 예쁘게 잘 나온다.
<작성예>
<%@page contentType="text/html;charset=utf-8"%>
<%@page language="java" import="java.util.*"%>
<%
response.setHeader("Content-Disposition","attachment; filename=downloa.xls");
// TODO : 로직
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>계획서</title>
</head>
<body>
<table border=0>
<tr align=center>
<td><font size=4>계획서</font></td>
</tr>
<tr>
<td>
<table>
<tr align='center'>
<td>년월:</td>
<td style="mso-number-format:'\@'">2008.10</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table border=1>
<tr align='center'>
<td>종류</td>
<td>대상</td>
<td>기간</td>
</tr>
<%
for(int i = 0; i < vList.size(); ++i){
%>
<tr>
<td><%=// 값1 %></td>
<td><%=// 값2 %></td>
<td><%=// 값3 %></td>
</tr>
<%
}
%>
</table>
</td>
</tr>
</table>
</body>
</html>
2008년 9월 30일 화요일
[에러와 해결] 데이터 정의에서는 바인드 변수를 사용할 수 없습니다
다음과 같은 오류가 발생하였다.
java.sql.SQLException: ORA-01027: 데이터 정의에서는 바인드 변수를 사용할 수 없습니다
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
해당 쿼리는 CREATE TABLE AS SELECT ...
테이블을 생성하는데 PreparedStatement를 사용했기 때문에 발생한 오류이다.
일반 Statement를 사용하여 오류 해결.
2008년 9월 4일 목요일
영문보다 한글이 먼저 나오게 정렬
예) SELECT * FROM tblMember ORDER BY MemberName
한글이 먼저 나오게 하려면?
다음과 같이 한다.
1. oracle
SELECT * FROM tblMember ORDER BY CONVERT(MemberName, 'ISO2022-KR')
2008년 8월 12일 화요일
윈도우 부팅시 톰캣 자동실행시키기
service.bat install
명령창에서 services.msc
또는 제어판의 관리도구 > 서비스를 실행한다.
Apache Tomcat 항목에서 마우스 우클릭하여 속성 선택
시작유형을 자동으로 바꾸고 저장한다.
2008년 4월 26일 토요일
[에러와 해결] 소켓에서 읽을 데이터가 없습니다.
java.sql.SQLException: 소켓에서 읽을 데이터가 없습니다
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1123)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1075)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:752)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
오라클에서 막고 있는 것이므로,
DB관리자에게 접속할 수 있도록 설정해달라고 요청해서 해결..
2008년 4월 24일 목요일
[에러와 해결] Illegal constant pool type
javax.servlet.ServletException: Illegal constant pool type
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:510)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
원인 : jsp에서 사용하는 class 파일이 손상되었다.
나의 경우에는 FTP로 업로드할 때 전송타입을 잘못해서 생긴 문제였다.
2008년 4월 4일 금요일
ASP 엑셀파일 생성시 오류와 해결방법
Microsoft VBScript 런타임 오류 (0x800A0046)
사용 권한이 없습니다.: 'CreateObject'
Microsoft Office Excel (0x800A03EC)
사용 가능한 메모리나 디스크 공간이 부족하므로 더 이상 문서를 열거나 저장할 수 없습니다.
==> 해결방법(Windows XP기준)
[관리도구 -> 구성요소 서비스 -> 내 컴퓨터 -> DCOM 구성]으로 간다
Microsoft Excel Application의 속성 대화상자를 연다.
1. 보안 탭에서 설정
[보안] 탭에서 [시작 및 활성화 권한]을 [사용자 지정]으로 한 후, [편집]을 누른다.
[인터넷 게스트 계정]을 추가하여, 로컬 시작, 로컬 활성화를 허용한다.
** 참고 **
인터넷 게스트 계정을 추가하는 방법은 다음과 같다.
[추가] 클릭, [고급] 클릭, [지금찾기]클릭한다.
목록 중에서 [IUSR_컴퓨터이름]으로 되어 있는 항목을 클릭하고 [확인] 클릭한다.
**********
[액세스 권한] 도 마찬가지로 [사용자 지정]으로 한 후, [편집]을 눌러 [인터넷 게스트 계정]을 추가한 후 로컬 액세스를 허용한다.
2. ID에서 설정
대화형 사용자를 선택한다.
-- 끝
2008년 3월 5일 수요일
2008년 2월 27일 수요일
jdbc 오라클 DB 연결하기
DB Visualizer와 같은 툴을 쓸 때, JDBC를 선택하고 DB Description을 적어주어야 한다.
오라클의 경우, 다음과 같은 세가지 타입이 있다.
- //<host>:<port>/<service>
- <host>:<port>:<SID>
- <TNSName>
참고 : http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#05_04
2008년 2월 26일 화요일
CVSNT 사용자 추가하기
set cvsroot=:sspi:localhost:/test
cvs passwd -r 실계정 -a CVS계정
이렇게 추가된 사용자는 CVS 저장소(Repository)의 CVSROOT 폴더에 passwd라는 파일에 저장된다.
비밀번호가 동일한 여러 계정을 만들때에는 이 파일을 직접 편집하면 편리하다.
참고 : http://www.cvsnt.org/wiki/InstallationTips#head-aefe33b5f7db69aa63f7da074fd107ba221dec89
2008년 1월 9일 수요일
[IIS] 2003 Server(IIS 6.0)에서 hwp파일이 다운되지 않는 문제
zip, pdf, xls 파일 모두 잘 다운된다. 그런데 hwp파일은 다운이 안된다.
IIS에 설정을 해줘야 한다.
HTTP헤더 -> MIME 형식에 새 형식을 추가해준다.
확장명: hwp, MIME 형식: application/unknown
[Database] MSSQL에서 Datetime을 String으로 변환시 스타일지정
23 : yyyy-mm-dd
102 : yyyy.mm.dd
111 : yyyy/mm/dd
112 : yyyymmdd
120 : yyyy-mm-dd hh:mi:ss
121 : yyyy-mm-dd hh:mi:ss.mmm
예) 오늘(2008년 1월 9일) 기준으로
SELECT CONVERT(char(10), getdate(), 23)
을 하면 '2008-01-09' 가 출력된다.
참고 : http://msdn2.microsoft.com/ko-kr/library/ms187928.aspx
2008년 1월 8일 화요일
[IIS] 2003 Server에서 IIS, Resin 연동시 주의
다음과 같이 ISAPI 필터 탭에서 화살표까지 확인했는데도 안되는 것이었다.

resin에서 setup.exe를 실행시키면 계속 다음과 같은 오류만 뜬다.
can't open filter
내 컴퓨터(Windows XP SP2, IIS 5.1)에서 테스트를 해봤다. 잘 된다.
알고보니 IIS 버젼 6(Windows 2003 Server)에서는 설정을 하나 더 해줘야 한다.
IIS 관리자에 들어가서 좌측 트리에 보면 [웹서비스 확장] 이라고 있다.
여기에서 [알 수 없는 모든 ISAPI 확장]을 허용해주어야 한다.

[IE7] 다른 도메인 간의 하위 프레임 탐색
도구 -> 인터넷 옵션 -> 보안탭에서 확인

IFrame 안에서 상위 프레임의 문서를 바꾸려고 할때, 도메인이 다른 경우 새 창이 뜬다.
즉, 자바스크립트에서
parent.location.href = "다른 도메인 주소";
와 같이 쓰거나
<a href="다른 도메인 주소" target="_parent">클릭</a>
이런 코드를 사용하는 경우다.
IE6에서는 [다른 도메인 간의 하위 프레임 탐색]의 디폴트 값이 [사용]이기 때문에 이런 문제가 발생하지 않는다.
물론 같은 도메인에서는 문제가 없다.
그런데 가끔 다른 도메인간 탐색이 필요한 경우가 있다.
나의 경우에는 로그인 모듈이 IFrame에 들어가 있는데 로그인 모듈에만 SSL을 적용하려다가 이런 문제에 부딪쳤다.
도메인 주소가 같아도 HTTP요청과 HTTPS요청은 다른 도메인으로 인식하기 때문이다.
되도록 IFrame을 사용하지 말아야 하는 것인가.
참고 : http://tagneto.blogspot.com/2006/10/ie-7-breaks-iframe-apis-that-use.html
[Database] MSSQL text 길이 구하기
text, ntext 칼럼의 데이터 길이를 구하려고 LEN() 함수를 쓰면 다음과 같은 오류가 난다.
[Error Code: 8116, SQL State: S0001] len 함수의 인수 1에 대한 인수 데이터 형식 ntext이(가) 잘못되었습니다.
DATALENGTH() 함수를 쓴다.
참고 : How to get length of data in Text, NText and Image Columns
2008년 1월 6일 일요일
[linux] 사용자 추가, 삭제(useradd, userdel)
회사메일계정을 만들어주어야 한다. 홍길동의 메일계정 hong을 만들어주는 과정이다.
메일서버에 접속한다. 명령창에 다음과 같이 입력한다.
useradd hong
계정이 만들어졌다. 비밀번호를 설정한다.
passwd hong
비밀번호를 두 번 입력하면 끝.
사원이 퇴사했을 경우에는 반대로 계정을 삭제해야 한다.
userdel -r hong