(연예)
- Entertainment
- People
- In Style

(비지니스/파이낸스)
- Time
- Economist
- Fortune
- Forbes
- Enterpreneur
- Business Week

(자동차)
- Car and Driver
- Road and Track
- Auto Week

(컴퓨터)
- PC World
- PC Magazine
- Wired

(여성 잡지)
- Cosmopolitan
- Glamour
- Marie Claire
- Mademoiselle
- Lucky
- Modern Bride
- Redbook
- Shape

(남성 잡지)
- GQ
- Maxim
- Esquire
- Razor
- Details

(여행, 레져)
- Conde Nast Traveler
- National Geographic

(스포츠)
- Sports Illustrated
- ESPN

(음악)
- Rolling Stones
- Vibe
- Spin

[출처 네이버 지식]
http://kin.naver.com/detail/detail.php?d1id=9&dir_id=90201&eid=+ZEkVEEDZyGB/jerGD9zQqFPMXaNaRgq&qb=ucyxuSDA4sH2&enc=euc-kr&order=7&pid=fmZf7woi5Tosscw%2B4Edsss--426403&sid=ShEPSpz5EEoAAHfDJYI
[출처 : 네이버지식]
http://kin.naver.com/detail/detail.php?d1id=8&dir_id=80608&eid=4plf8cGMYSlCNEOGykX80EtYE2swHLvH&qb=7Lm07Lm07Jik6rCA66OoIOy0iOy9lOugmw==&enc=utf8

일단 시판되는 단단한 초코렛을 만드는 것은 불가능하단 얘기를 먼저 드릴게요.

일반적인 초코렛에는 다 카카오 버터와 경화제가 들어있습니다.

카카오버터 함량이 높으면 초코렛이 잘 녹고 연하고 또 고급품이구요, 그 함량이 낮음녀 맛도 떨어지고 가격도 낮아지지만 잘 녹지 않고 그렇게 되죠.

코코아 가루로는 단단한 초코렛을 만드는 것은 힘들고 약간 녹은듯한 끈적한 프로스팅 타입의 초코렛 만들기는 가능합니다.

재료는 코코아 파두어 1컵을 기준으로 1과 1/4컵의 버터, 4와 1/2컵의 파우더 슈가, 바닐라 2스푼, 우유나 생크림 1/4컵이 필요합니다.

1. 큰 그릇에 버터를 넣고 부드럽게 크림처럼 되도록 먼저 저어주세요.

2. 그리고 설탕과 코코아 가루를 체쳐서 잘 섞은 다음 이걸 크림처럼 만들어 놓은 버터에 조금씩 넣고 잘 젓습니다. 한꺼번에 넣으면 뭉치고 잘 안저여지니까 섞이는대로 조금씩 더 넣으세요.

3. 바닐라와 우유를 넣고 완전히 섞이도록 하면 크림 상태의 초코렛이 됩니다.

4. 프로스팅 초코렛 자체를 먹으려면 냉장고에 넣어 굳혔다 먹으면 맛있습니다. 이걸 냉동고에 넣어 굳히면 시판되는 초코렛처럼 단단해지긴 합니다. 하지만 실온에 나오면 금방 녹으니까 파는 초코렛 처럼은 힘들죠.

코코아와 우유의 비율에 따라 밀크 초코렛이 되거나 다크 초코렛이 되니 맛은 취향대로 조절하세요~

이렇게 만든 프로스팅 초코렛은 부드럽게 해서 빵에 발라먹어도 맛있고 케잌에 발라 먹어도 맛있어요~
[출처 : http://okjsp.pe.kr/doc/jspCodeConvention.html]
Code Conventions for the JavaServer PagesTM Version 1.x Language

JavaServer PagesTM (JSPTM)가 점점 널리 웹기반 어플리케이션으로 자리잡아가면서, 개발과 유지보수에 종사하는 많은 JSP 프로그래머들과 웹 개발자들은, 예전에 자바프로그래머들이 겪었던 것과 같은 딜레마에 직면했다. "어떻게 JSP 코드를 짜면 읽기, 쓰기, 유지보수하기를 일관적으로 쉽게 할 수 있을까?"

이 글은, 웹 컴포넌트를 사용하는 전형적인 소프트웨어 프로젝트에서 준수해야 할 JSP(1.1 과 1.2버전) 표준 작성요령을 제안한다. 이 문서의 모체는 자바 언어 코드 작성요령이다. (JSP 와 관련된) 코드 작성 방법 스펙에 소개된 다양하고 중요한 요소들을 확인할 수 있는 템플릿으로 삼았다. 특히, 파일명, 구성, 들여쓰기, 주석, 지시자, 선언문, 스크립틀릿, 표현식, 공백, 명명법(이름 짓는 법), 프로그래밍 습관 등을 소개한다. 처음으로 시도되는 JSP 코드 작성요령이기 때문에, 이 권고 문서에 대한 여러분들의 관심과 피드백을 기다린다. 연락처는 jsp-codeconv-comments@sun.com이다.

JSP 2.0 스펙에서는 1.2 버전을 모두 포용하지만, 스크립트가 없는 프로그래밍 스타일(선언문, 스크립틀릿, 표현식이 없는)을 지향하고, 수많은 새 특징들을 갖고 있어서, 이 작성요령을 더 진보시켜야 될 필요가 있다. 가능한 한, 이 문서는 새로운 JSP 2.0 특징에 도움을 주는 작성방식을 선택했다.

마지막으로, 이 글을 읽는 수준은 JSP, Java, 자바 코드 작성요령에 익숙해야 하고, 이미 프로젝트를 수행하는 팀에 적용이 되어 있어야 된다. 그렇지 않다면, 이 링크를 읽어 보기를 추천한다. Java 링크 JSP 링크.

 

왜 코드 작성요령이 필요한가? Why Have Code Conventions?

코드 작성요령은 프로그래머와 웹 컨텐츠 개발자에게 여러 가지 이유로 중요하다:

  1. 소프트웨어 산출물의 가독성을 향상시킨다.
  2. 견습 관리와 노력을 경감한다.
  3. 표준화에 대한 조직적 참여도를 배가시킨다.

파일 이름과 위치 File Names and Locations

파일 이름짓기는 툴 벤더와 웹 컨테이너로 하여금 파일 타입을 인식하고, 각각에 맞게 해석할 수 있는 방법을 제공한다. 다음 테이블은 추천하는 방식의 파일 확장자와 위치 목록이다. 

File Type File 확장자 추천 위치
JSP .jsp <context root>/<subsystem path>/
JSP fragment .jsp <context root>/<subsystem path>/
.jspf <context root>/WEB-INF/jspf/<subsystem path>/
cascading style sheet .css <context root>/css/
javascript .js <context root>/js/
HTML page .html <context root>/<subsystem path>/
web resource .gif, .jpg, etc. <context root>/images/
tag library descriptor .tld <context root>/WEB-INF/tld/

위 테이블을 볼 때 몇 가지 유념할 것이 있다. 우선, <context root> 는 웹 어플리케이션(.war 파일 내의 루트 디렉토리) 컨텍스트의 루트이다. 둘째로, <subsystem path> 는 동적, 정적 웹페이지 컨텐츠의 논리적인 그룹으로 나누도록 한다. 작은 웹 어플리케이션일 경우, 이게 필요하지 않을 수도 있다. (한 곳에 모두 놓아도 된다.)

세째로, 다른 JSP 파일에 포함되는 JSP 를 언급할 때 JSP fragment (JSP 프래그먼트 조각)라는 용어를 사용한다. 주의할 것은 JSP 2.0 에서는 "JSP fragment" 용어가 겹치기 때문에 "JSP 세그먼트(JSP segment)" 용어가 대신 사용된다. JSP fragment 는 확장자로 .jsp 또는 .jspf 를 사용하고, /WEB-INF/jspf나 다른 정적인 컨텐츠와 함께 각각 위치하면 된다. 불완전한 JSP fragment는 언제나 .jspf 확장자를 사용하고, /WEB-INF/jspf에 위치해야 된다. 네째로, JSP 스펙에서는 JSP fragment 확장자로 .jspf.jsp 양쪽 모두를 권장하지만, 추천하는 것은 .jspf 인데, .jsfJavaServer Faces™ 스펙에서 사용될 것이기 때문이다.

끝으로, 태그 라이브러리 디스크립터 파일이나 다른 비공개적인 컨텐츠는 WEB-INF/ 또는 이 하위 디렉토리에 놓아두는 것은 보편적으로 좋은 습관이다. 웹 컨테이너는 WEB-INF/ 아래 있는 어떤 파일도 송출하지 않기 때문에, 이 방법을 사용하면, 클라이언트가 접근하거나 볼 수 없게 된다.

배치 설명자(web.xml)의 welcome-file 엘리먼트에 선언되어 있는 웰컴 파일의 이름은 동적인 컨텐츠를 생성하려면, index.jsp 가 되어야 되고, 정적인 웰컴 페이지라면 index.html 로 해야 한다. 

JSP 파일을 다국어로 작성할 때, 로케일에 따라 디렉토리를 나누어 그룹 짓기를 추천한다. 예를 들어서 index.jsp 의 US English 버전은 /en_US/index.jsp 에, 같은 파일의 일본어판은 /ja_JP/index.jsp  에 있게 한다. 일반적으로 자바 코드의 국제화에 관한 추가적인 정보는 Java Tutorial 에 있고, 웹 어플리케이션의 국제화에 대한 정보는 Designing Enterprise Applications with the J2EETM Platform 책에 나와있다.

파일 구조 File Organization

구조가 잘 갖춰진 소스 코드 파일은 읽기 쉽고, 파일 사이에 정보를 더 빨리 놓아둘 수 있다. 이 섹션에서, JSP와 태그 라이브러리 디스크립터 파일 모두를 위한 구조를 소개하려한다.

JSP 파일 / JSP Fragment 파일

JSP 파일은 다음의 섹션들이 나열한 순서대로 구성된다:

  1. 도입 주석
  2. JSP 페이지 지시자(directive)
  3. 선택적 태그 라이브러리 지시자
  4. 선택적 JSP 선언문
  5. HTML 과 JSP 코드

도입 주석 Opening Comments

JSP 파일 또는 프래그먼트 파일은 서버측 주석으로 시작한다:

<%--
  - 작성자:
  - 일자:
  - 저작권 표시:
  - @(#)
  - 설명:
  --%>

이 주석은 서버측에서만 볼 수 있다. JSP 변환 과정에서 제거되기 때문이다. 여기에는 웹 개발자를 위한 JSP에 대한 작성자, 일자, 개정판의 저작권, 증명과 설명이 포함된다. "@(#) " 문자 조합은 증명의 시작을 지시하는 것으로 어떤 프로그램에서 인식된다. 이런 표식을 사용하는 프로그램들은 많이 사용되지 않지만, 있어도 해가 될 것은 없다. 추가로, 이 조합은 때때로 "$Id$" 를 덧붙여서, 어떤 종류의 버전 관리 프로그램에서는 자동으로 증명 정보를 JSP에 기록하도록 한다. 설명 부분은 JSP의 목적에 관한 축약된 정보를 제공한다. 한 문단 이상 넘어가지 않도록 한다.

어떤 상황에서는, 도입 주석이 JSP 변환과정을 지나서 출처가 확실하다는 뜻과 법적인 목적으로 클라이언트의 브라우저에 보여질 필요가 있다. 이럴 경우 주석 부분을 두개로 나눠서 우선 클라이언트측 스타일의 주석을 단다:

<!--
  - Author(s):
  - Date:
  - Copyright Notice:
  --%>

그리고 나서 짧아진 나머지 서버측 스타일의 주석을 단다:

<%--
  - @(#)
  - Description:
  --%>

JSP 페이지 지시자 JSP Page Directive(s)

JSP 페이지 지시자는 JSP 변환 시점에 관련된 속성을 정의한다. JSP 스펙은 같은 페이지에 JSP 페이지 지시자의 수량을 제한하지 않는다. 그래서 다음 두 개의 코드 예제는 똑같다.(다른 점이 있는데, 첫 예제는 출력시에 맨 위에 두 개의 빈 줄이 포함된다):

코드 예제 1:

<%@ page session="false" %>
<%@ page import="java.util.*" %>
<%@ page errorPage="/common/errorPage.jsp" %>

페이지 지시자 같이 지시자의 길이가 일반적인 JSP 폭(80 문자)을 넘어갈 경우 여러 줄로 나눠진다:

코드 예제 2:

<%@ page    session="false"
            import="java.util.*"
            errorPage="/common/errorPage.jsp"
%>

일반적으로, 코드 예제 2는 코드 예제 1보다 즐겨 사용된다. 예외가 있는데, 매우 긴 import 속성을 쓰게 되는, 여러 개의 자바 패키지가 JSP페이지에서 필요할 경우이다:

<%@ page    session="false"
               import="java.util.*,java.text.*,
                   com.mycorp.myapp.taglib.*,
                       com.mycorp.myapp.sql.*, ..."
...
%>

이런 경우, 페이지 지시자를 다음과 같이 나누는 것이 즐겨사용된다:

<%-- import를 제외한 모든 속성 --%>
<%@ page
...
%>
<%-- import 속성들은 여기부터 시작 --%>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
...

주의할 점은, 일반적으로 import문은 자바의 지역 코드 작성요령을 준수한다. 예를 들어, 같은 패키지에서 세 개의 클래스까지만 사용되면, import 는 패키지를 선언하기 보다는, 클래스를 일일이 선언한다. 세 개를 넘어가면, 클래스를 일일이 지정할 것인지 아니면, ".*" 표시를 사용할 것인지는 웹 개발자 마음이다. 전자의 경우, 외부 클래스가 무엇이 사용되는지를 쉽게 알수 있다. 특히 버그가 많은 클래스를 위치시키려고 하거나, JSP 가 자바 코드와 어떻게 상호작용하는지를 이해하려할 경우에 유용하다. 예를 들어서, 아래처럼 임포트한 자바 패키지들에 관해 알지 못하면, 웹 개발자는 Customer 클래스를 찾기 위해서 이 모든 패키지들을 검색해봐야 된다:

<%@ page import="com.mycorp.bank.savings.*" %>
<%@ page import="com.thirdpartycorp.cashmanagement.*" %>
<%@ page import="com.mycorp.bank.foreignexchange.*" %>
...

후자의 경우, 작성된 JSP 가 깔끔하지만, 사용한 클래스가 무엇인지 아는 것은 어려워진다. 일반적으로, JSP 에 임포트 지시자가 너무 많으면, 자바 코드가 너무 많이 들어가 있기 쉽다. 보다 나은 선택은 JSP 태그를 더 사용하는 것이다.(후에 언급하겠다).

선택적 태그 라이브러리 지시자 Optional Tag Library Directive(s)

태그 라이브러리 지시자는 JSP 에서 사용하는 커스텀 태그 라이브러리를 선언한다. 짧은 지시자는 하나의 줄에 선언할 수 있다. 여러 개의 태그 라이브러리 지시자들은 JSP 의 한 곳에 같이 모아둔다:

<%@ taglib uri="URI1" prefix="tagPrefix1" %>
<%@ taglib uri="URI2" prefix="tagPrefix2" %>
...

페이지 지시자처럼, 태그 라이브러리 지시자의 길이가 일반적인 JSP 폭(80 문자)을 넘어갈 경우 여러 줄로 나눠진다:

<%@ taglib
    uri="URI2"
    prefix="tagPrefix2"
%>

오직 페이지에서 사용하는 태그 라이브러리만 임포트되어야 한다.

JSP 1.2 부터, 웹 어플리케이션의 JSP에 JSTL;JSP 표준 태그 라이브러리사용하기를 적극 권장한다. 페이지에서 JSP 스크립틀릿 사용할 필요를 줄여주기 때문이다. 일반적으로, JSTL을 사용하는 페이지는 소스읽기와 유지보수가 보다 편하다.

선택적 JSP 선언문 Optional JSP Declaration(s)

JSP 선언문은 JSP에서 소속된 메소드와 변수를 선언한다. 이들 메소드와 변수는 자바 프로그램에서의 선언문과 다를바 없다. 그래서 적절한 코드 작성요령을 따르기만 하면 된다. 선언문은 <%! ... %> JSP 선언문 블록 하나에 모두 몰아서 한 곳에 집중해 놓는 것이 좋다. 예를 들면:

다른 선언문 블록들 바람직한 선언문 블록
    <%! private int hitCount; %>
    <%! private Date today; %>
    ...
    <%! public int getHitCount() {
            return hitCount;
        }
    %>
    
    <%!
        private int hitCount;
        private Date today;

        public int getHitCount() {
            return hitCount;
        }
    %>

HTML 과 JSP 코드 HTML and JSP Code

이 섹션은 JSP 코드와 HTML 이 섞여있는 페이지에 대해 설명한다. JSP 표현식, 스크립틀릿, 자바빈즈 지시자 등이 해당된다.

태그 라이브러리 설명서 Tag Library Descriptor

태그 라이브러리 설명서(TLD)는 적당한 XML선언과 올바른 DTD 문으로 시작한다. 예를 들어서, JSP 1.2 TLD 는 다음과 같이 시작해야 된다:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

바로 뒤이어 서버측 주석과 같은 스타일의 주석을 기입한다. 작성자, 일자, 저작권, 증명 정보, 라이브러리에 대한 짧은 설명이다:

<!--
  - 작성자:
  - 일자:
  - 저작권 표시:
  - @(#)
  - 설명:
  -->
 

여기에 관한 규칙과 가이드라인은 JSP 파일/프래그먼트 파일에서 정의된 것과 동일하다.

태그 라이브러리 파일의 나머지는 다음에 나오는 순서대로 이루어져 있다:

  • 태그 라이브러리 검증기 하나의 선택적 선언문
  • 이벤트 리스너들의 선택적 선언문
  • 하나 이상의 가능한 태그들의 선언

TLD 에서 엘리먼트 마지막에 선택적 서브 엘리먼트를 항상 덧붙이기를 추천한다. 이 선택적 서브 엘리먼트는 태그 디자이너가 TLD의 습성과 추가적인 정보를 문서화할 장소를 제공한다. 이것은 웹 컴포넌트 개발자들에게는 보이지 않게 된다.

TLD Element JSP 1.2 Recommended
Sub-element
JSP 1.1 Recommended
Sub-element
attribute (JSP 1.2) description  
init-param (JSP 1.2) description  
tag display-name, description, example name, info
taglib uri, display-name, description uri, info
validator (JSP 1.2) description  
variable (JSP 1.2) description  

들여쓰기 Indentation

들여쓰기는 반드시 공백문자로 채워야한다. 탭은 사용하는 에디터마다 표시하는 공백의 수가 다르기 때문에 JSP 내에서 들여쓰기로 사용하기에는 적합하지 않다. 특별히 통합개발환경(IDE) 툴에서 제한되지 않았다면, 기본 들여쓰기 단위는 4개의 공백문자로 한다. 다음은 그 사용예이다:

<myTagLib:forEach var="client" items="${clients}">
    <myTagLib:mail value="${client}" />
</myTagLib:forEach>

연속 들여쓰기는 이전 줄의 적당한 지점에서 시작한다. 연속 들여쓰기의 공백은 기본 들여쓰기 공백의 배수이다. (4개의 공백문자의 배수):

<%@ page    attribute1="value1"
            attribute2="value2"
            ...
            attributeN="valueN"
%>

스크립트 엘리먼트의 들여쓰기 Indentation of Scripting Elements

JSP 스크립트 엘리먼트(선언문, 스크립틀릿, 표현식과 같은)가 한 줄에 맞지 않는 경우, 스크립트 언어의 들여쓰기 작성요령이 엘리먼트 내에 적용된다. 몸체는 엘리먼트의 여는 기호 <%=와 같은 줄에서 시작한다. 다음줄의 기준도 여는 기호 <%=가 된다. 몸체의 끝은 다른 줄에 있는 엘리먼트의 닫는 기호(%>)로 마무리된다. 예제이다:

<%= (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
        = Calendar.SUNDAY) ?
    "Sleep in" :
    "Go to work"
%>

첫줄과 마지막 줄을 제외한 몸체의 가운데 줄들은 단위 들여쓰기 공백(앞 예제에서  로 보인다)이 앞에 있기 때문에 나머지 JSP 보다 확연히 드러나게 된다.

JSP, HTML, JAVA의 복합 들여쓰기 Compound Indentation with JSP, HTML and Java

자바의 스크립트 코드와 템플릿 텍스트(HTML)가 섞여있는 JSP 엘리먼트를 위해서 복합 들여쓰기가 필요한 이유는 JSP 소스를 이해하기 위해 드는 노력을 덜어주기 위해서이다. 기존의 들여쓰기 요령은 JSP 소스파일을 더 알아보기 어렵게 할 수 있기 때문이다. 보편적인 규칙에 따라서, 다른 소스 사이에 끼어 있을 경우마다 보통 들여쓰기에 특별한 단위를 할당한다. 클라이언트에 보여지는 들여쓰기에 영향을 준다. 추가적인 들여쓰기는 (브라우저에 의해) 보통 무시되고, 브라우저에 나타나는 결과는 차이가 없다. 예를 들어, <TABLE> 태그 앞에 공백이 몇 개 더 추가된다고 해서, 브라우저에서 보여지는 테이블의 위치가 달라지는 것은 아니다. 그래서 이러한 작성요령을 사용하는 것이 더 좋아 보인다:

    <table>
        <%  if { tableHeaderRequired ) { %>
            <tr>
                <th>Last Name</th>
                <th>First Name</th>
            </tr>
        <%  } %>
        <c:forEach var="customer" items="${customers}">
            <tr>
                <td><c:out value="${customer.lastName}"/></td>
                <td><c:out value="${customer.firstName}"/></td>
            </tr>
        </c:forEach>
    </table>

위 방식보다는 아래 방식이 낫다:

    <table>
        <%  if { tableHeaderRequired ) { %>
        <tr>
            <th>Last Name</th>
            <th>First Name</th>
        </tr>
        <% } %>
        <c:forEach var="customer" items="${customers}">
        <tr>
            <td><c:out value="${customer.lastName}"/></td>
            <td><c:out value="${customer.firstName}"/></td>
        </tr>
        </c:forEach>
    </table>

주석 Comments

주석은 추가 정보 전달이나 코드를 둘러쌀 목적으로 사용한다. 여기서는 JSP에서 사용하는 두가지 형태의 주석을 볼 것이다: JSP 측과 클라이언트 측 주석이다.

JSP 주석 JSP Comments

JSP 주석(또는 서버 측 주석)은 서버에서만 볼 수 있다(즉, 클라이언트로 전파되지 않는다). 순수 JSP 주석을 스크립팅 언어와 섞여있는 JSP 주석보다 즐겨 사용한다. 전자가 기반 스크립트 언어에 덜 종속적이기 때문이고, JSP 2.0 으로 진화하기 더 쉽기 때문이다. 다음 도표는 이것을 설명한다:

Line JSP 스크립틀릿과 스크립트 언어 주석 순수 JSP 주석
한 줄
    <% /**  ...  */ %>
    <% /*  ...  */ %>
    <% //  ...  %>
    
    <%--  ...  --%>
    
여러 줄
    <%
    /*
     *
    ...
     *
     */
    %>
    
    <%--
      -
     ...
      -
      -- %>
    <%
    //
    //
    ...
    //
    %>
    

클라이언트 측 주석 Client Side Comments

클라이언트 측 주석(<!-- ... -->)은 응답에 대해서 부가적인 정보를 클라이언트로 보내기 위해 응답에 주석을 다는 것이다. 서버 어플리케이션의 행동이나 내부적인 구조에 대한 것과 응답 내용을 생성하는 코드가 포함되어서는 안된다.

클라이언트/사용자의 입장에서 서버에서 보내온 응답을 해석하기 위해서 이런 종류의 주석을 직접 볼 필요가 없기 때문에, 클라이언트 측 주석은 보편적으로 사용되지 않는다. 앞서 얘기한대로 증명이나, 저작권 정보 등의 법적인 목적의 증명에 사용될 경우는 예외가 되겠다. 다른 예외적인 경우는 HTML 저작도구들이 HTML 문서 구조의 틀을 잡아주기 위해 작은 양의 HTML 주석들을 사용하는 경우가 되겠다. 예를 들면 다음과 같다:

<!-- 툴바 섹션 -->
    ...
<!-- 왼쪽 네비게이션 메뉴 -->
    ...
<!-- main body -->
    ...
<!-- footer -->
    ...

여러 줄의 주석 Multiline Comment Block

JSP 또는 클라이언트 측 모두, 여러 줄의 주석은 대시 문자 "-" 로 꾸며진다. XML 스펙에서, 더블-대시 문자열 "--"은 XML 주석 문 내에 허용되지 않는다. 그러므로, 이 스펙에 호환성과 일관성을 갖기 위해서, 더블-대시 문자열은 여러줄의 주석문 내에 사용되면 안된다. 다음 도표는 클라이언트 측 여러 줄 주석 사용법을 보여준다:

권장 XML과 맞지 않는 법
    <!--
      - line 1
      - line 2
    ...
      -->
    
    <!--
      -- line 1
      -- line 2
    ...
      -->
    

JSP 선언문 JSP Declarations

자바 코드 작성요령에 따라서, 같은 타입의 변수 선언문은 다른 줄에서 이루어져야 된다:

비 추천 추천
    <%! private int x, y; %>
    
    <%! private int x; %>
    <%! private int y; %>
    

자바빈즈는 <jsp:useBean> 액션 태그를 사용하는 대신, JSP 선언문을 통해서 선언되고 인스턴스화되면 안된다.

일반적으로, 변수를 위한 JSP 선언문은 그 자체가 스크립트 언어의 사용을 부추기기 때문에 사용하지 않는 것이 좋다. JSP 는 프리젠테이션 목적으로 설계되었는데, 여기에 비지니스 로직과 자바코드를 섞어놓기 때문이다. 그리고, 변수의 스코프 관리에 따른 부담도 생기게 된다.

JSP 스크립틀릿 JSP Scriptlets

가급적, 태그라이브러리로 동일한 기능을 구현할 수 있으면, JSP 스클립틀릿은 피하기 바란다. 이렇게 하면 페이지 가독성도 높이고, 유지보수도 쉬워진다. 비지니스 로직을 프리진테이션 로직에서 분리하는데 일조하며, JSP 2.0 스타일의 페이지로 쉽게 옮겨갈 수 있다(JSP 2.0 도 스크립틀릿을 지원하지만 덜 강조한다). 다음 예제는 customers 표시 방법이 데이터 형에 따라서 다른 스크립틀릿을 사용하는 것을 보여준다:

customers 는 Customers의 배열

    <table>
        <%  for ( int i=0; i<customers.length; i++ ) { %>
            <tr>
                <td><%= customers[i].getLastName() %></td>
                <td><%= customers[i].getFirstName() %></td>
            </tr>
        <%  } %>
    </table>

customers 는 Enumeration

    <table>
        <%  for ( Enumeration e = customers.elements();
                e.hasMoreElements(); ) {
                Customer customer = (Customer)e.nextElement();
        %>
            <tr>
                <td><%= customer.getLastName() %></td>
                <td><%= customer.getFirstName() %></td>
            </tr>
        <%  } %>
    </table>

그러나, 공통 태그라이브러리를 사용하면, customers 의 데이터 형이 달라도 보다 높은 유연성이 생긴다. 예를 들어서, JSTL 에서는customers 를 나타내기 위해서 배열과 Enumeration 양쪽 모두 지원하는 다음과 같은 코드로 표시할 수 있다:

    <table>
        <c:forEach var="customer" items="${customers}">
            <tr>
                <td><c:out value="${customer.lastName}"/></td>
                <td><c:out value="${customer.firstName}"/></td>
            </tr>
        </c:forEach>
    </table>

비지니스 로직과 프리젠테이션 층과의 결합도을 줄이기 위한 모델-뷰-컨트롤러(MVC) 디자인 패턴을 적용하려고 한다면, JSP 스크립틀릿은 비지니스 로직을 구현하기 위해서 사용되어서는 안된다. 오히려, JSP 스크립틀릿은 클라이언트의 요청을 처리한 뒤에 나오는 데이터("가치 객체 value objects"로 불리는)를 적절한 클라이언트의 준비된 형식에 전송하기 위해 필요하다면 사용된다. 심지어 그럴 경우에도, 프론트 컨트롤러 서블릿이나 커스텀 태그로 하는 게 더 낫다. 예를 들면, 다음의 코드는 데이터베이스에서 직접 customers 의 이름을 가져와 클라이언트에 보여준다:

<%
    // 스크립틀릿을 이용하는 것은 추천하지 않음!

    Connection conn = null;
    try {
        // Get connection
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("customerDS");
        conn = ds.getConnection();

        // Get customer names
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT name FROM customer");

        // Display names
        while ( rs.next() ) {
            out.println( rs.getString("name") + "<br>");
        }
    } catch (SQLException e) {
        out.println("Could not retrieve customer names:" + e);
    } finally {
        if ( conn != null )
            conn.close();
    }
%>

다음의 JSP 코드는 데이터베이스 처리부분을 내부적으로 데이터베이스 코드의 의존성을 숨기고 캡슐화한 커스텀태그myTags:dataSource에 위임하고 있기 때문에 더 보기 좋다:

<myTags:dataSource
    name="customerDS"
    table="customer"
    columns="name"
    var="result" />
<c:forEach var="row" items="${result.rows}">
    <c:out value="${row.name}" />
    <br />
</c:forEach>

result 는 커스텀 태그 myTags:dataSource가 customer 데이터베이스에서 customer의 이름들 뽑아낸 결과를 담으려고 만들어 낸 스크립팅 변수이다. JSP 코드는 클라이언트의 요구에 따라 동적으로 다른 종류의 출력(HTML, XML, WML)을 생성하기 위해 확장할 수 있다. 그것도 백엔드 코드(dataSource 태그를 위한)를 변경하지 않고도 가능하다. 더 나은 선택은 이것을 프론트 컨트롤러 서블릿에 위임하는 것이다. 이 서블릿은 데이터를 불러와서 그 결과를 request 스코프의 속성을 통해서 JSP에 제공한다. 예제는 자바 BluePrint의 엔터프라이즈 섹션을 참고하기 바란다.

요약하면 :

  • 이상적으로, 스크립트 언어로부터 독립하기 위해서 JSP 스크립틀릿은 JSP 내에서 사라져야 되고, JSP 내의 비지니스 로직 구현은 피해야 된다.
  • 그것이 불가하면, 서버 측에서 정보를 전달하는데 값 객체(자바빈즈)를 사용하고, JSP 스크립틀릿은 클라이언트 출력에 이 값 객체를 전달하는 데 사용한다.
  • 가능하면 커스텀 태그(태그 핸들러)를 사용해서 서버측에서 정보를 처리하도록 한다.

JSP 표현식 JSP Expressions

JSP 표현식은 JSP 스크립틀릿처럼 가능하면 삼가는 것이 좋다. 동일한 작업을 수행하는 다음 3가지 예제가 잘 설명해준다:

Example 1 (자바 코드 사용):

    <%= myBean.getName() %>

Example 2 (JSP 태그 사용):

    <jsp:getProperty name="myBean" property="name" />

Example 3 (JSTL 태그 사용):

    <c:out value="${myBean.name}" />

Example 1 은 myBean 이라는 스크립트 변수가 선언된 것이라고 가정한다. 다른 두 예제에서 myBean은 어떤 스코프의 속성으로 PageContext.findAttribute()을 통해서 접근할 수 있다고 가정한다. 두 번째 예제는 또한 <jsp:useBean> 에 의해서 페이지에 소개된 myBean이라고 가정한다.

셋 중에서 JSTL 태그 예제가 낫다. JSP 표현식 만큼 짧고, 가독성도 좋고, 유지보수하기도 보다 편하다. 그리고, 자바 스크립틀릿에 의존하지 않는다(스크립틀릿은 자바 언어와 API 함수들에 익숙해야 다룰 수 있다.) 더우기, JSP 2.0 스타일 프로그램으로 쉽게 이동할 수 있는 장점이 있다. 어떤 선택이 채택되든, 모든 개발자들의 동의를 얻어서, 같은 프로젝트에 있는 JSP 결과물들은 전체적으로 일관된 방식을 사용해야 된다.  주의할 점은, JSTL 예제는 로컬 자바 스크립트 변수로부터가 아닌, page 컨텍스트로부터 myBean 의 값을 가져온다는 것이 실질적으로 조금 다른 점이다.

마지막으로, JSP 표현식은 기반 스크립팅 언어의 문법에 의존하는, 같은 기능의 JSP 스크립틀릿보다 낫다. 예를 들어,

    <%= x %>

로 하는 게 아래 방법보다 좋다.

    <% out.print( x ); %>

공백 White Space

코드의 이해와 유지보수에 드는 노력을 줄이기 위해서 JSP 코드를 보기 좋게 들여쓰기하는데 공백을 사용한다. 특히, 빈 줄과 공백은 필요한 곳에서 JSP 의 여러 곳에 삽입되어야 한다.

빈 줄 Blank Lines

빈 줄은 출력에 원하지 않는 영향만 주지 않는다면 JSP의 가독성을 높이기 위해서 가끔 사용된다. 아래 예제에서, HTML <PRE> 블록 내에 두 개의 JSP 표현식 사이에 있는 빈 줄은 클라이언트의 브라우저에 HTML 출력 결과에서 한줄 더 생기게 만든다. 그러나 빈 줄이 <PRE> 블록 사이에 있지 않다면, 브라우저의 출력에 나타나지 않는다.

JSP 구문 클라이언트의 HTML 출력
    <pre>
    <%= customer.getFirstName() %>
    <%= customer.getLastName() %>
    </pre>
    
    Joe
    Block
    
    <pre>
    <%= customer.getFirstName() %>

    <%= customer.getLastName() %>
    </pre>
    
    Joe

    Block
    
    <%= customer.getFirstName() %>

    <%= customer.getLastName() %>
    
    Joe Block
    

빈 문자열 Blank Spaces

공백 문자( ; 역자주:공백은 길이가 1, 빈 문자열은 ""처럼 길이가 0)는 JSP 태그와 몸체 사이에 쓰여져야 된다. 예를 들어 다음

    <%= customer.getName() %>

코드는 아래 것보다 좋다.

    <%=customer.getName()%>

JSP 주석 태그와 주석을 분리하는 공백 문자들이 있어야 된다:

<%--
  - 여러 줄의 주석이 나뉘어지면, 각각의 줄은
  - 한 줄씩 차지한다.
  --%>
<%-- 짧은 주석 --%>

이름짓는 요령 Naming Conventions

이름짓는 요령을 적용하면, 프로젝트 내의 웹 컴포넌트 엘리먼트들을 쉽게 확인, 분류, 통합할 수 있다. 이 섹션에서, JSP에 적합한 요령을 살펴보자.

JSP 이름 JSP Names

JSP (파일) 이름은 언제나 소문자로 시작해야 한다. 여러 개의 단어로 구성될 수 있고, 이러한 경우 단어들은 모두 붙여쓰고, 이어지는 단어의 첫글자는 대문자로 쓴다. JSP 이름은 간단한 명사나 짧은 문장이 될 수 있다. 동사뿐인 JSP 명은 개발자에게 충분한 의미를 전달하지 못하기 때문에, 피하도록 한다. 예를 들면:

    perform.jsp

파일은 다음 파일보다 명확하지 않다.

    performLogin.jsp

JSP 이름에 동사가 들어가는 경우, 은연 중에 뒷쪽에서 처리하고 있다는 표시로 현재형을 쓴다:

    showAccountDetails.jsp

로 쓰는 게 아래 파일명 보다 좋다

    showingAccountDetails.jsp

태그 이름 Tag Names

태그 핸들러와 관련된 클래스에 대한 이름짓는 요령은 다음과 같다:

설명 클래스 명
XXX tag extra info (javax.servlet.jsp.tagext.TagExtraInfo를 상속함) XXXTEI
XXX tag library validator (javax.servlet.jsp.tagext.TagLibraryValidator를 상속함) XXXTLV
XXX tag handler interface (javax.servlet.jsp.tagext.Tag/IterationTag/BodyTag를 상속함) XXXTag
XXX tag handler implementation XXXTag

덧붙여, 태그 이름은 자바에 관련된 코드작성법에서 정한 클래스와 인터페이스 이름 짓는 요령을 따라서 정해야 된다.

태그 관련된 클래스와 다른 클래스와 더 분명하게 구분하기 위해서, 패키지 접미사(tags 또는 taglib)를 클래스의 패키지명에 적용한다. 예를 들면:

    com.mycorp.myapp.tags.XXXTag

태그 prefix 이름 Tag Prefix Names

태그 prefix 는 짧지만 의미가 담긴 명사를 사용해야 하고, 첫문자는 소문자로 해야한다. 태그 prefix 는 알파벳 문자만 포함해야 된다. 몇 가지 예를 들면 다음과 같다:

OK?
mytaglib no
myTagLib yes
MyTagLib no
MyTagLib1 no
My_Tag_Lib no
My$Tag$Lib no

XML 문법의 JSP 페이지 JSP Pages in XML Syntax

JSP 는 두가지 다른 문법을 제공한다: JSP 페이지를 작성하는 '표준 문법'과 JSP를 XML문서로 작성하는 'XML 문법'이 있다. 표준 문법을 사용하는 JSP 페이지들이 'JSP 페이지'로 많이 쓰인다. XML 문법으로 작성된 JSP는 'JSP 문서'라고 일컫는다. 이 기사는 우선적으로 JSP 페이지를 소개하지만, 많은 부분의 개념들이 JSP 문서에도 역시 적용될 수 있다. XML이 좀 더 유행하면 JSP 문서 사용도 많아질 것이라고 기대된다. JSP 2.0 스펙에서는 더 많은 XML 문법 친화적인 것들이 소개될 것이다.

주의할 것은 XML 문법을 이용해서 JSP를 만드는 것과 JSP로 XML 결과(view)를 만들어 내는 것과 혼동해서는 안된다. 페이지 제작도구는 JSP를 만들기 위해 표준 또는 XML 문법을 사용한다. 그리고 나서 컨테이너는 JSP를 XML 결과로 변환하고, 이것은 태그 라이브러리 밸리데이터(유효성 검증기)에서 확인한다.

JSP 문서 구조 JSP Document Structure

JSP 문서는 다음과 같은 기본 구조를 갖는다:

    <? xml version="1.0" ?>
    <!--
      - Author(s):
      - Date:
      - Copyright Notice:
      - @(#)
      - Description:
      -->
    <jsp:root   xmlns:jsp="http://java.sun.com/JSP/Page"
                xmlns:prefix1="URI-for-taglib1"
                xmlns:prefix2="URI-for-taglib2"
                version="1.2">
        JSP Document ...
    </jsp:root>

첫 줄은, 이 페이지가 XML 문서라고 정의하는 선택적 XML 프롤로그이다. 다음으로 오는 것은 문서에 대한 주석이다. <jsp:root> 엘리먼트는 이것이 JSP 문서임을 정의하고, 반드시 이 엘리먼트가 루트 엘리먼트로 나타나야 된다. jsp 이름공간은 반드시 가져와야 되고, 모든 태그 라이브러리는 이 루트 엘리먼트를 사용해서 가져와야 된다. 버전 속성이 필요하고, 어떤 버전을 사용할 지를 정해준다. JSP 문서의 실제 내용은 <jsp:root> 엘리먼트의 서브엘리먼트에 나타난다. 표준 XML 들여쓰기 룰에 따라서 문서 전체적으로 일관되게 적용하는 들여쓰기 단위는 4개의 공백문자이다.

JSP 문서는 형식이 잘 갖춰진 XML 문서이기 때문에, <% %> 와 같은 엘리먼트는 <jsp:scriptlet /> 같이 XML로 바꿔서 표기해야 된다. 자세한 것은 JSP 스펙을 보기 바란다.

XML 주석 XML Comments

JSP 스펙은 XML 스타일의 주석을 어떻게 처리할 지에 대해 불분명하기 때문에, 주석이 클라이언트로 안전하게 전달되기 위해서는, <jsp:text>로 다음과 같이 감싸주어야 된다:

    ...
    <jsp:text><![CDATA[
        <!--
          - Multiline comment
          - to be sent to client.
          -->
    ]]></jsp:text>
    ...

JSP 문서 내의 자바 코드 Java Code in JSP Documents

선언문, 스크립틀릿, 표현식에서 자바 코드를 쓰려고 할 때, 코드가 문서의 구조를 망가뜨리지 않는다면, CDATA엘리먼트를 사용한다.

    ...
    <jsp:scriptlet>
        for( int level = 0; level < 3; level++ ) {
    </jsp:scriptlet>
    <tr>
        <td>
            <jsp:expression><![CDATA[
                "<h" + level + ">Text</h" + level + ">"
            ]]></jsp:expression>
        </td>
    </tr>
    <jsp:scriptlet>
        }
    </jsp:scriptlet>
    ...

표준 문법에서와 다르게, XML 들여쓰기 법칙은 엘리먼트의 내용과 상관없이 준수되어야 한다.

프로그래밍 습관 Programming Practices

일반적으로, 다음과 같은 이유로 JSP 페이지에 자바 코드(선언문, 스크립틀릿, 표현식) 쓰기를 피한다:

  • JSP 페이지의 자바 코드 문법 에러는 페이지가 배치되기 전까지 발견되지 않는다. 반면에, 태그 라이브러리와 서블릿에 있는 문법 에러는 배치 이전에 발견된다.
  • JSP 페이지 내의 자바 코드는 디버깅하기 힘들다.
  • JSP 페이지 내의 자바 코드는 유지보수하기 힘들다. 특히 자바 전문가가 아니라면 더욱 더 그렇다.
  • 보통 복잡한 비즈니스 로직과 프리젠테이션 로직을 섞어놓지 않는 것이 납득이 가는 습관이다. JSP는 우선적으로 프리젠테이션 로직을 목적으로 한다.
  • 자바 코드가 포함된 코드와 HTML과 다른 스크립트 명령어가 섞여있다면 더 읽기 어려워진다.
  • JSP 2.0 은 더 단순한 표현 언어를 덕분에 스크립틀릿의 중요도를 낮추었다. JSP 에서 JSP 2.0 스타일로 쉽게 옮기기 위해서는 페이지에서 자바 코드를 사용하지 않는 것이 좋다.

자바 BluePrints의 엔터프라이즈 섹션에 있는 더 자세한 정보와 가이드라인을 참고하기 바란다.

자바빈즈 초기화 JavaBeans Initialization

JSP는 JavaBeanTM의 프로퍼티로 증명되는 모든 PropertyDescriptor를 초기화하기 위해 편리한 엘리먼트를 제공한다. 예를 들면:

    <jsp:setProperty name="bankClient" property="*"/>

그러나, 주의해서 사용해야 한다. 첫째로, 빈이 프로퍼티를 갖고 있다, 즉 amount 프로퍼티가 있다고 하고, 현재 ServletRequest 객체에 파라미터(amount)가 없거나 파라미터 값이 ""라고 한다면, 아무것도 하지 않는다: JSP는 빈의 특정 프로퍼티에 null를 할당하지도 않는다. bankClient 빈에 amount의 기존 값이 무엇이든지 간에 영향을 받지 않는다. 둘째로, PropertyEditors를 선언하지 않은 비-요소적인 프로퍼티는 ServletRequest 객체의 스트링 값에서 암묵적으로 초기화 되지 않기 때문에, 명시적인 변환이 필요하다. 세째로, 만일 어플리케이션이 주의 깊게 설계되지 않았다면, 악의를 가진 사용자는 추가적으로 요청 파라미터를 덧붙여서 빈의 사용하지 말아야할 프로퍼티 값을 설정할 수 있다.

깔끔한 코드를 위해서 jsp:setProperty 태그에 property="*"를 사용한다면, jsp:setProperty 태그 이전에 ServletRequest 객체를 통해서 받아와야 할, 빈을 초기화하기 위한 파라미터들에 대해 주석을 달기를 권한다. 다음 예제에서는 bankClient 빈을 초기화하기 위해서 firstNamelastName 파라미터가 필요하다는 것을 주석에서 읽을 수 있다:

<%--
  -  ServletRequest에서 firstName와 lastName를 요구
  --%>
<jsp:setProperty name="bankClient" property="*" />

JSP 내장 객체 JSP Implicit Objects

API 호출을 통해서 객체를 참조하기 보다는 JSP 내장 객체를 직접 사용하는 것이 좋다. 그래서 ServletContext 인스턴스에 의해 제공되는 초기 파라미터에 접근하기 위해 다음을 쓰는 대신에

    getServletConfig().getServletContext().getInitParameter("param")

기존 내장 객체를 사용하는 게 낫다:

    application.getInitParameter("param")

초기 파라미터 값이 출력이 되어야 하는 경우에는, JSTL로 접근해서 출력하는 것이 더 좋다:

    <c:out value="${initParam['param']}" />

인용부호 Quoting

일정한 인용부호의 사용을 채택한다. 인용부호는 작은따옴표 ' 대신 큰따옴표 " 를 사용한다.

불규칙한 인용부호 좋은 인용부호 사용
<%@ page import='javabeans.*'%>
<%@ page import="java.util.*" %>
<%@ page import="javabeans.*" %>
<%@ page import="java.util.*" %>

예외적인 경우는 작은따옴표가 필요할 때이다. 예를 들어서 스크립트 언어에서 큰따옴표를 사용하는 경우를 들 수 있다:

    <jsp:include page='<%= getFoodMenuBar("Monday") %>' />

커스텀 태그 사용하기 Using Custom Tags

만일 커스텀태그가 몸체가 없다면, 컨텐트는 (생략해서 "JSP" 기본값으로 하지 말고) empty라고 명확하게 선언되어야 한다. 태그 라이브러리 설명서에서 다음과 같이 정해준다:

<tag>
    <name>hello</name>
    <tag-class>com.mycorp.util.taglib.HelloTagSupport</tag-class>
    <body-content>empty</body-content>
    ...
</tag>

이렇게 하면 JSP 컨테이너는 태그 몸체가 무조건 비어야 되며 파싱할 어떤 JSP 문법도 포함하지 않아야 된다고 인식한다. 효과는 빈 몸체를 파싱하기 위해서 불필요하게 자원의 할당이 이뤄지는 것을 제거한다.

빈 태그는, 가독성향상을 위해 열고 닫는 XML 엘리먼트 쌍으로 표시하기보다는, 짧은 XML 엘리먼트로 표시한다. 그래서

    <myTag:hello />

라고 표기하는 것이 아래보다 낫다.

    <myTag:hello></myTag:hello>

TagExtraInfo와 TagLibraryValidator 사용 Use of TagExtraInfo and TagLibraryValidator

때때로, 태그 라이브러리를 사용하는데 TLD 하나로 유효성을 검증할 수 없는 경우가 있다. 그 때는 TLD에 등록된 TagExtraInfo 클래스나 TagLibraryValidator 클래스를 사용해서, 변환할 때 태그 라이브러리에 있는 에러를 잡아낼 수 있다.

자바스크립트 사용 Use of JavaScriptTM

스크립트가 제대로 돌아가기 위해서는 자바스크립트는 브라우저 타입의 특성과 관계없어야 된다.

동작을 한다면, JSP에서 자바스크립트 코드를 독립적인 파일로 분리하고, 다음과 같이 JSP에서 자바스크립트를 불러쓰는 방식은 좋은 생각이다:

<script language=javascript src="/js/main.js">

이렇게 하면 자바스크립트의 재사용성도 향상되고, 여러 JSP 사이에 일관된 습성의 자바스크립트를 유지할 수 있고, JSP페이지의 복잡성을 줄여준다.

캐스케이딩 스타일 시트 CSS Cascading Style Sheets

CSS를 사용해서 헤딩, 테이블 등의 공통적인 특성을 중앙에서 제어하도록 한다. 이 방법은 사용자들에게 프리젠테이션의 일관성을 향상시키고, 유지보수 노력과 JSP 페이지의 코드 사이즈를 줄여준다. 그래서, 다음과 같이 HTML 태그에서 스타일 정보를 끼어쓰지 말고:

<H1><FONT color="blue">Chapter 1</FONT></H1>
...
<H1><FONT color="blue">Chapter 2</FONT></H1>
...

하나의 스타일 시트 파일myJspStyle.css에 다음과 같은 스타일 정보를 정의한다:

H1 { color: blue }

그리고 JSP 페이지에 스타일 시트를 적용한다:

<link rel="stylesheet" href="css/myJspStyle.css" type="text/css">
...
<H1>Chapter 1</H1>
...
<H1>Chapter 2</H1>
...

컴포짓 뷰 패턴 사용 Use of Composite View Patterns

여러 JSP 페이지에서 반복되는 고정되고 복잡한 구조가 요구될 때, 이것을 다루는 방법으로 컴포짓 뷰 패턴(Composite View pattern;자바 Blueprints 의 패턴 섹션 참고)을 사용해서, 조각조각으로 나눠서 처리하는 법이 있다. 예를 들어, 프리젠테이션 구조에서 JSP 는 때때로 다음과 같은 로직 레이아웃을 갖고 있다:

header
menu bar main body
footnote
footer

이런 방식으로, 컴포짓 JSP 는 각각 분리된 JSP로 구현되는 다른 모듈로 나뉠 수 있다. 구성성분이 되는 JSP는 서블릿으로 변환할 때나 요청시에 include JSP 태그를 사용해서 컴포짓 JSP 의 적당한 위치에 놓이게 된다. 보편적으로, 독립적으로 요청되지 않는 페이지를 불러쓰는, 정적인 include 지시자를 사용할 때는 .jspf 확장자를 사용하고, 웹 어플리케이션 (war)에서 /WEB-INF/jspf/ 디렉토리에 놓아둘 것을 기억하기 바란다. 예를 들면 다음과 같다:

<%@ include file="/WEB-INF/jspf/header.jspf" %>
...
<%@ include file="/WEB-INF/jspf/menuBar.jspf" %>
...
<jsp:include page="<%= currentBody %>" />
...
<%@ include file="/WEB-INF/jspf/footnote.jspf" %>
...
<%@ include file="/WEB-INF/jspf/footer.jspf" %>
...

다른 추천사항 Other Recommendations

이 문서에서, JSP 코드와 웹 컴포넌트를 작성하는데 보다 유지보수하기 쉽고, 일관된 추천 코드 작성법 한 세트를 제시했다. 이 주제에 보다 더 관심있다면, 더 많은 최고의 작성법이 존재한다. 예를 들어, JSP 1.2 스펙에서는 다음을 추천한다:

  • 새로운 내장 객체 선언하기
  • 벤더 고유의 안내서 읽기
  • 커스텀 태그 라이브러리 사용하기

덧붙여서, 자바 BluePrints 는 더 큰 스케일에서 최고의 작성법을 제공한다. (패턴 섹션에서 보여지는) 모델-뷰-컨트롤러 패턴과 같은 것을 예로 들 수 있다.

우리는 이 문서에서 제시한 작성요령에 대한 여러분의 의견에 관심이 있습니다. JSP 코드 작성요령에 대해서 여러분의 다른 의견이 있다면 나누면 좋겠습니다. 피드백은 여기로 보내기 바랍니다. jsp-codeconv-comments@sun.com.

아래에, 위에서 설명한 코드 작성요령을 적용해 놓은 완전한 웹 어플리케이션의 소스를 소개한다. 이 어플리케이션의 WAR 파일을 여기 에서 다운로드 받을 수 있다.

코드 예제 Code Examples

여기에 있는 웹 어플리케이션 예제는 이 문서에 있는 내용이 어떻게 적용되는지 보여주기 위한 것이다. .war 파일에는 다음의 소스코드 파일과 디렉토리 구조로 되어 있다:

/index.jsp
/WEB-INF/classes/codeconv/GetResultsTag.class
/WEB-INF/jspf/footer.jspf
/WEB-INF/lib/jstl.jar
/WEB-INF/lib/standard.jar
/WEB-INF/tld/lotterylib.tld
/WEB-INF/web.xml

index.jsp 페이지에서는 오늘까지 포함된 이번 달의 모의 복권 추첨결과를 보여주는 커스텀 태그 라이브러리( lotterylib.tld )를 사용한다. 그리고, HTML 에 보여질 결과를 형식화하고, 반복하기 위해서 JSTL을 사용한다.

예제는 JSP 1.2 과 JSTL 1.0 을 사용한다.

/index.jsp 파일 소스

<%--
  - Author: Mark Roth
  - Date: January 17, 2003
  -
  - Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
  -
  - This software is the proprietary information of
  - Sun Microsystems, Inc.
  - Use is subject to license terms.
  -
  - @(#)
  - Description: Renders fake lottery results for the current month.
  --%>

<%@ taglib prefix="c"
    uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt"
    uri="http://java.sun.com/jstl/fmt" %>
<%@ taglib prefix="lottery"
    uri="http://codeconv/lotterylib" %>

<html>
    <head>
        <title>Fake Lottery Results for this Month
        </title>
    </head>
    <body>
        <jsp:useBean id="now" class="java.util.Date" />
        <h1>
            Fake Lottery Results for
            <fmt:formatDate value="${now}"
                pattern="MMMM yyyy" />
        </h1>
        <hr />
        <table border="1" cellpadding="5">
            <%-- Store current month and year --%>
            <c:set var="currentMonth">
                <fmt:formatDate value="${now}" pattern="M" />
            </c:set>
            <c:set var="currentYear">
                <fmt:formatDate value="${now}"
                    pattern="yyyy" />
            </c:set>

            <%-- Determine last day to report results for --%>
            <c:set var="endDay">
                <fmt:formatDate value="${now}" pattern="d" />
            </c:set>

            <%-- Display one row for each day --%>
            <c:forEach var="day" begin="1" end="${endDay}">
                <%-- Construct date --%>
                <c:set var="dateString">
                    <c:out value="${currentMonth}/${day}/${
                        currentYear}" />
                </c:set>

                <fmt:parseDate  var="date"
				    value="${dateString}"
                        pattern="M/d/yyyy" />
                <jsp:useBean id="date" class="java.util.Date"
                    />

                <tr>
                    <td>
                        <c:out value="${dateString}" />
                    </td>
                    <%-- Retrieve and display fake results
                            for this day --%>
                    <lottery:getResults var="numbers"
                        date="<%= date %>" />
                    <c:forEach var="number" items="${numbers}">
                        <td>
                            <c:out value="${number}" />
                        </td>
                    </c:forEach>
                </tr>
            </c:forEach>
        </table>
        <%@ include file="/WEB-INF/jspf/footer.jspf" %>
    </body>
</html>

/WEB-INF/classes/codeconv/GetResultsTag.java 소스

/*
 * codeconv.GetResultsTag
 *
 * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
 *
 * This software is the proprietary information of
 * Sun Microsystems, Inc.
 * Use is subject to license terms.
 *
 * Version: @(#)
 *
 * Date: January 13, 2003
 *
 */

package codeconv;

import java.util.Date;
import java.util.Random;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * Retrieves fake lottery results for the given date and
 * returns the result in the given attribute
 *
 * @version @(#)
 * @author Mark Roth
 */
public class GetResultsTag extends TagSupport {

    /** The maximum number that can be drawn */
    private static final int MAX_NUMBER = 58;

    /** The number of numbers that are drawn */
    private static final int NUMBER_COUNT = 6;

    /** The variable to store results to */
    private String var;

    /** The date on which the numbers were drawn */
    private Date date;

    /** The PageContext, used to return the result */
    private PageContext pageContext;

    /**
     * Remember the PageContext so it can be used later
     * to return the result.
     *
     * @param pageContext The page context of the calling page
     */
    public void setPageContext( PageContext pageContext ) {
        this.pageContext = pageContext;
    }

    /**
     * Returns fake lottery results for the given date.
     *
     * @return EVAL_PAGE so the rest of the page is evaluated.
     */
    public int doEndTag() throws JspException {
        // Generate the (fake) results.
        Random random = new Random( this.date.getTime() );
        int[] result = new int[NUMBER_COUNT];
        for( int i = 0; i < NUMBER_COUNT; i++ ) {
            result[i] = random.nextInt( MAX_NUMBER ) + 1;
        }

        // Place the result in the scoped attribute named by 'var'.
        pageContext.setAttribute( this.var, result );

        return EVAL_PAGE;
    }

    /**
     * Setter for date
     *
     * @param date The fake date on which the lottery numbers
     * were drawn
     */
    public void setDate( Date date ) {
        this.date = date;
    }

    /**
     * Getter for date
     *
     * @return The fake date on which the lottery numbers
     * were drawn
     */
    public Date getDate() {
        return this.date;
    }

    /**
     * Setter for var
     *
     * @param var The name of the variable to store the result in
     */
    public void setVar( String var ) {
        this.var = var;
    }

    /**
     * Getter for var
     *
     * @return The name of the variable to restore the result in
     */
    public String getVar() {
        return this.var;
    }
}

/WEB-INF/jspf/footer.jspf 소스

<%--
  - Author: Mark Roth
  - Date: January 17, 2003
  -
  - Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
  -
  - This software is the proprietary information of
  - Sun Microsystems, Inc.
  - Use is subject to license terms.
  -
  - @(#)
  - Description: Sample Footer that can be included on pages.
  - Assumes JSTL fmt taglib is imported.
  --%>
<!-- common footer -->
<hr />
<jsp:useBean id="footerNow" class="java.util.Date" />
<i>
    Last Updated:
    <fmt:formatDate type="both" value="${footerNow}"
                    dateStyle="full" timeStyle="full" />
</i>

/WEB-INF/tld/lotterylib.tld 파일 소스

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

<!--
  - Author: Mark Roth
  - Date: January 17, 2003
  -
  - Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
  -
  - This software is the proprietary information of
  - Sun Microsystems, Inc.
  - Use is subject to license terms.
  -
  - @(#)
  - Description: Tag Library for fake lottery results.
  -->

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>lottery</short-name>
    <uri>http://codeconv/lotterylib</uri>
    <display-name>FakeLotteryTaglib</display-name>
    <description>
        Tag Library for fake lottery results.
    </description>

    <tag>
        <name>getResults</name>
        <tag-class>codeconv.GetResultsTag</tag-class>
        <body-content>empty</body-content>
        <display-name>getResults</display-name>
        <description>
            Retrieve an array of fake lottery results for the given
            date and store them in the given scoped attribute.
        </description>
        <variable>
            <name-from-attribute>var
                </name-from-attribute>
            <declare>true</declare>
            <description>
                The fake lottery results for the given date.
            </description>
        </variable>
        <attribute>
            <name>var</name>
            <required>true</required>
            <description>
                The name of the variable to store the results in.
            </description>
        </attribute>
        <attribute>
            <name>date</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.util.Date</type>
            <description>
                The date on which the fake lottery numbers
                    were drawn.
            </description>
        </attribute>
        <example><![CDATA[
            <lottery:getResults var="numbers"
                date="${date}" />
        ]]></example>
    </tag>
</taglib>

/WEB-INF/web.xml 소스

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<!--
  - Author: Mark Roth
  - Date: January 17, 2003
  -
  - Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
  -
  - This software is the proprietary information of
  - Sun Microsystems, Inc.
  - Use is subject to license terms.
  -
  - @(#)
  - Description: Web Deployment Descriptor for JSP 1.2 fake
  - lottery example
  -->

<web-app>
    <display-name>FakeLotteryExample</display-name>
    <description>
        JSP 1.2 example application that illustrates correct JSP
        coding style.
    </description>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <taglib>
        <taglib-uri>http://codeconv/lotterylib</taglib-uri>
        <taglib-location>/WEB-INF/tld/lotterylib.tld
            </taglib-location>
    </taglib>
</web-app>

감사의 말 Acknowledgments

이 문서의 이전 드래프트에 소중한 조언을 제공해 주신 Gregory Murray (Java BluePrints Team), Damian Fauth (Sun Java Center), Kate Morris (Sun Java Center) 님들께 감사드립니다.

References

  1. Code Conventions for the Java Programming Language.
  2. JSP best practices.
  3. Hans's Top Ten JSP Tips.
  4. JavaServer Pages Specification version 1.2.
  5. Alur D., Crupi J., Malks D., Core J2EE Patterns: Best Practices and Design Strategies, Sun Microsystems Press, Prentice Hall Inc., 2001.
  6. Naming Conventions for Enterprise Applications.
  7. JavaServer Pages Standard Tag Library.
  8. Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns: Elements of Reusable Software, Addison-Wesley, 1995.
  9. JavaServerTM Faces Technology.
  10. Java BluePrints.
  11. Designing Enterprise Applications with the J2EETM Platform, 2nd ed..
개인의 특성이 무시되는 획일화된 조직 보다
개인의 차이를 중시할 때 팀워크를 기대할 수 있다.
팀의 성공을 위해서는
조직 구성원들이 지닌 성향과 능력의 차이를 인정하는 것만으로는 부족하다.
그러한 차이를 강조하고 상호 교류로 시너지를 내도록 함으로써
팀 성과를 높이는 힘을 얻을 수 있다.

- 그레고리 후츠소 박사(Toos for team excellence)

다양한 사람이 모이면 크고 작은 문제와 갈등은 극히 자연스러운 현상입니다.
좋은 팀워크는 아무런 문제도 없는 조용한 조직보다
구성원간 의견의 충돌과 갈등의 해소가 끊이지 않는 시끄러운 조직에서 더 잘 형성됩니다.
갈등을 회피하려는 지나친 배려가 팀웍을 해칩니다.
팀 분위기에 지나치게 얽매이게 되면 서로의 생각을 솔직하게 얘기하지 못하고
의견의 충돌을 회피하는데 더 큰 관심을 가지게 됩니다.
팀웍 형성을 위해선 제 목소리를 내게 만들어줘야 합니다. (‘프렌드십 경영’에서)
이제 우리는 아주 쉽게 이 세상의 행복수치를 증가시킬 수 있다.
어떻게 그렇게 할 수 있냐고?
외롭거나 용기를 잃은 누군가에게 진심으로 존중하는 몇 마디의 말을 건네는 것,
그것으로 충분하다.
오늘 누군가에게 무심코 건넨 친절한 말을,
당신은 내일이면 잊어버릴지도 모른다.
하지만 그 말을 들은 사람은 일생 동안 그것을 소중하게 기억할 것이다.

- 데일 카네기(Dale Carnegie)

이 세상을 바꾸는 것, 다른 사람의 마음을 사는 일이
꼭 그렇게 거창하고 어려운 일이 아닐 수도 있음을 말해주고 있습니다.
진심으로 사람을 존중하고 남을 배려하는 마음을 갖는 것,
그리고 그것을 실천하는 작은 노력들만으로도 이 세상은 살기 좋은 곳,
행복한 세상으로 바뀌게 됩니다.

Barack Obama has been sworn in as the 44th US president. Here is his inauguration speech in full.

(버락오마바는 44대 미국 대통령으로 선서했다. 그의 취임연설문 전문이다.)

My fellow citizens:
(친애하는 국민여러분)

I stand here today humbled by the task before us, grateful for the trust you have bestowed, mindful of the sacrifices borne by our ancestors. I thank President Bush for his service to our nation, as well as the generosity and co-operation he has shown throughout this transition.
(본인은 오늘 이 자리에 우리의 직무 앞에 겸허하게 되며, 여러분이 주신 신뢰에 감사드리며, 우리의 조상의 희생을 마음속에 기리고 있습니다. 본인은 부시대통령의 우리나라를 위한 노고와 이행과정에서 보여준 너그러움과 협력에 감사합니다.)
bumble : <사람의 기분을> 겸허하게 하다
bestow : 주다, 수여하다, 증여하다 (give 유의어)
transition : 변천, 이행, 변화
 

Forty-four Americans have now taken the presidential oath. The words have been spoken during rising tides of prosperity and the still waters of peace. Yet, every so often the oath is taken amidst gathering clouds and raging storms.
(지금까지 44명의 미국인이 대통령선서를 하고 있습니다. 그 선서들은 번영의 조수가 올라가고 평화의 물이 흐르는 시절에 이루어졌습니다. 그러나 종종 구름이 모이고 맹렬한 폭풍이 일어나던 시기에 행해졌습니다.)
amidst = amid : <문어> ~의 한복판에, ~이 한창일 때에
raging : 격노한, 미친듯이 사나운

At these moments, America has carried on not simply because of the skill or vision of those in high office, but because we, the people, have remained faithful to the ideals of our forbears, and true to our founding documents.
(이 순간에 미국이 지금까지 있게 된 것은 단순히 고위층의 기술 또는 안목 때문만이 아니라 국민들이 조상의 이상에 대한 충실함과 건국이념에 진실함을 지니고 있었기 때문입니다.)
forbear = ancestor

So it has been. So it must be with this generation of Americans.
(그래왔습니다. 이 세대의 미국에서도 반드시 그렇게 해야할 것입니다.)



Serious challenges
(심각한 도전)

That we are in the midst of crisis is now well understood. Our nation is at war, against a far-reaching network of violence and hatred. Our economy is badly weakened, a consequence of greed and irresponsibility on the part of some, but also our collective failure to make hard choices and prepare the nation for a new age. Homes have been lost; jobs shed; businesses shuttered. Our healthcare is too costly; our schools fail too many; and each day brings further evidence that the ways we use energy strengthen our adversaries and threaten our planet.
(잘 이해하고 있듯이 지금 우리는위기에 처해 있습니다. 우리나라는 넓게 퍼져있는 폭력과 증오의 조직과 대항하여 전쟁을 하고 있습니다. 일부의 탐욕과 무책임함의 결과, 이 뿐만이 아니라 심사숙고했던 결정과 새로운 세대를 위한 국가 준비의 총체적인 실패들로 우리의 경제는 심하게 약해졌습니다. 집을 잃고, 직장에서 해고되고, 회사는 종업을 하였다. 우리의 건강보험은 너무 비싸고, 학교도 너무 많이 실패하였다. 매일 우리의 적에 힘을 실어주고 지구를 위협하는데 우리의 에너지를 사용하고 있다는 또 다른 증거들이 나타나고 있다.)
consequence : 결과
irresponsibility : 무책임
further : 또 다른
shed : (명)오두막, (동) 흘리다, 솟구치게 하다, 해고하다, 이혼하다, ... 등등
shutter : (명) 셔터, 덧문, 뚜껑, (타동) 문을 달다, 셔터를 달다, (자동) 종업하다, 폐쇄하다.
adversary : 적, 반대자, 적의, 적수의

These are the indicators of crisis, subject to data and statistics. Less measurable but no less profound is a sapping of confidence across our land - a nagging fear that America's decline is inevitable, that the next generation must lower its sights.
(자료와 통계가 위기를 나타내주고 있습니다.
sap :
confidence :
nag :
decline :
inevitable :


Today I say to you that the challenges we face are real. They are serious and they are many. They will not be met easily or in a short span of time. But know this, America - they will be met.

On this day, we gather because we have chosen hope over fear, unity of purpose over conflict and discord.

On this day, we come to proclaim an end to the petty grievances and false promises, the recriminations and worn-out dogmas, that for far too long have strangled our politics.

Nation of 'risk-takers'

We remain a young nation, but in the words of scripture, the time has come to set aside childish things. The time has come to reaffirm our enduring spirit; to choose our better history; to carry forward that precious gift, that noble idea, passed on from generation to generation: the God-given promise that all are equal, all are free, and all deserve a chance to pursue their full measure of happiness.

In reaffirming the greatness of our nation, we understand that greatness is never a given. It must be earned. Our journey has never been one of short-cuts or settling for less. It has not been the path for the faint-hearted - for those who prefer leisure over work, or seek only the pleasures of riches and fame. Rather, it has been the risk-takers, the doers, the makers of things - some celebrated but more often men and women obscure in their labour, who have carried us up the long, rugged path towards prosperity and freedom.

For us, they packed up their few worldly possessions and travelled across oceans in search of a new life.

For us, they toiled in sweatshops and settled the West; endured the lash of the whip and ploughed the hard earth.

For us, they fought and died, in places like Concord and Gettysburg; Normandy and Khe Sahn.

'Remaking America'

Time and again these men and women struggled and sacrificed and worked till their hands were raw so that we might live a better life. They saw America as bigger than the sum of our individual ambitions; greater than all the differences of birth or wealth or faction.

This is the journey we continue today. We remain the most prosperous, powerful nation on Earth. Our workers are no less productive than when this crisis began. Our minds are no less inventive, our goods and services no less needed than they were last week or last month or last year. Our capacity remains undiminished. But our time of standing pat, of protecting narrow interests and putting off unpleasant decisions - that time has surely passed. Starting today, we must pick ourselves up, dust ourselves off, and begin again the work of remaking America.

For everywhere we look, there is work to be done. The state of our economy calls for action, bold and swift, and we will act - not only to create new jobs, but to lay a new foundation for growth. We will build the roads and bridges, the electric grids and digital lines that feed our commerce and bind us together. We will restore science to its rightful place, and wield technology's wonders to raise healthcare's quality and lower its cost. We will harness the sun and the winds and the soil to fuel our cars and run our factories. And we will transform our schools and colleges and universities to meet the demands of a new age. All this we can do. All this we will do.

Restoring trust

Now, there are some who question the scale of our ambitions - who suggest that our system cannot tolerate too many big plans. Their memories are short. For they have forgotten what this country has already done; what free men and women can achieve when imagination is joined to common purpose, and necessity to courage.

What the cynics fail to understand is that the ground has shifted beneath them - that the stale political arguments that have consumed us for so long no longer apply.

The question we ask today is not whether our government is too big or too small, but whether it works - whether it helps families find jobs at a decent wage, care they can afford, a retirement that is dignified. Where the answer is yes, we intend to move forward. Where the answer is no, programmes will end. And those of us who manage the public's dollars will be held to account - to spend wisely, reform bad habits, and do our business in the light of day - because only then can we restore the vital trust between a people and their government.

Nor is the question before us whether the market is a force for good or ill. Its power to generate wealth and expand freedom is unmatched, but this crisis has reminded us that without a watchful eye, the market can spin out of control - that a nation cannot prosper long when it favours only the prosperous. The success of our economy has always depended not just on the size of our gross domestic product, but on the reach of our prosperity; on the ability to extend opportunity to every willing heart - not out of charity, but because it is the surest route to our common good.

'Ready to lead'

As for our common defence, we reject as false the choice between our safety and our ideals. Our founding fathers, faced with perils that we can scarcely imagine, drafted a charter to assure the rule of law and the rights of man, a charter expanded by the blood of generations. Those ideals still light the world, and we will not give them up for expedience's sake. And so to all the other peoples and governments who are watching today, from the grandest capitals to the small village where my father was born: know that America is a friend of each nation and every man, woman, and child who seeks a future of peace and dignity, and we are ready to lead once more.

Recall that earlier generations faced down fascism and communism not just with missiles and tanks, but with the sturdy alliances and enduring convictions. They understood that our power alone cannot protect us, nor does it entitle us to do as we please. Instead, they knew that our power grows through its prudent use; our security emanates from the justness of our cause, the force of our example, the tempering qualities of humility and restraint.

We are the keepers of this legacy. Guided by these principles once more, we can meet those new threats that demand even greater effort - even greater co-operation and understanding between nations. We will begin to responsibly leave Iraq to its people, and forge a hard-earned peace in Afghanistan. With old friends and former foes, we will work tirelessly to lessen the nuclear threat, and roll back the spectre of a warming planet. We will not apologise for our way of life, nor will we waver in its defence, and for those who seek to advance their aims by inducing terror and slaughtering innocents, we say to you now that our spirit is stronger and cannot be broken; you cannot outlast us, and we will defeat you.

'Era of peace'

For we know that our patchwork heritage is a strength, not a weakness. We are a nation of Christians and Muslims, Jews and Hindus - and non-believers. We are shaped by every language and culture, drawn from every end of this earth; and because we have tasted the bitter swill of civil war and segregation, and emerged from that dark chapter stronger and more united, we cannot help but believe that the old hatreds shall someday pass; that the lines of tribe shall soon dissolve; that as the world grows smaller, our common humanity shall reveal itself; and that America must play its role in ushering in a new era of peace.

To the Muslim world, we seek a new way forward, based on mutual interest and mutual respect. To those leaders around the globe who seek to sow conflict, or blame their society's ills on the West - know that your people will judge you on what you can build, not what you destroy. To those who cling to power through corruption and deceit and the silencing of dissent, know that you are on the wrong side of history; but that we will extend a hand if you are willing to unclench your fist.

To the people of poor nations, we pledge to work alongside you to make your farms flourish and let clean waters flow; to nourish starved bodies and feed hungry minds. And to those nations like ours that enjoy relative plenty, we say we can no longer afford indifference to the suffering outside our borders; nor can we consume the world's resources without regard to effect. For the world has changed, and we must change with it.

'Duties'

As we consider the road that unfolds before us, we remember with humble gratitude those brave Americans who, at this very hour, patrol far-off deserts and distant mountains. They have something to tell us, just as the fallen heroes who lie in Arlington whisper through the ages. We honour them not only because they are the guardians of our liberty, but because they embody the spirit of service; a willingness to find meaning in something greater than themselves. And yet, at this moment - a moment that will define a generation - it is precisely this spirit that must inhabit us all.

For as much as government can do and must do, it is ultimately the faith and determination of the American people upon which this nation relies. It is the kindness to take in a stranger when the levees break, the selflessness of workers who would rather cut their hours than see a friend lose their job which sees us through our darkest hours. It is the firefighter's courage to storm a stairway filled with smoke, but also a parent's willingness to nurture a child, that finally decides our fate.

Our challenges may be new. The instruments with which we meet them may be new. But those values upon which our success depends - honesty and hard work, courage and fair play, tolerance and curiosity, loyalty and patriotism - these things are old. These things are true. They have been the quiet force of progress throughout our history. What is demanded then is a return to these truths.

What is required of us now is a new era of responsibility - a recognition, on the part of every American, that we have duties to ourselves, our nation, and the world, duties that we do not grudgingly accept but rather seize gladly, firm in the knowledge that there is nothing so satisfying to the spirit, so defining of our character, than giving our all to a difficult task.

'Gift of freedom'

This is the price and the promise of citizenship.

This is the source of our confidence - the knowledge that God calls on us to shape an uncertain destiny.

This is the meaning of our liberty and our creed - why men and women and children of every race and every faith can join in celebration across this magnificent mall, and why a man whose father less than 60 years ago might not have been served at a local restaurant can now stand before you to take a most sacred oath.

So let us mark this day with remembrance, of who we are and how far we have travelled. In the year of America's birth, in the coldest of months, a small band of patriots huddled by dying campfires on the shores of an icy river. The capital was abandoned. The enemy was advancing. The snow was stained with blood. At a moment when the outcome of our revolution was most in doubt, the father of our nation ordered these words be read to the people:

"Let it be told to the future world... that in the depth of winter, when nothing but hope and virtue could survive... that the city and the country, alarmed at one common danger, came forth to meet [it]."

America. In the face of our common dangers, in this winter of our hardship, let us remember these timeless words. With hope and virtue, let us brave once more the icy currents, and endure what storms may come. Let it be said by our children's children that when we were tested we refused to let this journey end, that we did not turn back nor did we falter; and with eyes fixed on the horizon and God's grace upon us, we carried forth that great gift of freedom and delivered it safely to future generations.

Thank you. God bless you. And God bless the United States of America.
 

출처 : BBC


[출처 : 네이버지식]

토끼를 키우시기전에 . 생각할것이 있어요 .

청소를 날마다 해줄수 있는지 (하루라도 빼먹으면 냄새가 그냥~-ㅇ-;;)

털갈이 때는 브러싱을 날마다 해줄수 있는지 (정말 자비 없이 빠집니다 ;;)

배고플때 먹이를 항상 줄수 있는 자금이 있는지 (월 5만원선 잡으세요 넉넉히 ..)

적절한 용품을 구입할 공간과 자금은 있는지 .(적어도 10만원~20만원)

또한 아플때 병원에 가줄수 있는지

어릴때 계속 작을 것이라고 생각해서 분양을 했다가

커졋다고 파양하거나 산에 풀어버리거나 농장으로 보내버리는 경우가 있습니다 .

파양할경우 .. 토끼도 알아요 가족이 자신을 버렷다는 것을 상처를 받습니다

산에 풀어준다고 자연으로 돌아건것일까요 ?100% 죽어 버립니다 .

토끼는 강하지 못해요 .

농장으로 가면 토끼가 신나게 뛰어놀수 잇을까요 ?

말이 좋아서 농장이지 사실은 토끼 새끼를 만드는 공장입니다 .

죽어 나가는 토끼들이 수도 없어요 .

농장이라고 푸르고 넓은 풀밭에 풀어서 키우는 것이 아닙니다 .

알을 낳는 닭과 같이 케이지에서만 갇혀서 지내고

죽을때까지 새끼만 낳다가 금방 죽어버리는 것이 허다합니다 .

가끔은 보신용으로 보내기도 한다는군요 .

 

토끼는

생각보다 많이 크고

생각보다 많이 먹고

생각보다 많이 싸고

생각보다 돈도 많이 들어요 .

생각보다 손도 많이 가는 동물입니다 .

 

또한 어느동물이나 마찬가지겟지만 ..

먹이사슬 최하에 잇는 초식 동물인 토끼는 주인의 끝없는 보살핌이 필요한 동물입니다 .

 

1,2년만 사는 것도 아니고 6년, 10년 생각보다 오래 살아요 .

그 오랜 기간 계속 사랑을 줄수 있는지

가족들이 털이 날리거나 냄새가 조금 나더라도 이해를 해줄수 있는지

모든 조건을 생각해 보고 나서 입양 하도록 하세요 .

 

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

 

1.토끼는 어디다 키워야하나요?

 >>토끼는 박스나 강아지용 쿠션 같이 생긴 집은 집으로 적합하지 않아요

꼭 케이지를 구입해주시되 크롬 케이지 대형장 이상으로 준비해주세요

 

2.토끼가 살기 적정한온도는 몇도인가요?

 >>사람의 실내 온도와 비슷하다고 생각하시면 되요 .

너무 춥고 건조하면 기관지가 약하기때문에 감기에 걸릴 위험이 있고

너무 더우면 더위를 먹을수 있습니다

 

3.토끼 산책또는운동은 일주일에 몇번 시켜줘야하나요...

 >>토끼의 산책은 강아지의 산책과 달라요 . 주인이 끌고 가는 산책이 아닌 몸줄을 한 상태에서 토끼가 가고 싶어 하는 곳을 주인이 따라가거나 풀밭에서 노는 정도 입니다

운동은 케이지에서 풀어서 방을 최소 30분 정도 돌아 다니는 것정도만 해주면 되요

 

4.토끼 톱밥깔지 말라는데 그럼 바닥에 뭘 깔아야하나요...

 

그런데 화장실 교육없이 지금까지 키우셧다면 요가 매트는 조금 곤란할거예요~ 올록볼록하게 생겼는데

거기에 똥알도 흘리고 소변도 보고 할거 같아서요 ㅋ.ㅋ;;

 

전체를 깔아주시려면 배변판을 잘 관찰하셔서 유난히 많이 쌓인 곳위에 화장실을 설치해주시는 방법이 있고

다른 하나로는 일부분만 깔아주는 방법이 있어요~

 

짚방석은.. 어릴때 사용 했었는데 화장실 교육이 미흡한 상태 였어서 ..ㅠ_ㅠ;;(사진은 반 접은 상태.. 2개월토끼)

그위에 응아하구 소변싸고 해서 ..

사이사이로 응아알끼고 =_=;; 소변에 젖어서 말려서 쓸라고 햇는데 영 안되겟어서 버렷어요 ;;

구입처는 제이펫입니다.

 

토끼 왼쪽에 있는 것이 조립식 마루예요~한개짜리가 있고 4개 짜리가 있는데 그것을 홈에 맞게 껴서 사용하는거예요~

이런 식으로 사용했어요 ~ 조립식 마루의 경우 그위에 소변을 봐도 휴지나 걸래를 이용해서 닦고

응아를 해도 작은 빗자루 등으로 쓸어줄수 잇어서 편하더군요.

위쪽의 대나무 돗자리는 토야가 너무 물어 뜯어서 일주일이 지나면 너덜너덜해진다는 단점이 ..ㅠ

대나무 돗자리는 다이소에서 판매 합니다~ 크기에 따라 천원이천원하는데 잘라서 깔아줫었어요

조립식 마루는 이마트. 다이소. 홈에버 등등 여러 곳에서 판매 합니다~

한개짜리는 4개로 묶어서 팔고

4개짜리도 4개로 묶어서 가격은 얼마였는지 기억이 안나네요;ㅁ;

 

대나무 장판은 다이소에서 천원에 샀어요

아래쪽으로 스펀지가 있어서 조금 폭폭한 감이 있어서 좋은데 .. 소변을 보면 스펀지까지 젖어서 대략 난감한 상태 가 된다는 단점이 ..ㅠ

케이지는 크롬 중형장 . 화장실은 버니버디대. 토야는 7개월령의 라이언헤드 성토 입니다(무게는 1.3kg)

 

요가 매트 입니다~

올록볼록하게 되어 잇어요 .

가위로 잘라서 쓸수 있어서 크기를 마음대로 할수 있다는 장점이 있으나

토야가 심심하면 물어 뜯고 간혹 먹기도 하는거 같더라구요 ..=_=;;

다이소. 이마트, 홈에버, G마켓 등등 여러곳에서 판매하고 색상 무늬도 가격도 다양하게 판매 합니다~

 

전체를 깔아주면 구석쪽에 화장실 설치해주면 .. 교육할수 있어요~

화장실 위에 건초렉을 올려두고 급수기를 설치해주면 먹으면서 자연히 화장실을 사용하게되고. 그러면서 자연스럽게 화장실을 배우더라구요.

 

여러가지를 사용해봣는데 .. 조립식 마루쪽이 화장실 교육이 안되있다면 교육하기도 편하고 청소하기도 편하실거예요~

전체를 깔아주셔도 되고

일부분만 깔아주시려면 토끼가 슈퍼맨 자세 혹은 발라당 등 자신이 편하다고 생각하는 자세로 쉴때 정도의 면적보다 약간 큰정도로 깔아주시면 되요 ~

 

5.토끼 키우는데 필요한용품좀 가르쳐주세요~

 >>케이지. 급수기. 건초렉. 화장실 이정도는 필수로 있어야 합니다

그외에 이동장, 몸줄이 있으면 산책이 가능하시구요

 

6.토끼도 예방접종맞춰야하나요?

 >>산책을 하시려면 맞춰야 합니다

 

7. 6번에서 맞춰야한다면 무엇과무엇을맞추고 돈은얼마나 들어요?

>>6개월마다 유행성 출혈열. 약 1만원 정도 합니다

3개월마다 구충. 약으로 하면 5천원 주사를 맞으면 1만원

 

8.토끼밥은 사료와 물만먹이면되나요? 배춧잎이나 당근이런거먹이면안되나요?

 >>생후 3개월까지는 펠렛과 건초를 먹여야 합니다 .

펠렛(사료)는 주식이 될수 없습니다 . 비만이 올수 있고 건초를 안먹으면 부정 교합이 와서 수술을 해야 합니다 .

 

9.토끼 냄새가 심할땐 어떻게 해야하나요?

 >>청소만 하루에 한번 해주시면 냄새는 별로 안나요

청소를 날마다 해줘도 냄새가 난다면 화장실에 고양이 모래를 깔아 주셔도 좋아요 .

 

10.토끼 건강하게 기르는법이 있다면 가르쳐주세요~

>>맨아래 정리해드릴게요 .

 

11.토끼집안에 토끼2마리를같이놔둬도 될까요?

 >>어릴때는 괜찮지만

생후 3개월이 넘어가면서 동성일 경우 한쪽이 죽을때까지 싸우거나

다달이 새끼를 낳아대서 토끼농장을 차릴 정도로 개채수가 많아 집니다

안되요 .

 

12.토끼 털 많이날리나요?

>>평소에는 많이 안날리지만 털갈이 시기가 되면 조금 폴폴 날려요

털갈이시기에는 빗질을 열심히 해줘서 죽은 털들을 걸러 내면 얼마 날리지 않으니까

꼭 실리콘 브러쉬나 고무 브러쉬를 이용해서 하루에 한번 이상 빗질을 해주세요

 

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

 * 필요물품 *
1.케이지
아래가 철망으로 되어 있고 배변판이 있어서 청소가 용이해요. 상자나 바구니 같은 경우에는 변이 바닥에 그래도 있어서 위상상으로도 좋지 않고, 토끼의 시야가 막혀 있어서 답답해 할수가 잇어요^^
단 철망에서만 생활할경우 비절병이라는 병에 걸릴수가 잇으니까. 꼭 수건(극세사 이불), 합판, 짚방석등등을 구석쯤에 깔아주셔서 토끼가 쉴수 있는 공간을 만들어주세요
신문지나 톱밥은 깔지 않으시는게 좋아요. 신문지나 톱밥은 토끼가 갉을수도 잇는데 . 둘다 토끼한테 좋은성분은 없고 해만 되거든요
케이지는 한마리 키우실때 대형이상 장이 좋아요. 안그러면 성장할때마다 바꿔주셔야 하거든요

2. 급수기
물그릇이 아니고 대롱이 있고 안에 구슬이 잇는 급수기를 사용하세요.
물그릇에 물을 담아서 주게 되면 토끼가 물을 마실때마다 턱이 젖어서 피부병에 걸릴수가 있거든요.
항상 신선한물을 섭취할수 있도록 신경써 주세요 ㅎ

3. 급식기
토끼의 주식은 건초예요 ~ 그건초를 담아두실수 있는 물건을 사용해주세요. 이왕이면 가벼운 그릇보다는 무거운 그릇에 담아주시는 것이 좋아요. 토끼가 뒤집어 버릴수가 잇거든요 ㅎㅎ 인터넷에서 구매 해서 사용하시는것도 방법이네용

4. 화장실.
토끼는 구석에 일보는것을 좋아 해요. 철망이 있고 모서리쪽에 높이가 좀 있는 것을 추천합니다~ 다이소에서 바구니 사다가 만드셔도 되는데 .. 저는 철망이 있어서 투명 아크릴사다가 만들어 줬어요

*화장실 교육*
토끼는 일정한 곳에 소변을 보는 습성이 잇어요. 구석진 곳을 좋아하기때문에. 배변판을 치우실때 보시면 한쪽 구석에 유난히 많은 변이 떨어저 있는 것을 관찰하실수 잇을거예요.
그위에 화장실을 설치해주시면 성공확률이 높아지시고 . 화장실위에 급수기와 급식기를 설치해 주시면 먹으면서 자연스럽게 싸게되고. 거기가 화장실이란 것을 인식 할거에요. 화장실위에 소변을보면 과도한 칭찬과 함께 펠렛이나 간식을 조금만 주세요
화장실에 고양이모래나 패드를 깔아서 사용하실경우에는 토끼가 먹지 못하도록 신경써 주시구요.
화장실 이외의 공간에 일을 보면 소취제를 뿌려주셔서 냄세가 안나도록 해주세요.
그리고 화장실 교육을 할때에는 케이지같이 일정한 공간에서 기르시는것이 좋아요. 넓은 곳으로 나오면 기억한 화장실을 까먹을수가 있거든요 ^^;


*먹이 주기*
1.주식(건초)
토끼의 주식은 건초예요. 아파트나 공원등지에 있는 풀 암거나 말려서 주시면 절대 안되구요 .. 마트보다는 인터넷에서 구매 하시는것이 더 신선도가 좋아요 .
6개월 이전에는 알팔파를 급여 하시고. 6개월 이후에는 티모시 라는 건초를 급여 하시면 되요. 건초는 영양분을 줄뿐만 하니라. 토끼의 이갈이에도 도움을 주기때문에 필수 요소예요.
하루에 주는 양은.. 그릇에 항상 잇어야 되요. 토끼가 알아서 조절해 먹고, 건초를 많이 먹어도 살이 안찌니까 걱정말고 주세요

2. 펠렛(사료)
건초만으로는 다 영양을 흡수할수가 없으니까 사료인 펠렛을 줘야 되요.
신촌펠렛, 비타 주니어, 하겐펠렛, 퓨리나펠렛 등등이 잇는데. 그중에서 국산인 신촌 펠렛의 신선도가 젤 좋은 것으로 알려져 있어요.
그리고 비타 주니어를 제외한 다른 펠렛의 경우에는 애완토끼용이 아니고 육성 토끼용으로 나온 펠렛이기 때문에. 너무 많이주시면 비만에 걸려요.
양은 종이컵 1/4정도의 양을 하루에 두번 나눠서 주시면 되구요. 비타 주니어 의 경우 하루에 5~10알정도 주시면 되요.

3.물
토끼는 생명체이기 때문에 물이 필수 요소예요. 수돗물을 먹일 경우 간혹 설사를 하는 경우도 잇으니 꼭 사람이 먹는 식수를 챙겨 주세요.
항상 신선한 물이 있도록 해주시구요.

4.이갈이용나무
버드나무. 칡나무등 나무를 주도록 하세요 . 인터넷에서 구매 하셔도 괜찮고 집에 잇는 나무토막 주셔도되는데. 색상이 들어가잇거나 니스가 칠해진것은 좋지 않아요~

5.주면안되는것.
상추, 배추, 양배추 같은 추자가 들어가는 야채는 주시면 안되요. 토끼의 장에 가스가 차게해서 좋지 않거든요.
3개월 이전의 토끼에게는 생초(말리지 않은 야채)를 주시면 안되요. 장이 약해서 설사를 하다가 죽을수 있어요 .
3개월 이후에 말린야채나 생초등을 주셔도 되요. 과일도 주셔도 되구요. 주실때마다 변의 상태를 체크하셔서 너무 물러지면 급여를 중지하셔야 해요. 첨에는 소량만 주시고 변상태 살펴보시고 점차적으로 양을 늘리시는게 좋을거예요
부추, 양파 같이 냄세가 자극적인 음식은 주지 마세요.
식빵, 쌀밥등 탄수화물 음식은 주지 마세요. 이것도 장에 가스만 차게하고 하등 도움이 안되요..
토끼는 초식 동물이지만 치킨에 환장해서 덤벼들 정도로 호기심이 강하달까 식탐이 강하달까 그래요 ..
토끼가 좋아 한다고 무조건 주시면 토끼의 수명을 깎아 먹는 행위니까 조심해서 주세요.

  >>건초 판매처<<
    버니버디 http://www.bunnybuddy.com/
    옹달셈 http://www.ssamstory.co.kr/
    토끼꼴망태 http://www.daegutoki.com/
    다음카페의 청아농장

*토끼의 운동*
토끼를 대부분 케이지에서 키우시지요.  하루에 두시간정도 밖에 나와서 운동 하는것 만으로도 토끼는 운동이 되요.
산책을 시키시고 싶을때는 3개월 이후에 예방접종을 맞고나서 산책 시키세요~
3개월이후가 좋은 이유는 토끼가 산책하다가 길에 있는 풀을 뜯어먹을수가 잇거든요 ..
그리고 토끼는 목줄이 아니고 몸줄을 착용 시키시고. 주인이 끌고가는것이 아니고 끌려 간다고 생각하고 하셔야 해요

*토끼의 미용*
토끼는 항상 몸단장(그루밍)을 해서 청결함을 유지하는 동물이예요. 굳이 목욕이 필요하진 않고. 목욕이 필요할때는 진흙탕에 빠졌다가 나와서 털이 너무 많이 오염됬을때 시키는건데. 미지근한 물에 목욕 시켜주시고. 귀에 물이 안들어가게 신경쓰셔야해요 .. 목욕 후에 드라이기로 털을 말려주셔야 하는데 너무 가까이에서 하시면 토끼가 화상을 입을수가 있으니까 좀 떨어져서 해야되요.
토끼의 털은 잘 안젖고 잘 안마르는 특징이 있어서 겉으로 보기에는 건조를 잘한거 같아 보여도 속은 촉촉히 젖어 있는 경우가 많아서 . 감기에 걸리거나 피부병에 걸릴수 있습니다.
또한 목욕을 하고 털을 말리는 것까지 토끼에게는 스트레스라 안시켜주시는게 좋아요
털이 지저분한게 묻어 잇을때는 그부분만가위로 잘라주시거나. 물티슈로 닦아주시면 되요.
사람이 쓰는 비누는 토끼한테 너무 독하니까 사용하지마세요. 토끼가 피부병 걸려요 ^^;;

*분양 받고나서 *
분양받고나서 토끼를 일주일간 쉴수 있도록 해주세요.
쓰다듬어 주시거나 안아주시는것이 낯선환경에 갑자기온 토끼에게는 스트레스거든요 ..
일주일간은 쉬면서 집에 적응할수 있도록 해주시고. 무리하게 쓰다듬어줄라고하지마세요.
밥을 주시면 토끼는 자연스럽게 자기 주인이라는 것을 알게되요~

일주일이 지나고나서 꼭 병원에 한번 대리고 가세요.
토끼의 추천 병원으로 가셔야 하는데 보통의 동물병원은 강아지나 고양이를 주로 보시기때문에 오히려 토끼를 잡아버리는 경우도 종종 있거든요..
초진료는 대부분 5천원정도 할거예요. 대려가서 피부병이 있는 애인지 어딘가 아프진 않은지 확인 한번 해보세요 ^^

*토끼와 친해지기*
토끼와 친해지시려면.. 간식이나 펠렛을 손으로 하나씩 집어서 주시는 것이 제일 빨리 친해지는 방법이예요.
토끼가 와서 코로 콩콩 찍는 것은 주인에게 인사를 하는거에요 ^^
옆에와서 안자 있을때 눈과 눈사이쪽을 살살 쓰다듬어주시면 이를 약하게 가는 것을 느끼실수가 잇으실거예요.
그거는 기분이 좋아서 그러는거니까 간혹 쓰다듬어주세요 ^^

 

 

더 궁금한 것이 있으시면 쪽지 보내주세요 ^^

대부분 판매원들이 불황이라 상품을 팔기 어렵다고 울상인 점포에서
밝은 표정으로 열심히 일하고 있는 유별난 판매원이 있었습니다.
그는 손님이 상품을 구매하기를 거절해도 낙담하지 않고 오히려 기뻐했습니다.
이를 이상하게 여긴 동료 판매원의 물음에 그는 이렇게 대답했습니다.
“내가 물건을 판매한 기록을 자세히 살펴보니 거절을 많이 당할 수록 물건을 팔 확률이 높더군.
평균을 내보니 10명의 손님이 구매를 거절하면
열한 번 째 손님은 물건을 사겠다고 하는 경우가 많았어.
그래서 나는 한 번 거절당할 때마다 이렇게 생각했지.
‘이제 아홉 번만 거절당하면 되겠구나’ ‘이제 여덟 번만 거절당하면 되겠구나’하고 말이야.
성공할 가능성이 점점 다가오는데 내가 왜 거절당했다고 마음이 상하겠나.
오히려 신나는 일 아닌가?”

외부환경은 누구에게나 동일하게 영향을 끼칩니다. 그러나 그 결과는 모두 다릅니다.

[출처] 조영탁의 행복한경영이야기
(전갈독 중화되다.)
[http://www.sciencenews.org/view/generic/id/43771/title/Scorpion_venom_neutralized]

A drug used in Mexico proves effective in Arizona test
(멕시코에서 사용하는 약이 아리조나 테스트에서 효과가 입증되다.)
Web edition : Wednesday, May 13th, 2009

 
Although only as long as a finger, the Arizona bark scorpion delivers a neurotoxin that can make a child critically ill. An antivenom used in Mexico has passed a U.S. test.
(비록 손가락일지라도 아리조나 바크 전갈은 아이에게 심각한 병을 초래하는 신경독을 줄 수 있다. 멕시코에서 사용하는 해독제가 미국 테스트에서 통과되었다.)






The Arizona bark scorpion may be small, but its sting delivers a neurotoxin that can kill or render critically ill a young child. A study in the May 14 New England Journal of Medicine finds that an antivenom drug commonly used in Mexico for such stings neutralizes the toxin, eliminates symptoms and reduces the need for sedation in children who have been stung.
(아리조나 바크 전갈은 작지만, 어린 아이를 죽게 하거나 심각한 병을 초래하는 신경독을 쏠 수 있다. 5월 14일 New England Journal of Medicine 연구에서 멕시코에서 쏘인 독을 해독하기 위해 사용하는 해독제를 찾았다. 이는 증상을 없애주고, 쏘인 아이들의 진정제 사용의 필요성을 줄여준다.)

More than 200 children in Arizona and a handful in New Mexico become critically ill from Arizona bark scorpion stings each year, but there is no U.S.–approved remedy for the stings. Children are rushed to intensive care units and sedated to prevent wild thrashing and choking, says pediatrician Leslie Boyer of the University of Arizona in Tucson. The victims are closely monitored until the neurotoxin’s effects fade, which takes 16 hours on average but can take several days. Some children require a mechanical ventilator to breathe.
(아리조나에서는 매년 200명이 넘는, 뉴멕시코에서는 소수의 아이들이 아리조나 바크 전달에 쏘여 심각한 병에 걸리고 있다. 그러나 미국에서는 이를 위한 공인된 치료약이 없다. 아이들은 중환자실로 급히 올겨지고, 거친 몸부림과 질식을 방지를 위해 진정제를 투여한다고 Tucson 아리조나주립대학의 소아과의사 Leslie Boyer는 말한다. 병에 걸린 사람들은 신경독의 영향이 미약해질때까지 몇일이 걸릴 수도 있지만, 평균 16시간동안 면밀히 지켜보여지게 된다. 몇몇 아이들은 숨을 쉬기 위한 기계적인 통풍장치가 필요하기도 하다.)

Adults typically face painful but much milder symptoms from the sting of this scorpion, Centruroides sculpturatus.
(어른들은 보통 이 전갈에게 쏘이면 고통을 격게 되지만 훨씬 가벼운 증상을 가진다.)

During 2004 and 2005, Boyer and her colleagues randomly assigned 15 children showing up at Tucson hospitals with scorpion poisoning to receive either the Mexican antivenom and sedation as needed or a placebo infusion along with sedation. Both groups also received other care, such as breathing assistance if necessary. Doctors treating the patients didn’t know who was given antivenom and who wasn’t.
(2004~2005년동안, Boyer와 그녀의 동료들은 Tucson 병원에서 전달독이 있는 15명의 아이들을 무작위로 선정하여 진정제와 멕시코 해독제 또는 진정제와 유효성분이 없는(위약) 혼합물을 주었다. 두 집단 모두 필요하다면 호흡 도움장치와 같은 다른 치료를 받았다. 의사는 환자가 자신이 해독제를 받았는지 아닌지를 알지 못하도록 하였다.)

Eight of eight children receiving the antivenom showed no signs of scorpion venom in their blood after only one hour and recovered within four hours. Only one in seven children who received the placebo recovered in four hours, and that child was the oldest and heaviest of the group at 42 kilograms. The children not getting the antivenom also needed 65 times as much sedative drug as the others on average, Boyer says. None of the children died.
(해독제를 받은 8명중의 8명의 아이들이 1시간후에 혈액에서 전달독의 기미를 보이지 않았고 4시간안에 회복이 되었다. 위약을 받은 7명중 단 1명만이 4시간안에 회복이 되었는데 그 아이는 가장 나이가 많았고 체중이 42kg으로 가장 무거운 아이였다. 해독제를 받지 않은 아이들은 평균치에 비해 65배나 많은 진정제를 필요로 했다고 Boyer가 말했다. 아무도 사망하지 않았다.)

If approved, the antivenom could ease suffering and even prevent deaths among small children in rural areas that lack intensive care units, Boyer says. The team is now conducting an Arizona-wide study giving the antivenom to children who become seriously ill from such scorpion stings.
(인가가 난다면 그 해독제는 고통을 줄이고, 중환자시설이 부족한 지방의 작은 아이들의 사망을 막을 수 있다라고 Boyer가 말한다. 이 팀은 현재 아리조나 전역에 전갈침과 같은 심각한 병에 걸리는 아이들에게 이 해독제를 주는 것을 가르쳐주는 일을 수행하고 있다.)

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

* venom [미] [vénəm]
    명사 1. 독액 (毒液) 《독사·전갈·벌 등이 분비하는》
                a venom duct 독관 (毒管)
                a venom fang[gland] 독아 [선(腺)] 
           2. 악의 (spite) , 원한, 앙심
                spit out the words with venom 독설을 내뱉다 
           3.《고어》 독 (毒) , 독물
    타동사  1. …에 독을 타다

* neutralize [미] [njúːtrəlàiz] [영] [njúː-]
   타동사  1. 중립화하다 
                 《neutralize+목+to do》 neutralize a city to prevent bombing 폭격을 당하지 않도록 도시를
                       중립화하다    
               2.〈노력 등을〉 무효화하다;지우다
                     carelessness that neutralized one’s efforts …의 노력을 무효로 만든 부주의
               3.【군사】 〈적군을〉 제압하다, 무력화하다
                     neutralize an enemy position 적의 요지를 무력화하다
               4.【화학】 중화하다
                     a neutralizing agent 중화제 (劑) 
    자동사  1. 중화되다;중성이 되다

* neurotoxin [미] [njúəroutɑ̀ksin, -̀--́-] [영] [njúərou-tɔksin]
    명사  1.【의학】 신경독 《신경에 유독한 물질》

* sting [미] [stíŋ]
    동사  1. (바늘·가시 등으로) 찌르다 (prick) , (독침 등으로) 쏘다
              《sting+목+전+명》 A bee stung my arm.=A bee stung me on the arm. 벌이 내 팔을 쏘았다.
            2.〈혀 등을〉 자극하다;얼얼 [따끔따끔] 하게 하다;쿡쿡 쑤시게 하다
            3.〈비난·경멸 등이〉 괴롭히다, 고민케 하다; 〈자존심 등을〉 상하게 하다
                 sting a person’s pride …의 프라이드를 해치다
                 He was stung by remorse. 그는 양심의 가책으로 고통을 받았다.
            4. 자극하다, 자극하여 (…) 시키다 《into, to》
              《sting+목+전+명》 Their words stung him to action. 그들의 말에 자극받아 그는 행동을 취하였다.
            5. [주로 수동형으로] 《속어》 기만하다, 바가지 씌우다; (…을) 속여 빼앗다 《for》
                He got stung on the deal. 그 거래에서 그는 속았다.
                I was stung for a fiver. 속아서 5달러 빼앗겼다.
     자동사  1. 찌르다, 찌르는 힘이 있다;쏘다;가시 [침] 가 있다
                2. 괴롭히다, 고통을 주다
                3. 얼얼하다;톡 쏘는 맛이 있다, 자극적인 향기가 나다
                    Ginger stings. 생강은 매운 맛이 난다.
                4. 고뇌하다, 안달하다
     명사    1. 찌름, 쏨;찔린 상처
               2. 찔린 아픔, 찌르는 듯한 아픔, 격통
                    the sting of conscience 양심의 가책 
               3. 신랄함, 비꼼;자극, 상쾌함
                    the sting of a person’s tongue 독설 
               4.【식물】 쐐기털, 가시 
               5.【동물】 침, 독아 (毒牙)
               6. 《속어》 사기; 《특히》 신용 사기;계획 범행
               7. 《구어》 함정 수사
                      work a sting 함정 수사를 하다
               8. 《속어》 강한 술

* render [미] [réndər]
    타동사  1. …을 …하게 하다, …이 되게 하다 (make)
                 《render+목+보》 His wealth renders him important. 돈이 있으니까 그는 행세한다. 
               2.〈원조를〉 주다, 하다, 해주다 (give) 
                 《render+목+전+명》 《render+목+목》 render a service to a person=render a person a service
                                            …을 위하여 봉사하다 
               3.〈공순(恭順)의 뜻·경의 등을〉 나타내다; (사람·하느님 등에게) 〈감사를〉 드리다
                 《render+목+전+명》 render thanksgiving[thanks] to God 신에게 감사를 드리다 
               4.〈계산서·이유·회답 등을〉 제출하다, 교부하다 (submit) 
                 《render+목+전+명》 render a bill for payment 지불 청구서를 제출하다 
               5.〈판결을〉 언도하다; 〈평결을〉 내리다
                  render a verdict 판결 [평결] 을 내리다
               6.〈마땅히 내야 할 것을〉 바치다, 납부하다
                  《render+목+전+명》 render tribute to the king 왕에게 조공을 바치다
               7. (글·그림으로) 표현하다, 묘사하다; 〈연극을〉 연출하다, 연기하다; 〈음악을〉 연주하다;
                                〈글을〉 번역하다 (translate)
                  《render+목+전+명》 Render the following into Korean. 다음 글을 우리말로 번역하라.
               8. 보답하다, (답례로) 주다
                   render thanks 감사 [사례] 하다
                  《render+목+전+명》 render evil for good 선을 악으로 보답하다
               9. 갚다, 돌려주다
                  《render+목+부》 I’ll render back your money. 당신의 돈을 갚겠습니다.
              10. 포기하다, 양도하다 《up》 
              11. 〈지방을〉 녹여서 정제 (精製) 하다
                   《render+목+부》 render down fat 지방을 정제하다
              12.〈돌·벽돌 등에〉 초벌칠하다 
              13. 넘겨 주다, 내주다
                   《render+목+전+명》 render a fort to the enemy 적에게 요새를 내주다
    자동사  1. (당연한) 보수를 주다, 사례금을 지불하다
               2. (지방 등에서) 기름을 정제 [채취] 하다
               3. 【항해】 〈밧줄·사슬 등이〉 술술 풀려 나오다
    명사     1. (지방을 정제한) 정제유
               2. 초벌칠
               3.【영국사】 집세, 지대~·a·ble a. ~·er n.

* sedation [미] [sidéi∫ən]
    명사  1. U 【의학】 진정 작용 《진정제 등에 의한》 ;진정제 치료 (법)

* handful [미] [hǽndfùl]
    명사  1. 한 움큼, 한 손 가득, 한 줌 《of》
               a handful of sand 모래 한 줌
            2. [a ~] 소량, 소수 《of》
               a handful of men 소수의 인원
            3. 《구어》 주체스러운 사람 [일] , 귀찮은 것
            4. 《속어》 5 《손가락 수에서》 ;5년의 (금고(禁固)) 형

* remedy [미] [rémədi]
    명사  1. 치료, 요법;치료약
            2. 구제책, 교정법 《for》
            3.【법】 (권리의) 구제 절차, 배상, 변상
                have no remedy at law 법적으로는 구제 방법이 없다
            4.【조폐】 공차 (公差) (tolerance)
    타동사  1. 〈병·상처 등을〉 치료하다, 고치다 (⇒ heal 유의어) 
               2. …을 구제하다;보수하다;배상하다;교정하다, 개선하다;제거하다 (remove) , 경감하다
                   remedy an evil 악폐를 제거하다

* approved [미] [əprúːvd]
    형용사  1. 인가된;입증된, 정평 있는, 공인된

* Intensive Care Units : 중환자실 부문

* sedate [미] [sidéit]
   형용사  1. 차분한, 침착한 (opp. excitable) , 진지한, 조용한
                  a sedate party 조용한 파티 
              2. 점잖은 〈빛깔 등〉 , 수수한
                  a sedate costume 점잖은 의상 
   타동사  1.【의학】 (진정제로) 진정시키다, 안정시키다~·ly ad. ~·ness n.

* thrash [미] [θrǽ∫]
   타동사  1. (몽둥이·채찍 등으로) 마구 때리다, 채찍질하다
              2. 《구어》 〈경기에서 상대방을〉 격파하다, 이기다
              3. 〈배를〉 파도 [바람] 를 헤쳐 [거슬러] 나아가게 하다
              4. 〈곡물(穀物)을〉 (도리깨 등으로) 두드리다, 탈곡하다
    자동사  1. 뒹굴다, 몸부림치다
                 《thrash+부》 thrash about in bed with pain 아파서 침대에서 뒹굴다 [몸부림치다]
                 《thrash+전+명》 The wind made the branches thrash against the window.
                                         바람에 나뭇가지가 세차게 창문을 두드렸다.
               2. 〈배가〉 파도 [바람] 를 헤치고 [거슬러] 나아가다
               3. 탈곡하다, 도리깨질하다 (thresh)
               4 《미·속어》 헛수고하다;비난하다
               5. (스케이트보드로) 공중회전하다;묘기를 보이다
    명사     1. 때림;패배시킴, 이김
               2. 탈곡
               3.【수영】 물장구치기
               4.【음악】 (punk rock이 가미된 heavy metal의) 록 음악의 한 형식 (=Ṡ mètal)

* choke [미] [t∫óuk]
   타동사  1. 질식시키다; 〈연기·눈물 등이〉 숨막히게 하다 《★ suffocate보다 덜 딱딱한 말》
                  A coin almost choked the baby. 동전을 삼켜 갓난아이가 거의 질식할 뻔했다.
                 《choke+목+전+명》 He was choked with smoke. 그는 연기로 숨이 막혔다.
                  He had been choked to death. 그는 질식해서 죽어 있었다. 
              2. 메우다 (fill up) , 막다 (block up)
                  Sand is choking the river. 모래로 하천이 막혀 가고 있다.
                  The chimney was choked with soot. 굴뚝이 검댕으로 막혀 있었다. 
              3.〈잡초 등이〉 〈다른 식물을〉 마르게 하다; 〈불을〉 끄다 《up》
                 《choke+목+(부)》 The plant was choked (up) with weeds. 그 식물은 잡초 때문에 말라 버렸다.
              4. 〈감정·눈물을〉 억제하다; 〈성장·발전을〉 저해하다
                 《choke+목+부》 choke down one’s rage 분노를 꾹 참다
                   choke back one’s passion 격정을 억누르다
              5.〈엔진을〉 초크하다 《혼합기(氣)를 짙게 하기 위하여 카뷰레터의 공기 흡입을 막다》
              6.【스포츠】 〈배트·라켓 등을〉 짧게 잡다 《up》
              7.《영·구어》 …을 실망 [낙담] 시키다, 진저리나게 하다 (⇒ choked 2) 
              8.〈총포 등의〉 조리개를 만들다
              9.【음악】 〈심벌즈를〉 울린 후에 멈추다
             10. 《미·구어》 〈컴퓨터가〉 보내온 정보를 받아들이지 못하다
   자동사   1. 숨이 막히다, 질식하다;숨통이 막히다
               2. (음식으로) 목이 메게 하다; (감정으로) 말을 못하게 되다
                  《choke+전+명》 choke over one’s food 음식을 먹다가 목이 메다
                   choke with rage 분노로 말문이 막히다 
               3.《속어》 죽다
               4.〈식물이〉 마르다; (잡초 등에) 성장을 방해받다
               5.〈파이프 등이〉 막히다
    명사     1. 질식;목멤
               2. (파이프 등의) 폐색부 (閉塞部) ;총강 (銃腔) 의 폐색부 조절 조리개 (cf. CHOKEBORE)
               3.【기계】 초크 《엔진의 공기 흡입 조절 장치》 ; 【전기】 초크, 색류 (塞流) 코일 (=~ coil)
               4.【유도】 조르기 
               5. [보통 pl.] 《주로 스코》 턱, 뺨, 목
   형용사   1. A 【스포츠】 배트·라켓을 짧게 잡는~·a·ble a.

* ventilator [미] [véntəlèitər]
    명사 1. 환기 담당자
           2. 환기 설비;통풍기, 송풍기;통풍공, 통풍관;환기창; (모자의) 바람 구멍
           3. (여론에 호소하기 위하여) 문제를 제기하는 사람ven·ti·la·to·ry [-lətɔːri│-lèitəri] a. 환기의;
                       환기 장치가 있는

* along with : …와 함께 [같이]
                    ~ with others 다른 사람 [것] 들과 함께 [같이]

* placebo [미] [pləsíːbou]
    명사  1.【의학】 플라시보, (유효 성분이 없는) 위약 (僞藥) 《심리 효과·신약 테스트 등을 위한》
            2. 일시적 위안의 말;아첨, 겉치렛말
            3. [plɑːt∫éibou] 【가톨릭】 죽은 사람을 위한 저녁 기도

* infusion [미] [infjúːʒən]
   명사  1. U 주입, 불어넣음, 고취
           2. 주입물, 혼합물
           3. 우려낸 물, 우려냄
           4. U 【의학】 (정맥에의) 주입;주입액
 
* conduct [미] [kɑ́ndʌkt] [영] [kɔn-]
   명사   1. 《문어》 행위, 행실, 품행, 행동
            2. 지도, 안내, 지휘;호송 
                under the conduct of …의 안내 [지도] 로
            3. 경영, 운영, 관리;실시, 수행
                the conduct of a business 사업의 운영 
            4. (무대·극 등의) 처리법; (줄거리의) 각색, 윤색
    동사  1. [~ oneself로] 행동하다;처신하다 (behave)
                《conduct+목+부》 conduct oneself well 훌륭하게 처신하다
            2. 지휘하다 (direct)
                conduct an orchestra 오케스트라를 지휘하다
            3. 이끌다, 안내하다, 호송하다 (escort) (⇒ lead1 유의어)
               《conduct+목+전+명》 conduct a person to[into] a seat …을 자리로 안내하다
               《conduct+목+부》 conduct a person out …을 밖으로 안내하다
             4.〈업무 등을〉 수행하다, 처리하다, 경영 [관리] 하다 (manage)
             5.【물리】 〈열·전기·소리 등을〉 전도하다 (transmit)
                   a conducting wire 도선 (導線)
    자동사  1. 안내하다, 이끌다; 〈길이 …로〉 통하다 《to》
               2. 전해지다, 전도되다
               3. (특히 악단의) 지휘자 역할을 하다
               4. 전달되다, 통하다

[http://www.sciencenews.org/view/generic/id/43565/title/Basking_sharks_head_south_for_winter]
Satellite-tagging data provide first evidence that the fish migrate to the tropics
Web edition : Thursday, May 7th, 2009 


 Basking sharks are the second largest fish, measuring about 6 to 7 meters when mature. The sharks are filter-feeders, swimming with their mouths open to take in a continuous flow of water and plankton.
(돌묵상어는 두번째로 큰 물고기로 완전히 성장하면 약 6~7미터 정도가 된다. 이 상어는 입을 벌린채로 수영을 하면서 물과 플랑크톤을 걸러먹는 종류의 물고기이다.)





When winter comes, many people vacation in the Caribbean. A new report suggests basking sharks have the same idea.
(겨울이 오면 캐러비안으로 많은 사람들이 휴가를 간다. 새로운 보고서에 의하면 돌묵상어들도 그렇다고 한다.)

Using satellite-based tagging technology, scientists have figured out that basking sharks migrate to the tropical waters of the Caribbean when the weather in their temperate locales gets cold. The study, published online May 7 in Current Biology, provides the first information on where basking sharks hide out for winter, a mystery that has flummoxed marine biologists for years.
(인공위성 꼬리표 기술을 이용하여 과학자들은 돌묵상어들이 온대지역의 날씨가 추워지면 캐러비안의 열대바다로 이동하는 것을 알아냈다. 5월 7일 Current Bioloy에 인터넷을 통해 그동안 수년동안 해양생물학자들을 당혹하게 만든 미스테리로 남아있던, 돌묵상어가 겨울에 잠복해있는 곳의 첫 정보를 제공한다고 보도했다.)

Basking sharks, the second largest fish, are commonly seen in temperate regions of the Atlantic and Pacific oceans. Previous studies showed that basking sharks in the North Atlantic feed on plankton off the coast of New England during the late spring, summer and early fall.
(두번째로 가장 큰 돌묵상어는 보통 온대지역 대서양, 태평양에서 보여지곤 한다. 이전까지 알려진 바로는 북대서양에 있는 돌묵상어는 늦은 봄, 여름, 이른 가을동안 뉴잉글랜드 해안가에서 플랑크톤을 먹고 산다.)

Until now, scientists thought basking sharks were limited to temperate regions. The 6-to-7-meter sharks disappear from view in the wintertime, but some researchers had suggested that the sharks hibernate on the ocean floor.
(지금까지 과학자들은 돌묵상어가 온대지역에 한정되어 있다고 생각했다. 6~7미터의 상어가 겨울기간동안 시야에서 사라지기 때문에 몇몇 연구원들은 이 상어가 바다밑에서 동면한다고 생각했었다.)



 


Known basking shark distribution is indicated by red shading. The basking sharks in the study were tagged off the coast of Cape Cod (shown by solid circles). The tags released from the sharks at a pre-determined date, popped up to the ocean surface and began to transmit data to the researchers via satellite (pop-up locations shown by open circles).
(붉은색은 그동안 알고 있었던 돌묵상어가 분포되어 있는 곳을 나타낸다. Cape Cod (속이차있는 동그라미 표시) 해안가에 있는 돌묵상어에게 꼬리표를 달았다. 그 꼬리표는 정해진 날짜에 상어로부터 떨어져 수면위로 떠오른후 인공위성을 통해 연구원이 자료를 수집할 수 있게 한다. (속이 빈 동그라미 표시가 수면위에 나타난 곳)


In the new research, Gregory Skomal of the Massachusetts Division of Marine Fisheries’ Martha’s Vineyard research station and his colleagues tagged 25 basking sharks off the coast of Cape Cod and tracked them as they made their wintertime trip. The researchers found that the sharks headed south, some going as far as Brazil.
(새로운 연구에 의하면, Marine Fisheries’ Martha’s Vineyard의 Massachusetts 지역의 Gregory Skomal과 그의 동료들은 Cape Cod 해안가에 있는 25마리의 돌묵상어에 꼬리표를 달았고 겨울동안 그들을 추적하였다. 연구원들은 상어들이 남쪽을 향했고, 일부는 브라질까지 간다는 것을 알았다.)

“This is definitely an important contribution,” comments marine biologist Robert Hueter of Mote Marine Laboratory in Sarasota, Fla.
("이것은 확실히 중요한 발견이다.", Sarasota, Fla의 Mote Marine 연구소의 해양생물학자인 Robert Hueter는 언급했다.)

Each shark was tagged with a unit that recorded water temperature, ambient light and pressure. The tags were programmed to fall off the shark at points throughout the winter and pop up to the surface of the ocean to transmit the data via satellite.
(각 상어의 꼬리표에는 수온, 광량(주위의 밝기), 수압이 기록된 장치가 달려있다. 그 꼬리표들은 위치를 나타내도록 겨울동안 상어로부터 떨어지고 수면위로 올라와 인공위성으로 자료를 전송하도록 프로그램 되어 있다.)

Although basking sharks usually swim near the ocean surface in the spring and summer, the sharks made their winter journeys at depths of 200 to 1,000 meters and stayed at those depths for weeks or months at a time. This is probably why no one spotted the sharks at their winter location, Skomal says.
(비록 보통 돌묵상어가 봄과 여름에 수면위 가까이에서 수영을 한다고 해도, 이들은 수심 200~1000미터 깊이에서 겨울 이동을 하거나 일주일 또는 몇달씩 머물러 있는다. 이것이 아마도 아무도 그들의 겨울시기의 위치를 알지 못하는 이유일 것이다. Skomal이 이렇게 말한다.)

Why basking sharks make the trip is still a mystery. The waters off the coast of South Carolina, Georgia and Florida would provide similar temperatures as the tropics and ample plankton for food, the researchers say. “Energetically, it doesn’t make sense to swim so far south,” Skomal says.
(왜 돌묵상어들이 이런 여행을 하는지는 아직도 미스테리다. Sout Carolina, Georgia, Florida의 해안가 물은 열대와 비슷한 온도와 풍부한 음식인 플랑크톤을 제공할 것이라고 연구원은 말한다. "에너지적으로 보면 그렇게 남쪽으로 멀리 수영하는 것은 이해하기 힘들다." 라고 Skomal은 말한다."

One theory is that basking sharks travel south to mate and give birth. “No one knows where basking sharks go to give birth. We’ve never seen a pregnant female, and never seen a baby basking shark,” Skomal says. The tropics could provide a good shark nursery location because of stable water temperatures and few predators, the scientists say.
(한 가설은 돌묵상어들이 남쪽으로 가는 이유는 짝을 만나 새끼를 낳기 위해서다. "아무도 돌묵상어가 어디에서 낳는지 모른다. 우린 한번도 임신한 암컷이나 새끼를 본 적이 없다."라고 Skomal은 말한다. 열대 기후는 안정적인 수온과 포식자가 적어 좋은 상어 서식지를 제공할 수 있을 것이다. 라고 과학자들은 말한다.)

“This is a good analysis and a likely explanation for the data,” Hueter says.
("이것이 좋은 분석이고 그 자료의 의미이다." 라고 Hueter가 말한다.)

Numbers of basking sharks worldwide are dwindling, and the new information could alter population estimates, the researchers say. “Now that we know that the sharks move these distances, physical barriers between populations simply don’t exist,” Skomal says. “Different populations could actually be connected between regions and even between oceans.”
(세계적으로 돌묵상어의 수는 줄어가고 있다. 그리고 새로운 정보는 이 개체 추정치를 바꿀 수 있다. 라고 연구원이 말한다. "이제 우리는 상어가 이 거리를 이동하고 개체군(집단)사이에 물리적 방벽이 없음을 알았다,"라고 Skomal이 말한다. "서로 다른 개체군(집단)라고 생각했던 것이 실제로는 지역, 심지어는 바다 사이에서도 연결되어 있을 수 있다.")

=====================================================
* locale [미] [loukǽl, -kɑ́ːl] [영] [-kɑ́ːl]
    명사  1. (사건 등의) 현장, 장소
            2. (극·소설·영화 등의) 장면, 배경, 무대
* temperate [미] [témpərət]
    형용사  1. 〈사람·행동 등이〉 절제하는, 삼가는, 절도 있는, 자제하는 (⇒ moderate 유의어)
                     a man of temperate habits 절제가
               2. 절주 [금주] 의
               3. 중용을 지키는, 온건한, 적당한, 알맞은
               4. 〈기후·지역 등이〉 온화한, 온난한, 온대성의~·ly ad. 적당하게 ~·ness n.
* Temperate Zone : [the ~] 온대 (cf. FRIGID ZONE, TORRID ZONE)
                             the north[south] Temperate Zone 북 [남] 온대
* hide out[up] :《미》 숨어 버리다, 잠복하다
* flummox [미] [flʌməks] ,  flummux [미] [flʌməks]
    타동사  1. 어리둥절하게 [당혹하게] 하다
    자동사  1. 〈계획·사업 등이〉 실패하다
    명사     1. 실패;당혹
* feed on[upon] : 〈짐승·새 등이〉 …을 먹이로 하다;…을 먹고 살다 (cf. LIVE on) ; 《비유》 …으로 살고 있다;
                          〈짐승·새 등을〉 …으로 기르다, …으로 키우다
* feed off : 목초를 다 먹어치우다;…을 정보원 (源) [식료, 연료] 으로 이용하다
* A group of sharks were spotted off the coast earlier this month.
  이번 주 초에 상어떼가 해안가에서 발견되었다.
* transmit [미] [trænsmít, trænz-] [영] [trænz-]
    동사  1. 〈물건 등을〉 부치다;보내다, 건네다, 전달 [송달] 하다
                《transmit+목+전+명》 transmit a letter by hand[a parcel by rail, a message by radio] 편지를 손수
                                              전해주다 [소포를 철도편으로 부치다, 통신을 무전으로 보내다]
                  transmit troops to the border 군대를 국경 지역에 파견하다
            2.〈지식·보도·정보 등을〉 전하다, 알리다 《to》
               《transmit+목+전+명》 transmit a tradition to posterity 전통을 후세에 전하다
            3. 〈병 등을〉 (사람에게) 옮기다, 전염시키다 《to》
            4. 〈유전적 성질을〉 (자손에게) 물려주다, 유전시키다 《to》
                 《transmit+목+전+명》 transmit a title to one’s descendants 작위를 자손에게 물려주다
            5.【물리】 〈열·전기 등을〉 전도하다; 〈빛을〉 투과시키다; 〈힘·운동 등을〉 전동 (傳動) 하다
            6.【통신】 〈전파를〉 발신하다; 〈전파로 신호를〉 보내다;방송하다
                 a transmitting set 송신기
                 a transmitting station 방송국, 송신소
            7.【컴퓨터】 〈정보를〉 전송하다
     자동사  1. 송신하다, 방송하다
                2.【법】 자손 [상속인] 에게 권리 [의무] 를 전하다~·ta·ble, ~·ti·ble a. 전할 수 있는;전염성의;
                              유전성의 ~·tal n. =TRANSMISSION
* ambient [미] [ǽmbiənt]
    형용사 1.《문어》 포위한, 에워싼
                  (the) ambient air 주위의 공기, 대기
     명사   1. 환경
* explanation [미] [èksplənéi∫ən]
    명사  1. 설명;해석;해명, 변명;설명이 되는 말 [사실, 사정]
                give an explanation for[of] one’s resignation 사임의 이유를 설명하다
            2. (설명으로 밝혀진) 뜻, 의미
                give an explanation for[of] …의 이유를 설명하다
            3. (오해나 견해 차이를 풀기 위한) 의견 나누기;화해
* dwindle [미] [dwíndl]
    자동사  1. 점차 감소하다, 점점 작아 [적어] 지다 (⇒ decrease 유의어)
                    The population is dwindling. 인구가 점점 줄어들고 있다. 
                  《dwindle+전+명》 The airplane dwindled to a speck.
                                             비행기는 점점 작아지다가 하나의 점이 되었다.
               2. 여위다; 〈명성 등이〉 떨어지다; 〈품질이〉 저하되다, 타락하다; 〈가치 따위가〉 없어지다
     타동사  1. 작게 [적게] 하다;축소 [감소] 하다
                   《dwindle+목+전+명》 The failure dwindled his reputation to nothing.
                                                   그 실패는 그의 명성을 무로 만들었다.
* population [미] [pɑ̀pjuléi∫ən] [영] [pɔp-]
    명사 1. 인구;주민수
               increase[fall] in population 인구가 늘다 [줄다]
           2. [the ~;집합적] 주민; (특정 계층·민족에 속하는) 사람들; (일정한 지역의) 전 (全) 주민, 시민
               the population of a city 전 시민
               the working-class population 노동자 계층의 사람들
           3.【생태】 (일정 지역의) (전) 개체군, 집단;개체수
           4.【통계】 모집단 (母集團)
           5. 식민;거주시킴; (일정 지역의) 거주 정도~·al a. ~·less a.

+ Recent posts