strtus2 연습을 위한 web.xml이다.

  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>
  org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
  <init-param>
      <description>struts2 UTF-8 설정</description>
      <param-name>struts.i18n.encoding</param-name>
      <param-value>UTF-8</param-value>
  </init-param>
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>



인코딩 설정부분.

- 각 서버 제품 관련 encoding 설정은 별도로 수정해야 함.

예> tomcat 설정 - http://fallacy.tistory.com/211

'FRAMEWORK' 카테고리의 다른 글

struts2 - TagLibrary  (0) 2010.09.01
struts2 - 액션클래스 비교.  (0) 2010.08.27
struts - UTF-8 설정 (인코딩설정)  (0) 2010.08.26
EJB EntityBeans  (0) 2009.09.18
[Struts] JDBC 사용하기.  (0) 2008.04.22
[1.3] struts-config.xml NutShell  (0) 2008.04.15
<connector .....  useBodyEncodingForURI="true"  URIEncoding="UTF-8" >

추가
- 섹션 요소를 사용할 때는 항상 아웃라인을 염두할 것.

- 아웃라인과는 상관없는 범위를 지정할 때는 div 요소를 사용할 것.

- article 요소를 사용할 것인가 말 것인가는 해당 콘텐츠를 페이지에서 분리해 사용할 수 있는가에 따라 결정.

- aside 요소는 없어도 문제없을 섹션에 사용.





출처 : HTML5 & API 입문 (프리렉, 시라이시 슌페이 지음)
body
details
fieldset
td
figure
blockquote

요소 자체가 섹션을 구성한다.
요소 바깥쪽 아웃라인에는 영향을 주지 않는다.

'HTML/JS/CSS' 카테고리의 다른 글

Ajax XMLHttpRequest  (0) 2010.09.17
HTML5 - 아웃라인을 의식한 마크업  (0) 2010.08.12
HTML5 - 섹션루트  (0) 2010.08.11
HTML5 - 없어진 요소(비표준 포함)  (0) 2010.07.14
HTML5 - 종료태그를 기술해서는 안되는 요소  (0) 2010.07.14
css - display : block  (0) 2010.07.13


http://html.nhndesign.com/
IE6


http://www.ie6nomore.kr/


applet - embed/object

acronym - abbr

dir - ul

frame, frameset, noframes - iframe과 CSS 이용 / 서버 사이드로 컨텐츠 결합

isindex - form과 텍스트 필드 조합

listing , xmp - pre / code

noembed - 폴백이 필요하다면 object

plaintext - MIME 타입 "text/plain"  사용

rb - ruby

basefont, big, blink, center, font, marquee, s, spacer, strike, tt, u - CSS를 사용

bgsound - audio


사라진요소 - 대체방법



출처 : HTML5 & API 입문 (프리렉)


'HTML/JS/CSS' 카테고리의 다른 글

HTML5 - 아웃라인을 의식한 마크업  (0) 2010.08.12
HTML5 - 섹션루트  (0) 2010.08.11
HTML5 - 없어진 요소(비표준 포함)  (0) 2010.07.14
HTML5 - 종료태그를 기술해서는 안되는 요소  (0) 2010.07.14
css - display : block  (0) 2010.07.13
[JS] KeyCode 값.  (2) 2009.11.16
area
base
br
col
command
embed
hr
img
input
keygen
link
meta
param
source


출처 : HTML5 & API 입문 (프리렉)


'HTML/JS/CSS' 카테고리의 다른 글

HTML5 - 섹션루트  (0) 2010.08.11
HTML5 - 없어진 요소(비표준 포함)  (0) 2010.07.14
HTML5 - 종료태그를 기술해서는 안되는 요소  (0) 2010.07.14
css - display : block  (0) 2010.07.13
[JS] KeyCode 값.  (2) 2009.11.16
getBoundingClientRect - 개체 좌표 구하기.  (0) 2009.11.13

block과 inline의 차이점은 줄바꿈만은 아니다.
block으로 설정하면 줄바꿈 되고, inline으로 설정하면 줄바꿈이 되지 않는다.
block으로 설정하면 상/하 margin과 padding 속성을 사용할 수 있지만, inline으로 설정하면 상/하 margin과 padding 속성을 사용할 수 없다.

block으로 설정하면 width, height 속성을 사용할 수 있지만, inline으로 설정하면 width, height 속성을 사용할 수 없다.


div 의 display 기본속성 : block

span 의 display 기본속성 : inline


출처 : http://www.dimdol.com/61?expandComment=1#comment9460382

100 : Continue
101 : Switching protocols
200 : OK, 에러없이 전송 성공
201 : Created, POST 명령 실행 및 성공
202 : Accepted, 서버가 클라이언트 명령을 받음
203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부 만 전송
204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음
205 : Reset content
206 : Partial content
300 : Multiple choices, 최근에 옮겨진 데이터를 요청
301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음
302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시
303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음
304 : Not modified
305 : Use proxy
400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음
401 : Unauthorized, 클라이언트의 인증 실패
402 : Payment required, 예약됨
403 : Forbidden, 접근이 거부된 문서를 요청함
404 : Not found, 문서를 찾을 수 없음
405 : Method not allowed, 리소스를 허용안함
406 : Not acceptable, 허용할 수 없음
407 : Proxy authentication required, 프록시 인증 필요
408 : Request timeout, 요청시간이 지남
409 : Conflict
410 : Gone, 영구적으로 사용할 수 없음
411 : Length required
412 : Precondition failed, 전체조건 실패
413 : Request entity too large,
414 : Request-URI too long, URL이 너무 김
415 : Unsupported media type
500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시)
501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함
502 : Bad gateway, 서버의 과부하 상태
503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태
504 : Gateway timeout
505 : HTTP version not supported

'JAVA/JSP' 카테고리의 다른 글

파일 업로드 multipart/form-data  (0) 2010.10.21
JAVA 가변인수  (0) 2010.10.15
ERROR 리스트  (0) 2010.04.06
StringTokenizer 와 split 의 차이.  (1) 2009.11.12
한글 깨짐 현상  (0) 2009.09.09
JSP 의 테이블 - > 엑셀로 만들기.  (0) 2008.06.24




썬 스튜디오 팀
 
32- 비트 애플리케이션을 64-비트 애플리케이션으로 변환하는데 발생하는 문제의 근본적 원인은 long 과 포인터의 타입에 따른 int 의 사이즈 변화에 기인합니다. 32-비트 프로그램을 64-비트 프로그램으로 변환할때는 오직 long 타입과 포인터 타입만 32비트에서 64비트로 사이즈가 변화되며, 정수 타입의 int 32 비트 사이즈는 변하지 않습니다. 이는 포인터나 long 타입을 int 타입으로 지정할 때의 데이터 절단시에 문제 발생의 원인이 됩니다. 또한 int 사이즈보다 작은 타입들의 식(expression)을 unsigned long 혹은 포인터로 지정할때 부호 확장에 대한 문제가 발생할 수도 있습니다. 이 글은 이러한 오류들을 회피하는 방법에 대해 다룹니다.
 

64-비트 와 64-비트 데이타 모델의 차이점

32-비트와 64-비트 컴파일 환경의 가장 큰 차이점은 데이타-타입 모델의 변화 입니다. 32-비트 애플리케이션의 C 데이타-타입 모델은 ILP32 모델입니다, 그러므로 intlong 타입 그리고 포인터들이 32-비트 데이타 타입이므로 그렇게 이름지어졌습니다. 64-비트 애플리케이션의 데이타 모델은 LP64 데이타 모델입니다, 그러므로 long 과 포인터 타입이 64 비트로 커졌습니다. C의 정수 타입과 부동소숫점 타입은 두 데이타 모델에서 동일합니다.

현재의 32-비트 애플리케이션에서 int 타입과, long 타입, 그리고 포인터가 같은 크기를 갖는 것은 이상한 일이 아닙니다. 그러므로 LP64 데이타 모델에서 longpointer 의 변화는 이러한 변화 자체가 기본적인 ILP32-to-LP64 변환 문제의 원인이 됩니다.

lint 유틸리티를 사용하여 64-비트 long 과 포인터 타입 문제점 찾기

lint를 사용하여 32-비트 와 64-비트 컴파일 환경 둘다를 위해 쓰여진 코드를 체크합니다. -errchk=longptr64 옵션을 명시하여 LP64 주의(warning) 를 생성하도록 합니다. 또한 -errchk=longptr64 플래그를 사용해서 long interger와 포인터가 64비트인 환경에서의 포팅가능성을 체크하고 일반 정수가 32비트 사이즈를 가지고 있는지 체크 합니다. -errchk=longptr64 플래그는 포인터 표현의 할당을 체크하고 명시적인 캐스트가 사용되었더라도 long integer 표현의 일반 정수형 할당 또한 체크합니다.

-errchk=longptr64,signext 옵션을 사용하여 정상적인 ISO C의 값-보존 규칙이 unsigned 정수형 타입들의 표현을 통해 signed 정수형 값들의 부호를 확장하는 것을 허용한 코드를 찾아 냅니다. lint-xarch=v9 옵션은 64-비트 SPARC 컴파일 환경에서만 코드가 수행되는지 확인할때 사용합니다. -xarch=amd64 는 x86 64-비트 환경에서 코드가 수행되는지 확인합니다.

lint 가 주의(warning)을 발생시킨다면 해당 코드의 위치(line number)를 출력하고 문제에 대한 메세지를 출력한 후에 포인터가 연관이 됐는지 안됐는지에 대해서 알려 줍니다. 주의 메세지는 또한 연관된 데이타 타입의 사이즈를 가르켜 줍니다. 사용자가 포인터가 연관된것을 알았고 데이타 타입의 사이즈를 알았다면 이제 64-비트 문제점을 발견해서 32-비트와 64-비트간의 데이타 사이즈 차이로 기인하는 문제를 해결할 수 있습니다.

사용자는 주어진 라인 바로 앞에 "NOTE(LINTED(<optional message>))" 를 삽입 시켜서 아래 라인에서 발생하는 주의 메세지를 무시할 수 있습니다. 이것은 lint 가 캐스트와 지정 할당을 하는 특정한 코드 라인들을 무시하도록 할때 유용합니다. "NOTE(LINTED(<optional message>))" 를 사용할때는 매우 주의해야 합니다. 왜냐하면 진짜 문제가 있는 부분을 숨겨버릴수도 있기 때문입니다. 또한 주의할 점은 NOTE 를 사용할때는 반드시 #include<note.h> 를 포함시켜줘야 합니다. lint man 페이지에서 좀 더 자세한 사항을 알아보시기 바랍니다.

일반 정수형의 사이즈 변화로 인한 포인터 사이즈의 변화 검사

ILP32 컴파일 환경에서 일반 정수형과 포인터가 같은 사이즈를 가지고 있었기 때문에, 32-비트 코드는 일반적으로 이러한 가정을 가지고 있습니다. 포인터는 종종 int 혹은 unsigned int 형으로 주소 계산을 위해 캐스트 돼왔습니다. 사용자는 사용자는 포인터를 unsigned long 으로 캐스트할 수 있습니다. 왜냐하면 long 과 포인터 타입은 IPL32, LP64 데이타 타입 모델에서 모두 같은 사이즈를 가지고 있기 때문입니다. 어쨌든 명시적으로 unsigned long 을 사용하는 대신 uintptr_t 를 사용하시기 바랍니다. 왜냐하면 이것이 의도를 좀 더 명확하게 해주고 코드를 좀더 포팅이 가능하도록 만들어주어서 미래의 변화에 대비할 수 있기 때문입니다. uintptr_tintptr_t 를 사용하기 위해서는 #include <inttypes.h> 이 필요합니다.

다음의 예제를 보시기 바랍니다:

char *p;
p = (char *) ((int)p & PAGEOFFSET);
% cc ..
warning: conversion of pointer loses bits

다 음의 버젼은 32-비트와 64-비트 타겟 모두에서 올바르게 동작할 것입니다:

char *p;
p = (char *) ((uintptr_t)p & PAGEOFFSET);

일반 정수형의 사이즈 변화에 따른 Long 정수형의 사이즈 변화 검사

정수형과 long 형이 IPL32 데이타-타입 모델에서는 구분되어지지 않았었기 때문에 현재 존재하는 코드에서도 이러한 가정을 내포한 코드가 존재할 수 있습니다. 정수형과 long 형을 상호 변환시킨 코드를 수정해야 합니다. 그렇게 해서 IPL32와 LP64 데이타 모델의 요구조건을 만족시켜야 합니다. 정수형과 long 형이 IPL32 데이타 모델에서는 둘다 32-비트 이지만 LP64 데이타-타입 모델에서는 long 형만 64비트 입니다.

다음의 예제를 보시기 바랍니다:

int waiting;
long w_io;
long w_swap;
...
waiting = w_io + w_swap;

% cc
warning: assignment of 64-bit integer to 32-bit integer

부호 확장 검사

부호 확장은 64-비트 컴파일 환경으로 전환할때 가장 일반적인 문제점입니다. 왜냐하면 타입 변환과 프로모션 규칙이 조금 애매하기 때문입니다. 부호-확장 문제를 막기 위해 명시적으로 의도된 결과를 얻기 위한 캐스팅을 사용합니다.

왜 부호 확장이 일어나는지 이해하기 위해 ISO C의 변환 규칙(conversion rule)을 이해하는 것이 도움이 됩니다. 대부분의 부호 확장 문제를 일으키는 변환 규칙은 다음과 같은 작업시에 32-비트와 64-비트 컴파일 환경에 영향을 줍니다:

  • 정수 프로모션(integer promotion)

    사용자는 char, short, 열거형 타입 혹은 비트-필드를 사용해서 signed 이든 unsigned이든 정수형을 위한 표현에 사용할 수 있습니다. 만약 정수형이 본래 타입이 담을 수 있는 값을 가지고 있다면 값은 정수형으로 변환됩니다;그렇지 않을경우 값은 unsigned 정수형으로 변환됩니다.

  • signed 와 unsigned 정수형간의 변환

    마이너스 부호를 가지고 있는 정수가 unsigned 정수형으로 혹은 더 큰 타입으로 대입된다면 첫번째로 signed된 좀 더 큰 타입의 값으로 대입된다음에 이것이 unsigned 값으로 변환됩니다.

다 음의 예제가 64-비트 프로그램으로 컴파일 된다면 addr 값은 a.base는 가 unsigned 타입이더라도 부호 확장 됩니다.

%cat test.c
struct foo {
  unsigned int base:19, rehash:13;
};
main(int argc, char *argv[])
{
  struct foo a;
  unsigned long addr;
  a.base = 0x40000;
  addr = a.base << 13; /* Sign extension here! */
  printf("addr 0x%lx\n", addr);
  addr = (unsigned int)(a.base << 13); /* No sign extension here! */
  printf("addr 0x%lx\n", addr);
}

부호 확장은 다음과 같은 규칙이 적용되면서 발생합니다:

  • 구조체 멤버 a.baseunsigned int 비트 필드에서 int 로 변환됩니다. 왜냐하면 정수 프로모션 규칙 때문입니다. 다시 말해 unsigned 19-비트 필드가 32-비트 정수형에 맞으면서 비트 필드가 unsigned 정수형 대신 일반 정수형으로 대입됩니다. 그러므로 a.base << 13int 타입이 되는 것입니다. 만약 결과 값이 unsigned int 가 되면 아무런 문제가 되지 않을 수도 있습니다. 왜냐하면 부호 확장이 아직 발생하지 않았기 때문입니다.
  • 표현 a.base << 13int 타입입니다. 그러나 이것은 long 으로 변환된 다음에 addr 에 할당되기 전에 다시 unsigned long 으로 변환됩니다. 왜냐하면 signed 와 unsigned 정수 프로모션 규칙 때문입니다. 부호 확장은 intlong 으로 변환할때 발생합니다.

그 러므로, 다음의 64-비트 프로그램을 컴파일 하면 다음과 같은 결과를 볼 수 있습니다:

% cc -o test64 -xarch=v9 test.c
% ./test64
addr 0xffffffff80000000
addr 0x80000000
%

 32- 비트 프로그램으로 컴파일 한다면 unsigned long 의 사이즈가 int 의 사이즈와 같으므로 어떠한 부호 확장도 일어 나지 않습니다.

% cc -o test test.c
% ./test
addr 0x80000000
addr 0x80000000
%

구조체 팩킹 검사하기

애플리케이션의 내부 자료 구조체에 존재하는 구멍을 검사합니다; 즉 정렬(alignment) 요구사항을 만족시키기 위한 구조체내 각 필드간의 추가적인 공간을 의미 합니다. 이러한 추가적인 공간은 long 혹은 포인터 필드가 LP64 데이타-타입 모델을 위해 64비트로 늘어나고 int 가 변함없이 32-비트로 남아 있기 ?문에 발생합니다. long 과 포인터 타입은 LP64 데이타-타입 모델에서 64비트로 정렬되고, 추가 공간은 intlong 혹은 포인터 타입 사이에서 나타납니다. 다음의 예제에서 p 는 64-비트 정렬되있고 그러므로 추가 공간은 멤버 k 와 멤버 p 사이에 나타납니다.

struct bar {
  int i;
  long j;
  int k;
  char *p;
}; /* sizeof (struct bar) = 32 bytes */

또한 구조체가 그중에서 가장 큰 사이즈를 가진 멤버에 맞게 정렬되므로 위의 구조체에서 추가 공간은 멤버 i 와 멤버 j 사이에 나타납니다.

구조체를 재팩킹할때 다음과 같이 long 과 포인터 필드를 구조체의 제일 앞에 배치합니다. 다음의 구조 정의를 고려해 보시기 바랍니다:

struct bar {
  char *p;
  long j;
  int i;
  int k;
}; /* sizeof (struct bar) = 24 bytes */

멤버들 사이즈의 부조화 체크하기

union 의 멤버를 꼭 체크하시기 바랍니다. 왜냐하면 그들의 필드는 IPL32와 LP64 데이타-타입 모델에서 멤버들의 사이즈가 변할 수 있기 때문입니다. 다음의 union에서 멤버 _d 와 멤버 배열 _l 는 IPL32모델에서는 동일한 사이즈를 가지지만 LP64 모델에서는 다른 사이즈를 가집니다 왜냐하면 long 타입이 64비트로 커졌지만 double 타입은 그렇지 않기 때문입니다.

typedef union {
  double _d;
  long _l[2];
} llx_

멤버의 사이즈는 _l 배열 멤버의 타입을 long 에서 int 타입으로 변경 시켜 줌으로써 조화시킬 수 있습니다.

상수 타입은 상수 표현에서만 사용되어야 함을 확인

정확 도가 떨어지면 몇몇 상수 표현들에서 데이타의 손실을 발생시킬 수도 있습니다. 상수 표현에서는 데이타의 정확한 타입을 꼭 명시하시기 바랍니다. 각 정수형 상수의 타입을 {u,U,l,L} 을 통해 지정해 줍니다. 또한 캐스트를 통해서도 상수 표현의 타입을 캐스트해 줄 수 있습니다. 다음의 예제를 참고 바랍니다:

int i = 32;
long j = 1 << i; /* j will get 0 because RHS is integer expression */

위 의 코드는 의도된대로 동작하기 위해 다음 처럼 상수의 타입을 지정할 수 있습니다:

int i = 32;
long j = 1L << i; /* now j will get 0x100000000, as intended */

포맷 문자열 변환 확인

printf(3S), sprintf(3S), scanf(3S), 그리고 sscanf(3S) 의 포맷 문자열이 long 혹은 포인터 매개변수들을 담을 수 있는지 확인하시기 바랍니다. 포인터 매개변수를 위해 포맷 스트링에 주어진 변환 작업은 32-비트 그리고 64-비트 컴파일 환경에서 반드시 %p 가 되어야 합니다. long 매개변수는 long 사이즈 를 위한 l 이 반드시 사용되어야 합니다.

또한 sprintf 의 첫번째에 전달되는 버퍼의 크기가 long 과 포인터의 크기 변화에 따라 충분한 공간을 가지고 있는지도 확인해 봐야 합니다. 예를 들어 포인터는 IPL32 데이타 모델에서 8개의 16진수 숫자로 표현되지만 LP64 데이타 모델에서는 16개로 확장되기 때문입니다.

sizeof() 함수의 리턴 값은 unsigned long

LP64 데이타-타입 모델에서 sizeof()unsigned long 형의 유효 타입을 가지고 있습니다. 만약 sizeof()int 형, 혹은 int 형으로 할당되거나 캐스트 되서 매개변수에 전달되면 데이타의 손실이 발생할 수 있습니다. 이것은 보통 매우 큰 long 배열을 가지고 있는 대형 데이타베이스 프로그램에서 문제가 될 수 있습니다.

바이너리 인터페이스 데이타를 위해 포팅 가능한 데이타 타입 혹은 고정길이 정수형 사용

32-비트 와 64-비트 버젼의 애플리케이션에서 자료 구조체를 공유하기 위해서는 ILP32 와 LP64 프로그램사이에서 일반적인 길이를 가지는 데이타 타입을 가지고 있도록 고수해야 합니다. long 데이타 타입과 포인터의 사용을 회피해야 합니다. 또한 32-비트, 64-비트 애플리케이션에서 사이즈가 달라진 라이브러리에서 유래한 데이타 타입들을 사용하지 말아야 합니다. 예를 들어 <sys/types.h> 에 정의된 다음의 타입들은 ILP32, LP64 데이타 모델에서 사이즈가 변화되었습니다:

  • clock_t, 클럭틱에서의 시스템 시간을 나타냄
  • dev_t, 디바이스 번호를 위해 사용됨
  • off_t, 파일 사이즈와 오프셋을 위해 사용됨
  • ptrdiff_t, 두개의 포인터의 주소를 뺀 결과를 위한 signed 정수형 타입
  • size_t, 메모리내의 오브젝트의 바이트형식의 주소를 나타냄
  • ssize_t, 바이트의 수를 리턴하거나 에러를 나타낼때 함수에서 사용됨
  • time_t, 시간을 초 단위로 카운트

<sys/types.h> 에서 유래한 데이타 타입들은 내부적 데이타로 사용하기에 좋습니다. 왜냐하면 코드를 데이타-모델 변화에서 독립시켜주기 때문입니다. 어?든 이러한 타입들의 사이즈들은 데이타 모델에 따라 바뀌므로 32-비트와 64-비트 애플리케이션에서 공유되는 데이타들 혹은 데이타 사이즈가 반드시 고정되어야 하는 상황에서는 이러한 데이타형을 쓰지 않기를 권장합니다. 또한 위에서 언급한 sizeof() 의 변화에 따라 코드에 어떠한 변경을 가하기 전에는 반드시 정확도의 손실에 따른 프로그램에 영향을 고려해야 합니다.

바이너 리 인터페이스 데이타를 위해 <inttypes.h> 에 있는 고정 길이 정수형 타입의 사용을 고려해 보시기 바랍니다. 이러한 타입들은 다음과 같이 외부적인 바이너리 표현을 위해 좋습니다:

  • 바이너리 인터페이스 명세
  • 디 스크상의 데이타
  • 데이타의 선(wire) 상에서
  • 하드웨어 레지스터
  • 바이너리 자료 구조

부작용 고려하기

타입의 변화는 원치 않는 64-비트 변환을 야기 할 수 있습니다. 예를 들어 intssize_t 를 리턴하는 함수를 호출하는 호출 함수를 자세히 살펴보시기 바랍니다.

long 배열이 퍼포먼스에 미칠수 있는 영향을 고려하기

long 혹은 unsigned long 타입의 거대한 배열은 LP64 데이타-타입 모델에서 심각한 퍼포먼스 저하 현상을 야기할 수 있습니다. 이러한 타입은 엄청나나 캐쉬 미스를 야기 하고 좀 더 많은 메모리를 소비하기 때문입니다. 그러므로 intlong 대신 사용가능하다면 intlong 대신 사용할 것을 권장합니다. 이것은 또한 포인터의 배열을 사용하는 대신 int 타입의 배열을 사용하기를 권장합니다. 몇몇 C 애플리케이션에서는 LP64 데이타-타입 모델로 변환뒤에 엄청나게 퍼포먼스가 저하된 경우가 있었습니다. 왜냐하면 매우 많은 수의 대규모 포인터 배열을 사용하고 있었기 때문입니다.

 
 
원 본출처 : http://blog.sdnkorea.com/blog/138




Tomcat Plugin for Eclipse

http://www.eclipsetotale.com/tomcatPlugin.html#A3


'PDS' 카테고리의 다른 글

Desy Edit (무료 편집기)  (0) 2010.10.18
프록시 우회 프로그램 ultraSurf  (0) 2010.09.25
Tomcat Plugin for Eclipse  (0) 2010.03.30
JAD - java Decompiler  (0) 2010.03.30
DDL2iBatis  (0) 2009.09.01
네이트온 글꼴 바꾸기.  (0) 2009.08.14





http://www.varaneckas.com/jad - Decompiler 파일 - JAD

 

http://sourceforge.net/projects/jadclipse/ - JAD eclipse plugin - JADClipse

 

 

설정같은건 검색하면 엄청 많이 나오니. 생략.





'PDS' 카테고리의 다른 글

프록시 우회 프로그램 ultraSurf  (0) 2010.09.25
Tomcat Plugin for Eclipse  (0) 2010.03.30
JAD - java Decompiler  (0) 2010.03.30
DDL2iBatis  (0) 2009.09.01
네이트온 글꼴 바꾸기.  (0) 2009.08.14
Beyond Compare 3  (0) 2009.05.19

출처 : http://tit99hds.egloos.com/928582


1.SELECT * INTO사용법

   SELECT  INTO 구문은 원본은 있고 대상 테이블은 새롭게 생성하려 할 경우 사용합니다.

   TABLE A에서 모든 데이터를 가져와 A_COPY라는 테이블을 생성하여 데이터를 INSERT하고 싶습니다.

   물론 A_COPY라는 테이블은 현재 만들어져있지 않습니다.

 

   SELECT * INTO A_COPY FROM A

 

  위와 같이 하면 A테이블과 같은 컬럼과 데이터를 가지는 A_COPY라는 테이블이 생성됩니다.

   그럼 A테이블의 특정 컬럼만 가져오려면?

 

   SELECT * INTO A_COPY

  FROM (

              SELECT COL1,COL2,COL3.... FROM A

             ) AS TEMP_TABLE

   위와 같이 하면 A테이블의 특정 컬럼만 가져와서 A_COPY라는 테이블을 생성하여 데이터를 INSERT합니다.

 

2.INSERT INTO SELECT 사용법

   INSERT INTO 구문은 원본과 대상테이블이 모두 있을 경우 사용합니다.

   TABLE A에서 모든 데이터를 가져와 B라는 테이블에 INSERT 하고 싶습니다.

  

   INSERT INTO B SELECT * FROM A

   위에서 TABLE A와 TABLE B는 스키마가 동일해야 합니다.

 

   만일 A보다 컬럼수가 적을 경우에는

   INSERT INTO B SELECT COL1,COL2,COL3 FROM A

  와 같이 사용할 수 있습니다.

Toad를 쓰면서 Golden이나 PL/SQL Developer에서처럼 for update 구문을 통한 DB그리드에서 직접 편집 할 수 있다.

EDIT [TABLE명] [WHERE ...] [ORDER BY ...]


출처 : http://dsdstudio.springnote.com/pages/380935?print=1  (ㅋㅋ 검색해서 가져와보니 dasida네 스프링노트였네..^^)





←(백스페이스) = 8
TAB = 9
ENTER = 13
SHIFT = 16
CTRL = 17
ALT = 18

PAUSEBREAK = 19
CAPSLOOK = 20

한/영 = 21
한자 = 25
ESC = 27

스패이스 = 32

PAGEUP = 33
PAGEDN = 34
END = 35
HOME =36

←(중간) = 37
↑(중간) = 38
→(중간) = 39
↓(중간) = 40

INSERT = 45
DELETE = 46

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57

A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 76
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
Z = 90

윈도우(왼쪽) = 91
윈도우(오른쪽) = 92
기능키 = 93

0(오른쪽) = 96
1(오른쪽) = 97
2(오른쪽) = 98
3(오른쪽) = 99
4(오른쪽) = 100
5(오른쪽) = 101
6(오른쪽) = 102
7(오른쪽) = 103
8(오른쪽) = 104
9(오른쪽) = 105

.(오른쪽) = 110
/(오른쪽) = 111
*(오른쪽) = 106
+(오른쪽) = 107
-(오른쪽) = 109

F1 = 112
F2 = 113
F3 = 114
F4 = 115
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
F10 = 121
F11 = 122
F12 = 123

NUMLOCK = 144
SCROLLLOCK = 145
=(중간) = 187
-(중간) = 189
`(왼쪽콤마) = 192
(중간) = 220

  1. Favicon of http://dsdstudio.tistory.com BlogIcon DSD군 2009.11.26 00:29 신고

    할퀴.. 저거슨 어디서 많이보던 ㅋ


예를 들어.

<input id ="test" value="이건 테스트여요" />

라는 개체의 좌표를 구하고자 한다면,

<script>

obj = document.getElementById("test");

left = obj.getBoundingClientRect().left
top = obj.getBoundingClientRect().top
bottom = obj.getBoundingClientRect().bottom;
right = obj.getBoundingClientRect().right;

</script>

뭐 요런식으로 구해지더라.....
StringTokenizer tokens = new StringTokenizer(str , "/");

str.split("/")


예를 들어 " / " 문자를 기준으로 잘라내어 사용할 때 이 두가지를 쓴다.

차이점이 있다. 몰라서 고생 좀 했는데..

str = "데이터1/데이터2//데이터4" ;

위의 스트링의 "/" 기준으로 잘라내어 사용할 때.

StringTokenizer 는.

데이터1
데이터2
데이터4

이런 결과를 가져오고,

split 은
데이터1
데이터2
NULL
데이터3

이런 결과를 가져온다.


중간에 빈칸이 올 수 있는 경우를 조심하자.

'JAVA/JSP' 카테고리의 다른 글

JAVA 가변인수  (0) 2010.10.15
ERROR 리스트  (0) 2010.04.06
StringTokenizer 와 split 의 차이.  (1) 2009.11.12
한글 깨짐 현상  (0) 2009.09.09
JSP 의 테이블 - > 엑셀로 만들기.  (0) 2008.06.24
DBPooling Connection 예제 Class  (0) 2008.05.20
  1. Favicon of http://secondround.textcube.com/ BlogIcon 갈휘 2010.03.17 10:59 신고

    이런 차이가 있었군요,
    한번 써 봐야겠네요 ~
    좋은 정보를 감사합니다 :)

오라클과 NLS 찰떡궁합 보기라는 글인데 너무 길어서 링크 걸어둡니다^^
오라클 사용시, 한글과 다국어에 대한 글 입니다. 


http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_1.html
 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_2.html 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_3.html 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_4.html



출처 : oracle Technology korea / 류정우, 한국오라클 WPTG팀

'DATABASE' 카테고리의 다른 글

SELECT * INTO 와 INSERT INTO SELECT  (0) 2010.03.30
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21

오라클과 NLS 찰떡궁합 보기라는 글인데 너무 길어서 링크 걸어둡니다^^
오라클 사용시, 한글과 다국어에 대한 글 입니다. 


http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_1.html
 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_2.html 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_3.html 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_4.html



출처 : oracle Technology korea / 류정우, 한국오라클 WPTG팀

'DATABASE' 카테고리의 다른 글

SELECT * INTO 와 INSERT INTO SELECT  (0) 2010.03.30
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21
[출처] HTML Input text 한글/영문/숫자 입력설정|작성자 날로먹자



<input type="text" name="" value="" style="ime-mode:disabled;">

 ime-mode option

auto : 한/영 변환 자유로움
active : 한글 기본/ 한/영 변환 자유로움
inactive : 영문기본 한/영 변환 자유로움
disabled : 영문기본, 한/영변환 않됨 . 영문/숫자만 입력가능


출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=57&MAEULNO=22&no=1882&page=1
파일첨부



[출처] javascript replaceall|작성자 셩이
http://blog.naver.com/soo02da?Redirect=Log&logNo=150046790484

자바스크립트에는 replaceall 함수가 없습니다.

replace 함수가 있지만 replace는 조건에 대해서 한번만 치환을 하기 때문에, replaceall 의 기능을 수행하기는 어렵습니다.

예)

var a = '2009-10-01';

var b = a.replace("-","");

alert(b);

결과 값 : 200910-01

 

split과 join 함수를 이용하면 replaceall과 같은 효과를 낼 수 있습니다.

예)

var a = '2009-10-01';

var b = a.split("-").join("");

alert(b)

결과 값 : 20091001

 
출처: http://blog.naver.com/siva6?Redirect=Log&logNo=120007837429

정말 좋은 스크립트다..

얼른 이해해 버려야겠다.

  1. Favicon of http://siva6.pe.kr BlogIcon siva6 2009.09.30 10:06 신고

    오래된 소스인데 참조해서 사용하신다니 기쁘네요. ^^
    당시에는 ie만을 기준으로 작업했기 때문에 요즘은 사용하기 어려운 소스입니다.
    고려해서 보세요.
    만들어 놓고 실제로 프로젝트에 적용하지는 않았다는...

출처 : http://www.waltercedric.com/java-j2ee-mainmenu-53/107-eclipse/1298-boost-eclipse-speed-performances.html


Conditions

  • You must have a dual processor or quad core, (better if you use VMarg1)
  • You must start Eclipse with Java 1.6, note that you can still compile your project with Java 1.5
    (see windows - preferences - java - Installed JRE's)

The tricks is to use the optimization done in JDK 1.6 (VMarg2) and the new agresivity of the Just In Time
compiler (JIT) for VMarg3



Eclipse.ini 설정 파일을 열어서 추가한다.

-XX:-UseParallelGC
-XX:+AggressiveOpts
-XX:-UseConcMarkSweepGC

Some details about what these parameters are doing:

VMarg1 -XX:-UseParallelGC

Use parallel garbage collection for scavenges. (Introduced in 1.4.1) this will create more threads running in parallel, so the second processor will be put in use

VMarg2 -XX:-UseConcMarkSweepGC

Use concurrent mark-sweep collection for the old generation. (Introduced in 1.4.1)

The Eclipse GUI will feel more responsive as memory will be reclaimed without blocking VM executions.

VMarg3 -XX:+AggressiveOpts Turn on point performance compiler optimizations that are expected to be default in upcoming releases. (Introduced in 5.0 update 6.)



그밖에..

Eclipse 안에 환경설정에서

spell check 끄기.

auto activation 끄기.

auto folding 끄기.

쓰지 않는 문법의 validation check 끄기.

startup and shutdown 에서 사용하지 않는 plug-in 체크 끄기.

'TOOL' 카테고리의 다른 글

Toad for Oracle - Eclipse plugin  (0) 2010.11.24
Toad 에서의 직접 편집(for update)  (0) 2009.12.25
[Eclipse] 속도향상을 위한 설정.  (0) 2009.09.28
JSEclipse 설치.  (0) 2008.05.19
[Eclipse] dbEdit plug-in  (0) 2008.03.27
[eclipse] 1 CHKJ4019W: 에러  (0) 2008.03.27

출처 : http://blog.naver.com/windil?Redirect=Log&logNo=43011738

Never do a calculation on an indexed column (e.g., WHERE salary*5 > :myvalue).

인텍스 칼럼에는 수식을 사용치 마라.
 

Whenever possible, use the UNION statement instead of OR conditions.

가능한한 OR 조건문 대신 UNION문을 사용하라.
 

Avoid the use of NOT IN or HAVING in the WHERE clause. Instead, use the NOT EXISTS clause.

WHERE절에 NOT IN이나 HAVING사용을 삼가하라. 대신 NOT EXISTS절을 사용하라.
 

Always specify numeric values in numeric form and character values in character form (e.g., WHERE emp_number = 565, WHERE emp_name = 'Jones'.

숫자 관련 값은 숫자로, 문자열 관련 값은 문자로 표현하라.
 

Avoid specifying NULL in an indexed column.

인덱스 칼럼에 NULL사용하지 마라.
 

Avoid the LIKE parameter if = will suffice. Using any Oracle function will invalidate the index, causing a full-table scan.

=(equal)연산자만으로 충분하다면 LIKE를 사용치 마라. 오라클 함수를 사용하는 것은 인덱스를 무용지물로 만들어 full-table scan를 하게 만든다.
 

Never mix data types in Oracle queries, as it will invalidate the index. If the column is numeric, remember not to use quotes (e.g., salary = 50000). For char index columns, always use single quotes (e.g., name = 'BURLESON'.

오라클 쿼리에서 데이터 타입을 섞으면 인덱스를 무용지물로 만든다. 칼럼이 숫자면 따옴표를 사용치말고 문자열이면 항상 작은따옴표를 사용하라.
 

Avoid using subqueries when a JOIN will do the job.

JOIN으로 해결할 수 있다면 서브쿼리를 사용치 마라.
 

Use the Oracle "decode" function to minimize the number of times a table has to be selected.

오라클의 "decode" 함수를 사용하여 개별 테이블이 선택되어지는 횟수를 최소화하라.
 

To turn off an index you do not want to use (only with a cost-based optimizer), concatenate a null string to the index column name (e.g., name||') or add zero to a numeric column name (e.g., salary+0).

(cost-based optimizer에서만) 사용하고 싶지 않은 인덱스를 꺼버리려면,  문자열값을 갖는 인덱스 칼럼의 이름에null 문자열을  잇거나 숫자값을 갖는 인덱스 칼럼에 숫자 0을 더해버려라.
 

If your query will return more than 20 percent of the rows in the table, a full-table scan may be better than an index scan.

쿼리가 20%이상의 테이블 데이터를 불러온다면, full-table scan이 index scan보다 더 낫다.
 

Always use table aliases when referencing columns.

칼럼을 참조할 때는 항상 테이블 alias(별칭)을 사용하라.

'DATABASE' 카테고리의 다른 글

오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21
Oracle DB Link  (0) 2009.09.14
Oracle DB Link  (0) 2009.09.14

출처 : http://blog.naver.com/windil?Redirect=Log&logNo=43011738

Never do a calculation on an indexed column (e.g., WHERE salary*5 > :myvalue).

인텍스 칼럼에는 수식을 사용치 마라.
 

Whenever possible, use the UNION statement instead of OR conditions.

가능한한 OR 조건문 대신 UNION문을 사용하라.
 

Avoid the use of NOT IN or HAVING in the WHERE clause. Instead, use the NOT EXISTS clause.

WHERE절에 NOT IN이나 HAVING사용을 삼가하라. 대신 NOT EXISTS절을 사용하라.
 

Always specify numeric values in numeric form and character values in character form (e.g., WHERE emp_number = 565, WHERE emp_name = 'Jones'.

숫자 관련 값은 숫자로, 문자열 관련 값은 문자로 표현하라.
 

Avoid specifying NULL in an indexed column.

인덱스 칼럼에 NULL사용하지 마라.
 

Avoid the LIKE parameter if = will suffice. Using any Oracle function will invalidate the index, causing a full-table scan.

=(equal)연산자만으로 충분하다면 LIKE를 사용치 마라. 오라클 함수를 사용하는 것은 인덱스를 무용지물로 만들어 full-table scan를 하게 만든다.
 

Never mix data types in Oracle queries, as it will invalidate the index. If the column is numeric, remember not to use quotes (e.g., salary = 50000). For char index columns, always use single quotes (e.g., name = 'BURLESON'.

오라클 쿼리에서 데이터 타입을 섞으면 인덱스를 무용지물로 만든다. 칼럼이 숫자면 따옴표를 사용치말고 문자열이면 항상 작은따옴표를 사용하라.
 

Avoid using subqueries when a JOIN will do the job.

JOIN으로 해결할 수 있다면 서브쿼리를 사용치 마라.
 

Use the Oracle "decode" function to minimize the number of times a table has to be selected.

오라클의 "decode" 함수를 사용하여 개별 테이블이 선택되어지는 횟수를 최소화하라.
 

To turn off an index you do not want to use (only with a cost-based optimizer), concatenate a null string to the index column name (e.g., name||') or add zero to a numeric column name (e.g., salary+0).

(cost-based optimizer에서만) 사용하고 싶지 않은 인덱스를 꺼버리려면,  문자열값을 갖는 인덱스 칼럼의 이름에null 문자열을  잇거나 숫자값을 갖는 인덱스 칼럼에 숫자 0을 더해버려라.
 

If your query will return more than 20 percent of the rows in the table, a full-table scan may be better than an index scan.

쿼리가 20%이상의 테이블 데이터를 불러온다면, full-table scan이 index scan보다 더 낫다.
 

Always use table aliases when referencing columns.

칼럼을 참조할 때는 항상 테이블 alias(별칭)을 사용하라.

'DATABASE' 카테고리의 다른 글

오라클과 NLS 찰떡궁합 보기  (0) 2009.10.29
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21
SQL 튜닝 규칙.  (0) 2009.09.21
Oracle DB Link  (0) 2009.09.14
Oracle DB Link  (0) 2009.09.14

출처:http://darkmirr.egloos.com/1260148

Entity Bean?

데이터 베이스와 밀접한 관련을 맺고 있는 서버 컴포넌트다. entity bean은 영속성을
유지해야 할 데이터를 표현할 때 사용하며 entitybean 의 정보는 데이터베이스에 저장되기 때문에
데이터베이스 안의 내용이 삭제가 되지 않는한 웹로직 서버가 재시작되어도 값을 유지 할 수 있다.
또한 entitybean은 여러클라이언트로부터 공유되며 테이블 내의 정보를 객체지향적으로 표현하기
알맞으며 영속성과 트랜잭션 속성을 포함하는 컴포넌트다(ORM 과 관련이 깊다 )

Entity bean 명세

SessionBean 명세와 가지는 값도 비슷 하고 하는 일 또한 비슷하다 단.
기본키 클래스(Primary key class), 배치 디스크립터가 추가되었다.
이것의 이유는 entitybean은 데이터베이스의 테이블과 연관을 맺고 있기 때문에
세션빈과 달리 기본 키 클래스를 표현해서 데이터 베이스와 연동되어야 한다는 내용 이다.

Entity bean 생명주기

1.생성
홈객체의 client() 메소드 호출 ->client()인자 전달->저장풀이 entitybean객체 선택
->entitybean객체 ejbcreate()호출
2.수정
원격인터페이스에서 호출->ejbstore()호출되면서 필드값 변경
3.검색
finder()메소드호출 ->원하는 원격인터페이스 반환

'FRAMEWORK' 카테고리의 다른 글

struts2 - TagLibrary  (0) 2010.09.01
struts2 - 액션클래스 비교.  (0) 2010.08.27
struts - UTF-8 설정 (인코딩설정)  (0) 2010.08.26
EJB EntityBeans  (0) 2009.09.18
[Struts] JDBC 사용하기.  (0) 2008.04.22
[1.3] struts-config.xml NutShell  (0) 2008.04.15

+ Recent posts