반응형

------------------------------------------------------
window.onload = function(){
 loadBooks();
}

function loadBooks(){
 //sendRequest("books.jsp",null,loadedBooksXML,"GET");
 new ajax.xhr.Request("books.jsp",null,loadedBooksXML,"GET");
 new ajax.xhr.Request("books.xsl",null,loadedBooksXSL,"GET");
}

var xmlDoc = null;
var xslDoc = null;


function loadedBooksXML(req) {
 if (req.readyState == 4) {
  if (req.status == 200) {
   xmlDoc = req.responseXML;
   //sendRequest("books.xsl",null,loadedBooksXSL,"GET");
   //doXSLT(); 
  }
 }
}

function loadedBooksXSL(req) {
 if (req.readyState == 4) {
  if (req.status == 200) {
   xslDoc = req.responseXML;
   doXSLT();
  }
 }
}

function doXSLT(){
 if(xmlDoc == null || xslDoc == null) return;
 var bookList = document.getElementById("bookList");
 if(window.ActiveXObject){ // IE방식의 xml문서를 xsl 변환
  bookList.innerHTML = xmlDoc.transformNode(xslDoc);
 }else{ // W3C 지원 브라우저의 xml문서를 xsl변환
  var xsltProc = new XSLTProcessor();
  xsltProc.importStylesheet(xslDoc);
  var fragment = xsltProc.transformToFragment(xmlDoc,document);
  bookList.appendChild(fragment);
 }
}
---------------------------------------------------

var ajax = {};
ajax.xhr = {};

ajax.xhr.Request = function(url,params,callback, method){
 this.url = url;
 this.params = params;
 this.callback = callback;
 this.method = method;
 this.send();
}

ajax.xhr.Request.prototype = {
 getXMLHttpRequest: function(){
  if(window.ActiveXObject){
   try{
    return new ActiveXObject("Msxml2.XMLHTTP");
   }catch (e) {
    try {
     return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e1) {
     return null;
    }
   }
  }else if(window.XMLHttpRequest){
   return new XMLHttpRequest();
  }else{
   return null;
  }
 },

 send: function() {
  this.req = this.getXMLHttpRequest();
  var httpMethod = this.method ? this.method : 'GET';

  if(httpMethod != 'GET' && httpMethod != 'POST'){
   httpMethod = 'GET';
  }

  var httpParams = (this.params == null || this.params == '')? null : this.params;
  var httpUrl = this.url;

  if(httpMethod == 'GET' && httpParams != null){
   httpUrl = httpUrl + "?" + httpParams;
  }

  this.req.open(httpMethod, httpUrl, true);
  this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

  var request = this;
  this.req.onreadystatechange = function(){
   request.onStateChange.call(request);
  }
  this.req.send(httpMethod == 'POST' ? httpParams : null);
 },

 onStateChange: function(){
  this.callback(this.req);
 }
}

Posted by 1010
반응형

var ajax = {};
ajax.xhr = {};

ajax.xhr.Request = function(url,params,callback, method){
 this.url = url;
 this.params = params;
 this.callback = callback;
 this.method = method;
 this.send();
}

ajax.xhr.Request.prototype = {
 getXMLHttpRequest: function(){
  if(window.ActiveXObject){
   try{
    return new ActiveXObject("Msxml2.XMLHTTP");
   }catch (e) {
    try {
     return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e1) {
     return null;
    }
   }
  }else if(window.XMLHttpRequest){
   return new XMLHttpRequest();
  }else{
   return null;
  }
 },

 send: function() {
  this.req = this.getXMLHttpRequest();
  var httpMethod = this.method ? this.method : 'GET';
  if(httpMethod != 'GET' && httpMethod != 'POST'){
   httpMethod = 'GET';
  }
  var httpParams = (this.params == null || this.params == '')? null : this.params;
  var httpUrl = this.url;
  if(httpMethod == 'GET' && httpParams != null){
   httpUrl = httpUrl + "?" + httpParams;
  }
  this.req.open(httpMethod, httpUrl, true);
  this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  var request = this;
  this.req.onreadystatechange = function(){
   request.onStateChange.call(request);
  }
  this.req.send(httpMethod == 'POST' ? httpParams : null);
 },

 onStateChange: function(){
  this.callback(this.req);
 }
}

Posted by 1010
반응형

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <meta http-equiv="content-type" content="text/html; charset=euc-kr" />
 <title>최신 영화 소식</title>
 <script type="text/javascript" src="httpRequest.js"></script>
 <script type="text/javascript" src="bookList.js"></script>
</head>
<body>
 <div id="bookList"></div>
</body>
</html> 


----------------
<?xml version="1.0" encoding="euc-kr" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="euc-kr" />
 <xsl:template match="books">
  <ul>
   <xsl:for-each select="book">
    <li>
     <strong><xsl:value-of select="title"/></strong>
     (<em><xsl:value-of select="author" /></em>)
    </li>
   </xsl:for-each>
  </ul>
 </xsl:template>
</xsl:stylesheet>


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

<%@ page contentType="text/xml; charset=utf-8" %>
<%@ page import="java.util.List" %>
 <books>
  <book>
   <title>프로젝트 생존 전략</title>
   <author>스티브 맥코넬</author>
  </book>
  <book>
   <title>웹 표준 가이드</title>
   <author>소프트웨어 진흥원</author>
  </book>
  <book>
   <title>넛지</title>
   <author>스티브 맥코넬</author>
  </book>
 </books>

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

window.onload = function(){
 loadBooks();
}

function loadBooks(){
 sendRequest("books.jsp",null,loadedBooksXML,"GET");
}

var xmlDoc = null;
var xslDoc = null;


function loadedBooksXML() {
 if (httpRequest.readyState == 4) {
  if (httpRequest.status == 200) {
   xmlDoc = httpRequest.responseXML;
   sendRequest("books.xsl",null,loadedBooksXSL,"GET");
  }
 }
}

function loadedBooksXSL() {
 if (httpRequest.readyState == 4) {
  if (httpRequest.status == 200) {
   xslDoc = httpRequest.responseXML;
   doXSLT();
  }
 }
}

function doXSLT(){
 if(xmlDoc == null || xslDoc == null) return;
 var bookList = document.getElementById("bookList");
 if(window.ActiveXObject){ // IE방식의 xml문서를 xsl 변환
  bookList.innerHTML = xmlDoc.transformNode(xslDoc);
 }else{ // W3C 지원 브라우저의 xml문서를 xsl변환
  var xsltProc = new XSLTProcessor();
  xsltProc.importStylesheet(xslDoc);
  var fragment = xsltProc.transformToFragment(xmlDoc,document);
  bookList.appendChild(fragment);
 }
}

Posted by 1010
반응형
XMLHttpRequest 객체 생성
open() 요청 초기화
sned() 요청 전송
1.XMLHttpRequest 서버 요청 전송후 응답 alert() 출력
2.XMLHttpRequest 서버 요청 전송시 한글 파라미터 utf-8 인코딩 후 전송
3.XMLHttpRequest 서버 요청 전송후 응답을 innerHTML 사용해서 clinet  브라우저의 웹 문서 변경
웹 문서에 내용보기
4.XMLHttpRequest 서버 요청 전송후 XML로 받은 응답 처리
5.XMLHttpRequest 서버 요청 전송후 XML로 받은 응답 xsl 처리
Posted by 1010
반응형



function load2(url) {
    req = getXMLHttpRequest();
    req.onreadystatechange = ViewMessage2;  //함수 호출 *ViewMessage
    req.open("GET", url, true);
    req.send(null);
 ViewMessage2();
}

function ViewMessage2(){  //서버 통신상태를 나타낸다.
 if(req.readyState == 4) {
        if(req.status == 200){          
            var xmlDoc = req.responseXML;
   SetSSN(xmlDoc,"DSN");    
        } else{
            alert("서버 상태가 불안정 합니다."); // 서버 상황을 alert 창으로
        }
    }
}


//////////////////////////////////////////////////////////////////////////////
function load(url) {
    req = getXMLHttpRequest();
    req.onreadystatechange = ViewMessage;  //함수 호출 *ViewMessage
    req.open("GET", url, true);
    req.send(null);
 ViewMessage();
}

function ViewMessage(){  //서버 통신상태를 나타낸다.
 if(req.readyState == 4) {
        if(req.status == 200){          
            var xmlDoc = req.responseXML;
   SetSSN(xmlDoc,"DSN");    
        } else{
            alert("서버 상태가 불안정 합니다."); // 서버 상황을 alert 창으로
        }
    }
}

Posted by 1010
반응형

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>javascript :prototype 사용 변수 선언 </title>
  <script type="text/javascript" src="prototype.js"></script>
 
  <SCRIPT LANGUAGE="JavaScript">
   
  <!--

   function addLoadEvent(func) {
     var oldonload = window.onload;
     if (typeof window.onload != 'function') {
    window.onload = func;
     } else {
    window.onload = function() {
      oldonload();
      func();
    }
     }
   }

   var Member = Class.create();
   Member.prototype={
    initialize : function(part){
     this.part = part;
    },
    memberList:function(){
     var list = new Array("홍길동","박문수","이몽룡");
     var console = document.getElementById("area");
     if(console != null){
      console.innerHTML += "<b>"+this.part+"</b> 수강생 명단 :<br/> "+list+"<br/>";
     } //if
    }
   }


   var PartMember = Class.create();
   PartMember.prototype = Object.extend(
    new Member,{
     memberList : function(){
      var list = new Array("이순신","김유신","홍길동");
      var console = document.getElementById("area");
      if(console != null){
       console.innerHTML += "<b>수강과목</b><br/>"+list+"<br/>";
      } //if
      Member.prototype.memberList.apply(this);
     } 
    }
   );


   function callFunction(){ 
    var partMember = new PartMember("웹표준 설계반");
    partMember.memberList();
   }

   addLoadEvent(callFunction);

   

  //-->
  </SCRIPT>
 </head>
 <body>
  <div id="area"></div>
 </body>
</html>

Posted by 1010
반응형

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>javascript :prototype 사용 변수 선언 </title>
  <script type="text/javascript" src="prototype.js"></script>
 
  <SCRIPT LANGUAGE="JavaScript">
   
  <!--

   function addLoadEvent(func) {
     var oldonload = window.onload;
     if (typeof window.onload != 'function') {
    window.onload = func;
     } else {
    window.onload = function() {
      oldonload();
      func();
    }
     }
   }

   var Subject = Class.create();


   Subject.prototype={
    initialize : function(name){
     this.name = name;
    }
   }

   var ChildSubject = Class.create();

   ChildSubject.prototype = Object.extend(
    new Subject,{
     showList : function(){
      var subjectList = new Array("XHTML","jsp","ajax");
      var console = document.getElementById("area");
      if(console != null){
       console.innerHTML += "<b>수강과목</b><br/>"+subjectList+"";
      } //if
     } //showList : function
    }//new Subject,
   );//ChildSubject.prototype


   function callFunction(){
    var childSubject = new ChildSubject("컴퓨터 공학과");
    childSubject.showList();
   }

   addLoadEvent(callFunction);

   

  //-->
  </SCRIPT>
 </head>
 <body>
  <div id="area"></div>
 </body>
</html>

Posted by 1010
반응형




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>javascript :prototype 사용 변수 선언 </title>
  <script type="text/javascript" src="prototype.js"></script>
 
  <SCRIPT LANGUAGE="JavaScript">
   
  <!--

   function addLoadEvent(func) {
     var oldonload = window.onload;
     if (typeof window.onload != 'function') {
    window.onload = func;
     } else {
    window.onload = function() {
      oldonload();
      func();
    }
     }
   }


   var Subject = Class.create();

   Subject.prototype ={
    initialize:function(){
     var subjectList = new Array("java","jsp","ajax");
     var console = document.getElementById("area");
     if(console != null){
      console.innerHTML += "<b>수강과목</b><br/>"+subjectList+"";
     }
    }
   
   }
   function objectCreate(){
    var subject = new Subject();
   }
   addLoadEvent(objectCreate);

   

  //-->
  </SCRIPT>
 </head>
 <body>
  <div id="area"></div>
 </body>
</html>

Posted by 1010
반응형

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>javascript :prototype 사용 변수 선언 </title>
  <!--
  <script type="text/javascript" src="domTest2.js"></script>
  -->
 
  <SCRIPT LANGUAGE="JavaScript">
   
  <!--
   /*
   function Member(name,rename,age){
    this.name = name;
    this.rename = rename;
    this.age = age;
   }
   Member.prototype.toString = function(){
    return this.rename;
   }
   Member.prototype.getAge = function(){
    var today = new Date();
    var toage = parseInt(this.age.substring(0,2));


    return today.getFullYear() - toage;
   }
   
   Member.prototype.setValue = function(newName,rename,newage){
    this.name = newName;
    this.rename = rename;
    this.age = newage; 
   }
   
*/
   function log(text){
    var console = document.getElementById("debugConsole");
    if(console != null){
     console.innerHTML += text+"<br/>";
    }
   }
   
   Member = function(name,id,securityNo){
    this.name = name;
    this.id = id;
    this.securityNo = securityNo;
   }

   Member.prototype ={
    setValue : function(newName,newId,newSecurityNo){
     this.name = newName;
     this.id = newId;
     this.securityNo = newSecurityNo; 
    },
    getAge : function(){
     var birthYear = parseInt(this.securityNo.substring(0,2));
     var code = this.securityNo.substring(6,7);
     if(code == '1' || code == '2'){
      birthYear += 1900;
     }else if(code == '3' || code == '4'){
      birthYear += 2000;
     }
     var today = new Date();
     return today.getFullYear() - birthYear;
    },
    toString : function(){ 
     return this.name = "["+this.id+"]";
    }
   }
 
   window.onload = function(){

    var mem = new Member("hong","홍길동","7700001000000");
    log('변경전');
    log('회원이름 : '+mem.toString());
    log('회원연령 : '+mem.getAge());
    log('<br/>');

    mem.setValue("GilDong","길동","7000001000000");
    log('변경후');
    log('회원이름 : '+mem.toString());
    log('회원연령 : '+mem.getAge());

   }
  //-->
  </SCRIPT>
 </head>
 <body>
  <div id="debugConsole"></div>
 </body>
</html>

Posted by 1010
반응형

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>애니메이션</title>
  <script type="text/javascript" src="addLoadEvent.js"></script>
  <script type="text/javascript" src="domEx10_1.js"></script>
  <!--
  <script type="text/javascript" src="highlightRows.js"></script>
  -->
  <!--
  <link rel="stylesheet" type="text/css" href="format.css"/>
  -->
 </head>
 <body>
  <p id="message">야호</p>
 </body>
</html>



----------------------------------------------
function positionMessage() {
   if (!document.getElementById) return false;
   if (!document.getElementById("message")) return false;
   var elem = document.getElementById("message");
   elem.style.position = "absolute";
   elem.style.left = "50px";
   elem.style.top = "100px";
   /*
   moveElement("message",125,25,20);
   if (!document.getElementById("message2")) return false;
   var elem = document.getElementById("message2");
   elem.style.position = "absolute";
   elem.style.left = "50px";
   elem.style.top = "50px";
   moveElement("message2",125,75,20);
   */
 
   setTimeout("moveMessage()",5000);
}
function moveMessage(){
 var elem = document.getElementById("message");
 elem.style.left="200px";
}

addLoadEvent(positionMessage);
//addLoadEvent(moveMessage);

Posted by 1010
반응형

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">

  <SCRIPT LANGUAGE="JavaScript">
  <!--
 function test(){
  var rootNode = document.getElementById("test");
  var newNode = document.createElement("p");
  rootNode.appendChild(newNode);

  var newTextNode = document.createTextNode("sdfsaffwefwef");
  newNode.appendChild(newTextNode);
 }
 window.onload = function(){
  test();
 }
  //-->
  </SCRIPT>
 </HEAD>

 <BODY>
 <div id="test">text</div>
 </BODY>
</HTML>

Posted by 1010
반응형

애스터리스크(*) 표시가 있는 항목은 W3C DOM에 대한 Microsoft의 확장 기능을 나타낸다.


async(*) : 비동기식 다운로드를 허용할 것인지를 나타내며, 읽고 쓰기가 가능하다.

attributes : 주어진 노드에 대한 속성 목록을 저장하며, 읽기 전용이다.

baseName(*) : Namespace에서 확인된 기본 이름으로, 읽기 전용이다.

childNodes : 자식 노드들의 목록을 저장하며, 읽기 전용이다.

dataType(*) : 주어진 노드에 대한 데이터 형식을 제공하며, 읽고 쓰기가 가능하다.

definition(*) : DTD 또는 스키마에서의 노드에 대한 정의를 제공하며, 읽기 전용이다.

doctype : 주어진 노드에 대한 데이터 형식을 제공하며, 읽기 전용이다.

documentElment  : 문서의 루트 요소를 가리키며, 읽고 쓰기가 가능하다.

firstChild : 현재 노드의 첫 번째 자식을 가리키며, 읽기 전용이다.

implementation : 문서에 대한 XMLDOMImplementation 객체로서, 읽기 전용이다.

lastChild : 현재 노드의 마지막 자식 노드로서, 읽기 전용이다.

namespaceURI(*) : Namespace의 URI(Uniform Resource Identifier)를 알려주며, 읽기 전용이다.

nextSibling : 동일 레벨에서 현재 노드의 다음 노드로서, 읽기 전용이다.

nodeName : 구성요소, 속성 또는 엔티티 참조에 대한 검증된 이름, 또는 다른 노드형식에서는

                  문자열을 저장하는 속성으로, 읽기 전용이다.

nodeType : XML DOM노드 형식을 가리키며, 읽기 전용이다.

nodeTypeValue(*) : 노드의 값을 저장하며, 읽고 쓰기가 가능하다.

nodeTypeString(*) : 노드 형식을 문자열로 알려 주며, 읽기 전용이다.

nodeValue : 노드에 관련된 텍스트를 제공하며, 읽고 쓰기가 가능하다.

ondataavailable(*) : ondataavailable 이벤트의 이벤트 처리기로서, 읽고 쓰기가 가능하다.

onreadystatechange(*) : readState 속성의 변경을 처리하는 이벤트 처리기로서,

                                   읽고 쓰기가 가능하다.

onreadystatechange(*) : readyState 속성의 변경을 처리하는 이벤트 처리기로서, 읽고 쓰기가능.

ontransformnode(*) : ontransformnode이벤트에 대한 이벤트 처리기로서, 읽고 쓰기가 가능하다.

ownerDocument :  지정한 노드를 포함하는 문서의 루트를 가리키며, 읽기 전용이다.

parentNode : 부모노드(부모를 가질 수 있는 노드)로서, 읽기 전용이다.

parsed(*) : 지정한 노드와 모든 자손 노드들이 파싱되었다면 참이고, 아니면 거짓이며, 읽기전용

parseError(*) : 가장 최근의 파싱 오류에 관한 정보를 갖는 XMLDOMParseError객체로서

                      읽기 전용

prefix(*)  : Namespace접두어로서,일기 전용이다.

preserveWhiteSpace(*) : 처리 과정에서 여백이 유지되어야 한다면 참, 아니면 거짓을 가지며,

                                   읽고 쓰기가 가능하다.

previousSibling : 지정한 노드와 동일 레벨에서의 이전 노드를 가리키며, 읽기 전용이다.

readyState(*) : XML 문서의 현재 상태를 나타내며, 읽기 전용이다.

resolveExternals(*) : 파싱 할때 외부 정의를 풀어놓을 것인지 지정하며, 읽고 쓰기가 가능하다.

given(*) : 노드를 직접 지정할 것인지 기본값에서 가져올 것인지를 나타내며, 읽기 전용이다.

text(*) : 노드와 하위 트리의 텍스트 내용을 저장하며, 읽고 쓰기가 가능하다.

url(*) : 가장 최근에 로드된 XML문서의 URL(Uniform Resource Locator)을 알려주며, 읽기 전용

validateOnParse(*) : 파서에서 지정한 문서를 검증하도록 할 것인지를 지정하며, 읽고 쓰기 가능

xml(*) : 노드와 모든 자손의 XML 표현을 알려주며, 읽기 전용이다.

Posted by 1010
반응형

---------------------test.html---------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Image Gallery</title>
  <script type="text/javascript" src="test.js"></script>
  <link rel="stylesheet" href="styles/layout.css" type="text/css" media="screen" />
</head>
<body>
  <h1>Snapshots</h1>
  <ul id="imagegallery">
    <li>
      <a href="images/fireworks.jpg" title="A fireworks display">
        <img src="images/thumbnail_fireworks.jpg" alt="Fireworks" />
      </a>
    </li>
    <li>
      <a href="images/coffee.jpg" title="A cup of black coffee" >
        <img src="images/thumbnail_coffee.jpg" alt="Coffee" />
      </a>
    </li>
    <li>
      <a href="images/rose.jpg" title="A red, red rose">
        <img src="images/thumbnail_rose.jpg" alt="Rose" />
      </a>
    </li>
    <li>
      <a href="images/bigben.jpg" title="The famous clock">
        <img src="images/thumbnail_bigben.jpg" alt="Big Ben" />
      </a>
    </li>
  </ul>
</body>
</html>


---------------------------test.js-------------------------------

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function preparePlaceholder() {
  if (!document.createElement) return false;
  if (!document.createTextNode) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("imagegallery")) return false;
  var placeholder = document.createElement("img");
  placeholder.setAttribute("id","placeholder");
  placeholder.setAttribute("src","images/placeholder.gif");
  placeholder.setAttribute("alt","my image gallery");
  var description = document.createElement("p");
  description.setAttribute("id","description");
  var desctext = document.createTextNode("Choose an image");
  description.appendChild(desctext);
  var gallery = document.getElementById("imagegallery");
  insertAfter(placeholder,gallery);
  insertAfter(description,placeholder);
}

function prepareGallery() {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("imagegallery")) return false;
  var gallery = document.getElementById("imagegallery");
  var links = gallery.getElementsByTagName("a");
  for ( var i=0; i < links.length; i++) {
    links[i].onclick = function() {
      return showPic(this);
 }
    links[i].onkeypress = links[i].onclick;
  }
}

function showPic(whichpic) {
  if (!document.getElementById("placeholder")) return true;
  var source = whichpic.getAttribute("href");
  var placeholder = document.getElementById("placeholder");
  placeholder.setAttribute("src",source);
  if (!document.getElementById("description")) return false;
  if (whichpic.getAttribute("title")) {
    var text = whichpic.getAttribute("title");
  } else {
    var text = "";
  }
  var description = document.getElementById("description");
  if (description.firstChild.nodeType == 3) {
    description.firstChild.nodeValue = text;
  }
  return false;
}

addLoadEvent(preparePlaceholder);
addLoadEvent(prepareGallery);

Posted by 1010
반응형

function getObject(objectID){
 if(document.getElementById && document.getElementBId(objectID)){
  return document.getElementById(objectID); // check W3C DOM
 }else if(document.all && document.all(objectID)){
  return document.all(objectID); // IE4
 }else if(document.layers && document.layers[objectID]){
  return document.layer[objectID]; // NN4
 }else{
  return false;
 }
}

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

function showPic(whichpic) {
  if (!document.getElementById("placeholder")) return true;
  var source = whichpic.getAttribute("href");
  var placeholder = document.getElementById("placeholder");
  placeholder.setAttribute("src",source);
  if (!document.getElementById("description")) return false;
 var text = whichpic.getAttribute("title") ? whichpic.getAttribute("title") : "";
  /*
  if (whichpic.getAttribute("title")) {
    var text = whichpic.getAttribute("title");
  } else {
    var text = "";
  }
  */  var description = document.getElementById("description");
  if (description.firstChild.nodeType == 3) {
    description.firstChild.nodeValue = text;
  }
  return false;
}

function prepareGallery() {
  //if (!document.getElementsByTagName) return false;
  //if (!document.getElementById) return false;
  //if (!document.getElementById("imagegallery")) return false;
  var gallery = getObject("imagegallery");
  //alert(gallery);
  var links = gallery.getElementsByTagName("a");
  for ( var i=0; i < links.length; i++) {
    links[i].onclick = function() {
      return showPic(this);
 }
    links[i].onkeypress = links[i].onclick;
  }
}


function getObject(objectID){
 if(document.getElementById && document.getElementById(objectID)){
  return document.getElementById(objectID); // check W3C DOM
 }else if(document.all && document.all(objectID)){
  return document.all(objectID); // IE4
 }else if(document.layers && document.layers[objectID]){
  return document.layer[objectID]; // NN4
 }else{
  return false;
 }
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(prepareGallery);

Posted by 1010
반응형
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>가족 사진첩</title>
 <!--<script type="text/javascript" src="scripts/showPic.js"></script>-->
 <SCRIPT LANGUAGE="JavaScript">
 <!--
  function showPic(whichpic) {
    var source = whichpic.getAttribute("href");
    var placeholder = document.getElementById("placeholder");
    placeholder.setAttribute("src",source);
    var text = whichpic.getAttribute("title");
    var description = document.getElementById("description");
    description.firstChild.nodeValue = text;
  }
 //-->
 </SCRIPT>
</head>
<body>
<h1>가족 사진</h1>
  <ul>
    <li>
      <a href="images/dad.jpg" title="멋있는 아빠 사진" onclick="showPic(this); return false;">아빠</a>
    </li>
    <li>
      <a href="images/mom.jpg" title="이쁜 엄마 사진" onclick="showPic(this); return false;">엄마</a>
    </li>
    <li>
      <a href="images/jisu.jpg" title="귀여운 지수 사진" onclick="showPic(this); return false;">딸</a>
    </li>
    <li>
      <a href="images/jisung.jpg" title="똑똑한 지성 사진" onclick="showPic(this); return false;">아들</a>
    </li>
  </ul>
  <img id="placeholder" src="images/placeholder.gif" alt="my image gallery" />
  <p id="description">사진을 선택하세요.</p>
</body>
</html>
Posted by 1010
반응형
Posted by 1010
반응형

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>title</title>
  <script type="text/javascript" src="log.js"></script>
  <script type="text/javascript" src="showDom.js"></script>
 </head>
 <body>
  <h1>최신영화</h1>

  <span id="2012">2012</span>
  <p>굿모닝프레지던트<span id="comedy">코미디</span></p>

  <div>
   <p>솔로이스트</p>
   <span id="nonfiction">실화</span>
  </div>

  <div id="debugConsole" style="border:1px solid #000"></div>

 </body>
</html>


----------------------------------log.js
function log(msg){
 var console = document.getElementById("debugConsole");
 if(console != null){
  console.innerHTML += msg+"<br/>";
 }
}


-------------------------showDom.js------------

window.onload = function(){

 var rootNode = document.documentElement;
 log("root 태그 : "+rootNode.tagName);

 var bodyNode = document.getElementsByTagName("body").item(0);
 log("body 태그 : "+bodyNode.tagName);

 var spanList = document.getElementsByTagName("span");
 log("span 태그의 개수 : "+spanList.length);
 for(var i=0; i < spanList.length ; i++){
  var span = spanList.item(i);
  log((i+1)+"번째 span id : "+span.getAttribute("id"));
  log((i+1)+"번째 span 노드 값 : "+span.firstChild.nodeValue);
 }

 var bodyLastChild = bodyNode.lastChild;
 if(navigator.appName == "Microsoft Internet Explorer"){
  log("body의 마지막 자식 노드 IE: "+bodyLastChild.nodeName);
 }else{
  log("body의 마지막 자식 노드 FE: "+bodyLastChild.previousSibling.nodeName);
 }
 var pList = document.getElementsByTagName("p");
 var pNode = pList.item(0);
 log("p노드의 첫번째 자식 노드 : "+pNode.nodeName+","+pNode.firstChild.nodeValue);
 var pNode2 = pList.item(1);
 log("p노드의 두번째 자식 노드 : "+pNode2.nodeName+","+pNode2.firstChild.nodeValue);

 var divList = document.getElementsByTagName("div");
 var div1Attr = divList.item(1).getAttribute("id");
 log("div  노드의 id 속성 노드 : "+div1Attr);

}

Posted by 1010
반응형
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <title></title>
 </head>
 <body>
   
 </body>
</html>
Posted by 1010
02.Oracle/DataBase2009. 11. 27. 15:34
반응형

SQL문 튜닝 개요

Added by honghoekim, last edited by honghoekim on 7월 31, 2009

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

1.문제가 있는 SQL 식별

1)느린 프로그램을 식별
2)프로그램에서 SQL을 검토
3)SQL_Trace 및 TKPROF를 사용

  • SQL문 식별이 불가능한 경우(SQL이 동적으로 생성되는 경우) SQL TRACE를 사용하여 실행된 SQL을 포함하는 Trace file을 생성한 다음 TKPROF를 사용하여 출력 파일을 생성

2.Optimizer 통계 확인

1)모든 테이블에 대한 통계를 수집

  • 모든 SQL문의 실행 계획을 결정하는 CBO는 테이블 및 인덱스에 대해 수집된 통계를 사용함.통계가 수집되지 않았거나 통계가 데이터베이스에 저장된 데이터를 대표하지 못할 경우 Optimizer에 정보가 부족해 최상의 계획을생성할 수 없다.

3.실행 계획 검토

다음 사항을 검토

1)Driving table이 최상의 필터를 가지는 계획이 되어야 한다.
2)각 단계의 조인 순서는 가장 적은 수의 행이 다음 단계로 반환됨을 의미 한다.
3)조인 방식이 반환되는 행 수에 적합.예를 들어 인덱스를 통한 중첩 루프 조인은 많은 행이 반환될 때 최적화되지 않을 수 있다.
4)뷰가 효율적으로 사용 된다.뷰에 대한 access 필요 여부 확인
5)작은 테이블에도 비의도적인 cartesian product가 없다.
6)각 테이블이 효율적으로 액세스 된다.

4.SQL문 재구성

1)AND 및 = 를 사용
2)WHERE절에 변환된 열이 포함되지 않도록 함

  • 술어 절 또는 WHERE절에 SQL 함수 사용 금지
    3)복합 모드 표현식을 빼고 암시적인 유형 변환에 유의
    4)각 작업에 대해 별도의 SQL문을 작성
  • 다양한 작업에 대해 하나의 SQL문을 사용할 경우 각 작업에 최적화 되지 않은 결과 나옴.굳이 하나의 SQL문을 사용해야 할 경우 UNION ALL 연산자를 사용
    5)서브 쿼리에 대해 IN 대신 EXISTS를 사용
    -선택적 술어가 서브 쿼리에 있는 경우는 IN을 사용.선택적 술어가 상위 쿼리에 있는 경우는 EXISTS를 사용
    6)힌트로 엑세스 경로 및 조언 순서를 제어
    -인덱스를 통해 필요한 행을 얻는 것이 더 효율적인 경우 전체 테이블 스캔 사용 금지,
    더 적은 수의 행을 Fetch하는 다른 인덱스를 대신 사용할 수 있다면 Driving 테이블에서 많은 수의 행을 Fetch하는 인덱스의 사용을 피하자,
    조인 순서에서 나중에 테이블에 적은 수의 행을 조인하는 조인 순서를 선택

5.인덱스 재구성

1)비선택적 인덱스를 제거하여 DML 속도를 높임
2)성능에 중요한 액세스 경로를 인덱스화함
3)기존에 연결된 인덱스에서 열 순서를 변경
4)인덱스에 열을 추가하여 선택성을 높임
5)IOT를 고려

6.시간 경과에 따른 실행 계획 유지 관리


출처 : http://www.javastudy.co.kr:8080/pages/viewpage.action?pageId=786591

Posted by 1010
반응형

html 소스 암호화


Posted by 1010
91..개발관련프로그램2009. 11. 26. 00:20
반응형
<홈페이지 보안 강화 도구(CASTLE) 보급 안내>

최근 공격자들이 국내 홈페이지를 해킹하여 악성코드 유포 및
개인정보 탈취하는 사례가 지속적으로 발생하고 있습니다.

이에, 한국인터넷진흥원에서는 홈페이지의 보안성을 강화하는
"홈페이지 보안 강화도구(CASTLE)"를 배포하고 있습니다.

사용을 희망하는 회사(기관)나 개인 사용자 분들은 아래의 프로그램과
설명서를 다운받아 사용하시기 바랍니다.

CASTLE 다운로드(ASP, PHP, JSP)
CASTLE 사용자 설명서 다운로드
CASTLE 설치 가이드 다운로드
CASTLE FAQ 다운로드
○ 문의 및 기술 지원(Tel : 02-405-5617, EMAIL : castle@krcert.or.kr)

※ CASTLE이 기능 및 보안 패치로 인해 새로운 버젼으로 업데이트 되었습니다.
이전 PHP 1.0.1, JSP 1.0.0, ASP 1.0.0 사용자 분들께서는 위 소스파일을 다운로드 하여
업데이트 하시기 바랍니다.

※ CASTLE를 홈페이지에 적용하면, 주요 취약점을 공격하는 침입시도 및 공격코드들을
차단할 수 있습니다. 또한 개발 중이거나, 운영 중인 홈페이지에 약간의 수정을 통해 쉽게
적용 가능하고, 적용 후 CASTLE의 관리 기능으로 손쉽게 관련 정책이나, 설정을 수정할
수 있습니다.

출처 : http://www.krcert.or.kr/noticeView.do?num=304

Posted by 1010
반응형

<style type="text/css">
*{font-family:돋움,Dotum,AppleGothic,sans-serif;font-size:12px;color:#333;}
body,form,div,p,h1,h2,h3,h4,h5,h6,dl,dt,dd,ul,ol,li,pre,fieldset,input,blockquote,th,td{margin:0;padding:0;}
ol,ul,dl{list-style:none;}
a{color:#333;text-decoration:none;}
a:hover,a:hover b,a:hover em,a:hover span{color:#06c;text-decoration:underline;}

/*rolling Button*/
div.rollBtn{position:absolute;z-index:3;}
div.rollBtn a.next{background-position:-22px 0px;cursor:hand;}
div.rollBtn a.previous{margin-right:3px;cursor:hand;}
div.rollBtn a span{display:none;}

#bKey{position:relative;margin-top:9px;width:270px;zoom:1;}
#bKey .keyBg{margin:1px 0 0 0;overflow:hidden;height:18px;}
#bKey ul{clear:both;}
#bKey ul li{float:left;height:18px;}
#bKey ul li.x{background:url(http://simg.paran.com/top_v2.2/top/ic_line06.gif) 100% 0 no-repeat;margin:0 7px 0 0;padding:0 7px 0 0;}
#bKey ul li a{font-weight:bold;color:#FB6A31;letter-spacing:-1px;}
#bKey .rollBtn{left:203px;top:0;}
#bKey .rollBtn .up{margin-right:3px;}
</style>
<script language="JavaScript">
function scrolling(objId,sec1,sec2,speed,height){
  this.objId=objId;
  this.sec1=sec1;
  this.sec2=sec2;
  this.speed=speed;
  this.height=height;
  this.h=0;
  this.div=document.getElementById(this.objId);
  this.htmltxt=this.div.innerHTML;
  this.div.innerHTML=this.htmltxt+this.htmltxt;
  this.div.isover=false;
  this.div.onmouseover=function(){this.isover=true;}
  this.div.onmouseout=function(){this.isover=false;}
  var self=this;
  this.div.scrollTop=0;
  window.setTimeout(function(){self.play()},this.sec1);
}
scrolling.prototype={
  play:function(){
    var self=this;
    if(!this.div.isover){
      this.div.scrollTop+=this.speed;
      if(this.div.scrollTop>this.div.scrollHeight/2){
        this.div.scrollTop=0;
      }else{
        this.h+=this.speed;
        if(this.h>=this.height){
          if(this.h>this.height|| this.div.scrollTop%this.height !=0){
            this.div.scrollTop-=this.h%this.height;
          }
          this.h=0;
          window.setTimeout(function(){self.play()},this.sec1);
          return;
        }
      }
    }
    window.setTimeout(function(){self.play()},this.sec2);
  },
  prev:function(){
    if(this.div.scrollTop == 0)
    this.div.scrollTop = this.div.scrollHeight/2;
    this.div.scrollTop -= this.height;
  },
  next:function(){
    if(this.div.scrollTop ==  this.div.scrollHeight/2)
    this.div.scrollTop =0;
    this.div.scrollTop += this.height;
  }
};
</script>
 <BODY>
<div id="bKey">
<div id="jFavList" class="keyBg">
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111063">부시 8월 방한</a></li>
 <li><a href="http://c3.paran.com/?l=P111064">우리 구단 가입금</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111065">진보신당 난입 폭행</a></li>
 <li><a href="http://c3.paran.com/?l=P111066">남규리 대시</a></li>
</ul>

<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111067">미국산 쇠고기 판매</a></li>
 <li><a href="http://c3.paran.com/?l=P111068">조중동 다음</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111069">호나우지뉴 방한</a></li>
 <li><a href="http://c3.paran.com/?l=P111070">김구라 사과</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111071">LPG가격 인상</a></li>
 <li><a href="http://c3.paran.com/?l=P111072">임창용 19세이브</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111073">한전 납품비리</a></li>
 <li><a href="http://c3.paran.com/?l=P111074">유재석 웨딩사진</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111075">채은정 비키니</a></li>

 <li><a href="http://c3.paran.com/?l=P111076">PD수첩 압수영장</a></li>
</ul>
<ul>
 <li class="x"><a href="http://c3.paran.com/?l=P111077">신혼부부 주택</a></li>
 <li><a href="http://c3.paran.com/?l=P111078">사제단 시국미사</a></li>
</ul>
</div>
<script type="text/javascript"> var hotKeyword = new scrolling("jFavList",3000,1,1,18); </script>

<div class="rollBtn" onmouseover="hotKeyword.div.isover=true;" onmouseout="hotKeyword.div.isover=false;">
  <a class="previous" onclick="hotKeyword.prev();" title="위로">[↑]</a>
  <a class="next" onclick="hotKeyword.next();" title="아래로">[↓]</a>
</div>
</div>


출처 : http://www.jakartaproject.com/article/javascripttip/121573854953934

Posted by 1010
02.Oracle/DataBase2009. 11. 25. 17:56
반응형
- http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
  • Oracle Database 11g Release 1 (11.1.0.7.0) JDBC Drivers
    ojdbc5.jar (1,890,499 bytes) - Classes for use with JDK 1.5.
    ojdbc6.jar (1,988,051 bytes) - Classes for use with JDK 1.6.
  • Oracle Database 11g Release 1 (11.1.0.6.0) JDBC Drivers
    ojdbc5.jar (1,879,860 bytes)
    ojdbc6.jar (1,977,267 bytes)
  • Oracle Database 10g Release 2 (10.2.0.4) JDBC Drivers
    classes12.jar (1,609,607 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,555,682 bytes) - classes for use with JDK 1.4 and 1.5
  • Oracle Database 10g Release 2 (10.2.0.3) JDBC Drivers
    classes12.jar (1,600,090 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,545,954 bytes) - classes for use with JDK 1.4 and 1.5
  • Oracle Database 10g Release 2 (10.2.0.2) JDBC Drivers
    classes12.jar (1,594,191 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,540,457 bytes) - classes for use with JDK 1.4 and 1.5
  • Oracle Database 10g Release 2 (10.2.0.1.0) JDBC Drivers
    classes12.jar (1,590,491 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,536,979 bytes) - classes for use with JDK 1.4 and 1.5
  • Oracle Database 10g 10.1.0.5 JDBC Drivers
    classes12.jar (1,442,469 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,378,346 bytes) - classes for use with JDK 1.4
  • Oracle Database 10g 10.1.0.2 JDBC Drivers
    classes12.jar (1,417,089 bytes) - for use with JDK 1.2 and JDK 1.3
    ojdbc14.jar (1,352,918 bytes) - classes for use with JDK 1.4
  • Oracle9i 9.2.0.8 JDBC Drivers
    ojdbc14.jar - JDBC classes (1,212,964 bytes) - For use with JDK 1.4
    classes12.jar - JDBC classes (1,234,433bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.jar - JDBC classes (1,063,074 bytes) - For use with JDK 1.1
  • Oracle9i 9.2.0.5 JDBC Drivers
    ojdbc14.jar - JDBC classes (1,200,046 bytes) - For use with JDK 1.4
    classes12.zip - JDBC classes (1,232,604 bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes (1,063,479bytes) - For use with JDK 1.1
  • Oracle9i 9.2.0.4 JDBC Drivers
    ojdbc14.jar - JDBC classes (1,187,584 bytes) - For use with JDK 1.4
    classes12.zip - JDBC classes (1,219,950 bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes (1,052,833 bytes) - For use with JDK 1.1
  • Oracle9i 9.2.0.3 JDBC Drivers
    ojdbc14.jar - JDBC classes (1,181,679 bytes) - For use with JDK 1.4
    classes12.zip - JDBC classes (1,213,897 bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes (1,048,261 bytes) - For use with JDK 1.1
  • Oracle9i 9.2.0.1 JDBC Drivers
    ojdbc14.jar - JDBC classes ( 1,174,976 bytes) - For use with JDK 1.4
    classes12.zip - JDBC classes ( 1,207,068 bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes ( 1,043,528 Bytes) - For use with JDK 1.1
  • Oracle9i 9.0.1.4 JDBC Drivers
    classes12.zip - JDBC classes (1,143,559 bytes) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes (988,625 bytes) - For use with JDK 1.1
  • Oracle9i 9.0.1 JDBC Drivers
    classes12.zip - JDBC classes( 1,081 kb) - For use with JDK 1.2 and JDK 1.3
    classes111.zip - JDBC classes ( 936 kB) - For use with JDK 1.1
  • Oracle8i 8.1.7.1JDBC Drivers
    classes12.zip - JDBC classes ( 1,892 kB) - For use with JDK 1.2
    classes111.zip - JDBC classes ( 1,741 kB)


출처 : http://pantarei.tistory.com/tag/oracle

Posted by 1010
91..개발관련프로그램2009. 11. 25. 00:32
반응형
http://www.disk-image.net/
Posted by 1010
06.Ajax2009. 11. 24. 07:33
반응형


http://www.methodchain.com/index.html

MethodChain?


MethodChain은 Ajax 라이브러리로 New Paradigm입니다.


MethodChain은 프로그램을 작성하지 않고 웹 애플리케이션을 개발할 수 있는

아키텍처와 메커니즘을 제공합니다.


2009년 11월 17일: MethodChain UI RC1 버전을 발표했습니다.


  • MethodChain UI 정식 버전은 2009년 12월 1일에 발표할 예정입니다.
  • 정식 버전에는 다음 내용이 포함됩니다.
  • - RC1에 포함되지 않은 예제
  • - 주석이 포함된 클래스 단위의 소스 코드
  • - MethodChain의 발전 방향, 사상, 아키텍처와 메커니즘 설명
  • - 2.1 버전 로드맵
  • - 라이센스 정책 및 가격


  • ** 아래 예제는 별도로 프로그램을 개발하지 않고 MethodChain 기능만으로 개발한 것입니다.
  • - 서버에서 받은 데이터는 상품명, 수량, 단가, 할인율 코드입니다.
  • - 할인율 코드에 해당하는 radio를 checked 상태로 설정하였으며
  • - Calculator 메커니즘을 적용하여 산출금액에서 부가세포함까지를 클라이언트에서 산출한 것입니다.


  • ** 아래 예제는 Grid Entry로 다수의 데이터를 입력할 수 있습니다.
  • - Operator 메커니즘을 적용하여 산출금액과 할인금액을 체크하고 메시지를 표시하였습니다.
  • - 수량과 단가를 입력할 때마다 산출금액, 판매금액, 부가세, 부가세포함을 자동으로 계산합니다.
  • - 이 모든 것을 위해 별도로 프로그램을 개발하지 않아도 됩니다.
Posted by 1010
반응형

JavaScriptMVC - develop with direction!

JavaScriptMVC is an open-source framework containing the best ideas in enterprise JavaScript development. It guides you to successfully completed projects by promoting best practices, maintainability, and convention over configuration.

Download JavaScriptMVC 2.0 Production (6.2 MB) Watch 2.0 Video

What's Inside?

We've made everything you should be doing as easy as possible.
  • Maintainability via the Model-View-Controller architecture pattern.
  • Application Concatination and Compression via include.
  • Testing via Test.
  • Documentation via include.Doc.
  • Error Reporting via DamnIT.
  • Updates and Dependancy Management via update.
  • Ajax and DOM functionality via jQuery.

The Plan.

  1. Download JavaScriptMVC
  2. Read the Getting Started Guide
  3. Learn the technology
  4. Explore the api

Showcase.

Checkout some of the companies using JavaScriptMVC:
Posted by 1010
반응형

Getting Started with the Closure Compiler Application

The Hello World of the Closure Compiler Application

The Closure Compiler application is a Java command-line utility that compresses, optimizes, and looks for mistakes in your JavaScript. To try out the Closure Compiler application with a simple JavaScript program, follow the steps below.

To work through this exercise you need the Java Runtime Environment version 6.

  1. Download the Closure Compiler package

    Create a working directory called closure-compiler.

    Download the Closure Compiler compiler.jar file and save it in closure-compiler.

  2. Create a JavaScript file

    Create a file named hello.js containing the following JavaScript:

    // A simple function. 
    function hello(longName) { 
      alert('Hello, ' + longName); 
    } 
    hello('New User');

    Save this file in the closure-compiler directory.

  3. Compile the JavaScript file

    Run the following command from the closure-compiler directory:

    java -jar compiler.jar --js hello.js --js_output_file hello-compiled.js
    

    This command creates a new file called hello-compiled.js, which contains the following JavaScript:

    function hello(a){alert("Hello, "+a)}hello("New User");

    Note that the compiler has stripped comments, whitespace and an unnecessary semi-colon. The compiler has also replaced the parameter name longName with the shorter name a. The result is a much smaller JavaScript file.

    To confirm that the compiled JavaScript code still works correctly, include hello-compiled.js in an HTML file like this one:

    <html> 
    <head><title>Hello World</title></head> 
    <body> 
    <script src="hello-compiled.js"></script> 
    </body> 
    </html>

    Load the HTML file in a browser, and you should see a friendly greeting!

Next Steps

This example illustrates only the most simple optimizations performed by the Closure Compiler. To learn more about the compiler's capabilities, read Advanced Compilation and Externs.

To learn more about other flags and options for the Closure Compiler, execute the jar with the --help flag:

java -jar compiler.jar --help
Posted by 1010
98..Etc/Etc...2009. 11. 23. 10:25
반응형
[참고]
http://www.google.co.kr/support/webmasters/bin/topic.py?topic=8459&hl=ko

[퍼온글]

구글의 검색 결과에 있는 내용을 삭제하고 싶으세요?

구글은 그 검색 결과에 있어서 그 품질을 가장 중요하게 봅니다. 그렇기 때문에 구글은 사용자의 사이트에서 페이지들을 목록화하는 것을, 그 페이지에 대한 책임이 있는 관리자의 요청이 있을 때에만 중지합니다. 이 정책은 어떤 페이지가 구글의 색인에서 부당하게 제거되지 않도록 보호해주기 위해서 필요합니다.

구글은 구글의 사용자를 위해 완전하고 공평한 검색 결과를 제공하기 위한 의무로, 웹에서 정보를 검열하는 행동에 참여할 수 없습니다.

 삭제 기능

다음의 삭제 기능들은 구글이 다음 번에 사용자의 사이트 페이지를 색인 할 때 적용됩니다. (보통 6-8주 걸립니다.)

 사용자 웹사이트의 URL 바꾸기

구글은 페이지의 URL주소와 그의 내용을 밀접히 관련하기 때문에 수동적으로 직접 URL 주소를 변경할 수는 없습니다. 하지만 구글은 인터넷 페이지들을 정기적으로 새롭게 수집하기 때문에 그럴 때마다 변경될 것입니다. 수집하는 것 역시 자동으로 이루어지기 때문에 저희가 수동적으로 일정한 사이트만 더욱 자주 검색할 수는 없습니다.

만약에 사이트가 변경이 되었으면 URL 등록 페이지 를 사용하셔서 페이지 추가를 하실 수 있고, 페이지 삭제에 대한 정보는 아래에 있습니다. 하지만 페이지 등록은 시간이 걸릴 수 있으니 삭제를 하신 후 다시 추가를 하시려 해도 저희가 새롭게 수집하기 전에는 결과에 뜨지 않을 수 있습니다.

구글에 직접 주소 변경을 요청하는 대신, 현재 사용자의 사이트에 연결하고있는 다른 사이트의 링크를 먼저 새롭게 고치는 것을 권장합니다. 그리고 야후! 디렉토리나 오픈 디렉토리에 변경이 입력된 것을 확인하시기 바랍니다. 또는, 전 주소가 HTTP 301 (permanent) redirect를 사용해 방향전환 한다면 저희의 자동 검색기가 새로운 주소를 기록합니다. 이렇게 등록된 페이지가 검색 결과에 나타나려면 보통 6-8주 정도 걸립니다.


 사용자의 웹사이트 URL 제거

사이트 일부, 또는 전체를 구글이 수집 못하게 하시려면 다음의 내용을 지닌 robots.txt파일을 서버 루트(root) 디렉토리에 저장하세요:

User-Agent: *
Disallow: /

이것은 사이트를 검색기에서 제외하는 표준입니다. 다음의 문서를 참조하시면 이 표준에 대한 더 자세한 정보가 있습니다 (영문 문서입니다): http://www.robotstxt.org/wc/norobots.html

참조: 만약 긴급하게 하는 요청이고, 구글의 자동 검색 로봇을 못 기다리시면 구글의 자동 삭제 시스템을 사용하세요. 먼저 해당하는 페이지의 관리자가 사이트에 robots.txt 파일을 저장해야 결과에서 자동적으로 링크를 지우는 이 기능이 올바르게 작동합니다.

웹 서버의 루트(root) 디렉토리에 robots.txt 파일이 저장돼 있으면 페이지들은 계속 구글의 검색 결과에서 제외됩니다. 또한, 루트 디렉토리에 사용자 권위가 없으시더라도 robots.txt 파일을 해당하는 폴더에 저장하면 됩니다. 자동 제외 시스템을 같이 사용하시면 임시적인 180일 동안 구글 검색에서 제외됩니다. (하지만, 루트 폴더가 아닌, 다른 곳에 저장한 상태이면 180일마다 또다시 자동 제외 시스템을 사용하셔야 계속 제외됩니다.)



 각각의 페이지 삭제

모든 검색 로봇을 막으시려면 다음의 메타 테그(meta tag)를 HTML페이지에 포함하세요:

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

구글 로봇을 제외한 다른 검색 로봇을 허용하시려면 다음의 메타 태그를 사용하세요:

<META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW">

이 표준 메타 태그에 대한 더 많은 정보가 필요하시면 다음 페이지를 방문하세요: http://www.robotstxt.org/wc/exclusion.html#meta.

참조: 만약 긴급하게 하는 요청이고, 구글의 자동 검색 로봇을 못 기다리시면 구글의 자동 제외 시스템을 사용하세요. 먼저 해당하는 페이지의 관리자가 페이지의 HTML 안에 올바른 메타 태그를 입력해야 이 시스템의 기능이 작동합니다.


 사이트 내용의 제거

구글 검색 결과에는 URL 내용을 보여드립니다. 나타나는 검색어들을 bold체로 보기 쉽게 하고, 문맥으로 내용을 파악하실 수 있게 해드립니다. 이렇게 내용을 미리 볼 수 있게 하여 사용자가 원하는 결과를 더욱 정확하게 찾을 수 있게 해 드립니다.

구글이 자신의 페이지를 보지 못하도록 하고 싶다면 다음 태그를 사용하세요:

<META NAME="GOOGLEBOT" CONTENT="NOSNIPPET">

참고: 삭제할 때에는 저장되어 있던 페이지도 삭제됩니다.

참조: 만약 긴급하게 하는 요청이고, 구글의 자동 검색 로봇을 못 기다리시면 구글의 자동 제외 시스템을 사용하세요. 먼저 해당하는 페이지의 관리자가 페이지의 HTML 안에 올바른 메타 태그를 입력해야 이 시스템의 기능이 작동합니다.


 저장된 페이지의 제거

구글은 수집한 모든 문서들을 저장해둡니다. 구글은 저장된 문서를 사용자들을 위해 제공하고, 무슨 이유로 사이트에 접속이 불가능하면 구글의 저장된 페이지를 사용하여 구글이 수집했던 당시의 모습 그대로 볼 수 있습니다. 저장된 페이지는 위 부분에 원본이 아닌 복사된 내용임을 설명하는 메시지가 있습니다.


만약 로봇이 귀하의 사이트에서 내용을 수집 못하게 하고 싶다면, NOARCHIVE 메타 태그를 사용하세요. 이 태그는 문서의 부분에 다음과 같이 배치 하세요.

<META NAME="ROBOTS" CONTENT="NOARCHIVE">

만일 목록을 붙이는 다른 로봇들이 사용자의 페이지에 있는 내용을 수집하는 것을 허락하고, 단지 구글의 로봇들이 페이지를 저장하는 것을 막고 싶으시다면, 다음 태그를 사용하세요.:

<META NAME="GOOGLEBOT" CONTENT="NOARCHIVE">

참조: 이 태그는 페이지에서 단지 저장된 페이지만 삭제합니다. 구글은 계속해서 페이지를 색인하고 그 일부 내용을 보여줍니다.

참조: 만약 긴급하게 하는 요청이고, 구글의 자동 검색 로봇을 못 기다리시면 구글의 자동 제외 시스템을 사용하세요. 먼저 해당하는 페이지의 관리자가 페이지의 HTML 안에 올바른 메타 태그를 입력해야 이 시스템의 기능이 작동합니다.


 오래된 링크(대드 링크) 삭제

구글은 정기적으로 새롭게 웹 페이지를 수집합니다. 구글은 웹을 색인하며 새로운 페이지를 찾고, 삭제 된 링크는폐기하고, 링크를 자동적으로 업데이트 합니다. 접속과 연결이 안 되는 링크는 색인에서 없어집니다.

참조: 만약 긴급하게 하는 요청이고, 구글이 다음번에 사용자의 사이트를 색인 할 때까지 기다릴 수 없다면 저희의 자동 URL 삭제 시스템을 사용하세요. 저희는 웹상에 페이지가 더이상 존재하지 않을 때만 사용자의 삭제 요청을 받아들일 수 있습니다.


 구글 이미지 검색에서 이미지 삭제

만약 사용자가 구글의 이미지 검색에서 결과 내용을 삭제하셔야 한다면, 그 사이트의 웹 마스터의 참여가 있어야 합니다. 페이지의 웹 마스터에게 robots.txt 파일을 서버의 root에 추가하도록 해주세요. (만약 그것을 서버 루트(root)에 넣을 권리가 없다면 그것을 해당하는 디렉토리 부분에 넣을 수 있습니다.)

예시: 만일 사용자의 사이트가 www.yoursite.com/images/dogs.jpg 이고 구글이 그 사이트에서 수집한 dogs.jpg 이미지를 포함하지 않기를 바라신다면,

사용자는 www.yoursite.com/robots.txt 라고 불리는 파일을 만들어야 합니다.

그리고 이 파일 안에는 다음 텍스트 내용이 있어야 합니다.

User-Agent: Googlebot-Image
Disallow: /images/dogs.jpg

저희의 목록에서 사용자의 사이트에 있는 모든 이미지를 삭제하려면 사용자의 서버 root에 다음 robots.txt 파일이 있어야 합니다.

User-Agent: Googlebot-Image
Disallow: /

웹 마스터가 이 파일을 추가한 후에는googlebot@google.com로 그 사실과 그 파일의 위치에 대한 메모를 보내주세요. 저희는 48시간 내에 그 이미지를 삭제해 드릴 것입니다.

출처 : Tong - anidu012님의 기본통

Posted by 1010
반응형

넘기는 url 이 post 방식을때 iis 405 에러가 나온다.
간단하게 method=get 로 변경하면 되지만 열리는 페이지에 쓸모없는 값들이 보인다.
이럴때는 그냥 맘편하게 원도우 오픈을 이용해서 하면 간단히 해결할수있다.

function linkSite(obj) {
 
 var f  = obj; 

 if(f.selSite.value == ""){
  alert("이동할 싸이트를 선택해 주세요.");
        return false;
 }else{ 
  //f.target ="_blank";    
  //f.action = obj.selSite.value;
  window.open(f.selSite.value, "", "width=950, height=650, menubar=yes, toolbar=yes,  location=yes, scrollbars=yes, resizable=yes ");
         //return true;
  return false;
 } 
 

Posted by 1010
반응형
<nobr style="text-overflow:ellipsis;overflow;hidden;width;250px"></nobr>
Posted by 1010