Apache Tomcat 버전별 다운로드 링크

Posted by seunggwon
2011. 12. 21. 13:23 Web Develop Note/Tip

각 버전별 tomcat 다운로드

tomcat도 버전별로 필요할 때가 있었는데...
유용하게 쓰고 있는 사이트이다!
잊지 않기 위해서 여기다 글을 쓴다. 


JDK 각 버전별 다운로드 링크

Posted by seunggwon
2011. 10. 17. 13:20 Web Develop Note/Tip

Java SE 1.4 Downloads


Java SE 5.0 Downloads


일때문에 JDK버전을 맞춰야되는 상황이 있는데... 이전 버전을 어디서 구하지...라고 생각했었는데...
java사이트에 가서 마구 뒤졌더니 찾았다!
메뉴누르면서 찾아가는게 생각보단 무지 힘들어서 즐겨찾기 등록해놓고 혹시라도 지울까봐 블로그에도 글을 남겨놓는다.
한번 찾아놓고 다시 찾아가려니 너무 힘들고 게다가 영어라서...-_-;

혹시라도 다른 버전을 찾으실 분 있으면 링크먼저 들어간고 나서 찾으시면 쉽게 찾으실 수 있어요.
전 일때문에 1.4와 5.0를 주로 쓰다보니 여기서만 찾으면 되서...
 

Eclipse에서 Tab을 space로 바꾼후에 빈칸을 점으로 표시하는 방법(GANYMEDE 기준)

Posted by seunggwon
2011. 2. 11. 14:27 Web Develop Note/Tip

출처 : 제가 작성했어요^^

1. Tab설정을 space로 바꾸는 방법

메뉴에서 Window - Preferences를 선택한 후에...
Java - Code Style - Formatter를 선택하면 밑의 화면이 나옵니다.



그냥 Edit 버튼을 누르면 수정은 안되기 때문에 New버튼을 눌러서 Active Profile을 새로 생성해줘야 합니다.
새로 생성된 Active Profile을 선택해준 후에 Edit버튼을 누르면 밑의 수정화면이 나옵니다.



바로 나오는 Indentation탭에서 Tab Policy 옆에 Tabs only라고 되어있는 곳을 클릭하여 Spaces only로 바꿔주고 Apply버튼이나 OK버튼을 누르면 적용이 됩니다.
JavaScript - Code Style - Formatter에서도 위와 같이 적용을 합니다.

General - Editors - Text Editors를 선택하면 밑의 화면이 나옵니다.



Displayed Tab width 옆의 숫자는 Tab의 길이를 나타내는 숫자인데 거의 대체로 4로 씁니다.
바로 밑에 Insert spaces fot Tabs는 원래 체크해제가 되어 있는데 체크를 하고 Apply버튼이나 OK버튼을 누릅니다.
이제는 Tab키를 눌러도 space키를 4번 누른 효과가 나타나게 됩니다.


2. 빈 공간에 점 표시를 해주는 방법

Window - Preferences를 선택한 후에...
General - Editors - Text Editors를 선택하면 밑의 화면이 나타납니다.



Show whitespace characters 옆에 원래는 체크해제가 되어있는데 체크를 한 후에 Apply버튼이나 OK버튼을 누르면 적용이 됩니다.
이제는 Eclipse의 Editor화면에서 space키와 Tab키 등을 누른 표시가 나타나게 됩니다.


위의 1, 2번의 내용을 적용한 후에 Tab키를 여러번 누르게 되면 밑의 화면처럼 나오게 됩니다.

hwp에서 작성한 내용을 jpg파일로 저장하는 방법(한글2007 기준)

Posted by seunggwon
2011. 1. 14. 11:06 Web Develop Note/Tip

출처 : 제가 작성했어요^^

1. 먼저 hwp파일을 열고나서 메뉴로 가서 인쇄를 선택하거나 Ctrl+p를 누릅니다.

2. 인쇄창이 나타나면 프린터 선택에서 그림으로 저장하기를 선택하고 인쇄버튼을 누릅니다.

3. 그림으로 저장하기 창이 나타나는데 원하는 파일형식을 선택하여 저장버튼을 누릅니다.


4. 여러장의 경우는 지정한 파일이름 뒤에 001, 002, 003 이런 순서대로 붙여집니다.
예) 3장인 hwp 파일인데 
     파일이름을 111로 파일형식을 JPG로 저장한 경우는
     111001.jpg 111002.jpg 111003.jpg 로 저장됩니다.


기준이야 제 컴퓨터에서 한글2007을 실행해서 해본 것이구요...
그냥 까먹을까봐 작성해둔 것입니다.^^;

당신은 웹표준 개발자인가?

Posted by seunggwon
2010. 9. 1. 11:44 Web Develop Note/Tip

출처 : http://trend21c.tistory.com/929


개발자들이 흔히 사용하는 비표준 코드라고 할까요.

그래서 그 목록을 정리해보았습니다.

아마 아래에 언급될 내용들만 준수하더라도

크로스브라우징을 위해 들이는 수고가 90% 이상 줄어들 것입니다.




1. 단위를 넣어라


상당히 자주 발견되는 잘못된 코딩의 예입니다.

자바스크립트로 width 또는 height 값을 변경할때

IE에서는 단위를 적지 않아도 자동으로 px로 인식하지만

다른 브라우저에서는 단위를 적지 않을 경우 원하는 화면을 얻을수 없습니다.


width나 height, padding, margin 값과 같이 수치를 입력하는 css 속성값에는

반드시 단위(px, pt, %, em 등)를 넣어주세요.



2. document.all은 버려라


IE식 DOM스크립팅의 대표주자 바로

document.all과
document.regForm.userId 와 같은 DOM 접근 방법입니다.


name속성값에 기반한 document.regForm.userId과 같은 DOM접근이나

document.all[objectID] 과 같은 DOM 접근방식은 IE에서만 동작을 보장합니다.


이제 document.getElementById(objectId)를 사용해주세요.



3. 올바른 주석 사용하기


HTML에서의 주석 넣기

<!------ 주석 ------> (X)
<!--주석--> (X)
<!-- 주석 --> (O)


HTML에서 주석을 넣을때 정확한 구분을 위해 과도하게 하이픈(-)을 넣는 것을 종종 발견합니다.

하이픈은 딱 2개만 넣으세요.

코멘트을 시작하는 "<!"와 내용을 시작하는 "--" 사이에는 빈 공간이 허용되지 않습니다.

그리고 주석의 양옆에는 안전하게 빈 공간을 넣어주세요.



CSS 주석 넣기

<!-- css 주석 --> (X)
/*css주석*/ (X)
/* css 주석 */ (O)


CSS는 HTML과 주석을 넣는 방법이 다릅니다.

CSS의 주석도 HTML처럼 <!-- --> 이렇게 넣으시면 안됩니다.

그리고 CSS도 안전한 주석처리를 위해

주석 내용 양 옆에 빈공간을 넣어주세요.



4. inline 엘리먼트와 block 엘리먼트를 구분하자.
<tr>은 block엘리먼트가 아닙니다.



HTML엘리먼트는 크게 inline엘리먼트와 block 엘리먼트로 나뉩니다.

<span>, <strong>, <em> 과 같이 줄바뀜이 일어나지 않는 엘리먼트를 inline 엘리먼트라 하고

<div>, <h1>, <p>와 같이 줄바뀜이 일어나는 엘리먼트를 block 엘리먼트라고 합니다.


block 엘리먼트와 inline 엘리먼트는 css 로 변경이 가능합니다.

보통 inline으로 취급되는 <span> 태그도 css에서 display:block 으로 설정하면

block 엘리먼트와 같이 표현됩니다.


그렇기 때문에 개발자는

엘리먼트를 숨겼다가 다시 보이기를 할때

inline 엘리먼트인지, block 엘리먼트인지 알아야 합니다.


display:none 되어 있는 엘리먼트를 무조건 block 으로 보이게 한다면

퍼블리셔에 의해 inline으로 설정된 엘리먼트가 block 엘리먼트로 취급되는 경우

레이아웃이 무너지는 현상을 발견할 수도 있습니다.



block엘리먼트인지 inline 엘리먼트인지 신경쓰지 않고

자바스크립트 스크립팅을 하는 가장 좋은 방법은

display 값에 아래와 같이 빈 값을 넣는 것입니다.


document.getElementById('elementId').style.display = '';


이 경우 display 속성값이 기본값으로 세팅이 되기 때문에

css에서 선언된 원래의 display 값으로 되돌아가게 됩니다.



그리고 하나 더.

DB에서 데이터를 불러와 뿌려주는 데이터테이블 형식에서

display:none 되어 숨겨있는 <tr>을 사용자 액션에 따라 보이게 할때

documet.getElementById('tr_id').style.display = 'block';

이렇게 사용하는 경우가 많습니다.

IE에서는 tr엘리먼트의 display 속성값을 block으로 하여도 원하는 화면을 얻을 수 있겠지만

그 외의 브라우저에서는 테이블이 깨져나오는것을 발견하게 될것입니다.


<tr>엘리먼트는 정확히 얘기하자면 고유의 display 속성이 table-row 입니다.

그렇기 때문에 display 값을 "table-row"로 해야하나 IE에서 이 또한 문제가 발생하므로

display 값에 다음과 같이 빈값을 넣어 스크립트를 작성해야 합니다.


documet.getElementById('tr_id').style.display = '';


이렇게 함으로써 display 값이 선언된 CSS의 default 값으로 세팅이 됩니다.





5. 파일 저장시 문서의 BOM을 제거하여 저장하기



에디트 플러스 3버전대에서는 도구 → 기본설정에 BOM 설정부분이 있고

이클립스나 비주얼스튜디오를 비롯한 다른 에디터들에서도

도구 → 속성, 파일 → 속성, 파일 → 옵션, 옵션 → 설정, 설정 → 옵션

메뉴에 BOM 제거 설정 부분이 있습니다.

BOM이 포함되어 파일이 저장될 경우

문서의 가장 앞에 다른 문자가 있는 것으로 인식이 되어

스크립트 에러가 발생하거나, HTML문서 최상단에 선언한 doctype이 제대로 인식되지 않아

quirks모드 (비표준모드)로 렌더링을 할 수도 있습니다.


파일 저장시에는 BOM을 제거 하여 저장하세요.




6. IE전용 이벤트, 속성, 메소드 사용을 피해라


구축된지 오래된 사이트의 유지보수를 진행할때마다 매번 놀라는 것이

코드속에 숨겨져 있는 IE만의 다양한 이벤트, 메소드, 프로퍼티들 입니다.

어쩜 이런 것들을 알고 사용하는지, 개발자들이 마냥 신기하기만 합니다.


사실 이문제는 마냥 개발자를 탓할수 없는 문제이기도 합니다.

웹표준이라는 바람이 불기 이전부터 웹개발을 하셨던 분들은

IE6 환경에서만 웹개발을 하셨기 때문에

그만큼 IE6만의 고유 이벤트나 속성, 함수들에 대한 지식들로 개발경험이 쌓여진 것이기 때문입니다.



흔히 사용하는 IE전용 이벤트, 속성, 메소드를 짚어보고

이에 대응되는 표준 이벤트, 속성, 메소드를 알아보겠습니다.





innerText  → innerHTML

getElementsByClassName() → getElementById()

selectNode(), selectSingleNode() → getElementsByTagName()


DATE 객체에서 getYear() → getFullYear()


이벤트 onmouseleave → onmouseout


javascript에서 event 객체를 받을 경우 마우스포인터의 x, y값을 가져오기 위해서 e.x, e.y 대신 e.clientX, e.clientY 프로퍼티를 사용


javascript로 검색어와 같은 기능에서 한글을 비롯한 특수문자를 get형식으로 보낼때는


escape()함수가 아닌 encodeURIComponent() 함수를 사용

[HTML5] 3. 캔버스

Posted by seunggwon
2010. 8. 27. 18:14 Web Develop Note/HTML&css
<!doctype html>
<html>
<body>
    <canvas id="canvas1" width="300" height="200"></canvas>
    <script type="text/javascript">
    //canvas DOM 객체를 생성
    var canvas = document.getElementById("canvas1");
    //그리기 컨텍스트를 생성
    var context = canvas.getContext("2d");
    //사각형 그리기
    context.fillRect(0, 0, 150, 100);
    //텍스트 그리기
    context.fillText("Hello, Canvas!", 155, 110);
    //선 그리기 시작
    context.beginPath();
    //선 그리기
    context.moveTo(0, 100);
    context.lineTo(300, 100);
    context.moveTo(150, 0);
    context.lineTo(150, 200);
    //캔버스의 윤곽을 그린다.
    context.rect(0, 0, 300, 200);
    //화면에 출력
    context.stroke();
    //선그리기 종료
    context.closePath();
    </script>
</body>
</html>


strokeRect(x, y, w, h) - 사각형의 윤곽을 그립니다. (x, y)가 사각형의 왼족 위 시작점이 되며 w는 사각형의 넓이를 나타내고 y는 사각형의 높이를 나타냅니다.
fillRect(x, y, w, h) - 사각형을 색으로 채웁니다.
clearRect(x, y, w, h) - 지정된 사각형의 영역을 지웁니다.

BSC의 4가지 관점

Posted by seunggwon
2010. 5. 14. 11:26 Web Develop Note/Tip

출처 : http://cafe.naver.com/6sigmaacademy.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=5835
         http://blog.naver.com/hyoungmo74?Redirect=Log&logNo=31453249



1) 재무적 관점(Financial Perspectives)
 재무적 관점이란, 기업의 주요 이해 관계자들에게 재무적인 지표를 통해 조직의 성과를 보여주기 위한 것이다. 그러나 기업 활동의 결과를 ‘얼마만큼의 재무적인 성장이 있었는가?’로 평가하는 것은 여전히 가장 중요한 기준이지만, BSC의 재무적 관점은 단순히 재무지표를 관리하는 것 이상의 의미를 갖는다. 재무성과가 좋게 나타나기 위해서는 조직의 프로세스가 합리적이어야 하며 조직의 자원이 효율적으로 활용되어야 한다. BSC에서 강조하는 것은, 다른 관점들의 결과로 인해 재무적인 성과가 나타나게 된다는 인과적 해석이 전통적인 회계적 측면에서의 재무성과와 비교되는 점이다.


2) 고객 관점(Customer Perspectives)  
 기업은 고객을 통해서 가치 창출이 가능하며, 그들의 욕구변화를 끊임없이 간파할 수 있을 때만이 성장을 보장받을 수 있게 되었다. 현재의 급변하는 시장 환경은 고객과의 긴밀한 관계 형성을 요구하고 있다. 고객관계관리(CRM)라는 이슈가 부각되는 것도 이러한 이유에서 비롯되는 것이며, 인터넷과 같은 매체의 발전은 이에 대한 기업들의 노력을 더욱 증가시키도록 한다. BSC는 고객을 기업 가치 창출의 중요 핵심 영역으로 제시하고 있으며, 고객을 기업의 수익 창출과 연관시키기 위해 기업의 전략을 집중하고 프로세스를 변화시키며 조직원의 역량을 이에 모으도록 한다.

3) 내부 비즈니스 프로세스 관점(Internal Business Process Perspectives)
 내부 비즈니스 프로세스 관점은 성과를 극대화하기 위하여 기업의 핵심 프로세스 및 핵심 역량을 규명하는 과정에 관련한 관점이다. 즉, 기업의 가치사슬 내에서, 제품 및 서비스가 고객들의 기대를 충족시키고, 경쟁사를 앞서기 위해 이와 관련된 프로세스가 효율적으로 운영되기 위해서 무엇을 해야 하는지를 구체화하는 과정이다. 기업의 수익을 향상시키기 위한 전략적 고객 군을 형성하였다면, 각 세분 고객들을 어떻게 하면 만족시킬 수 있을 것인지에 대해 고민해야 하며, 이에 대한 비즈니스 프로세스를 만들어야 한다. 또한 생산성 혁신을 위한 효율적인 비즈니스 프로세스 관리가 필요하다.

4) 학습과 성장 관점(Learning and Growth Perspectives)
 학습과 성장 관점은 BSC의 4가지 관점 중에서 가장 미래 지향적인 관점이다. 현재에는 그 가치가 보이지 않지만, 회사의 장기적인 잠재력에 대한 투자가 기업 성장에 얼마나 영향을 미칠 수 있을지를 이 관점에서 파악할 수 있다. 학습과 성장 관점은 다른 3가지 관점의 성과를 이끌어내는 원동력으로서, 특히 구성원의 역량을 강조하고 있다. 이는 지적자산의 가치 측정에 대한 관심이 대두되면서, 기업의 무형자산 가치에 대한 새로운 인식과 맞물려져 있다. 이와 함께, 기업의 정보 시스템에 대한 투자나 역량도 학습과 성장의 관점에서 다루어져야 하는 이슈이다. 조직 내에 정보기술이 도입되기 시작하면서, 정보시스템을 업무의 효율성을 높이기 위한 단순한 기능으로서가 아니라, 기업의 장기적인 역량을 배가시키고 경쟁우위를 위한 전략적 수단으로 인식하기 시작하였다.

Eclipse에서 Tomcat Server 생성시 Cannot create a server using the selected type 메시지가 나왔을 경우 해결법(GALILEO 기준)

Posted by seunggwon
2010. 5. 13. 14:53 Web Develop Note/Tip

Eclipse에서 Tomcat Server 생성시

[Cannot create a server using the selected type] 발생했을 때

WorkSpace 폴더 안에 다음 경로를 찾는다.

---------------------------------------------------------------

.metadata\.plugins\org.eclipse.core.runtime\.settings

---------------------------------------------------------------

여기에서

org.eclipse.wst.server.core.prefs

org.eclipse.jst.server.tomcat.core.prefs

이 두 파일을 지우고 Eclipse Restart하고

Tomcat Server을 생성할 수 있다.

'Web Develop Note > Tip' 카테고리의 다른 글

BSC의 4가지 관점  (0) 2010.05.14
[javascript] div 지정영역만 Print(프린트)하기  (0) 2010.04.23
cvs 구성 및 세팅  (0) 2010.03.05

[javascript] div 지정영역만 Print(프린트)하기

Posted by seunggwon
2010. 4. 23. 13:55 Web Develop Note/Tip

출처 : http://blog.naver.com/syungisyungi?Redirect=Log&logNo=150078767995


div 지정영역만 Print(프린트)하기

 

화면에서 많은 내용이 담긴 페이지를 작업할 때

그냥 프린트하면 화면전체가 프린트돼 제대로 나오지 않는 경우가 많지요?

 

그럴때에는 내용이 들어간 부분만 프린트할 수 있는 이 스크립트를 써봅시다!

 

step.01

 

먼저 프린트 되길 원하는 영역을 div로 묶어줍니다.

 

<div id="box">

프린트 되야하는 영역

</div>

 

 

step.02

 

인쇄하기 버튼을 따로만들어 링크를 걸어줍니다.

 

<a href="#" onclick="printArea()">인쇄하기</a>

 

 

step.03

 

그리고 이 자바스크립트를 맨 밑에 넣어줍니다.

 

<script type="text/javascript">
<!--
var initBody;

function beforePrint() {
 boxes = document.body.innerHTML;
 document.body.innerHTML = box.innerHTML;
}
function afterPrint() { 
 document.body.innerHTML = boxes;
}
function printArea() {
 window.print();
}

window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;

-->
</script>

cvs 구성 및 세팅

Posted by seunggwon
2010. 3. 5. 14:01 Web Develop Note/Tip
출처 : 내용은 여기저기서 가져왔지만 작성은 제가...^^;



오른쪽 파일이 최신이지만...
한글로 된 파일이 있는 경우 제대로 작동을 안한다고 한다.
위에 파일이 한글 파일이 있어도 제대로 작동을 한다고 하지만
아직은 실험을 하지 못했음...

그냥 기본적으로 설치한 후...

cvsnt 세팅




dos창에서 cvs계정 추가

차례대로 명령어를 입력하면 된다.

set cvsroot=:pserver:127.0.0.1:/project/cha/cvs
cvs login
cvs passwd -a -r ace nsk


eclipse 세팅


왜 Apache HTTP Server와 Tomcat을 연동하는가?

Posted by seunggwon
2010. 3. 3. 10:13 Web Develop Note/Tip

출처 : http://alloe.tistory.com/34

Apache Tomcat(이하 Tomcat)은 아마도 가장 널리 알려진 JSP / Servlet Engine일 것입니다. JSP / Servlet 명세에 대한 참조 구현물(Referencial Implementation, 흔히 줄여서 RI라고도 하죠) 역할도 하고 있으며, 실제 업무에서도 꽤 씁니다.(왕년에 Naver Blog를 쓸 때 한번은 Java Exception Trace log가 Web Browser에 표시된 것을 본 적이 있었습니다. 그 덕에 Naver Blog가 Tomcat을 쓴다는 것을 알았죠).

 

그러나 실전에서는 web server와 tomcat 같은 JSP/Servlet Engine 둘을 연동해서 쓰지, tomcat만 쓰지는 않습니다. 그 이유는 아래와 같습니다.


성능 상의 이유

JSP/Servlet Engine 상에서 동작하는 Servlet이나 JSP라는, (동일한 HTTP Request를 보내도 매 번 그 결과가 다를 수 있는) 동적인 HTTP Response를 생성해 보내는 것들입니다. 그에 비해 단순한 HTML 문서, image, CSS(Cascading Style Sheet), Javascript file은 거의 변할 일 없는 (동일한 HTTP Request를 보내면 그 결과가 늘 같은) 정적 contents입니다. 이런 정적 contents는 통상적으로 Web Server가 JSP/Servlet Engine보다 더 빠르게 service합니다.

 

감이 오시나요? 결국 정적 content는 정적 contents 처리에 강한 Web Server가 처리하고, 동적 contents는 JSP/Servlet Engine이 맡는 것입니다. 일단 HTTP Request를 Web Server가 먼저 받아보고 정적 contents를 요구하면 자신이 처리하고, 동적 contents request라면 이 request를 JSP/Servlet Engine에게 넘기죠. 아니면 특정 URL pattern이 들어오면 JSP/Servlet Engine으로 넘기는 방법도 있습니다. 결국 이렇게 하면 부수적으로 동적 contents 생성하느라 바쁜 JSP/Servlet Engine에 부하를 덜 줄 수 있고 정적 contents service하느라 귀중한 JVM Heap을 아낄 수 있는 이점도 누릴 수 있습니다.


보안 상의 이유
보통 JSP/Servlet Engine은 중요한 업무 절차에 대한 구현을 가지고 있게 마련입니다. 단순한 image, CSS 같은 정적 contents를 담은 Web Server보다 더 안전해야 보호해야 한다는 뜻이 됩니다. 보통 어떤 기업 같은 조직의 network를 구성할 경우 외부 network와 조직의 network를 방화벽(firewall)으로 단절시키고 방화벽에 규칙(rule)을 등록, IP packet이 제한적으로만 그 방화벽을 넘다들 수 있도록 합니다. 안전성이 더 높아야 하는 server들이 있는 network zone는 여기에 한 번 더 방화벽을 칩니다. 그리고 이 두 방화벽 사이의 network zone을 DMZ라고 합니다.

 

이렇게 Web Server와 JSP/Servlet Engine을 따로따로 쓰면 DMZ에 덜 중요한 data를 가진 web server를 놓고 이중 방화벽 뒤에 있는 network zone에 JSP/Servlet Engine을 놓음으로써 높은 보안성을 획득하면서도 외부에 동적 contents를 제공할 수 있게 됩니다.


가용성 상의 이유
web server도 하나, JSP/Servlet Engine도 하나라면 둘 중 하나만 죽으면 정상적인 service가 불가능합니다. 따라서 절대 멈추면 안되는 service(세계화가 되면서 이런 요구 사항은 더 늘었습니다. 지구 상 어딘가는 늘 업무 시간이니까요)를 담당하는 web server, JSP/Servlet Engine은 두 개 이상을 가동하는 이중화를 적용합니다.

 

web server가 어떤 HTTP Request를 받아 이를 JSP/Servlet Engine으로 넘기려 할 때 그 JSP/Servlet Engine이 이중화가 되어 있다면 web server는 이 request를 좀 한가한 JSP/Servlet Engine에 넘긴다던지 할 수 있습니다(물론 실제로는 간단하게는 round robin부터 시작해서 이에 대한 여러가지 방법이 있습니다). 내지는 JSP/Servlet Engine 중 하나가 비정상적으로 종료한 상태이면 현재 살아 있는 JSP/Servlet Engine에게 이 request 처리를 위임, 전반적인 service 중단을 막을 수 있습니다.

'Web Develop Note > Tip' 카테고리의 다른 글

[javascript] div 지정영역만 Print(프린트)하기  (0) 2010.04.23
cvs 구성 및 세팅  (0) 2010.03.05
eclipse 단축키 모음(GALILEO 기준)  (0) 2009.09.18

TOAD 단축키 (SQL EDITOR상에서의 편리한 단축키)

Posted by seunggwon
2009. 9. 18. 10:45 Web Develop Note

아래 설명한 것중, F4, Ctrl+T, Alt+Up, Alt+Down 등은 아주 유용하게 쓰일 수 있을 것이다. 

ESC: 열린 윈도우 닫기

F1: 모든 단축키를 보여준다.


F2: FULL SCREEN


F4: Table, View, Proc, Funct, Package를 DESC(테이블명에 커서를 둔 상태에
서 해야함)

F6: SQL Editor와 결과창간의 전환


F7: 화면을 모두 CLEAR


F8: 실행했던 SQL들의 HISTORY


F9: 모든 쿼리 실행(Ctrl+Enter는 현재 쿼리만 실행)


Ctrl+F9: 실제 쿼리를 실행하지 않고 validate함


Ctrl+. : table Completion                (매칭되는 테이블목록 출력)


Ctrl+T : Columns Dropdown           (해당테이블의 컬럼목록 표시)


Alt+Up  : History Up                       (리눅스 bash의 UP키와 같다.)


Alt+Down: History Down                (리눅스 bash의 DOWN키와 같다.)


Ctrl+Tab: MDI Child윈도간 전환


그냥 'desc 테이블명' 을 치면, 팝업윈도로 해당 테이블의 컬럼목록윈도가 표시된다.
이때, 해당 컬럼을 double-click하면 SQL Editor로 반영된다.

"테이블명."까지 입력하고 좀 있으면, 해당 테이블의 컬럼목록이 표시된다.
마치 프로그래밍툴에서 클래스내 멤버들의 목록을 표시하듯이.. Ctrl+T는 출력된 목록을 취소했을 경우, 다시 불러낼때 쓰인다.

test, member 2개의 테이블이 있다고 하자.
select * from t까지 입력하고 Ctrl+.를 치면 select * from test로 테이블명을 완성시켜준다.
system계정에서는 안되고 일반계정만 가능했다.

SQL문을 실행시

Ctrl+Enter : 현재 커서의 SQL문 실행
여러개의 SQL문이 있을때, SQL문들을 개행문자로 분리해주면 된다.
해당 커서에서 개행문자가 있는 곳까지만 하나의 SQL문으로 간주한다.

F9  : SQL Editor의 SQL문 실행하여 Grid에 출력.
여러 SQL문들을 개행문자로 구분하지 않는다는 것을 제외하면, 위의 Ctrl+Enter와 동일하다.
에디터내의 모든 SQL문은 하나로 취급하므로, 여러 개의 SQL문이 있으면 실행할 SQL문만 Selection하여 실행(F9)해준다.

F5 : SQL Editor내의 모든 SQL문 실행. 여러개의 SQL문들을 모두 실행하여 SQL*PLUS와 같이 출력해준다.
이것은 출력이 Grid로 표시되지 않고 Editor윈도에 표시되므로, SQL*PLUS의 출력과 같이, 다른 편집기로의 복사/붙여넣기 할때 사용하면 유용하다.

'Web Develop Note' 카테고리의 다른 글

SCJP 5.0 파일 모음  (0) 2009.07.25
SCJP 5.0 합격통지서  (0) 2009.07.25

eclipse 단축키 모음(GALILEO 기준)

Posted by seunggwon
2009. 9. 18. 10:17 Web Develop Note/Tip

Ctrl+Shift+L : 단축키 보기

[거의 달고 사는 단축키]
ctrl + s : 저장 및 컴파일
ctrl + i : 소스 깔끔 정리(인덴트 중심의 자동구문정리)
ctrl + space : 어휘의 자동완성(Content Assistance)
ctrl + 1 : Quick Fix(Rename에 주로 사용)
ctrl + shift + M  : 캐럿이 위치한 대상에 필요한 특정클래스 import
ctrl + shift + O: 소스에 필요한 패키지의 자동 임포트
ctrl + / : 한줄 또는 선택영역 주석처리/제거
ctrl + Q : 마지막 편집위치로 가기
ctrl + L : 특정줄번호로 가기
ctrl + D : 한줄삭제
ctrl + H : Find 및 Replace
ctrl + K : 다음찾기(또는, 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.)
ctrl + shift + K : 이전찾기(또는, 찾고자 하는 문자열을 블럭으로 설정한 후 역으로 찾고자 하는 문자열을 찾아감.)
alt + shift + j : 설정해 둔 기본주석 달기
Ctrl + 객체클릭(혹은 F3) : 클래스나 메소드 혹은 멤버를 정의한 곳으로 이동(Open Declaration)

[사용하면 유용한 단축키]
ctrl + shift + f : 소스 깔끔 정리
ctrl + 2 + R : Rename(리팩토링)
ctrl + shift + /  : 선택영역 block comment 설정
ctrl + shift + \ : 선택영역 block comment 제거
alt + shift + up : Enclosing Element 선택(괄호의 열고 닫기 쌍 확인에 유용함)
ctrl + O : Outline창열기
Alt + ->, Alt + <- : 이후, 이전
해당프로젝트에서 alt + enter : Project 속성
sysout > Ctrl + Space : System.out.println();
try > Ctrl + Space : 기본 try-catch문 완성
for > Ctrl + Space : 기본 for문 완성
템플릿을 수정,추가 : Preferences > java > editor > Templates

[알고 있으면 아는척좀 할 수 있는 단축키]
ctrl + N : 새로운 파일 및 프로젝트 생성
ctrl + shift + s : 열려진 모든파일 저장 및 컴파일
alt + / : Word Completion
alt + shift + R : Rename
ctrl + shift + G : 특정 메써드나 필드를 참조하고 있는 곳을 찾는다.
ctrl + shift + B : 현재커서위치에 Break point설정/해제
ctrl + alt + R
ctrl + f11 : 실행
f11 : 디버깅 시작
f5 : step into
f6 : step over
f8 : 디버깅 계속
ctrl + . : 다음오류부분으로 가기
ctrl + , : 이전오류부분으로 가기
f12 : 에디터로 커서이동
ALT + UP,DOWN : 현재 줄 위치 이동
Ctrl + j : 검색할 단어를 입력하면서 실시간으로 검색
Ctrl + Shift + j : 검색할 단어를 입력하면서 실시간으로 거꾸로 검색
F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
ctrl + alt + up/down : 한줄 duplicate
alt + shift + 방향 : 선택
ctrl + shift + g : 케럿이 위치한 객체가 참조 되는 곳을 찾아 준다

이클립스단축키.txt

SCJP 5.0 파일 모음

Posted by seunggwon
2009. 7. 25. 16:00
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

SCJP 5.0 합격통지서

Posted by seunggwon
2009. 7. 25. 15:30 Web Develop Note

휴... 좀만 더 틀렸으면... 시험비용 날릴뻔 했네...;;
암튼 합격했으니~~ 기분은 좋네^^
자격증만 오길 기다리면 되는구나~~

'Web Develop Note' 카테고리의 다른 글

TOAD 단축키 (SQL EDITOR상에서의 편리한 단축키)  (0) 2009.09.18
SCJP 5.0 파일 모음  (0) 2009.07.25

Oracle(27일차)

Posted by seunggwon
2009. 7. 24. 13:00 Web Develop Note/Oracle
* 권한(부여/회수)
- 시스템권한 : system관련권한, dba~, 연쇄회수 X
- 객체권한 : 객체관련권한, 객체소유자 

*권한부여
grant 권한, [권한, ...]
to user명

grant create session
to jj1;


*user생성
create user user명
identified by 비번
[with admin option]

- sys에서 
jj1 생성
create user jj1
identified by jj1;

jj2 생성-------------------------> jj3부여
create session 부여
[with admin option]


jj3 생성


jj3에게 create session권한 부여
jj2에서...
grant create session
to jj3
with admin option


* 권한조회
select ~ 
from user_sys_privs;

select *
from user_sys_privs;


* 권한 회수
revoke 권한, [권한, ...]
from user명

jj1으로부터 session권한을 회수...
revoke create session
from jj1

jj2로부터
create session 권한 회수
revoke create session
from jj1;


super user에서

super.dept 객체 --> jj3가 super.dept
select
insert
update
delete

select * 
from super.dept;


* 권한부여
grant 권한[, 권한, ...]
on 객체명
to user명
[with grant option]

grant select
on dept
to jj3

select *
from super.dept


jj3상태에서 
super.dept 테이블에 
임의 데이터 입력
insert into super.dept
values(60, '', '');
권한이 불충분...

super에서 jj3에 insert, update, delete 권한부여
grant insert, update, delete
on dept
to jj3;

insert into super.dept
values(60, '', '');

update super.dept
set dname='권한연습중'
where deptno=60;

delete super.dept
where deptno=60;


super.dept ---> jj1 super.dept ---> jj2 super.dept
select select
update

jj1 : create session
jj2 : create session 을 가질수 있게...

grant create session
to jj1, jj2;

conn super/man

grant select, update
on dept
to jj1
with grant option;

conn jj1/jj1

grant select
on super.dept
to jj2;

conn jj2/jj2

select *
from super.dept;

객체권한 조회
select *
from user_tab_privs;

객체권한 받은것
select *
from user_tab_privs_recd;

객체권한 준것
select *
from user_tab_privs_made;


권한회수
revoke 권한[, 권한, ...]
on 객체명
from user명;


super
jj3로부터 super.dept
select, insert, update, delete 회수
revoke select, insert, update, delete
on dept
from jj3;


super는 
jj1으로부터 dept객체에 대한 select, update 권한을 회수합니다.

revoke select, update
on dept
from jj1;

===============================================

* Role
: 권한집합

- DBA
- CONNECT
- RESOURCE

*role 생성
create role role명

- role에 권한부여
- role에 권한회수

-sys에서
role roletest
- create session, create table, drop table

grant create session, create table, drop any table
to roletest;

jj1 user에게 roletest 부여
grant roletest
to jj1;

create session권한을 roletest에서 회수
revoke create session
from roletest

jj1 user로부터 roletest 회수
revoke roletest
from jj1


* role 삭제
drop role role명

drop role roletest;


select *
from user_role_privs;

select * 
from role_sys_privs;

Oracle(Test_1) - SELECT query문 종합문제

Posted by seunggwon
2009. 6. 22. 13:05 Web Develop Note/Oracle

1. 부서 번호가 10번인 부서의 사람 중 사원번호, 이름, 급여를 출력해라.
select empno, ename, sal
from emp
where deptno=10;

2. 사원번호가 7369인 사람 중 이름, 입사일, 부서번호를 출력해라.
select ename, hiredate, deptno
from emp
where empno=7369;

3. 이름이 ALLEN인 사람의 모든 정보를 출력하여라.
select *
from emp
where ename='ALLEN';

4. 입사일이 87/04/19인 사원의 이름, 부서번호, 급여를 출력해라.
select ename, deptno, sal
from emp
where hiredate='87/04/19';

5. 직업이 MANAGER가 아닌 사람의 모든 정보를 출력해라.
select *
from emp
where  job!='MANAGER';

6. 입사일이 81/04/02 이후에 입사한 사원의 정보를 출력해라.
select *
from emp
where hiredate>'81/04/02';

7. 급여가 800이상인 사람의 이름, 급여, 부서번호를 출력해라.
select empno, sal, deptno
from emp
where sal>=800;

8. 부서번호가 20번 이상인 사원의 모든 정보를 출력해라.
select *
from emp
where deptno>=20;

9. 입사일이 81/12/09보다 먼저 입사한 사람들의 모든 정보를 출력해라.
select *
from emp
where hiredate<'81/12/09';

10. 사원번호가 7698보다 작거나 같은 사람들의 입사번호와 이름을 출력해라.
select empno, ename
from emp
where empno<=7698;

11. 입사일이 81/04/02보다 늦고 82/12/09보다 빠른 사원의 이름, 급여, 부서번호를 출력해라.
select ename, sal, deptno
from emp
where hiredate between '81/04/20' and '82/12/09';

12. 급여가 1600보다 크고 3000보다 작은 사람의 이름, 직업, 급여를 출력해라.
select ename, job, sal
from emp
where sal>1600 and sal<3000;

13. 사원번호가 7654와 7782사이 이외의 사원의 모든 정보를 출력해라.
select *
from emp
where empno not between 7654 and 7782;

14. 입사일이 81년 이외에 입사한 사원의 모든 정보를 출력해라.
select *
from emp
where hiredate not between '81/1/1' and '81/12/31';

15. 직업이 MANAGER와 SALESMAN인 사원의 모든 정보를 출력해라.
select ename, empno
from emp
where job in('MANAGER', 'SALESMAN');

16. 부서번호가 20, 30번을 제외한 모든 사원의 이름, 사원번호를 출력해라.
select ename, empno
from emp
where deptno not in(20, 30);

17. 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일, 부서번호를 출력해라.
select empno, ename, hiredate, deptno
from emp
where ename like 'S%';

18. 입사일이 81년도인 사원의 모든 정보를 출력해라.
select *
from emp
where hiredate between '81/1/1' and '81/12/31';

19. 이름 중 S자가 들어가 있는 사람만 모든 정보를 출력해라.
select *
from emp
where ename like '%S%';

20. 이름이 S자로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력해라.(이때, 이름의 전체 글자수는 5자리이다.)
select *
from emp
where ename like 'S___T';

21. 첫 번째 문자는 관계없고 두 번째 문자가 A인 사원의 모든 정보를 출력해라.
select *
from emp
where ename like '_A%';

22. 커미션이 NULL인 사람의 정보를 출력해라.
select *
from emp
where comm is null;

23. 부서가 30번 부서이고 급여가 500이상인 사람의 이름, 부서, 급여를 출력하라.

select ename, deptno, sal
from emp
where deptno=30 and sal>=500;

24. 이름의 첫 글자가 K로 시작하거나 부서번호가 30인 사람의 사원번호, 이름, 부서번호를 출력하라.
select empno, ename, deptno
from emp
where ename like 'K%' and deptno=30;

25. 급여가 1500이상이고 부서번호가 30번인 사원중 직업이 MANAGER인 사원의 모든 정보를 출력하여라.
select *
from emp
where sal>=1500 and deptno=30 and job='MANAGER';

Oracle(3일차) - WHERE(비교연산자, 논리연산자, null검색)

Posted by seunggwon
2009. 6. 22. 13:00 Web Develop Note/Oracle

* 비교연산자
a=b : a는 b와 같다.
a<>b : a와 b는 같지 않다.
a>b : a는 b보다 크다(초과)
a>=b : a는 b보다 크거나 같다(이상)
a<b : a는 b보다 작다(미만)
a<=b : a는 b보다 작거나 같다(이하)

- 예제
1. 급여가 1500이상 2850이하 사원출력

select ename, sal
from emp
where sal>=1500 and sal<=2850
order by sal asc;
혹은
select ename, sal

from emp
where sal between 1500 and 2850
order by sal asc;

*논리연산자
or, and, not

*in(값, 값, ...)

not in(값, 값, ...)

예제
1. 사원명, 부서번호조회
부서번호가 10 또는 20 조회
 select ename, deptno
 from emp
 where deptno=10 or deptno=20 -> 같은 의미로  where deptno in(10, 20)
                                             -> 부정의의미 where deptno not in(10, 20)
 order by deptno asc;

2. 10과 30사이

select ename,deptno
from emp
where deptno not between 10 and 20
order by deptno asc;

*연결연산자 : ||
*함수명(~, ~, ~) parameter, argument, 인수, 인자

concat(표현식, 표현식) 인수가 2개밖에 들어갈수 있다.
현재날짜와 시간조회

*2009/06/22 09:41:30 이런형태로 출력하려면...
to_char(날짜, '날짜시간Format') 중요함...
to_char(sysdate, 'yyyy/mm/dd hh:mi:ss')

select sysdate, to_char(sysdate, 'bc yyyy/mon/dd day hh24:mi:ss am')
from dual;

* alter session set nls_date_format='날짜시간format'

*조건
select ~
from 테이블명
[where 조건]
[order by 정렬기준 정렬방법];

- 데이터타입 : 문자. 날짜 '~'

예제
- allen의 사원번호, 급여, 입사일조회
select empno, sal, hiredate
from emp
where ename='ALLEN';

*소문자를 대문자로 변환하는 함수
upper(~)

예제
select empno, sal, hiredate
from emp
where ename=upper('allen');

*lower(~)
대문자를 소문자로 출력시키는 함수

*앞글자만 대문자로...
initcap(~)

select empno, sal, lower(ename), initcap(ename), hiredate
from emp
where ename=upper('allen');

81/09/28에 입사한 사원명, 입사일, 급여, 커미션 조회
select ename, hiredate, sal, comm
from emp
where hiredate='81/09/28';

- 예제
1. xx번 부서는 ~~~ =>  출력 concat함수 + ~ 사용
select concat(deptno, concat('번 부서 : ', dname))
from dept;
OR
select deptno||concat('번 부서 : ', dname)

from dept;

2. 커미션이 확정된 사원의 사원번호, 사원명, 급여, 커미션 조회
select empno, ename, sal, comm
from emp
where comm is not null;

3. 2번 결과내 급여가 1500이상인 사원번호, 사원명, 급여, 커미션 조회
select empno, ename, sal, comm
from emp
where comm is not null and sal>=1500;

4. 3번의 결과를 급여 오름차순 조회
select empno, ename, sal, comm
from emp
where comm is not null and sal>=1500;
order by sal asc;

5. 10번 또는 20번 부서에 근무하는 사원들의
부서번호, 사원명, 급여, 커미션, bonus를 bonus 오름차순, 동일보너스 내 사원명 오름차순
bonus=기본커미션+300 커미션이 null이면 50을 기본 커미션으로 한다.
select deptno, ename, sal, nvl(comm, 50), nvl(comm, 50)+300 as bonus
from emp
where deptno in(10, 20)
order by bonus asc, ename asc;

Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미)

Posted by seunggwon
2009. 6. 19. 13:00 Web Develop Note/Oracle

* select 문법
select {* | 컬럼명}
from table명
order by 정렬기준 정렬방법, [정렬기준 정렬방법];

* 특정컬럼조회
- dept(부서테이블)

DEPTNO : 부서번호 (기본키 = primary key)
DNAME : 부서명
LOC : 지역

- emp(사원)

EMPNO : 사원번호 (기본키 = primary key)
ENAME : 사원명
JOB : 업무
MGR : 상사
HIREDATE: 입사일
SAL : 급여
COMM : 커미션
DEPTNO : 부서번호 (외래키 = foreign key)

- salgrade(급여등급)

GRADE : 호봉
LOSAL : 최저임금
HISAL : 최고임금

- 예제
1. dept 테이블에서 부서번호와 부서명 조회
select deptno, dname
from dept;

2. 사원테이블에서 사원번호, 사원명, 업무, 업무입사일 조회

select empno, ename, job, hiredate
from emp;

3. 사원테이블에서 사원번호, 사원명, 급여, 커미션, 부서번호 조회

select empno, ename, sal, comm, deptno
from emp;

* 정렬
오름차순(asc) : 숫자 작음 -> 큼 , 문자 a->z A->Z ㄱ->ㅎ날짜 예전->최근
내림차순(desc) : 숫자 큼 -> 작음, 문자 z->a Z->A ㅎ->ㄱ 날짜 최근->예전

*distinct : 중복되는 컬럼을 한번씩만 보여줌

- 예제
1. 부서테이블에서 부서명 내림차순 조회
select distinct *
from dept
order by dname desc;


2. 동일부서내 급여를 많이 받는 사원부터 조회
select *
from emp
order by sal desc;

3. 동일부서내에 급여를 많이 받는 사원부터 출력하되 급여가 동일하다면 이름 오름차순
select *
from emp
order by sal desc, ename asc;

* 별칭
- 칼럼명 [as] 칼럼alias
- 칼럼명 "칼럼alias" : "~~"에는 소문자, 대소문자, 공백, 한글

* null의 의미
0(zero)도 아니고, 빈공간도 아니다. 
미확정(해당사항 없음), 알수 없는(unknown) 값을 의미한다.
어떤 값인지 알 수 없지만 어떤 값이 존재하고 있다.
? 혹은 ∞의 의미이므로 연산, 할당, 비교가 불가능하다.

*산술연산
+, -, *, /

* dual 테이블
산술연산이나 가상컬럼 등의 값을 한번만 출력하고 싶을 때 많이 사용하는 테이블

- 예제
오늘 날짜를 한번만 출력
select sysdate
from dual;