2011년 12월 19일 월요일

PHP 변수관련함수

조건에 따른 분기문
연산자 ?:
사용예 ( $a == 1 ) ? "one" : "all"


constant( "SERVER_" . $value )
$value 문자열의 이름을 갖는 상수의 값을 반환

ctype_alnum( string text )
( text문자열이 알파벳 || 숫자 )? true : false

ctype_alpha( string text )
( text 문자열이 알파벳 ) ? true : false

ctype_cntrl( string text )
( text 문자열이 제어문자( 엔터( \n ), 탭( \n ) ) ) ? true : false

ctype_digit( string text )
( text 문자열이 숫자 ) ? true : false

ctype_graph( string text )
( text 문자열이 눈에 보이는 문자( 탭( \t ), 엔터( \n ), 공백 제외 ) ) ? true : false

ctype_space( string text )
( text 문자열이 눈에보이지 않는 문자 ( 엔터, 탭, 공백 )) ? true : false

ctype_lower( string text )
( text 문자열이 알파벳 소문자 ) ? true : false

ctype_upper( string text )
( text 문자열이 알파벳 이면서 대문자 ) ? true : false

ctype_print( string text )
( 출력할수 있는 문자( 공백포함 ) 제어문자( \n, \t ) 제외 ) ? true : false

ctype_punct( string text )
( text 문자열이 기호문자 ) ? true : false

ctype_xdigit( string text )
( text 문자열이 16진수 문자( 알파벳 소문자 a~f, 숫자형 문자 ) ) ? true : false

2011년 11월 9일 수요일

iframe안의 element에 접근하자.

출처 http://atple.egloos.com/1791319


// 프레임 내부 접근
// frmId - 아이프레임 아이디
// frmObjId - 아이프레임 내부 객체 아이디

var frm = document.getElementById(frmId);
if (frm == null) return;

var fDoc = frm.contentWindow || frm.contentDocument;
if (fDoc.document) {
fDoc = fDoc.document;
}

//여기서부터 갖고 노는거닷!!
fDoc.getElementById(frmObjId).focus();



contentWindow - ie, ff
contentDocument - safari, opera

2011년 10월 27일 목요일

데이터 공급자나 기타 서비스가 E_FAIL 상태를 반환했습니다.

Microsoft Cursor Engine 오류 '80004005'
데이터 공급자나 기타 서비스가 E_FAIL 상태를 반환했습니다.

구글링중..

"데이터 공급자나 기타서비스가 E_FAIL상태를 반환하였습니다"

라는 메시지가 출력된다면................................

십중팔구.........NULL 문자 때문일것이다.

특히 날짜 필드나 시간 필드에 값이 없을때 발생하는 문제이다.

NULL 처리만 해주면 에러를 제거할 수 있다.

즉, 입력 값이 없을때 빈문자("")를 넣어서 레코드를 기록하면 된다.


요걸 발견해서 적용해 봤는데 ..

안됨 ㅋㅋ

날짜필드에 null 값과 1이라는 값이 들어가 있어서 그게 문제인가 했지만 아님.ㅋ


조인을 잘못할경우 그렇다는 내용도 있었지만 조인을 하지 않은 상태에서 문제가 나온거라서

해당사항 없었음..


쿼리문제인거 같아서 확인결과

조건에 in('') 사용시 in('A') 의경우 위의 오류가 발생하고, in('A', 'B') 의 경우 아무문제 없이 잘됨.


,'' 을 추가해서 처리함 ~ 꼼수 ㅋㅋ

in사용시 주의점


고객지원은 어려운소리함.ㅋ http://support.microsoft.com/kb/241794/ko


인덱스

인덱스는 기본적으로 생성해두는것이 효율성에 좋습니다.
데이터가 적을 경우는 기본적인 인덱스로 결과를 출력할 수 있도록 하고, 데이터가 많아질 수록 쿼리에 맞는 인덱스를 걸어주면 효율적입니다.

인덱스는 일반적으로 한 테이블당 5개전후로 많이 잡습니다. 그 이상을 걸면 데이터의 양에 오히려 좋지 않은 영향을 줄 수 있기 때문입니다.

인덱스는 기본적으로 전체 테이블의 10%정도를 가져오는데 효과적입니다.
하지만 1000만건중에 100만건을 가져오는데는 인덱스가 효과적이라고 보기는 힘들지만 기본적은 인덱스는 필수입니다.

현재 느리다고 생각되는 쿼리가 있다면 다음의 과정으로 인덱스를 만들어보세요.

1. 쿼리 분석
현재 이 서버에 돌아가고 있는 쿼리를 알기 위해 다음을 실행합니다.
select * from master..syscacheobjects
sql이란 부분에 현재 캐시되어있는 쿼리가 보입니다.
이 쿼리들을 돌려가며 느리다고 느껴지는 쿼리를 찾습니다.

2. 기본 인덱스, 부하가 걸리는 인덱스를 체크
sp_helpindex A
이 명령으로 A테이블의 인덱스를 찾을 수 있습니다.

3. 인덱스 생성
create index A_ix01 on A(aa)
처음엔 고유증가 번호등의 잘 변하지 않는 필드를 Clustered Primary Key로 잡아야 합니다. 최종적으로 데이터를 찾아가는 길을 만들기 위함입니다. 이게 없으면 전체를 메모리에 띄워야 하기 때문에 많은 리소스를 잡아먹습니다.
Join문과 Where에서 찾는 필드명은 index로 걸어주는 것이 좋습니다. text등의 900바이트가 넘는 데이터는 index가 생성이 되지 않으니 주의 하세요.
index를 걸어줄 때 필드를 여러개를 한번에 지정하는 방법이 있고 한개씩 여러번 지정하는 방법이 있습니다.

1. 한번에 여러개를 지정하는 방법의 예:
create index A_ix01 on A(aa, bb)


2. 한개씩 여러번 지정하는 방법의 예:
create index A_ix01 on A(aa)
create index A_ix02 on A(bb)


위의 방법은 aa순으로 정렬된 뒤에 bb순으로 정렬하는 것입니다. 때문에 where절등에서 bb를 먼저찾거나 bb만 찾게 되는 경우 위의 인덱스는 타지 않습니다.
( 2번 - 한번에 한개씩 지정하는 경우 )

대신 아래처럼 한개씩 여러번 지정하는 것에 비해 aa,bb순으로 찾는 경우 가장 빠른 효율을 줍니다.( 1번 - 한번에 여러개 지정의 경우 )

따라서 위방법과 아래방법은 전혀 다른 인덱스가 됩니다.
참고하면서 만드세요.

4. 테스트
인덱스를 만들어가면서 대량의 데이터의 쿼리를 돌려봅니다.
인덱스를 바꿔가면서 가장 맞는 인덱스를 생성합니다.
최초로 돌릴 경우는 메모리에 올리는 시간 때문에 느릴 수 있습니다. 때문에 쿼리를 여러번 돌린후 마지막 시간을 재는게 좋습니다.

5. 불필요한 인덱스 삭제
drop index AA.AA_ix01
반드시 테이블명.인덱스명 의 형식으로 지워야 지워집니다.

* syscacheobjects에 비슷한 쿼리가 많다면 그 쿼리는 Static SQL을 이용하는 것이 좋습니다. Static SQL을 이용하면 같은 쿼리의 변수만 바뀌는 식의 쿼리를 하나의 쿼리로 인식하여 처리하므로 비슷한 캐시를 줄여 캐시를 활용할 공간이 넓어집니다.


출처 : http://www.littleworld.net/ai/kmod.asp?no=497&isn=&mymsg=creat

mssql index 인덱스

-- 현재 등록된 인덱스 조회

-- 형식: sp_helpindex 테이블명

sp_helpindex tableName


-- 현재 등록된 인덱스 조회

-- 형식: DROP INDEX 테이블명.인덱스명

DROP INDEX tableName.idx



-- 인덱스 생성

CREATE INDEX idx ON 테이블명(인덱스 순서)

CREATE INDEX ind ON tableName(fieldName1 asc, fieldName2 asc, fieldName3 desc, fieldName4 asc)

서버 운영 체제 확인 사이트

서버 운영 체제 확인 사이트

http://uptime.netcraft.com/up/graph/?host=호스트주소

http://uptime.netcraft.com/up/graph/?host=google.com

2011년 10월 26일 수요일

filezilla 오류: 디렉터리 목록 조회 실패

파일질라 : 편집 > 설정 > FTP > 전송모드 능동형으로


자신(ftp client pc)의 컴퓨터 : 시작 > 제어판 > 윈도우방화벽 > 고급설정 > 인바운드 > 추가 > ftp client 프로그램 추가

포터블 설치시 포터블 파일 이동하면 인바운드에서 파일질라 프로그램 경로 변경하여야함.