1. String

   - 세 가지 클래스 중에서 가장 메모리르 많이 차지하고 응답 시간에 많은 영향을 줌.
   - 짧은 문자열에 주로 사용.(한줄정도)
   - JDK5.0 이상 버젼에서는 컴파일러에서 자동으로 StringBuilder로 변환을 해줘서 효율이
     많이 좋아졌지만 반복 루프를 사용해서 문자열을 더할때에는 효율이 떨어짐.

2. StringBuffer

   - 스레드와 관련이 있을때 사용.

3. StringBuilder

   - 스레드 안전 여부와 상관이 없으면 사용.
   - 메모리 나 응답 시간에 대해서 가장 효율이 좋음.
신고


StringBuilder 클래스는 JDK 5.0에서 새로 추가된 클래스로 단일 스레드에서의 안전성만을 보장합니다. 그렇게 때문에 여러개의 스레드에서 하나의 StringBuilder 객체를 처리하면 문제가 발생하겠죠??

그럼 StringBuilder 클래스에서 가장 많이 사용하는 메소드 append(), insert(), toString()에 대해서 알아보겠습니다.

append() : 기존의 값의 맨 끝에 엄어온 값을 덧붙이는 작업을 수행합니다.

insert() : 지정된 위치 이후에 넘어온 값을 덧붚이는 작업을 수행합니다. 지정한 위치까지
             값이 없으면 에러가 발생합니다.

toString() : append() 혹은 insert() 메소드를 통해 문자열을 더했으면 toString()으로 통해
                더한 문자열을 보여줍니다.

-- 예제
public class test {
   public static void main(String args[]) {
      StringBuilder str = new StringBuilder();
     
      str.append("abcde");
      str.append("12345");

      str.insert(5, "xyz");

      System.out.println(str.toString());
   }
}

위 예제의 결과를 보게 되면 abcdexyz12345 이렇게 출력이 됩니다.

신고


우리가 프로젝트를 개발하면서 가장 많이 쓰게되는 객체는 String 클래스 입니다.

하지만 String 클래스를 잘못 사용하게 되면 메모리상의 문제가 발생하게 되는데 아래 예제를 통해서 알아보도록 하겠습니다.

String strSql = "";

strSql += "select * "
strSql += "from t_user "
strSql += "where user_id = 'test' "

위 예제를 보게되면 String 클래스를 사용해서 쿼리문을 작성하였다. 위에처럼 단지 3줄이라
면 메모리상에 크게 문제가 되지는 않는다. 하지만 대략 400줄이 된다고 했을때 메모리 사용량은 대략 5MB를 사용하게 되고 수행속도 또한 5ms 정도 걸린다.

그럼 다음 예제를 보겠다. 이 예제는 String 클래스 대신에 StringBuilder 클래스를 사용한 경우이다.

StringBuilder strSql = new StringBuilder();

strSql.append("select * ");
strSql.append("from t_user ")
strSql.append("where user_id = 'test' ");

String 클래스와 같은 쿼리문으로 위와같은 형태 400줄이라고 한다면 이때 메모리 사용량은 대략 400KB 정도 사용하게 되고, 수행속도 또한 0.3ms 정도로 String 클래스를 사용했을때보다 성능이 매우 좋다.

위 결과가 말해주듯이 가장 많이 쓰이는 String 클래스 이지만 잘못알고 쓰게되면 이렇게 큰 오류를 범하게 된다. 지금이라도 그렇게 작업을 하고 있는 개발자가 있다라면 빨리 수정하시길..
신고


데이터베이스 시작하기

$sqlplus /nolog
SQL> connect / as sysdba
SQL> startup

데이터베이스 종료하기

$sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
SQL> exit

리스너 시작
$lsnrctl start

리스너 종료
$lsnrctl stop

sqlplus 시작하기
$isqlplusctl start

em 시작하기
$emctl start dbconsole
신고


오라클에서 paging을 처리하기 위해서는 오라클에서 제공되는 rownum을 사용하게 됩니다.

하지만 rownum을 잘못알고 사용을 하게 되면 저처럼 삽질을 계속 하게 된다는 ^^;;

예를들면...

  SELECT *
  FROM (
            select board_seq, board_name, insert_date
            from t_board
            order by insert_date desc
            )
   WHERE ROWNUM >= 1 AND ROWNUM <= 10

  이렇게 쿼리문을 날리면 데이터가 나옵니다.

  하지만 ..

  SELECT *
  FROM (
            select board_seq, board_name, insert_date
            from t_board
            order by insert_date desc
            )
   WHERE ROWNUM >= 11 AND ROWNUM <= 20

   이렇게 쿼리문을 날렸을때 그냥 보기에는 나올것 같습니다. 하지만 아무런 데이터가
   나오지를 않습니다.^^; 아주 황당합니다.

그래서 많이쓰는 방법으로... 첫번째..

  SELECT *
  FROM (
            select rownum as rnum, board_seq, board_name, insert_date
            from t_board
            order by insert_date desc
            )
   WHERE rnum>= 11 AND rnum <= 20

  서브쿼리에서 rownum을 구해 동일한 방법으로 where 조건을 주면 아주 잘 나옵니다.

또다른 방법.. 두번째..

  row_number() over(정렬을 위한 order by) 를 사용하면 됩니다.

  SELECT *
  FROM (
            select row_number() over(order by insert_date desc) as rnum, board_seq,
                     board_name, insert_date
            from t_board
            )
   WHERE rnum>= 11 AND rnum <= 20

첫번째 방법과 두번째 방법을 했을경우 결과는 동일합니다.

차이점이 있다면 두번째 방법에서 row_nuber() over()를 이용해서 over()안에 있는
order by 순으로 rownum을 새롭게 구하는것입니다.

* 참고 : row_number()는 오라클 8.1.6.0.0 이상에서 사용이 가능합니다.
신고


oracle 계정으로 접속해서 오라클이 설치된 bin 디렉토리로 이동후~ exp 명령을 사용합니다.

- 전체 데이터베이트 export 방법
[oracle@localhost ~]$ ./exp userid=system/manager file='/home/oracle/full.dmp' full=y

- user별 export 방법
[oracle@localhost ~]$ ./exp userid=scott/tiger file='/home/oracle/scott.dmp'

신고



1. 스프링 다운로드

 - http://www.springframework.org/download 에서 스프링의 최신버전을 다운로드한다.
   다운로드 할수 있는 zip 파일이 2개일 텐데, 하나는 의존 라이브러리가 있고, 다른 하나는
   없다. 의존 라이브러리가 포함된 것은 크기가 훨씬 크지만 스프링이 의존하는 모든 써드파
   티 라이브러리가 포함돼있다.
 - 압축을 푼후 필요한 jar 파일들은 dist 디렉토리 들어있다.
 - 스프링 jar 파일과 필요한 jar 파일들을 빌드 클래스 경로에 추가

2. 배포본 선택

 - spring-core.jar
    용도 : 스프링 핵심 컨테이너와 유틸리티
    의존대상 : 커먼스 로깅
 - spring-app.jar
    용도 : 스프링 AOP 프레임워크 및 메타데이터 지원
    의존대상 : spring-core.jar, AOP 연맹
  - spring-context.jar
    용도 : 애플리케이션 컨텍스트, 유효성 검증 프레임워크, 템플릿 지원(벨로시티, 프리마커)
             리모팅(JAX-RPC, Hessian, Burlap), EJB지원, 스케줄링
    의존대상 : spring-core.jar
 - spring-dao.jar
    용도 : JDBC 및 DAO 지원, 트랜잭션 기반구조
    의존대상 : spring-core.jar
 - spring-orm.jar
    용도 : 하이버네이트, JDO, 아이바티스를 포함한 ORM 프레임워크 지원
    의존대상 : spring-core.jar
 - spring-web.jar
    용도 : 웹 애플리케이션 컨텍스트 및 유틸리티, 멀티파트 파일 업로드 지원
    의존대상 : spring-context.jar
 - spring-webmvc.jar
    용도 : 스프링 MVC 프레임워크
    의존대상 : spring-web.jar
 - spring.jar
    용도 : 다른 JAR 파일들을 포함한 스프링 프레임워크 전체
    의존대상 : 위의 모든 사항들을 포함

3. 환경

 - 스프링 프레임워크 : spring-frmaework-1.2.9
 - 이클립스 : eclipse-3.3.1
 - JDK : jdk 6.0
 - 톰켓 : tomcat 6.0

4. 프로젝트 설정

 - 프로젝트 명 : spring
 - 디렉토리구조 :    -- src
                          l   l-- com
                          l           l-- ctns
                          l                   l-- spring
                          l
                          --  wwwroot
                                     l-- WEB-INF
                                               l-- classes
                                               l-- lib
       * /src/com/ctns/spring : 모든 자바 소스코드 파일
       * /wwwroot/WEB-INF/classes : 컴파일된 클래스 파일
       * /wwwroot/WEB-INF/lib : 필요한 모든 jar 파일
 - 클래스 빌드 : spring.jar, commons-loggin.jar 추가
   * spring.jar만 빌드패스에 추가할경우 에러 발생~

5. 스프링 시작하기(예제)

 - GreetingService.java : GreetingService 인터페이스는 서비스의 구현을
                                   인터페이스로부터 분리

 - GreetingServiceImpl.java : GreetingService 인터페이스를 구현. 구현을 인터페이스 뒤로
                                         꼭 숨길 필요는 없지만, 분리하는 것은 매우 권장되는 방법

 - hello.xml : 스프링 설정파일로 컨테이너가 어떻게 설정하는지를 보여준다.

 - HelloApp.java : 스프링 컨테이너를 로드하고, 그 컨테이너를 사용하여 인사 서비스를
                          얻어낸다.

 - Java Application을 실행하면~ xml 파일에 정의해 놓은 이름이 출력된다.

 - 해당 파일은 첨부파일에서 다운받을것.

신고


휴대대상 사이트 만드는 방법을 간단히 소개합니다.

- PC와 휴대폰의 차이

   1. file size의 제한
      이것이 제일(가장) 큰 곳이지요. 나중에 자세하게 설명합니다만, 휴대대상 사이트에서는
      1페이지당의 file size를 화상도 포함시켜서 5Kbytes 정도에 거두지 않으면 안됩니다.
      5Kbytes에서는 모자란,이라고 생각되는 분도 많다고 생각합니다만  시험 삼아 5Kbytes의
      문장을 지어서 휴대로 표시시켜 봅시다. 휴대가 작은 화면에서 보면 이것이라도 상당한
      정보량이라고 느낄 것입니다.

   2. style sheet 관련
      휴대대상 사이트에서는, 일절의 style sheet가 쓸 수 없습니다. 원래, style sheet와는
      잔 장식 방법을 어레인지(arrangement) 하기 위한 물건이므로 휴대의 작은 화면에서
      이것을 사용할 이유는 특히 없지요.

   3. JavaScript
      이것도 일체 쓸 수 없습니다.

   4. 쿠키, 세션
      쿠키는 Vodafone의 비교적 새로운 기종이라면 쓸 수 있는 것 같습니다.
      i-mode, ez-web에서는 기술정보로 쿠키에 대해서 접촉하지 않고 있으므로 불분명합니
      다만 사용할 수 없다고 생각한 편이 낫지요. 세션 관리는 전기종에서 사용하는 것이 가능
      합니다만, 조금 순서가 필요하게 됩니다.

   5. 메이커에 의한 차이
      PC대상 사이트에서도, 브라우저에 의해 동작이나 레이아웃이 다르다고 한 적은 있었습
      니다만 휴대대상 사이트에 있어서도 그 경향은 없어지지 않습니다. 각휴대 메이커에
      의해 여러가지 규격의 차이가 존재합니다. 현재, i-mode / Vodafone / ez-web 이라고
      하는 3종의 규격이 있습니다. 그러나, 메이커에 의해 화면을 새로 만들거나 하는 것은
      (과연)정말로 번거롭습니다. 공통인 조형으로 하는 것은 비교적 간단하므로, 그렇게
      하는것을 추천합니다. 그치만 보통 급한대로 도코모(i-mode)에 맞추면 될듯합니다.

- 휴대 공통 사이트를 만드는 것에 대하여

메이커에 의해 약간의 차이는 있습니다만, 요점을 잡으면 휴대 공통의 페이지를 만드는 것이 가능합니다.

   1. 문자코드는 Shift_JIS로 한다
      우선 이것을 잊지 않도록 합시다. i-mode, EZweb은 기술자료에 「Shift_JIS만 대응」
      이라고 적혀 있습니다만 실제로는 다른 문자코드에서도 표시할 수 있을 경우도 있는 것
      같습니다. Vodafone에서는 EUC-JP / ISO2022-JP / UTF-8 (3GC단말만)에게 대응하고
      있습니다. 그리고, META태그는 반드시 넣도록 합니다. file size가 아깝다고 생각할지도
      모르겠습니다만, 이것을 쓰지 않고 문자잘못 된 것을 일으켜버리면 원래도 아이도 없습
      니다.
      <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">

   2. 사용할 수 있는 태그
      기본적인 태그는 대체로 쓸 수 있으므로 그다지 걱정하지 않아서 좋을 것입니다. 단지,
      쓸 수 있는 속성은 한정되어 있습니다.

   3. 화상에 대해서
      이것이 조금 성가십니다. 이라고 하는 것도, 전기종에서 공통되어서 쓸 수 있는 포맷이
      없기 때문입니다.

      * i-mode
         모든 기종에서 대응하고 있는 것이 GIF 입니다.
         2003년이후 발매의 기종에서는 JPEG も 쓸 수 있습니다.

      * Vodafone
         모든 기종에서 대응하고 있는 것이 PNG / JPEG 입니다.
         3GC단말(2005년이후 발매)에서는 GIF も 쓸 수 있습니다.

      * EZweb
         모든 기종에서 대응하고 있는 것이 PNG 입니다.
         2001년 후반 이후 발매의 기종에서는 JPEG 에, 2003년이후 발매의 기종에서는 GIF
         에도 대응하고 있습니다.

      이상을 근거로 하면, JPEG이면 2003년이후 발매의 거의 전기종에서 사용할 수
      있습니다. GIF는 Vodafone의 대응이 약간 늦습니다만, 다른 2메이커라면 2003년이후로
      대응하고 있습니다. PNG은 i-mode가 대응하지 않고 있으므로 세운 편이 낫지요.
      ※ i-mode마저 대응하면, 추천의 포맷은 PNG입니다

   4. 화면 사이즈
      이것은 기종에 의해 다양함입니다만, 우선 가로 폭 20(전각10문자)로 만들어 두면 대강의
      기종에는 대응할 수 있을 것 같습니다. 세로폭은 8∼10정도가 일반적이지요. 세로폭은 한
      화면에 보여주는 이미지가 아니라면 길어도 상관없습니다.

   5. file size
      처음에도 조금 소개했습니다만, 이것도 기종에 의해 다양함입니다.

      * i-mode
         초기의 기종은 전체로 5K. FOMA에서는 30K (전체에서는 100K).

      * Vodafone
         초기의 기종은 전체로 6K. 3GC단말에서는 10K (전체에서는 300K).

      * EZweb
         전체로 9K.

      이상으로보다, 5K이내이면 거의 모든 휴대로 볼 수 있습니다. 이것은, 화상등을 포함시킨
      1페이지의 총 사이즈수입니다. 당연한 이야기이겠지만 용량을 넘으면 이미지의 경우엑박
      입니다.

   6. 폼에 대해서
      휴대 페이지에서는 물론 폼을 사용할 수 있습니다만, 주의해 되면 안되는 점이 몇인가
      있습니다.

      * 문자수 입력 제한
         INPUT태그에는 size와 maxlength라고 하는 2개의 속성을 설정할 수 있습니다. 전자는
         표시상의 크기, 후자는 입력할 수 있는 최대문자수 (반각단위)입니다. 특히, maxlength
         는 반드시 명기해 둡시다.

      * 액세스 키
         휴대는 화면이 좁으므로, 화면내의 특정 위치에 점프 하기 위해서 액세스 키라고 하는
         것을 사용해서 조작성을 높일 수 있습니다. 예를 들면, 「1」을 무릅쓰면 입력 란에
         점프 하는,이라고 한 것이 가능하게 됩니다. 이전에는 메이커에 의해 차이가 있었습니
         다만, 현재는 accesskey 이라고 하는 속성이 거의 모든 규격으로 쓸 수 있습니다.
         INPUT와 A태그의 속성으로서 사용합니다. 하지만, Vodafone의 옛날의 기종에서는 쓸
         수 없습니다. 그 경우, 대용의 속성은 없는 것 같으므로 포기하는 수 밖에 없는것 같습
         니다.

      * 입력 모드의 설정
         보통, 입력 란에서는 일본어입력 모드가 초기 상태가 되고 있습니다. 그러나, 실제로는
         메일 주소나 URL의 입력 란에서는 반각영숫자밖에 사용하지 않습니다. 이러한 경우,
         일부러 휴대로 입력 모드를 바꾸는 것은 번거롭습니다. 처음부터 반각영숫자 모드 등
        으로 하는 방법이 있어서 부디 사용합시다. 이것은 기종에 의해 약간의 차이가 있습니
        다. i-mode와 ez-web에서는,istyle 속성을 쓸 수 있습니다. vodafone의 옛날의 기종에
        서는 이 속성이 쓸 수 없습니다. 대신,mode 속성을 사용합니다.

          - 전각(디폴트)
            istyle = 1 또는 mode = hiragana

          - 반각 카나
            istyle = 2 또는 mode = hankakukana

          - 영자
            istyle = 3 또는 mode = alphabet

          - 숫자
            istyle = 4 또는 mode = numeric

         istyle과 mode는 속성이므로, 양쪽 모두 기술하는 것이 가능합니다. 다소 장황합니다
         만, 이것이 제일(가장) 간단해서 무난한 방식이지요.

   7. 쿼리(query) 문자열
      CGI프로그램에 파라메타를 건네 주기 위해서는 2개의 방법이 있습니다. 하나는 폼으로
      부터 Submit 하는 방법, 또 하나는 퀘리(query) 문자열을 사용하는 방법입니다. 여기에서
      는 후자를 찔러서 사용할 때의 주의 점을 듭니다.폼으로 GET방식(디폴트)을 사용할 때에
      도 같은 주의가 필요합니다. URL에 계속해서 「? 」 기호를 부가하고, 그 후에 키와 값의
      페어 를「&」나와 단락 지어서 지정합니다. 이 때, 키와 값에 사용할 수 없는 문자가 몇
      인가 있습니다.「&」 「+」 「」 (반각 스페이스)의 3개입니다.「&」은 단락 지어 문자
      이기 때문에, 당연 키와 값에는 쓸 수 없습니다.「+」은 반각 스페이스로 변환됩니다.
    「」은, 단말에 의해 동작이 다릅니다. 이것들을 포함시키고, 특수문자는 에스케이프 기술
      을 이용할 수 있습니다. 예를 들면 「&」은 문자코드가 0x26 (10신법으로 38)이므로
    「%26」이라고 기술할 수 있습니다.「+」은 「%2B」, 「」은 「%20」이 됩니다. 이
     안에서 주의하는 것은 반각 스페이스입니다. 이 문자는, 예를 들면 Vodafone이라고 에스
     케이프 기술을 하지 않아도 정확하게 움직입니다만 i-mode라고 움직이지 않습니다. 그러
     니까, 모든 단말에서 확실하게 움직이도록 하기 위해서는 반각 스페이스도 반드시 에스케
     이프 기술(%20) 하도록 합시다.

   8. 그림문자
      이것은 기종에 의해 완전히 기술 방법이 다르므로 정적 페이지에서는 파일을 나눌 필요
      가 있습니다. 처음에 말한 것 같이, 될수 있는 한 휴대 공통의 페이지를 만들고 싶으므로
      그림문자를 사용하는 것은 동적생성 페이지에 한정하는 것을 추천합니다.
      ez-web에서는, i-mode의 그림문자를 자동적으로 변환하는 기능이 있다고 합니다

      이하, 휴대 메이커마다 설명합니다.

      * i-mode
         기술 방법은 몇인가 있습니다만, 어느 것도 단점이 있습니다.

         - binary 입력
           왜 이런 방법을 채용한 것일지 이해가 가지 않습니다만, 파일내에 binary code를 메
           워넣는다고 하는 것입니다. 확실히 file size는 절약할 수 있습니다 (2바이트)이, 그
           이외의 메리트는 없습니다. 게다가, JavaServlet를 사용하고 있으면 binary code의
           보충은 보통 수단에서는 가지 않습니다. 전기종에 대응하고 있습니다.

         - Unicode의 텍스트 입력
           문자코드 겉면에 있는 Unicode문자코드를 &#x\\\\;이라고 하는 형식으로 기술
           합니다. 편리합니다만, 2002년 후반 이전에 시판된 기종에서는 이용할 수 없습니다.

         - Shift-JIS의 텍스트 입력
           문자코드 겉면에 있는 Shift_JIS문자코드를 &#\\\\;이라고 하는 형식으로 기술합
           니다. 전기종에 대응하고 있습니다만, 확장 그림문자를 표시할 수 없습니다. 게다가,
         「비추장」의 입력 방법이므로 장래 이용할 수 없게 될 가능성이 있습니다.

      * Vodafone(J-PHONE)
         위의 페이지로부터 그림문자에 대응하는 코드를 카피&페이스트 하는 것 뿐으로 한다.
         일견 binary code인 것 같습니다만, 빈틈없이 JavaServlet로부터에서도 이용할 수 있
         습니다.

      * ez-web
         그림문자는 기종에 의해 타이프가 다릅니다만, 기본적으로는 어느 것도 함께입니다.
         타이프B은 타이프A에 색이 붙은 것, 타이프C/D는 확장의 그림문자가 추가되어 있습
         니다. 175번까지는 전기종에서 이용할 수 있습니다. 기술 방법은 <img localsrc=”그림
         문자번호 ” >에서 통일되어 있습니다.

   9. viewer에 대해서
      당연, 휴대 페이지를 만들면 그것을 실제로 보아서 확인하지 않으면 안됩니다. 그러나,
      일부러 휴대로부터 확인하고 있으면 돈도 들고 대단합니다. 거기에서, 각휴대 메이커는
      viewer를 준비하고 있습니다.

      * i-mode
         i모드HTML시뮬레이터II 이라고 하는 소프트가 준비되어 있습니다. HTTP으로부터의
        읽기에 대응하고 있으므로 게시판등의 동적생성 페이지의 확인에 이용할 수 있습니다.

      * ez-web
         몇인가 있습니다만,Openwave SDK 지만 HTTP읽기에 대응하고 있습니다.

      * Vodafone
        【웨부콘텐쯔보아】 이라고 하는 소프트가 준비되어 있습니다. HTTP읽기 대응, 그림문
         자 파렛트, error check등 편리한 기능이 있어 조작도 간단합니다. 2006/9현재,
         2006/2/17까지 시판된 모든 Vodafone휴대 단말에 대응하고 있다라고 하는 것입니다.

      모든 휴대로부터 액세스되는 것을 생각하면 이것들 3개 모든 viewer에서 확인하는 것이
      좋지요지만, (과연)정말로 그것은 번거롭습니다. 보통은 임의의 하나의 viewer에서 확인
      을 하면 충분하지요. 개인적으로는 【웨부콘텐쯔보아】지만 제일(가장) 쓰기 쉽게 추천
      입니다.

- Tips

핸드폰 사이트를 만드는 동시에서의 대수롭지 않은 테크닉을 소개합니다.

   1. file size를 축소한다
      핸드폰 사이트에서는, 이것이 상당히 중요한 포인트가 되어 옵니다. file size에는 제한이
      있고, 제한을 넘지 않는으로 해도 사이즈를 절감하는 것은 읽어 완전히 이해해 시간의 단
     축이나 패킷값의 절약에 연결되기 때문입니다.

      * 행 바꿈을 줄인다
         수수합니다만, 이것만이라도 몇십byte는 축소할 수 있습니다. 이 대용량시대에 어긋나
         고 있다고는 생각합니다만, 한정된 자원 안(속)에서는 이러한 착실한 노력이 필요합니
         다. JavaServlet를 사용하고 있는 것이라면, 필터를 사용하는 것으로 JSP에 일체 손질
         을 가할 일 없고 모든 행 바꿈을 깎을 수 있습니다. 행 바꿈 삭제 필터의 샘플 를 만들
         어 보았습니다. 흥미가 있는 분은 참고로 해 보아 주십시오.

      * 태그의 사용은 필요 최소한으로 한다
         머리말이라도 이야기한 것 같이, 표시 문자열만으로 5Kbytes를 다 쓰면 상당한 정보량
         을 다룰 수 있습니다. PC대상 사이트에서 복사해서 휴대대상 사이트의 페이지를 만들
         경우, 많은 태그는 필요없는 것을 알아차릴 것입니다. 쓸데 없는 태그는 가능한 한 배
         제합시다. 물론, 태그를 구사해서 레이아웃에 구애되는 것도 때에는 필요하다고 생각
         합니다만 그것에 의해서 표시할 수 있는 정보량이 줄어드는 것은 머리에 넣어 둡시다.

      * 더블쿼테이션(quotation)은 극력 사용하지 않는다
         예를 들면, 우밀려 듦(밀어 닥침)을 할 때에
         <div align="right"> 로 하는 것 보다는 <div align=right> 로 합시다. 그 외에도 INPUT
         태그의 name속성등, 대부분의 경우에서 더블쿼테이션(quotation)은 필요 없습니다.
         예외로서, 속성값에 싱글(더블)쿼테이션(quotation)을 포함할 경우에는【다불커텐
         숀】에서 묶어서 하지 않으면 안됩니다.

      * hidden문자열은 하나에 정리한다
         폼을 사용한 페이지의 경우, 예를 들면 아래와같이 되어 있다로 합니다.
         <input type=hidden name=script_name value=abc>
         <input type=hidden name=script_url value=def> 이것들은 하나에 정리해버립시다.
         어차피면, name값도 간결하게 합니다.
         <input type=hidden name=k value=abc,def> 물론, 이 abc, def 이라고 하는 문자열을
         해석하는 프로그램은 CGI측에서 준비 할 필요가 있습니다.

신고


태그
 - input type="text"
 - textarea

서식
 - istyle="입력모드"

의미
 - 본기능은, input type="text"와 TEXTAREA 태그의 속성입니다.
 - 각 입력 항목에 대해 입력 모드의 초기설정을 영문자·숫자등으로 설정
 - 입력 모드를 이하와 같이 규정합니다
属性値
(속성)
モード1(모드1)
(かな入力モード時)
  (카나입력모드시)
モード2(모드2)
(ポケットベル入力モード時)
  (히라가나입력모드시)
1 全角かな(전각카나) 全角文字(전각문자)
2 半角カナ(반각카나) 半角文字(반각문자)
3 英字(영문자) 半角文字(반각문자)
4 数字(숫자) 半角文字(반각문자)

 - 속성치 1이 디폴트 기동의 입력 모드입니다.
 - 속성치의 값인 1~4이외의 값이 지정되었을 경우는 디폴트로 기동됩니다.
 - 모드2에 대해서 해당되는 입력 모드가 없는 경우는 반각 입력 모드로 처리됩니다.

예제
 - 영문자 모드로 개시하고 싶은 경우
<HTML><HEAD><TITLE>istyle</TITLE></HEAD><BODY>
メールアドレス登録<BR><BR>
<FORM method="get" action="test.cgi">
MAIL ADDRESS<BR>
<INPUT type="text" name="aaa" value="@docomo.ne.jp" istyle="3" size=14 maxlength=20><BR><BR>
<INPUT type="submit" name="send" value="SEND">
<INPUT type="reset" value="CANCEL"><BR>
</FORM>
</BODY></HTML>
신고


- 수학 관련 함수

1. Abs 함수 : 인자로 전달된 값에 대한 절대값을 리턴하는 함수
   ex> Abs(number)

2. Atn 함수 : 인자로 전달된 숫자의 아크 탄젠트 값을 리턴
   ex> Atn(number)

3. Cos 함수 : 인자로 전달된 숫자의 코사인 값을 리턴
   ex> Cos(number)

4. Sgn 함수 : 지정된 표현식의 부호를 리턴
   ex> Sng(number)

5. Sin 함수 : 지정된 표현식의 사인 값을 리턴
   ex> Sin(number)

6. Sqr 함수 : 지정된 표현식의 제곱근을 리턴
   ex> Sqr(number)
         Dim num
         num = 4
         response.write Sqr(num)
   결과> 2

7. Tan 함수 : 지정된 값의 탄젠트 값을 리턴
   ex> Tan(number)

- 변환 함수

1. CBool 함수 : 인자로 전달된 값을 Boolean 형으로 변환. 값이 Boolean으로 인식될 수
                      없으면 런타임 오류가 발생
   ex> CBool(expression)
         Dim isBool, siNotBool
         isBool = 1: isNotBool = 0
         response.write CBool(isBool)
         response.write CBool(isBool)
   결과> True
            False

2. CByte 함수 : 인자로 전달된 값을 Byte 형식으로 변환
   ex> CByte(expression)

3. CCur 함수 : 인자로 전달된 값을 Currency 형식으로 변환
   ex> CCur(expression)

4. CDate 함수 : 인자로 전달된 값을 DateTime 형식으로 변환합니다.
   ex> CDate(expression)
         Dim date
         date = "2008-01-01"
         response.write CDate(date)
   결과> 2008-01-01

5. CDbl 함수 : 인자로 전달된 값을 Double 형으로 변환
   ex> CDbl(expression)

6. CInt 함수 : 인자로 전달된 값을 Integer형으로 변환
   ex> CInt(expression)

7. CLng 함수 : 인자로 전달된 값을 Long형으로 변환
   ex> CLng(expression)

8. CSng 함수 : 인자로 전달된 값을 Single 형으로 변환
   ex> CSng(expression)

9. Cstr 함수 : 인자로 전달된 값을 String 형으로 변환
   ex> Cstr(expression)

10. Fix 함수 : 지정된 숫자보다 작은 정수 중 가장 큰 정수를 리턴
   ex> Fix(number)

11. Int 함수 : 지정된 숫자보다 크거나 작은 정수 중 가장 작은 값이나 큰 값을 리턴
   ex> Int(number)

12. Hex 함수 : 인자로 전달된 값을 16진수로 변환
   ex> Hex(number)

13. Oct 함수 : 인자로 전달된 값을 8진수로 변환
   ex> Oct(number)

- 문자열 함수

1. Asc 함수 : 지정된 문자에 해당하는 ASCII 코드를 리턴
   ex> Asc(string)

2. Chr 함수 : 지정된 숫자에 해당하는 ASCII 문자를 리턴
   ex> Chr(charcode)

3. Filter 함수 : 지정된 문자열 배열에서 지정된 필터가 적용되는 배열의 일부 원소를 리턴
   ex> Filter(inputStrings, Value[, Include [, Compare]])
         Dim myArray, myNewArray
         myArray(0) = "박찬호"
         myArray(1) = "유재석"
         myArray(2) = "강호동"
         myNewArray = Filter(myArray, "호")
         response.write myNewArray(0)
         response.write myNewArray(1)
   결과> 박찬호
            강호동

4. InStr 함수 : 지정된 문자열에서 특정 문자열이 나타나는 위치를 문자열의 처음부터 검색
   ex> InStr([start, ] string1, string2, [ compare])
         Dim str
         str = "Microsoft Active Server Pages"
         response.write InStr(str, "e")
   결과> 16

5. InStrRev 함수 : 지정된 문자열에서 특정 문자열이 나타나는 위치를 문자열의
                         마지막부터 검색
   ex> InStrRev([start, ] string1, string2, [ compare])
         Dim str
         str = "Microsoft Active Server Pages"
         response.write InstrRev(str, "a")
   결과> 26

6. Join 함수 : 지정된 문자열 배열을 하나의 문자열로 결합
   ex> Join(list [, delimiter])
         Dim strArray(3)
         strArray(0) = "Microsoft"
         strArray(1) = "Active"
         strArray(2) = "Server"
         strArray(3) = "Pages"
         response.write Join(strArray, " ")
   결과> Microsoft Active Server Pages

7. LCase 함수 : 지정된 문자열을 모두 소문자로 변환하여 리턴
   ex> LCase(string)

8. Left 함수 : 문자열의 왼쪽으로부터 지정된 개수만큼의 문자열을 리턴
   ex> Left(string, length)

9. Len 함수 : 지정된 문자열의 길이를 리턴
   ex> Len(string)

10. LTrim 함수 : 지정된 문자열에서 문자열 왼쪽의 공백을 제거
   ex> LTrim(string)

11. Mid 함수 : 지정된 문자열에서 특정 위치의 문자열을 리턴
   ex> Mid(string, start [, length])
         Dim str
         str = "Microsoft Active Server Pages"
         response.write Mid(str, 5, 10)
   결과> soft Activ

12. Replace 함수 : 지정된 문자열에서 특정 문자열을 변환
   ex> Replace(expression, find, replacewith [,start [,count [, compare]]])
         Dim str
         str = "Microsoft Active Server Pages"
         response.write Replace(str, e, E)
   결과> Microsoft ActivE SErvEr PagEs

13. Right 함수 : 지정된 문자열에서 오른쪽으로부터 지정된 길이만큼의 문자열을 리턴
   ex> Right(String, length)

14. RTrim 함수 : 지정된 문자열의 우측에 나타나는 공백을 제거
   ex> RTrim(string)

15. Space 함수 : 지정된 개수만큼의 공백을 리턴
   ex> Space(number)
         Dim str, str2
         str = "Microsoft"
         str2 = "Active Server Pages"
         response.write str & Space(5) & str2
   결과> Microsoft     Active Server Pages

16. Split 함수 : 지정된 문자열을 문자열 배열로 나눔
   ex> Split(expression [, delimiter [, count [, compare]]])
         Dim str, strArray
         str = "Microsoft Active Server Pages"
         strArray = Split(str, " ")
         response.write strArray(2)
   결과> Server

17. Strcomp 함수 : 지정된 두 문자열을 비교. 두 문자열이 같으면 0, 첫번째 문자열이 작으면
                           -1, 두번째 문자열이 작으면 1을 리턴
   ex> StrComp(string1, string2 [, compare])
         Dim str, str2
         str = "Microsoft"
         str2 = "microsoft"
         response.write StrComp(str, str2)
   결과> -1

18. String 함수 : 지정된 개수 만큼의 문자열을 반복하여 리턴
   ex> String(number, character)
         response.write String(10, "*")
   결과> **********

19. StrReverse 함수 : 지정된 문자열을 뒤집어서 출력
   ex> StrReverse(string)

20. Trim 함수 : 지정된 문자열의 좌우측 공백을 모두 제거
   ex> Trim(string)

21. UCase 함수 : 지정된 문자열을 모두 대문자로 변환
   ex> UCase(string)

- 날짜 및 시간 함수

1. Date 함수 : 현재 시스템의 날짜를 리턴
   ex> Date

2. DateAdd 함수 : 지정된 날짜에 지정된 간격의 시간을 더한 날짜를 리턴
   ex> DateAdd(interval, number, date)
         yyyy     : 년
         q         : 분기
         m         : 월
         y          : 일(1년 기준)
         d          : 일
         w         : 요일
         ww       : 주(일년 기준)
         h          : 시
         n          : 분
         s          : 초
        
         Dim myDate
         myDate = "2008-01-01"
         response.write DateAdd("d", 5, myDate)

3. DateDiff 함수 : 두 날짜 사이의 간격을 리턴
   ex> DateDiff(interval, date1, date2 [, firstDayOfWeek [, firstWeekOfYear]])
         Dim date1, date2
         date1 = "2008-01-01"
         date2 = "2008-01-03"
         response.write DateDiff("d", date1, date2)
         response.write DateDiff("d", date1, date2)
   결과> 2, -2

4. DatePart 함수 : 지정된 날짜에서 지정된 부분을 리턴
   ex> DatePart(interval, date [, firstDayOfWeek [, firstWeekOfYear]])
         Dim myDate
         myDate = "2008-01-15"
         response.write DatePart("d", myDate)
   결과> 15

5. DateSerial 함수 : 지정된 년, 월, 일을 이용하여 DateTime 형을 리턴
   ex> DateSerial(year, month, day)
         response.write DateSerial("2008", "1", "1")
   결과> 2008-01-01

6. DateValue 함수 : 지정된 날짜 및 시간 중 날짜 부분을 리턴
   ex> DateValue(date)

7. Day 함수 : 날짜 및 시간 데이터에서 일을 리턴
   ex> Day(date)

8. Hour 함수 : 날짜 및 시간 데이터에서 시간을 리턴
   ex> Hour(date)

9. Minute 함수 : 지정된 날짜 및 시간 데이터에서 분을 리턴
   ex> Minute(time)

10. Month 함수 : 지정된 날짜에서 월을 리턴
   ex> Month(date)

11. MonthName 함수 : 지정된 숫자에 해당하는 월의 이름을 가져옵니다.
   ex> MonthName(month [, abbreviate])
         response.wrkte MonthName(1, False)

12. Now 함수 : 시스템의 현재 날짜 및 시간 데이터를 리턴
   ex> Now

13. Time 함수 : 시스템의 현재 시간을 리턴
   ex> Time

14. Timer 함수 : 자정부터 현재 시간까지의 시간 간격을 초 단위로 리턴
   ex> Timer

15. TimeSerial 함수 : 지정된 숫자를 이용하여 시간 데이터를 생성
   ex> TimeSerial(hour, minute, second)

16. TimeValue 함수 : 지정된 표현식을 시간 데이터로 변환
   ex> TimeValue(time)

17. WeekDay 함수 : 지정된 날짜의 요일을 숫자로 출력합니다.
   ex> WeekDay(date [, firstdayofweek])
         Dim date1
         date1 = "2008-01-01"
         response.write WeekDay(date1)
   결과> 3

18. WeekdayName 함수 : 지정된 WeekDay 값이 표현하는 요일의 이름을 가져옴
   ex> Weekdayname(weekday, abbreviate, firstdayofweek)

19. Year 함수 : 지정된 날짜에서 년을 리턴
   ex> Year(date)

- 형식 지정 함수

1. FormatCurrency 함수 : Currency 하위 데이터 형의 출력에 대한 형식을 지정
   ex> Dim num1
         num1 = 123456
         response.write FormatCurrency(num1)
   결과 > \123,456

2. FormateDateTime 함수 : 날짜 및 시간 데이터의 출력 형식을 결정하는 함수
   ex> FormatDateTime(Date [, NamedFormat])

3. FormatNumber 함수 : 숫자형 데이터의 출력 형식을 결정
   ex> Dim num1
         num1 = 123456
         response.write FormatNumber(num1)
   결과> 123,456,00

4. FormatPercent 함수 : 지정된 표현식을 100으로 나눈 퍼센트 형식으로 출력
   ex> Dim num1
         num1 = 0.9
         response.write FormatPercent(num1)
   결과> 90.00%

- 기타 함수

1. Array 함수 : 괄호에 전달된 인자의 수만큼의 크기를 가지며 각 인자의 값을 각 원소의
                     값으로 하는 배열을 리턴하는 함수
   ex> Array(arguments)
         Dim myArray
         myArray = Array(1,2,3)
         response.write myArray(0)
         response.write myArray(1)
         response.write myArray(2)
   결과> 1 2 3

2. Eval 함수 : 전달된 문자열을 VBScript 표현식으로 간주하고 실행한 결과를 리턴
   ex> Eval(expression)
         Dim num1
         num1 = 10
         Eval num1 = num1 + 2
         response.write num1
   결과> 12

3. IsArray 함수 : 지정된 변수가 배열인지 아닌지를 검사
   ex> IsArray(varname)
         Dim numArray(3)
         response.write isArray(numArray)
   결과> True

4. IsDate 함수 : 전달된 표현식이 날짜 데이터인지 아닌지 검사
   ex> IsDate(expression)
         Dim num1
         num1 = 10
         response.write IsDate(num1)
   결과> False

5. IsEmpty 함수 : 전달된 표현식의 초기화 여부를 검사하는 함수
   ex> IsEmpty(expression)
         Dim num1
         response.write IsEmpty(num1)
   결과> True

6. IsNull 함수 : 전달된 표현식이 Null 표현인지 아닌지 검사
   ex> IsNull(expression)

7. IsNumeric 함수 : 전달된 표현식이 숫자인지 아닌지를 검사
   ex> IsNumeric(expression)

8. IsObject 함수 : 전달된 표현식이 객체인지 아닌지 검사
   ex> IsObject(expression)

9. LBound 함수 : 지정된 배열 변수의 첫번재 원소 인텍스를 리턴
   ex> Dim strArray(3)
         strArray(0) = "Microsoft"
         strArray(1) = "Active"
         strArray(2) = "Server"
         strArray(3) = "Pages"
         response.write LBound(strArray)
   결과> 0

10 . UBound 함수 : 지정된 배열 변수의 마지막 원소 인텍스를 리턴
   ex> Dim strArray(3)
         strArray(0) = "Microsoft"
         strArray(1) = "Active"
         strArray(2) = "Server"
         strArray(3) = "Pages"
         response.write UBound(strArray)
   결과> 3
신고

티스토리 툴바