반응형

세계가 만일 100명의 마을이라면...
이벤트를 통해 또 한권의 책을 받게 되었다. 지금까지 받은 책이 8권 정도 된다.
어느새 책장에 놓여져 있는 책들이 늘어가고 있었다. 작년 초에 결심이 책을 많이 읽는 것이었는데
자의든 타의든 읽은 책의 양이 많아 진다는 것은 왠지 나를 변화시키는 것 같아 기분이 좋아진다.
요즘은 읽고 싶은 분야의 책이 있어 관련 책들을 찾아 보고 있다. 철학,심리학,경제 관련 책들..
접해 본적이 없어 약간의 거부감이 들긴 한다. 책을 사놓고 읽지 못하고 짐만 될까봐.
일단 이 책을 읽고 나서 그후에 책 구매의 지름신과 접신을 시도할 생각이다.

-- 2009.10.11  서평 --
"세계가 만일 100명의 마을이라면" 총 4권으로 구성이 되어 있었다.
1권은 그림과 함께 큰 글씨로 원문의 내용을 쉽게 읽을 수 있다. 2권부터는 좀 더 설명을 붙여 씌여진글들..
솔직히 프로젝트 일정이 바빠져 서평을 쓰는게 늦어졌다. 그리고 정신없는 생활 덕에 내용도 그다지 생각이 ㅠㅠ
세계가 100명의 마을이면 다른 사람들 보다 많은 혜택을 받고 있다는 것을 느낄수 있다.
100명으로 축소된 세계는 너무나 가깝게 늦겨졌다. 그리고 피부에 와닿게 느껴지는 것도 이전과는 다르다.
책을 읽으면서 100명의 마을이라고 한정 지었을때 확연히 와닿는 바도 있지만 소수가 배제되는 느낌도 지울수 없다.
너무나 열악한 환경에서 사는 사람들의 이야기가 많이 부각되었고 그 사람들에 대한 하나의 동질감..
이웃처럼 느껴지는 느낌이 드는 책이였다. 같은 세상에 사는 사람으로서 가져서는 안될지도 모르는 동정심?!
하지만 물질적 사회적 혜택으로 삶에 만족도에 대한 수치가 더 높은 것은 아니다.
중간중간에 삽입되어 있는 사진 속에서 느껴지는 그 사람들의 미소는 왠지 모를 행복감이 감돌기도 하고
다른 사진에는 측은함이 느껴지도 한다. 므튼 그런 상황들을 알고 그리고 나의 생활에 안도감을 느끼는 부족한 내 자신
그리고 이내 내 삶을 한탄하는 부족한 내 자신이 부끄러워지는 것은 뭐일까..
서평을 쓰기는 써야겠기에 무작정 키보드를 두드리고 있지만 마땅히 머리가 잘 돌지 않는다.ㅠㅠ
반응형

F1

Toad 도움말 파일의 SQL Editor 부분이 표시됩니다.

F2

전체 화면 Editor Editor/Results 패널 표시 장치 사이를 전환합니다.

<SHIFT>F2

전체 화면 그리드를 전환합니다.

F3

다음으로 일치하는 것을 찾습니다.

<SHIFT>F3

이전에 일치하는 것을 찾습니다.

F4

팝업 창의 테이블, , 프로시저, 함수, 또는 패키지를 설명합니다.

F5

스크립트로 실행합니다.

F6

커서를 Editor Results 패널 사이로 전환합니다.

F7

모든 텍스트를 지웁니다.

F8

이전 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

F9

실행문을 실행합니다.

<CTRL>F9

실행(구문 분석) 없이 실행문을 검사합니다.

<SHIFT>F9

커서 위치에서 현재 실행문을 실행합니다.

F10

오른쪽 클릭 메뉴를 표시합니다.

F11

Script 같은 실행(=F5)

F12

편집기 내용을 지정된 외부 편집기로 전달합니다.

<CTRL>A

모든 텍스트를 선택합니다.

<CTRL>C

복사

<CTRL>D

프로시저 인수를 표시합니다.

<CTRL>E

현재 실행문에서 Explain Plan 실행합니다.

<CTRL>F

텍스트를 찾습니다(Find Text 창을 불러옵니다).

<CTRL>G

라인으로 이동합니다(Goto Line 창을 불러옵니다).

<CTRL>L

텍스트를 소문자로 변환합니다.

<CTRL>M

Make Code Statement

<CTRL>N

이름이 지정된 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

<CTRL>O

텍스트 파일을 엽니다.

<CTRL>P

Strip Code Statement

<CTRL>R

검색 바꾸기(Find and Replace Text 창을 불러옵니다)

<CTRL>S

파일을 저장합니다.

<SHIFT><CTRL>S

파일을 다른 이름으로 저장합니다.

<CTRL>T

드롭다운을 표시합니다.

<CTRL>U

텍스트를 대문자로 변환합니다.

<CTRL>V

붙여넣기

<CTRL>X

잘라내기

<SHIFT><CTRL>Z

마지막으로 취소한 작업을 재실행합니다.

<ALT><UP>

이전 실행문을 표시합니다.

<ALT><DOWN>

다음 실행문을 표시합니다(<ALT><UP> 사용한 사용)

<ALT><PgUp>

이전 탭으로 이동

<ALT><PgDn>

다음 탭으로 이동

<CTRL><ALT><PgUp>

이전 결과 패널 탭으로 이동

<CTRL><ALT><PgDn>

다음 결과 패널 탭으로 이동

<CTRL><HOME>

데이터 그리드에서는 위의 레코드셋으로 이동하며, 결과 그리드에서는 커서가 위치한 행의 번째 열로 이동하고, 편집기에서는 텍스트의 번째 열과 번째 행으로 이동합니다.

<CTRL><END>

데이터 그리드에서는 레코드셋의 끝으로 이동하며, 편집기에서는 텍스트의 마지막 열과 마지막 행으로 이동합니다. 단원의 "주의" 참조하십시오.

<CTRL><SPACE>

코드 완성 템플릿을 활성화합니다.

<CTRL><TAB>

MDI Child 창의 콜렉션을 순환합니다.

<CTRL><ENTER>

커서 이치에서 현재 SQL 문을 실행합니다.

<CTRL>. (마침표)

테이블 이름을 자동으로 완성합니다.


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

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

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의 출
력과 같이, 다른 편집기로의 복사/붙여넣기 할때 사용하면 유용하다.
반응형

1. SELECT 등과 같은 키워드를 자동으로 대문자로 변경하게 하는 설정
    메뉴에서 View -> Editor -> Behavior  선택하면 오른쪽 편에 Languages 가 보인다.
    PL/SQL 선택하고 Edit 버튼 클릭  Highlighting 탭을 선택
   Styles -> Reserved word 를 선택하면 바로 오른쪽에 Capitalization effect: 항목이 보인다.
   이부분을 Uppercase 로 선택하고 하면 자동으로 변경된다.

2. 쿼리 작성후 자동 포맷팅 기능 사용 Ctrl + Shift + F   사용시 위에 주석부분 출력안되게 하려면
   View -> Formatting Options -> Formatter Options -> General Layout -> Header
    Tagline 을 Disable 로 설정해주면 된다.


3.GRID에서 null인값 노란색 및 {null}으로 표시하게 하기
   VIEW-Toad Options-Data Grids-Visua Null columns 값을 원하는값으로 변경


4. SELECT 질의를 날려 얻어진 결과를 그리드에서 직접 데이터를 수정하고 적용하는 방법

컨텍스트 메뉴를 보면 열 복제 기능도 있기 때문에 간단한 INSERT도 가능하다.
방법은 다음과 같이 ROWID라는 의사열(Pseudo Column)를 추가하여 쿼리하면 된다.
질의 결과 그리드에서 데이터를 바로 수정한 후에 위쪽에 아이콘을 이용해 COMMIT 해주면
 데이터가 반영된다. 단 변형된 컬럼일 경우에는 수정할 수 없다.
UPDATE가 가능한 VIEW와 같은 방식으로 이해하면 된다.

5. 오라클의 함수나 숫자/날짜 변환 형식, 옵티마이저 힌트등에 관한 코드 템플릿과 설명을 보는 방법
View 메뉴에서 Code Snippets를 선택하면 다음과 같은
템플릿 창을 볼 수 있다. 맨 위에 카테고리를 정하고 다음 리스트에서
항목을 선택하면 하단에 도움말이 표시된다.
항목을 더블 클릭하거나 [Ctrl+C]를 눌러 코드를 복사할 수 있다.
(이와 비슷한 Object Palette도 제공한다. 테이블이나 컬럼등을
볼 수 있는 창이다.)


거의 모든 코드 도움말을 얻을 수 있어, 일일이 웹이나 책을 뒤져보는 수고를 덜어준다.
다음은 제공해 주는 카테고리 목록이다.

  • Single Row Character Functions (문자열 관련 함수)
  • Single Row Number Functions (숫자 관련 함수)
  • Group Functions (그룹핑 관련 함수)
  • Date Functions (날짜 관련 함수)
  • Date Format Options (날짜 포메팅 형식)
  • Data Conversion Functions (데이터 타입 변환 함수)
  • Oter Misc. Functions (기타 자주 쓰이는 함수)
  • Number Format Options (숫자 포메팅 형식)
  • Oracle Pseudo Columns (오라클 의사열)
  • Sql Optimizer hints (옵티마이저 힌트)
  • Defined Exceptions (예외 처리 관련)
  • User provided Function List (사용자 정의 함수)

단축키 목록

테이블 정보 상세보기

F4 : Table, View, Proc, Funct, Package DESC(테이블명 위에 커서를 두고 F4)

 

자동완성

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

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

 

SQL문 실행

F5 : SQL Editor내의 모든 SQL문 실행

Ctrl+Enter : 현재 커서의 SQL문 실행

F9 : SQL문 실행 후 Grid에 출력

 

히스토리(과거 수행SQL문 조회)

F8 : 과거에 실행한SQL HISTORY 목록

Alt+Up : History UP

Alt+Down : History DOWN

 

텍스트 대/소문자 변환

CTRL+L : 텍스트를 소문자로

CTRL+U : 텍스트를 대문자로

 

주석처리

Ctrl+B : 주석처리

Ctrl+Shift+B : 주석해제

 

편집 창 전환(이동)

F6 : SQL Editor와 결과창간의 이동

F2 : SQL Editor창 전체화면 전환

Shift+F2 : Grid Output창 전체화면 전환

 

기타 단축키

F7 : 화면을 모두 CLEAR

Ctrl+Shift+F : 쿼리문을 보기좋게 정렬

Ctrl+F9 : SQL Validate (SQL문을 수행하지 않음)

반응형


책 소개
이 책은 소프트웨어 개발 분야의 창의력에 관한 책이다. 저자는 소프트웨어 개발이 근본적으로 복잡한 문제를 해결하는 활동이며, 복잡한 문제를 해결하려면 창의력이 필요하다는 생각을 바탕으로 소프트웨어 창의력을 얘기한다.

체계를 중시하는 관리자와 학계, 그리고 자유로움을 중시하는 실무자 측면에서 바라보는 소프트웨어 개발을 창의력이라는 주제로 탐구해보고 정의한다. 또, 창의력이 조직과 소프트웨어 분야에서 차지하는 비중과 역할을 살펴보고, 다른 분야에서 배우는 창의력과 창의력을 기르는 방법도 소개한다.

이 책은 다음과 같은 저자의 개인적인 절실한 느낌과 신념을 담고 있다.
-소프트웨어 개발이 근본적으로 문제를 해결하는 활동이라 믿는다.
-어떤 문제든 해결하려면 창의력이 필요하다고 믿는다.
-소프트웨어 문제를 해결하는 활동은 어떤 활동보다도 아주 복잡하다고 믿는다.
-그러므로 소프트웨어 문제 해결에 있어 창의력은 절대적이라고 믿는다.

'소프트웨어 크리에이티비티 2.0'에서, 인기 있는 저자인 로버트 L. 글래스는 중요하지만 이상하게도 외면받는 질문을 하나 던진다. 도대체 소프트웨어 공학과 컴퓨터 프로그래밍에서 창의력이 차지하는 역할은 무엇일까? 글래스는 자신의 전매특허인 평이한 문체와 연구와 개인 경험에 기반한 실질적인 접근 방법을 사용해서 함축적이면서도 광범위한 연구 주제를 다룬다. 몇 가지 예는 다음과 같다.

-체계나 정형화는 유연성이나 애자일과 조화를 이루지 못할까?
-소프트웨어 제작 과정에서 통제 방식과 실험 방식이 어떤 때 가장 효과적일까?
-소프트웨어 조직에서 창의력을 발현할 수 있을까?
-프로세스와 제품 중 무엇이 더 중요할까?
-소프트웨어 분야에서 이론과 실제가 어떻게 상호 작용할까? 실무자와 학자가 좀 더 효과적으로 서로를 보완할 수 없을까?
-창의력과 소프트웨어 설계 사이에 끊어진 연결 고리가 있을까?
-소프트웨어 작업에서 '지적인' 작업과 '사무적인' 작업 사이에 균형은 무엇일까?
-요즘에도 옛날에 느꼈던 즐거움을 찾을 수 있을까?

'소프트웨어 크리에이티비티 2.0'에서는 '피플웨어'와 '소프트웨어 프로젝트에서의 리스크 관리'를 공동 집필한 톰 드마르코가 쓴 추천글과 로버트 L. 글래스가 새로 쓴 서문도 포함한다.

//2009.06.19
블로그를 돌아다니던 중에 자주 방문하던 블로그에 이 책이 올라왔더군요.
몇일전 생일이였는데 생일 선물로 사달라고 해야겠습니다. 표지가 맘에 들고 서평도 좋더군요.

//2009.06.23
ㅎㅎ 후배인 티엘로에게 필살 조르기 스킬 작렬!! 했더니 구매완료.
곧 배송 되겠네요. 티엘로 쌩유~!! 잘 읽을께..

티엘로
   <====  후배인 티엘로!! 스샷 ㅋㅋ

//2009.08.20
시간적 여유가 다시 없어진 탓일까 아니면 다시 마음의 여유가 없어진 탓일까 므튼
이러저러한 이유로 블로그에 포스팅을 하는게 꽤 오래간만인거 같다.
프로젝트가 이동하면서 출퇴근 시간에 여유가 생겼고 시간도 짧아졌다. 그 탓인지
이동 시간이 짧기 때문에 그만큼 책을 읽는 시간도 적어졌다.ㅡㅡ;
내가 게으른 탓이다. 이동시간 외에 더 여유로워진 시간을 그냥 허비하고 있는것이다.
므튼 책을 다 읽은지 꽤 흘렀지만 포스팅을 하지 않고 시간이 흘러버렸다.
머릿속에는 그저 그 의미만이 맴돌고 있고 책의 내용이 주르륵 흐르지는 않는다.
개발자의 창의력에 포커스를 맞춘 이야기가 중점이 된 내용이었던거 같다.
그리고 개발자의 마음도 잘 헤아리면서 관리자, 그리고 실무자와 학계사이의 간극을
좁히고자 중용의 입장에 초점을 맞추고 효율적인 방안에 대한 모색등..이 인상깊었다.
다시금 읽어 볼만한 책이다. 그리고 IT에 종사하는 개발자 그리고 관리자들이 읽었으면 싶다.
특히 개발자의 입장에 서있는 나는 PM을 맏고 있는 중간관리자들이 꼭 읽어보길 바란다.

반응형

 

"오늘, 개발자를 안아주세요..."

 

아파요...

 

5개월짜리 프로젝트 4개월짼데 어제 최종 요구사항을 받았어요. 다시 바꾸래요...

 

어떻게 일을 더 잘할지 미팅하는데 반나절 보냈어요. 그냥 일하게해 주세요...

 

우리 사장이 잡지에서 두배나 생산적인 "________" 프로그래밍 랭기쥐를 보고는 사주더니 스케줄 절반이나 날려버렸어요...

 

우리 사장은 맨날 우리가 뮐 개발해야할지 바꿔요...

 

사람들이 맨날 이메일을 고쳐달라고 하네요. 코딩할 시간이 없어요...

우리 아빠는 저랑 놀아줄 시간이 없어요...

 

어떤 컨설턴트가 우리 사장한테 자기들이 차기버전을 절반가격/절반스케줄로 개발하겠다고 했어요. 우리 사장은 믿었지만
그 사람들은 개발비용과 시간을 모두 다 서버리고는 아직 절반밖에 하지 못했어요. 그리곤 사라져버렸어요. 개발도 박살
났구요. 이제 우리는 그놈들이 사고친 걸 다시 첨부터 해야해요...


 //2009.08.03
예전에 포스팅을 했었는데 블로그를 다시 한번 휘저어 보다가 보니 가슴이 뭉클해진다.
이제 2년차 초급개발자이지만 점점 더 마음에 와닿는게 나만의 느낌은 아닐것이다.
요즘 읽고 있는 "소프트웨어 크리에이티비티 2.0" 을 읽으면서 많은 것을 생각하게 된다.
어느새 식어버린 개발자로서의 "재미" . 처음 개발자의 길을 택했을때의 근본적 이유.
점점 잊어버리는 것도 많아지고 생각하지 않아지는 것도 많아진다.
업체와 학회, 개발자와 관리자 사이의 간극등.. 재미를 추구하는 개발자의 고집.
여러가지 문제들로 인해 프로젝트는 힘들어지고 재미는 떨어지는 듯 하다.
문득 위에 동영상을 보다 보니 이런저런 생각이 들었다. 책을 다 읽으면 리뷰를 남겨야 겠다.
참고로 "소프트웨어 크리에이티비티 2.0" 추천!! 개발자 그리고 관리자 모두 읽어보기를..^^

반응형

GET으로 보낼때 한글깨짐
server.xml에 URIEncoding="EUC-KR" 이나 URIEncoding="UTF-8" 추가

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="EUC-KR"/>

POST로 보낼때 한글깨짐
모든 jsp와 servlet에서 request.getParameter를 호출하기전에 characterEncoding을 지정해줌
request.setCharacterEncoding("EUC-KR");

이게 싫다면...
web.xml에 필터를 추가해준다
톰캣 6.0인경우 예제 경로는 apache-tomcat-6.0.18\webapps\examples

1. web.xml에 다음을 추가해준다
<filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>EUC-KR</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2. 필터클래스를 만들어줌
예제경로는 apache-tomcat-6.0.18\webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java

프로젝트홈\WEB-INF\classes\filters\SetCharacterEncodingFilter.java
에 복사해서 넣어놓자.
반응형

Oracle 에서 테이블의 컬룸의 값들이 자동으로 증가하도록 테이블을 구성하는 방법

우선 원하는 테이블을 생성한다

CREATE TABLE ajaxchat (
  id int NOT NULL ,
  user varchar(255) NOT NULL,
  msg varchar(255) NOT NULL,
  time int NOT NULL,
  PRIMARY KEY  (id)
);

그후 Sequence 테이블을 작성 한다 .

SQL>CREATE SEQUENCE id
        START WITH 1
        INCREMENT BY 1
        MAXVALUE 100000 ;

 

 시작 값이 1일고 1씩 증가하고, 최대값이 100000만이 되는 시퀀스를 생성했습니다.

그리고 값을 저장 할 때 이런식으로 insert 시킨다


 SQL>INSERT INTO ajaxchat(id, user, msg,time ) VALUES(id.NEXTVAL, ’julia’ , sysdate,1);

    empno는 컬럼값을 입력할 때 일일이 다음 값을 기억하지 않아도 NEXTVAL을 사용하여
    자동으로 입력할 수 있습니다.




 시퀀스란?


유일(UNIQUE)한 값을 생성해주는 오라클 객체입니다.

◈ 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있습니다.

◈ 보통 primary key 값을 생성하기 위해 사용합니다.

◈ 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가 합니다.

◈ Sequence는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 sequence를
    여러 테이블에서 쓸 수 있습니다.
 



시퀀스 생성





START WITH : 시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로
                     시퀀스번호가 증가 합니다.

INCREMENT BY : 시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다.
                        START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,.. 이렇게
                       시퀀스  번호가 증가하게 됩니다.

MAXVALUE n | NOMAXVALUE : MAXVALUE는 시퀀스가 증가할수 있는 최대값을 말합니다.                                             NOMAXVALUE는 시퀀스의 값을 무한대로 지정합니다.

MINVALUE n | NOMINVALUE : MINVALUE는 시퀀스의 최소값을 지정 합니다.
                                      기본값은 1이며, NOMINVALUE를 지정할 경우 최소값은 무한대가 됩니다

 


 SQL>CREATE SEQUENCE emp_seq
        START WITH 1
        INCREMENT BY 1
        MAXVALUE 100000 ;

      sequence created.

     시작 값이 1일고 1씩 증가하고, 최대값이 100000만이 되는 시퀀스를 생성했습니다.


 SQL>INSERT INTO emp(empno, ename, hiredate ) VALUES(emp_seq.NEXTVAL, 'julia' , sysdate);

    empno는 컬럼값을 입력할 때 일일이 다음 값을 기억하지 않아도 NEXTVAL을 사용하여
    자동으로 입력할 수 있습니다.

  CURRVAL : 현재 값을 반환 합니다. .
   NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.


 SQL>SELECT emp_seq.CURRVAL FROM DUAL ;

        CURRVAL
        ---------
                  1

 SQL>SELECT emp_seq.NEXTVAL FROM DUAL ;

       NEXTVAL
     ---------
                 2
 



사용규칙 


  ◈ NEXTVAL, CURRVAL을 사용할 수 있는 경우
    - subquery가 아닌 select문
    - insert문의 select절
    - insert문의 value절
    - update문의 set절


  ◈ NEXTVAL, CURRVAL을 사용할 수 없는 경우
    - view의 select절
    - distinct 키워드가 있는 select문
    - group by, having, order by절이 있는 select문
    - select, delete, update의 subquery
    - create table, alter table 명령의 default값


시퀀스의 수정 및 삭제





START WITH는 수정할수 없습니다.
START WITH 절이 없다는 점을 빼고는 CREATE SEQUENCE와 같습니다.
 


 SQL>ALTER SEQUENCE emp_seq
         INCREMENT BY 2
         CYCLE;

      sequence altered.

      2씩 증가하고, 최대값을 넘으면 다시 처음부터 순환하도록 수정하였습니다.


      DROP 문을로 필요하지 않은 시퀀스는 삭제 할수 있습니다.

 SQL>DROP SEQUENCE PRD_SEQ;
        sequence dropped.
 

  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 운영자 : 김정식 (oramaster _at_ naver.com)
  ================================================
※ oracleclub 강좌를 다른 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

 

반응형

내장객체

1. out : 페이지 내용을 담고 있는 출력 스트림 객체

2. request : 파라미터를 포함한 요청정보를 담고 있는 객체

3. response : 요청에 대한 응답을 담고있는 객체

4. session : 세션 정보를 담고 있는 객체

5. application : 어플리케이션 Context의 모든 페이지가 공유할 데이터를 담고 있는 객체

6. pageContext : 페이지 실행에 필요한 Context정보를 담고있는 객체

7. page : JSP페이지의 서블릿 객체

8. config : JSP페이지의 서블릿 설정 데이터 초기화 정보객체

9. exception : JSP페이지의 서블릿 실행시 처리하지 못한(에러발생) 예외 객체

 

★★★ request, session, application, pageContext 내부객체는 임의의 속성값(attribute)을 저장하고 읽을 수 있는 메서드를 제공한다.

 

setAttribute(String key, Object value) : 주어진 key에 속성값을 연결한다.
getAttribute(String key) : 주어진 key에 대한 속성값을 얻는다.
removeAttribute(String key) : 주어진 key에 연결된 속성값을 제거한다.
getAttributeNames() : 모든 속성의 이름을 얻어낸다.

. JSP페이지에 관련된 객체 : page, config
. 페이지 입출력 관련된 객체 : request, response, out
. 컨텍스트에 관련된 객체 : session, application, pageContext
. 에러에 관련된 객체 : exception

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ out 내장 객체 Method
1. isAutoFlush() : 출력 버퍼가 가득찼을 때 자동으로 밀어낼 것인지 여부 지정 (true/fasle)
2. getBufferSize() : 출력 버퍼 전체 size를 구함
3. getRemaining() : 출력 버퍼중 남아있는 size를 구함
4. clearBuffer() : 출력 버퍼를 비운다.
5. println() : String을 출력한다.
6. flush() : 출력 버퍼 내용을 밀어낸다.
7. close() : 출력 버퍼 내용을 밀어 내고, 출력 버퍼를 닫는다.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ request 내장 객체 메서드
1. getMethod() : 요청 방식 알아내기 (get, post)
2. getRequestRUI() : 요청 파일 경로 알아내기 (예: jsp2/RequestTest.jsp)
3. getRequsetURL() : 요청 경로 알아내기 (예: http://localhost:9000/jsp2/Request.jsp)

4. getRemoteHost() : 클라이언트 호스트 이름 알아내기
5. getRemoteAddr() : 클라이언트 주소 알아내기
6. getRemoteUser() : (인증을 이용한 경우) 이용자 ID 알아내기

7. getProtocol() : 사용중인 프로토콜 알아내기(HTTP1.1)
8. getServerName() : 서버 도메인 이름 알아 내기
9. getServerPort() : 서버 Port 알아내기

10. getHeader(name) : name에 해당하는 요청 헤더 항목 값을 알아내기

11. getParameter(name) : name에 해당하는 파라미터값 얻는다.
12. getParameterValues(name) : name에 해당하는 파라미터값을 모두 얻는다.
13. getParameterNames() : form에 있는 모든 파라미터 이름을 얻는다.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ response 내장 객체 메서드
1. setContentType(type) : 출력 문서의 contentType 설정
2. getCharacterEncoding() : 문자 인코딩 설정 내용 알아내기
3. setHeader(name, value) : 응당 헤더 설정
   예: response.setHeader("Refresh", "3;URL=http://www.daum.net");//3초후 URL로 이동
4. sendRedirect("url") : 지정 url로 요청을 재전송한다.
   예: response.sendRedirect("로컬URL");
       response.sendRedirect("외부URL");

 

※ response.sendRedirect와 forward 액션태그 차이점
  - sendRedirect()는 웨브라우저가 다른 페이지로 이동하는덷 이때 다른 페이지로 가기의해 웹 브라우저는 웹서버에 새로운 Http요청을 보낸다. 즉, TCP네트워크 연결이 다시 만들어 지는 것이다.

 - 이제 비해 forward액션은 JSP엔진에서 Http요청을 다른 페이지로 보내는 것이다. 즉, Http요청 처음 만들어진 것 하나만 있는 것이다. 이것은 중요한 의미를 갖는다.
    cf) <jsp:forward page="로컬URL"/>
         <jsp:forward page="외부URL"/> --안됨!! 

 - sendRedirect()는 사용하면 웹브라우저에서 처음에 전송한 Http요청과 이 요청에 포함된 데이터들은 새로 이동된 페이지에서 사용할 수 없게 된다. 반면에 forward액션을 사용하면 Http요청은 하나만 사용하기 때문에 새로 이동된 페이지에서도 클라이언트에서 전송된 데이터를 사용할 수 있다.

 

※ forward액션 태그
   방법1 <jsp:forward page="로컬URL"/> = <jsp:forward page="로컬URL"></jsp:forward>
   방법2 <jsp:forward page="로컬URL">
               <jsp:param name="id" value="kim"/>
               <jsp:param name="pwd" value="123"/>
            </jsp:forward>


※ include지시자(디텍티브)

   <%@ include file ="파일명.확장자" %>
                              name.txt
                              aa.html
                              bb.jsp <- 현재 JSP페이지에 포함할 문서
        *include지시자는 단순히 문서를 포함시킨다. 포함시킬 문서는 헤더부분 넣지 말아야한다.

※ include액션
   *include앤셕 실행될 결과물을 현재페이지에 포함시킨다.
   <방법1>
      <jsp:include page="로컬URL" flush="true"/>
   <방법2>
      <jsp:include page="로컬URL" flush="true"/>
          <jsp:param name=" " value=" "/>
          <jsp:param name=" " value=" "/>
          .....

      </jsp:include>

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ application 내장 객체 메서드
 application 내장 객체는 서블릿 또는 어플리케이션 외부환경정보(context)의 내부객체입니다.
 application은 javax.servlet.ServletContext의 객체이다.

<Method>
1. String getServletInfo() : 서버 정보를 구한다.(웹 컨테이너이름과 버전, 즉 JSP컨테이너에 대한 정보)
2. String getMimeType(fileName) : fileName대한 MIME타입을 리턴한다.
  예) String str = request.getParameter("filename");
      String contentType = application.getMimeType(str);
3. String getMajorVersion() : 서버가 지원하는 서블릿규약의 Major version을 리턴한다.(정수부분)
4. String getMinorVersion() : 서버가 지원하는 서블릿규약의 Minor version을 리턴한다.(소수부분)

5. String getRealPath(url) : 지정 URL의 실제 경로를 리턴한다.
6. void log("message") : message내용을 file에 기록한다.

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
--myroot\WEB-INF\web.xml--
<context-param>
 <description>로깅여부</description>
 <param-name>logEnabled</param-name> <!-- 이름이 logEnabled이고 값이 true인 초기화 파라미터 추가 -->
 <param-value>true</param-value>
</context-param>
 
<context-param>
 <description>로깅레벨</description>
 <param-name>debugLevel</param-name> <!-- 이름이 debugLevel이고 값이 5인 초기화 파라미터 추가-->
 <param-value>5</param-value>
</context-param>

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ Cookie 내장 객체 생성자 &메서드
생성자
- Cookie(name, value) 이름이 name이고, 값이 value인 쿠키를 생성

메서드
 setter method or setXXX()
- setValue() : 쿠키값 설정
  setDomain() : 쿠키에 전달되는 도메인 설정
  setPath() : 쿠키에 전달되는 경로 설정
  setMaxAge() : 쿠키 나이 설정(쿠키 유효기간 설정<-초>)
  setSecure() : 보안 프로토콜(HTTPS)에서만 쿠키를 전달되도록 설정한다.
  
 getter method or getXXX()
- getName() : 쿠키이름 얻기
  getValue() : 쿠키값 얻기
  getDomain() : 쿠키가 전달되는 도메인 알아내기
  getPath() : 쿠키가 전달되는 경로 알아내기
  getMaxAge() : 쿠기 유효기간 알아내기
  getSecure() : 보안 프로토콜(HTTPS)에서만 쿠키가 전달되는지 알아내기

 <<쿠키를 생성해서 클라이언트 심는 방법>>
  Cookie cookie = new Cookie("쿠키이름", URLEncoder.encode("쿠키값"));
  response.addCookie(cookie); //쿠키심기
 
 <<클라이언트가 보내주는 쿠기를 모두 받아서 특정 이름의 쿠키값을 알아내기>>

 Cookie[] cookies = request.getCookies(0;
 if(cookies!=null){
         for(int i=0; i<cookies.length; i++){
                 if(cookies[i].getName().equals("쿠키이름")){
                         visiterName = URLDecoder.decode(cookies.getValue());
                         out.println("쿠키값 : " + visiterName);
                 }
         }
 }

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ session 내장 객체 메서드

- 세션은 쇼핑몰같은 구매 제품을 클릭할때마다 누가 클릭했는지 기억을 해야하는 사이트에서는
웹서버쪽에 사용자별 기록을 남겨야만 합니다.

 웹 서버쪽에 기억 시키는 것을 세션이라고 합니다.
 JSP에서는 session객체를 통하여 이용할 수 있습니다.

<< session객체 method >>
1. String getId() : 해당 세션의 고유한 세션의 ID를 리턴
2. void setMaxInactiveInterval(time) : 세션 유지 시간 설정(초단위)
3. int getMaxInacativeInterval() : 세션 유지 시간을 얻는다(기본 유지시간 30분)

4. isNew() : 새로 생성된 세션이면 true return
5. invalidate() : session를 제거

setAttribute(name, value) : session에 name, value값의 항목을 추가
getAttribute(name) : session에서 name에 해당하는 value값을 얻는다.

* HttpSession getSession() :
  1. getSession(true) : true는 새로운 세션을 create만 하는 것
  2. getSession(false) : false는 현재 세션을 그대로 리턴 하는 것
  3. getSession() : session존재 여부를 확인하여,
                    session이 없다면 새로 session을 create하고
                    session이 있다면 그대로 return
                    위 2개의 장점을 취한 것.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
※JSP 액션
<jsp:useBeans> - JSP페이지에서 빈을 초기화 하는데 사용
<jsp:setProperty> - 빈의 property에 값을 넣어 주기 위해 사용
<jsp:getProperty> - 빈의 property의 앖을 가져오기 위해서 사용
<jsp:forward> - 처리를 분기할 때 사용
<jsp:include> - 처리 결과무를 포함 시킬 때 사용

지시자
<%@ page %>
<%@ include file="파일명" %>
<%@ taglib %>

[출처] JSP내장객체|작성자 신지c


반응형
  1. Select 객체

    리스트박스를 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
    그렇기 때문에 Select 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다

    • Select 속성

      속성 의미
      name 리스트박스의 이름지정
      size 리스트박스에서 밖으로 보이는 목록의수
      value 리스트 박스의 목록에 설정할 값 지정
      selected 목록이 선택된 상태로 만든다.
      multiple 리스트 박스에서 하나이상 선택할 것인지를 지정

    • Select 객체의 특성

      특성 의미
      name 리스트박스의 이름
      length 리스트박스에 포함되어 있는 목록의수
      type type에 입력된값(select)
      selectedIndex 리스트 박스에서 현재 선택된 목록의 인덱스
      options 리스트박스에 포함된 목록 정보의 배열
      options[i].index 각 목록의 인덱스
      options[i].text 각 목록의 문자열
      options[i].value 각 목록에 할당되어 있는 값
      options[i].prototype 옵션 메뉴에 새로운 특성을 만들기 위한 것
      options[i].selected 각 목록이 현재 선택되어 있는지의 여부
      options[i].defaultSelected 각 목록이 처음 선택되어 있는지의 여부

    • Select 객체의 이벤트 핸들러

      이벤트 핸들러 의미
      onChange 다른 목록을 선택 했을때 발생하는 이벤트 핸들러

      예제1 실행화면
      <script>
      function foods(mira) {
      var sel = "선택된 음식 \n\n"
      for(i = 0;i if(mira.food.options[i].selected == true) {
      sel += mira.food.options[i].text + "\n"
      }
      }
      alert(sel)
      }
      </script>
      <form>
      좋아하는 음식을 선택해 주세요.
      <select name="food" size=6 multiple>
      <option value="김치찌게">김치찌게
      <option value="된장찌게">된장찌게
      <option value="해물탕">해물탕
      <option value="짜장면">짜장면
      <option value="짬뽕">짬뽕
      <option value="피자">피자
      <option value="냉면">냉면
      </select>
      <input type="button" value="선택" onclick="foods(this.form)">
      </form>
      <FORM>좋아하는 음식을 선택해 주세요.
      <INPUT onclick="foods(this.form)" type="button" value="선택"> </FORM>

      예제2 실행화면
      <script>
      function colch(mirage) {
      document.bgColor = mirage.color.options[mirage.color.selectedIndex].value
      }
      </script>
      <form>
      배경색바꾸기
      <select name="color" size=5 onChange=colch(this.form)>
      <option value="white">화이트
      <option value="ivory">아이보리
      <option value="lavender">라벤더
      <option value="pink">핑크
      <option value="lightblue">라이트블루
      <option value="gold">골드
      <option value="aqua">아쿠아
      </select>
      </form>
      <FORM>배경색바꾸기
      </FORM>

  2. Option 객체

    • Option 객체 만들기

      option_name = new Option( optionText , optionValue , defaultSelected , selected )

      optionText : 옵션 메뉴에 나타날 문자열
      optionValue : 옵션 메뉴를 선택했을때 리턴되는 값
      defaultSelected : 옵션 메뉴를 초기에 선택된 상태로 만들 것인지 아닌지를 지정
      selected : 옵션 메뉴가 선택되어 있는지 아닌지를 가리킨다.

      예제3 실행화면
      <script>
      function mirage8(form) {
      var option1 = new Option("자두","optiontest1",true)
      form.test2.options[form.test2.length] = option1
      }
      function mirage9(form) {
      if(form.test2.value != "") {
      form.test2.options[form.test2.selectedIndex] = null
      }
      else {
      alert("제거할 대상을 선택하세요")
      }
      }
      </script>
      <form>
      <select name="test2" size=7>
      <option value="optiontest1"> 사과
      <option value="optiontest2"> 앵두
      <option value="optiontest3"> 감
      <option value="optiontest4"> 수박
      </select>
      <input type="button" value="추가" onclick="mirage8(this.form)">
      <input type="button" value="제거" onclick="mirage9(this.form)">
      </form>
      <FORM> <INPUT onclick="mirage8(this.form)" type="button" value="추가"> <INPUT onclick="mirage9(this.form)" type="button" value="제거"> </FORM>

  3. FileUpLoad 객체

    • FileUpLoad 객체의 특성

      특성 의미
      name 파일업로드 입력양식 이름
      value 파일업로드 입력양식에 입력된 파일이름

      예제4 실행화면
      <script>
      function fileinfor(form) {
      if(form.fileup.value != "") {
      mirage = window.open("","","status=no,scrollbars=yes")
      mirage.document.write("<img src=" + form.fileup.value + ">" )
      }
      else {
      alert("이미지를 선택하세요")
      }
      }
      </script>
      <form name=form6>
      이미지 파일보기<input type="file" name="fileup">
      <input type="button" value="보기" onclick="fileinfor(this.form)">
      </form>
      <FORM name="form6">이미지 파일보기<INPUT type="file" name="fileup"> <INPUT onclick="fileinfor(this.form)" type="button" value="보기"> </FORM>

      [출처] [16]입력양식3|작성자 붉은매


반응형


Button 객체
버튼 입력양식을 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
그렇기 때문에 Button 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다


Button 객체의 특성
특성 의미
name  버튼 입력양식의 이름 
value  버튼 입력양식에 입력한 값 
type  type택에 입력된값(button) 

 

Button 객체의 메소드
메소드 의미
click()  버튼을 클릭시키는 메소드 

 

Button 객체의 이벤트 핸들러
이벤트 핸들러 의미
onClick  버튼을 클릭하는 순간 실행되는 이벤트 핸들러 
onMouseDown  마우스 버튼을 눌렀을때 실행되는 이벤트 핸들러 
onMouseUp  마우스 버튼을 놓았을때 실행되는 이벤트 핸들러 

 

Submit 객체
데이터 보내기 버튼 입력양식을 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
그렇기 때문에 Submit 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다


Submit 객체의 특성
특성 의미
name  데이터 보내기 버튼 입력양식의 이름 
value  데이터 보내기 버튼 입력 양식에 입력한 값 
type  type에 입력된 값(submit) 

 

Submit 객체의 메소드
메소드 의미
click()  데이터 보내기 버튼을 클릭시키는 메소드 

 

Submit 객체의 이벤트 핸들러
이벤트 핸들러 의미
onClick  데이터 보내기 버튼을 클릭하는 순간에 실행되는 이벤트 핸들러 

 

Reset 객체
리셋 버튼 입력양식을 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
그렇기 때문에 Reset 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다


Reset 객체의 특성
특성 의미
name  리셋 버튼 입력양식의 이름 
value  리셋 버튼 입력양식에 입력한 값 
type  type에 입력된 값(reset) 

 

Reset 객체의 메소드
메소드 의미
click()  리셋 버튼을 클릭시키는 메소드 

 

Reset 객체의 이벤트 핸들러
이벤트 핸들러 의미
onClick  리셋 버튼을 클릭하는 순간에 실행되는 이벤트 핸들러 

 

Checkbox 객체
체크박스를 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
그렇기 때문에 Checkbox 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다


Checkbox 객체의 특성
특성 의미
name  체크박스의 이름 
value  체크박스에 할당할 값 
type  type에 입력된 값(checkbox) 
checked  체크박스가 체크 되었는지의 여부 
defaultChecked  체크박스가 처음 체크 되었는지의 여부 

 

Checkbox 객체의 메소드
메소드 의미
click()  체크박스를 클릭시키는 메소드 

 

Checkbox 객체의 이벤트 핸들러
이벤트 핸들러 의미
onClick  체크박스를 클릭하는 순간에 실행되는 이벤트 핸들러 

 

Radio 객체
라디오 버튼을 자바스크립트로 접근하기 위한 객체로 form객체의 하위객체이다.
그렇기 때문에 Radio 객체에 접근하기 위해서는 form객체를 지정해 주어야 한다


Radio 객체의 특성
특성 의미
name  라디오 버튼의 이름 
value  라디오 버튼에 할당할 값 
type  type에 입력된 값(radio) 
checked  라디오 버튼이 체크 되었는지의 여부 
defaultChecked  라디오 버튼이 처음 체크 되었는지의 여부 
length  그룹안에 포함되어 있는 라디오 버튼의 수 

 

Radio 객체의 메소드
메소드 의미
click()  라디오 버튼을 클릭시키는 메소드 

 

Radio 객체의 이벤트 핸들러
이벤트 핸들러 의미
onClick  라디오 버튼을 클릭하는 순간에 실행되는 이벤트 핸들러 


예제1 실행화면
<script language="javascript">
function sel(mirage) {
ans = mirage.value
alert(ans + "를 선택했습니다")
}
</script>
선택하세요
<form name=form5 action="">
<input type="radio" name="color1" value="사과" onClick="sel(this)">사과
<input type="radio" name="color1" value="배" onClick="sel(this)">배
<input type="radio" name="color1" value="앵두" onClick="sel(this)">앵두
</form>
 선택하세요
<FORM name="form5" action=""><INPUT onclick="sel(this)" type="radio" value="사과" name="color1">사과
<INPUT onclick="sel(this)" type="radio" value="배" name="color1">배
<INPUT onclick="sel(this)" type="radio" value="앵두" name="color1">앵두
</FORM>

 

[출처] [15]입력양식2|작성자 붉은매

+ Recent posts