[JSON] JSON Text -> JSON Object

Web Dev/Javascript 2010. 12. 14. 17:42 Posted by ditus

가장 흔한 예가 Ajax를 사용할 경우이다. Ajax로 호출을 하고 결과값으로 받은 req.responseText로 JSON을 받았을 경우에는 그냥 Text이기 때문에 Object로 변환해 주어야 한다.

{ id:'Outsider', sex:'male' }

Ajax에서 리턴받을 JSON의 형태가 위와 같이 되어 있을 경우에는

 
  1. var obj = eval("("+returnValue.responseText+")");   
  2. alert(obj.id);  // Outsider   

위의 코드처럼 eval을 해주면 JSON 오브젝트로 변환할 수 있다.

[ { id:'Outsider', sex:'male' },
  { id:'Zziuni', sex:'male' } ]

JSON이 위의 형태처럼 배열로 되어 있을 경우에는

 
  1. var obj = eval(returnValue.responseText);   
  2. // -> { id:"Outsider", sex:"male" }   

그냥 eval을 해주면 JSON 오브젝트로 변환할 수 있다.

다만 이렇게 변환할 경우 eval()은 빠르기는 하지만 단순히 그안의 스트링을 그대로 실행시켜 주는 것이기 때문에 리턴값으로 자바스크립트 명령문이 온다면 그대로 실행시켜버리기 때문에 보안이슈가 발생할 수 있다. 

이렇게 리턴받은 소스를 신뢰하기 어려울 때는JSON 에서 제공하는 JSON parser을 사용해야 한다. JSON parser는 오직 JSON text만 받아들이고 다른 스크립트는 거부하고 eval()만큼이나 빠르다.

 
  1. var obj = JSON.parse(returnValue.responseText);   
  2. // -> { id:"Outsider", sex:"male" }   

JSON.parse()의 목적대로 JSON 텍스트 외에는 거부해야하기 때문에 JSON문법을 정확히 지켜주지 않으면 SyntaxError 예외가 던져진다. 그렇기 때문에 키와 값을 모두 쌍따옴표(")로 묶어주는 문법을 정확하게 지켜주어야 한다. 아래처럼....

{ "id":"outsider", "sex":"male" }

여기서 JSON.parse()를 사용하기 위해서는 Douglas Crockford 가 만든 json2.js 가 필요하다. json2.js는 더글라스 크록포드가 JSON의 편리한 사용을 위해 만든 JSON API의 새버전이다.(그래서 2가 붙어있다.) 이 API에는 2개의 메서드가 들어있는데 JSON.stringify()와 JSON.parse()이다. JSON.stringify()는 JSON.parse()와는 완전히 반대로 JSON 객체를 주면 JSON 텍스트로 만들어서 준다. 필요할때 갖다 쓰면 된다. (John Resig 이 이전버전보다 새버전의 API가 훨씬 좋다고 꼭 이걸 쓰란다.)

[ORACLE] Commit 후 다시 복구하기

Database/Oracle 2010. 12. 2. 00:14 Posted by ditus
"select * from 테이블명 as of TIMESTAMP TO_TIMESTAMP('2010-01-01 14:00:00','YYYY-MM-DD HH24:MI:SS');"

정해준 시간에 존재했던 데이터를 뿌려준다.



- 복구법 -

drop table 테이블명;


create table a as(select * from 테이블명 as of TIMESTAMP TO_TIMESTAMP('2010-01-01 14:00:00','YYYY-MM-DD HH24:MI:SS'));

윈도우 xampp 설치 및 가상 호스트 사용!

Server 2010. 12. 1. 11:24 Posted by ditus
우리나라의 APM처럼 apache + php + mysql + 관리툴 을 모아둔 셋업프프로그램이다.
easyEclipse에서는 깔고 연결시켜서 사용할수 있었지만 Eclipse PDT에서는 지원이 안되나 보다.
서버등의 설정을 Eclipse 내에서 할수 없어서 많이 불편하다.
하지만 기본으로 관리툴이 있으니 그냥 그런대로 쓰도록 하자.

설치법은 간단하다. 그냥 다운받아서 깔지만 하면 된다.
설치후 security에서 보안관련 사항들 체크후 처리할것은 처리해두자.


* xampp에 xdebug설치하는법은 아래 퍼나놓은 글을 참고하시라.
최근 Eclipse PDT에는 기본으로 xdebug가 깔려있지만 zend debug로 기본 설정되어있으니 xdebug를 사용하려면
Preferencese 설정에서 디버그 모드를 변경해줘야 한다. 아직 어떻게 사용하는지.. 뭐가 좋은지도 잘 모른다. ㅎㅎ
다만 apache에서 xdebug모드를 사용하면 뭐 좀 자세하게 나올듯 하여 블로그 글을 퍼다 놓았다.

xampp를 설치하고 나서 일반적으로 apm툴을 깔고서 하나의 개발사이트만 localhost에 띄워서 사용들을 한다.
하지만 여러 사이트를 관리하고 개발에 참여하다보면 매번 http.conf파일의 설정값을 변경해서 사용하기 귀찮다.
물론 서버딴에서 작업을 하면 편하지만.. 노트북을 들고다니며 로컬딴에서 작업을 해야 할 경우가 있어서
방법을 강구해 보았다.

1.121.0.0.1 을 localhost라는 주소로 alise해주는 파일을 찾아보자.
C:\WINDOWS\system32\drivers\etc\hosts 라는 파일이다.
메모장등을 이용하여 열고서
121.0.0.1 사이트명 형식으로 한줄 추가해주자.
127.0.0.1       localhost
127.0.0.1       devporiter

http://사이트명 치면 로컬아이피를 참고하게 된다.

2.xampp\apache\conf\httpd.conf 파일 추가
//public_html폴더로 끝나는 폴더의 접근권한을 설정해준다.
<Directory "D:/work/*/public_html">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

3.xampp\apache\conf\extra\httpd-vhosts.conf 파일에서
//주석을 풀어준다
NameVirtualHost *:80


//가상호스들을 추가해준다.
<VirtualHost *:80>
    DocumentRoot "D:/xampp/htdocs"
    ServerName localhost
    ServerAlias localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "D:/work/devporiter/public_html"
    ServerName devporiter
    ServerAlias devporiter
</VirtualHost>

4. http://localhost 시에 xampp의 로컬페이지가 뜨는지 확인해보자

5. http://사이트명 시에 페이지가 정상적으로 뜨는지 확인해보자

출처 : http://www.welog.net/gbbs/bbs/board.php?bo_table=php&wr_id=111