레이블이 나는야 웹프로그래머인 게시물을 표시합니다. 모든 게시물 표시
레이블이 나는야 웹프로그래머인 게시물을 표시합니다. 모든 게시물 표시

2009년 6월 5일 금요일

파일질라(FileZilla) 필터로 원하는 파일만 다운받기

서버에 FTP로 접근해서 파일을 다운받으려고 하는데..

PHP파일만 다운받고 싶다면?

파일질라의 파일명 필터 기능을 사용하면 간단히 해결된다.

* 파일질라가 설치되어 있지 않다면.. 아래 링크에서 다운받기 바란다. 

   http://filezilla-project.org/ (FileZilla Client를 다운받아 설치하면 된다._

파일질라를 실행하고 메뉴에서 보기 > 파일명 필터 (단축키 Ctrl-I)를 선택하면 아래와 같은 대화창이 뜬다.


필터 편집(E) 버튼을 클릭한다.


위 화면에서 새로만들기(N)을 클릭하고 필터 이름을 'PHP파일만 보기'라고 입력한다.
그러면 아래와 같이 필터가 추가된다.


이제 오른쪽에 필터링 조건을 설정해주어야 한다.
위의 화면에서 오른쪽 중간에 있는 추가(M)버튼을 클릭하고 아래와 같이 입력한다.

1) [아래 항목 적용 안 함]을 선택
2) [파일명], [다음으로 종료] 선택, .php입력
3) 디렉토리(C) 체크 해제

위와 같이 하면 파일명이 .php로 끝나는 파일만 필터링에서 제외한다.

즉, php파일만 보이게 된다.

이렇게 하고 확인을 누르면, 아래와 같이 필터 목록에 PHP파일만 보기라는 항목이 추가되었다.

우리는 서버에서 PHP파일만 다운받으려는 것이므로,
오른쪽 리모트 필터에서 [PHP파일만 보기]에 체크하고 [적용]버튼을 클릭한다.

이제 서버쪽 목록에 PHP파일만 보일 것이다.
이제 원하는 디렉토리를 선택하고 다운하면 되겠다.
그 하위 디렉토리에 있는 파일들도 다 적용되기 때문에 걱정할 필요없다.

이런 식으로 필터를 적절히 사용하면 원하는 파일만 업로드, 다운로드 할 수 있다.

아 편하다~ ㅎㅎ

아, 필요한 작업을 다 한 다음에는 필터를 모두 해제해놓기 바란다.

나중에 헷갈리니까..^^

2009년 1월 30일 금요일

AS/400 DB JDBC 연결


JDBC는 다음 경로에서 받을 수 있다.


처음에 아무생각 없이 최신버전인 6.4를 받았다.

그런데 연결하려고 하니 다음과 같은 오류 메세지가 나왔다.

java.lang.NoClassDefFoundError: java/sql/Wrapper

나는 JDK 1.5 를 쓰고 있다. java.sql.Wrapper는 1.6 클래스이다.

그래서 4.X의 최신버전인 4.9를 받아서 jt400.jar 파일을 LIB 경로에 복사하고 실행했더니 잘 연결되었다. ^^

연결스트링은 다음과 같은 형식이다.

jdbc:as400://203.XXX.XXX.XXX



2009년 1월 29일 목요일

POI로 엑셀 DROPDOWN LIST(콤보) 만들기

POI를 사용하면서 가장 불편했던 점이 데이터 유효성(Data Validation)이 지원되지 않는 점이었다.

그런데 이 문제가 해결됐다!

가장 많이 사용되는 경우인 Dropdown List를 만드는 예를 들어본다.
 
이와 관련된 예제가 별로 없어서 API를 열심히 들여다보고 만들어봤다.

아주 직관적이고 이해하기 쉽게 되어있어서 금방 만들수 있었다.

아래 코드는 POI 3.2 버전에서 작업한 것이다.


CellRangeAddressList regions = new CellRangeAddressList(4, 100, 5, 5);  // 적용할 범위

String[] aCategoryValues = {"텍스트1", "텍스트2", "텍스트3" };                   // 텍스트 리스트 배열
       
DVConstraint constraintCategory = DVConstraint.createExplicitListConstraint(aCategoryValues);

HSSFDataValidation dvCategory = new HSSFDataValidation(regions, constraintCategory );

sheet.addValidationData(dvCategory);


2008년 11월 20일 목요일

IE에서 getElementsByName 오류 해결방법

IE에서 getElementsByName 이 제대로 동작하지 않는다.

예를 들어 아래 코드를 보자.

<html>
<head>
<script language="JavaScript">
  window.onload = function() {
    var aa = document.getElementsByName("aa");
    alert(aa.length);
  }
</script>
</head>
<body>
<div name="aa" ></div>
<div name="aa" ></div>
</body>
</html>

이 코드를 파이어폭스, 사파리, 구글크롬에서 각각 실행해봤다.

모두 2 라는 값이 나왔다.

그러나 IE는 0 이 나온다.

인터넷을 찾아봤더니 여러 해결책이 나와있던데.. 내가 찾아낸 가장 간단한 방법..

아주 간단한 방법이다.

<div name="aa" id="aa"></div>
<div name="aa" id="aa"></div>

위와 같이 id를 같은 value로 주면 된다. 이러면 IE에서도 정상적으로 동작한다.

물론 id값은 unique해야 하는데.. 웹표준에 위반되는 것이어서 좀 꺼림칙하지만.. 

이것처럼 간단한 방법은 없는것 같다 ㅎ

2008년 10월 1일 수요일

[에러와 해결] Eclipse SVN 업데이트 오류


다음과 같은 오류가 발생하면서 업데이트가 되지 않는다.

Attempted to lock an already-locked dir

파일이름의 대소문자를 변경했을 때, SVN이 제대로 인식하지 못하여 발생하는 문제인 것으로 보인다.

파일이름 자체를 변경해서 해결하도록 한다.

간단한 엑셀 다운로드 프로그램(JSP)

JSP로 엑셀다운로드 프로그램을 작성할 때 Apache POI 와 같은 컴포넌트를 사용한다.

최근엔 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일 화요일

윈도우 부팅시 톰캣 자동실행시키기

톰캣 ROOT/bin에 로 이동 다음과 같이 실행하여 윈도우 서비스로 등록한다.

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 엑셀파일 생성시 오류와 해결방법

ASP에서 엑셀파일 생성시 다음과 같은 오류가 발생할 수 있다.

  Microsoft VBScript 런타임 오류 (0x800A0046)
  사용 권한이 없습니다.: 'CreateObject'

  Microsoft Office Excel (0x800A03EC)
  사용 가능한 메모리나 디스크 공간이 부족하므로 더 이상 문서를 열거나 저장할 수 없습니다.


==> 해결방법(Windows XP기준)

[관리도구 -> 구성요소 서비스 -> 내 컴퓨터 -> DCOM 구성]으로 간다

Microsoft Excel Application의 속성 대화상자를 연다.

1. 보안 탭에서 설정

[보안] 탭에서 [시작 및 활성화 권한]을 [사용자 지정]으로 한 후, [편집]을 누른다.

[인터넷 게스트 계정]을 추가하여, 로컬 시작, 로컬 활성화를 허용한다.

** 참고 **
 인터넷 게스트 계정을 추가하는 방법은 다음과 같다.

 [추가] 클릭, [고급] 클릭, [지금찾기]클릭한다.
 
 목록 중에서 [IUSR_컴퓨터이름]으로 되어 있는 항목을 클릭하고 [확인] 클릭한다.
**********

[액세스 권한] 도 마찬가지로 [사용자 지정]으로 한 후, [편집]을 눌러 [인터넷 게스트 계정]을 추가한 후 로컬 액세스를 허용한다.


2. ID에서 설정

대화형 사용자를 선택한다.


-- 끝

2008년 3월 5일 수요일

오라클 db 링크

1. 생성

create database link 링크이름
connect to 아이디 identified by 비번 using 'TNS이름';


2. 확인

select * from all_db_links;


3. 삭제

drop database link 링크이름;

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 사용자 추가하기

CVS NT 설치후 사용자를 추가하려면 명령창에서 다음과 같은 명령어를 실행해 주어야 한다.

  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파일이 다운되지 않는 문제

IIS 6.0에 웹사이트를 만들었다.

zip, pdf, xls 파일 모두 잘 다운된다. 그런데 hwp파일은 다운이 안된다.

IIS에 설정을 해줘야 한다.

HTTP헤더 -> MIME 형식에 새 형식을 추가해준다.

확장명: hwp, MIME 형식: application/unknown

[Database] MSSQL에서 Datetime을 String으로 변환시 스타일지정

Datetime형의 데이터를 스트링으로 변환할때, 스타일을 지정할 수 있다.

 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 연동시 주의

IIS , Resin 연동을 했는데 JSP페이지가 나타나지 않았다.

다음과 같이 ISAPI 필터 탭에서 화살표까지 확인했는데도 안되는 것이었다.

사용자 삽입 이미지

resin에서 setup.exe를 실행시키면 계속 다음과 같은 오류만 뜬다.

  can't open filter

내 컴퓨터(Windows XP SP2, IIS 5.1)에서 테스트를 해봤다. 잘 된다.

알고보니 IIS 버젼 6(Windows 2003 Server)에서는 설정을 하나 더 해줘야 한다.

IIS 관리자에 들어가서 좌측 트리에 보면 [웹서비스 확장] 이라고 있다.

여기에서 [알 수 없는 모든 ISAPI 확장]을 허용해주어야 한다.

사용자 삽입 이미지

[IE7] 다른 도메인 간의 하위 프레임 탐색

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