티스토리 툴바


Programming/JavaScript2010/01/04 14:14


// 새창의 크기와 위치 재설정
function WindowReset(win) {
   var winBody = win.document.body;

   // 새 창의 사이즈에 더해줄 marginWidth 와 marginHeight
   var marginHeight = parseInt(winBody.topMargin) + parseInt(winBody.bottomMargin);
   var marginWidth = parseInt(winBody.leftMargin) + parseInt(winBody.rightMargin);

   // 새 창의 사이즈 설정
   var wid = winBody.scrollWidth + (winBody.offsetWidth - winBody.clientWidth) + marginWidth-5;
   var hei = winBody.scrollHeight + (winBody.offsetHeight - winBody.clientHeight) + marginHeight+17;

   // 사이즈 재조정
   win.resizeTo(wid, hei);
}

Posted by 프랜드미니
Programming/Etc...2009/11/17 13:43

quartz - Cron Expressions


quartz 의 cron expression 에 대해 알아 보자~~ ^^

이 글은 http://www.opensymphony.com/quartz/wikidocs/TutorialLesson6.html 에 있는 글을 바탕으로 작성된 글임을 밝힘니다. 원문을 보시고 싶으시면 링크로 가시면 됩니다.


  1. Seconds, 초 
  2. Minutes, 분
  3. Hours, 시간
  4. Day-of-Month, 일
  5. Month, 월
  6. Day-of-Week, 주
  7. Year (optional field), 년

예) "0 0 12 ? * WED" 는 "수요일 12:00 pm 마다"를 의미합니다.

 

본격적인 설명 >

 

'-' 문자를 사용해서 범위를 ', 문자를 사용해서 목록을 표현 할 수 있어요

예로 "MON-FRI" 는 "월요일 에서 금요일"을 의미하며, "MON, WED, FRI" 는 "월, 수, 금"을 의미합니다.

"MON-WED, SAT" 는 굳이 설명하지 않아도 아시리라 믿습니다.

 

와일드카드 문자 '*' 는 필드에서 가능한 모든(every) 값을 의미 합니다.

Month 필드에서 사용되면 매월을 의미하고, Year 필드에서는 매년을 의미하겠죠~

 

각 필드의 유효한 값을 살펴 보죠~ >

1. Seconds, 0-59

2. Minutes, 0-59

3. Hours, 0-23

4. Day-of-Month, 0-31 (단, 각 월이 몇일까지 있는지에 대해서 주의하세요~)

5. Month, 0-11 or JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC

6. Day-of-Week, 1 - 7 (1 = Sunday) or SUN, MON, TUE, WED, THU, FRI and SAT

7. Year, 9999 겠죠...(확인은 안해봤습니다만..)

 

특수 문자의 의미 >

 

'/' 문자는 값 증분을 의미합니다. 예를 들면, '0/15' 을 minute 필드에 기록하면 '0분에 시작해서 15분마다'를 의미합니다. 만약 동일한 필드에 '3/20'을 기록하면 '3, 23, 43'을의미합니다.

 

'?' 문자는 day-of-month and day-of-week 필드에서만 사용 됩니다. 특별한 설정을 하지 않겠다는 의미입니다.

 

'L' 문자는 day-of-month and day-of-week 필드에서만 사용 됩니다. 'last'를 약자로 표기한 것이며, 사용 필드 위치에 따라 의미가 조금 다릅니다. 예를 들면, day-of-month 필드에서의 의미는 '달의 마지막 날' 을 의미합니다. 1월에는 31일 2월에는(윤년이 아닐경우) 28일을 의미하죠. day-of-week 필드에서의 의미는 간단하게 7 or SAT 를 의미합니다. 하지만 앞에 다른 값과 함께 사용될 경우 그 의미가 변하는데요. '달의 마지막 요일을' 의미하게 됩니다. 예를 들면 '6L'또는 'FRIL'의 경우 '달의 마지막 금요일'을 의미하게 되는 거죠. 주의할 점이 있는데, 이런 방식으로 리스트 혹은 범위를 기술하지 마세요. 예상치 못한 결과를 낳을 수 있습니다.

 

'W' 문자는 주어진 날에서 가장 가까운 평일(월-금)을 의미합니다. 예를 들면 15W를 day-of-month 필드에 기술하게 되면 '월 중 15일에 가장 가까운 평일'을 의미하게 되는 것이죠~

 

'#' 은 월의 몇 번째 평일을 의미합니다. 예를 들면 '6#3' 또는 'FRI#3' 을 day-of-week 필드에 기술하면 '월 중 3번째 금요일' 을 의미하는 것이죠~

 

이 글이 도움이 되었으면 좋겠네요~

감사합니다.

Posted by 프랜드미니
Programming/JavaScript2009/10/30 17:45
<body>
<form name="form1" id="form1" method="post" action="">
   <textarea name="tObj" cols="50" rows="50" onkeyup="fn_keyCheck()" onkeydown="fn_keyCheck"></textarea>
   -- 입력한 바이트 수 확인 : <input type="text" name="byteVal" />
</form>
</body>

* 바이트 수 체크할 자바스크립트 함수
<script type="text/javascript" language="javascript">

// fn_keyCheck() : textarea 태그에서 글자를 입력했을 때 실행
function fn_keyCheck() {
     var frm = document.form1;
     var chkLen = checkBytes(frm.tObj.value);
  
     frm.byteVal.value=chkLen;
}

// checkBytes() : 실제 바이트를 반환 (한글 2Byte, 영문 1Byte 계산)
function checkBytes(exp) {
     var vLen = 0;
     var temp = exp;
     var escTemp;

     if(temp != "" && temp != null) {
          for(var i=0; i<temp.length; i++) {
               if(temp.charAt(i) != escape(temp.charAt(i))) {
                    escTemp = escape(temp.charAt(i));

                    if(escTemp.length >= 6) {
                         vLen += 2;
                    } else {
                         vLen += 1;
                    }
               } else {
                    vLen += 1;
               }
          }     
     }

     return vLen;
}
Posted by 프랜드미니
Programming/JavaScript2009/10/30 17:25

<span style="width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">테스트 글입니다.</span>

- width : span 태그의 width 값

- overflow : 1. auto     - 정해진 영역안에 내용에 따라 스크롤을 제어
                 2. visible  - 기본값, 정해진 영역보다 내용이 많아도 그대로 보여줌
                 3. scroll   - 무조건 스크롤바를 나타나게 함
                 4. hidden - 정해진 영역보다 내용이 많으면 영역 밖의 내용은 보이지 않게 함

- text-overflow : 1. ellipsis  - 내용이 넘어서는 부분에 "..." 을 붙여줌

- white-space:nowrap : 셀의 너비를 지정했다 하더라도 자동으로 줄바꿈이 되지 않게 하는 속성
Posted by 프랜드미니

* Tomcat 에서 "세션 타임아웃" 설정 관련... 적용 운선순위

   1. 프로그램안의 session.setMaxInactiveInterval()
   2. 웹어플리케이션의 WEB-INF/web.xml
   3. Tomcat 의 conf/web.xml

   - 만약 다른 WAS 를 사용할 경우에는 web.xml 보다 해당 vendor 의 deployment descriptor 의 설정이 우선임.
Posted by 프랜드미니
Programming/JAVA / JSP2009/06/04 11:24

1. this 의 정의

     - 자기 자신 클랙스(객체)를 가리키는 키워드

2. this 의 특징

  • 객체 자신에 대한 참조값을 갖는다. (즉, 자신을 가리킨다.)
  • 메서드내에서만 사용된다.
  • 객체 자신을 메서드에 전달하거나 리턴해 주기 위해 사용하기도 한다.
  • this 를 사용함으로 모호하지 않고, 좀 더 명확한 프로그램을 작성할 수 있다.
  • 객체 생성자내에서 사용 시 다른 생성자를 호출한다. (this 의 용법 1)
  • 매개변수와 객체 자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 자신의 변수에 this 를 사용한다. 
    (this 의 용법2)
  • [주의] static 메서드(ex: main()) 에서 쓸 수 없다.
    => Because... static 메서드는 객체가 new 라는 키워드로생성되기 이전에 메모리에 로딩 되므로,                         아직 객체가 생기지 않았는데 this 를 사용하면 안됨)

3. this 의 사용형식

 형식 의미 
 this  자신 객체를 가리킨다.
파라미터 값으로 자신의 객체를 넘겨줄때에도 this 를 이용
 this.멤버변수  매개변수와 객체 자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 자신의 변수에 this 를 사용한다.
(this 의 용법 2)
 this(매개변수);  생성자내에서 다른 생성자를 호출한다. (this 의 용법 1)



[출처] http://lanian.tistory.com/297

Posted by 프랜드미니
Programming/JavaScript2009/04/01 16:14

이미지 게시판에 이미지를 등록할 때, 해당 경로에 이미지가 없을 경우에 대체 이미지를 보여주도록 고민하다가

아래와 같은 방법이 있다는걸 알았습니다...에겅..왜 이런걸몰랐을까..;;

[펌 : http://session.kr/bbs/board.php?bo_table=javascript_study&wr_id=19&page=2&sfl=&stx=&sst=wr_hit&sod=asc&sop=and&page=2]

[내용]
해당 이미지가 경로상에 없을 경우 처리 하는 방법에 대해서 고민 했었습니다.


이리저리 머리를 굴리다가 Script-xing.FileSystemObject 의 FileExists 로 체크해서

파일이 있으면 원래의 이미지를 보여주고 없으면 빈 이미지를 보여주는 방법으로

하고 있었죠.. 그러던 중 다른 방법을 알게 되었는데요.. 밑에 html 태그를 보면 아시겠지만..

<img onerror="this.src='images/blank.gif';" src="images/test.gif" width=100 height=50 border=0>

img 태그에 onerror 이벤트 핸들러가 있더라구요.. 어떤 기능인지 살펴보니까 src 로 설정한 경로에

이미지가 없을 경우 onerror 의 경로에 있는 이미지로 대체 시켜주는 거더군요.

이 이벤트 핸들러를 사용해서 Script-xing.FileSystemObject 를 생성해서 파일이 있는지 없는지 비교한 후에

개체 파기하는 이런 일련의 작업을 위 코드 한 줄로 끝냈습니다. 이런 멋진 기능이 있는 걸 왜

몰랐는지 이 부분을 적용해 보면서 아직도 공부할 건 산더미처럼 많구나 하는 걸 느꼈습니다.

이 팁이 여러분들에게 도움이 되었으면 좋겠네요.. 그럼 즐 코딩하세요..
Posted by 프랜드미니

페이지 로딩 시 [ 오류 메세지 - "종결되지 않은 문자열 상수입니다." 라는 ] 와 같은 JavaScript 에러가 발생하는 것을
종종 볼 수 있다.

페이지 소스를 확인해도 문제가 그닥...되는게 없다고 판단은 되는데...이런 오류가 왜 뜨는건지... ㅠ_ㅜ;

* 위와 같은 에러가 발생하여 네이버 누나, 구글 형을 찾아본 결과....ㅋ

   - 대개의 경우 반환되는 문자열 값 사이에 "개행 문자, 특수 문자"...등이 삽입되어서 에러가 발생하는 경우가 많다.
     (ex: \n, 오라클 개행 문자 등)

* 실제 작업 중... 발생한 오류는 오라클 쿼리를 실행하여 반환된 값을 함수 파라미터로 사용하려고 하던 중 발생하였다.

   => select ...생략..., to_char(c_content) as content from data_table
        : Oracle 쿼리 실행 후 반환된 content 값 - <p>TEST</p>
                                                                  <p>ABCD</p>
   => 페이지(html, jsp,...) 자바스크립트 변수에 반환활 경우...
        : var testD = ${content};      ->(요것이...)          var testD = '<p>TEST</p>
                                                                                             <p>ABCD</p>';
        이렇게 반환되서 위와 같은 오류 메세지를 반환하였다.

* 해결 방안

  () 나름 해결 방안을 모색한 결과....
      1. [자바스크립트 문자열 처리 시]
          자바스크립트에 값 반환 시 반환되는 문자열의 개행 문자, 특수 문자를 삭제해서 반환
          (ex: 문자열.replace('\n', '')

      2. [DB 값 반환하여 동적 매핑 할 경우 문제가 발생할 소지가 있으므로...]
          - 쿼리 실행 시 (오라클 기준) REPLACE 함수를 사용하여 개행문자, 특수문자를 삭제해서 반환
             (EX: REPLACE(REPLACE('문자열', chr(10), ''), chr(13), '')



[출처 : http://nicebury.tistory.com/25]
Posted by 프랜드미니
Programming/JAVA / JSP2009/03/27 17:29

Stored Procedure

 - 데이터베이스 내에 프로시저를 선언하여 클라이언트가 필요할 때마다 호출하여 사용하도록 하는 프로시저

 - 클라이언트에서 sql문을 실행하는 것과 달리 데이타베이스내에 존재

 - 실행속도가 더 빠르고, 부하가 적다는 장점

 

 

CallableStatement

 - 데이터베이스 내의 Stored Procedure를 호출하기 위해 존재하는 객체

 - PreparedStatement 객체를 상속받아 사용하는 것

 - registerOutParameter() : 프로시저에서 넘어오는 값의 타입을 지정해주는 역할


 conn.ds.getConnection();

CallableStatement cs = conn.prepareCall("{call procedure_name(?,?,?)}");

cs.setInt(1,1);

cs.setString(2,"홍길동");

cs.registerOutParameter(3, java.sql.Types.VARCHER);

cs.execute();

out.println(cs.getString(3));

cs.close();



[출처] Stored Procedure / CallableStatement|작성자 whitefre

Posted by 프랜드미니

 

 

   Java(jsp)

실무 활용팁

 

 

작업 진행 표시!! 언제 끝날지 모르는 진행중 GIF 이미지는 이제 그만 

★ JSP 소스 

<html>
<head>
<script>
function go(ing,end){
 document.all.div1.style.width = (ing+1)/end*100+"%";
 document.all.div11.style.width = (ing+1)/end*100+"%";
 document.all.div2.innerHTML = parseInt((ing+1)/end*100,10)+"%";
 document.all.div22.innerHTML = parseInt((ing+1)/end*100,10)+"%";
  //ing+1
하는이유는 (ing+1)/end*100  =0 이되면 에러가 나기 때문
}
</script>
</head>
<!--
상태진행바가 위치할 HTMl소스 -->

<body>
<br>
<br>

<table width="445" border="0" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC" style="font-size:11px;">
  <tr >
    <td align="center" bgcolor="#EEEEEE" width="50">
진행율 </td>
    <td bgcolor="#ffffff"><table id ="div1" width="50%" height="10" border="0" cellpadding="0" cellspacing="0" bgcolor="#428EA1">
    <tr>
  <td width="60%" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#32788A', endColorStr='#5DB4CA', gradientType='1')"></td>
  <td width="40%" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#5DB4CA', endColorStr='#32788A', gradientType='1')"></td>
 </tr>
    </table></td>
    <td id ="div2" align="center" bgcolor="#ffffff" width="50">0</td>
  </tr>
  <tr >
    <td align="center" bgcolor="#EEEEEE" >
진행율
</td>
    <td bgcolor="#ffffff"><table id ="div11" width="50%" height="10" border="0" cellpadding="0" cellspacing="0" bgcolor="#CC3333">
    <tr>
  <td width="80%" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#CC2A2C', endColorStr='#FA8A8B', gradientType='1')"></td>
  <td width="20%" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FA8A8B', endColorStr='#CC2A2C', gradientType='1')"></td>
 </tr>
    </table></td>
    <td id ="div22" align="center" bgcolor="#ffffff" class="org">0</td>
  </tr>
</table>
<%

int start = 0;
int end   = 100;
for( int i = start ; i < end ; i ++ ) {
 out.println("<script>go("+i+","+end+")</script>");

 //상태진행바의 진행 로직을 실행하는부분
 Thread.sleep(20);
 //
로직 끝

 out.flush() ;
}

%>
</body>
</html>

 실행화면 

집필의도 / 활용 가이드

자바 개발 프로젝트를 하다보면 HTML로 화면 프리젠테이션을 꾸밀때가 많다.

웹은 CS 와 다르게 배포문제가 발생하지 않기때문에 많은분야에 활용되고 있고 앞으로 더 많이 활용될것이라 전망된다.

하지만 웹의 최대단점은 정적이라는 점이다.

이 단점을 극복하기 위하여 AJAX ,DHTML ,ACTIVE X, 플래쉬 등이 많이 활용된다.

정적이기 때문에 표시하기 어려운것중에 하나가 상태진행바인데 그것을 현재 많은 개발자들이 움직이는 GIF 무한반복시켜 보여주고있지만 언제끝날지 모르는 반복 화면으로 사용자는 불편하기 짝이없다. 간혹 ACTIVE X 를 이용하는경우가 있는데 상태 진행바를 표시하기 위하여 OCX 를 개발한다는것은 배보다 배꼽이 더 크게 될수있다.

간혹 비쥬얼베이직 스크립트를 이용하여 윈도우API의 프로그레스바를 호출하여 사용할수도있지만 사용해본바 비쥬얼 스투디오가 설치되어있는경우만 정상적으로 작동하는문제가 있었다 현재 보완되어 가능할지도 모르나 자바로 프로젝트를 한다면

보다 간단하게 순수 JSP로 프로그레스바 구현이 가능하다.

정적인 웹에서 어떻게 진행상태를 실시간으로 서버에서 클라이언트로 전송 가능한가 하는 의문을 가질지 모른다맞는 말이다. 서버의 jsp 프로그램에서 반목문(for)을 실행했을때 반복이 끝난 후에야 결과값을 서버는 클라이언트로 전송하기 때문인다.

하지만 'out.flush() ;' 문장으로 현재까지 실행된 결과값(HTML)을 서버는 클라이언트로 보낼수 있다. 이것을 이용하면 jsp파일 이 실행이 끝나기전에 화면에 표시를 해줄수있는것이다.

 

메일을 여러명에게 발송한다거나 여러건의 자료를 db에 반복적으로각각 입력을 하려고 할때 'Thread.sleep(20);'대신 로직을 넣어준다면 아주 유용하게 사용할수 있을것이다.

 

스크랩및 배포는 허용하나 출처를 발켜주시면 감사하겠습니다. ^^


[출처] [자바/JAVA/JSP] 프로그레스바 상태 진행바 만들기|작성자 허걱


Posted by 프랜드미니