영원한사랑

인터넷정보 +1252
//------------------------------------------select 제어 함수 모음
 function select_all(ta,bool){ //모든 option 선택
 if(!ta){ return; }  
  for(var i=0,m=ta.length;i<m;i++){
   ta.options[i].selected=bool;
  } 
 }
 function select_del(ta){ //선택된 option 삭제(멀티 가능)
 if(ta.selectedIndex == -1){ return; }  
  var ol
  for(var i=ta.length-1,m=0;i>=m;i--){
   if(ta.options[i].selected){
   ol = ta.options[i];
   ta.removeChild(ol);
   }
  } 
  ta.focus();
 }
 function select_copy(ta,ta2){ //선택된 option 복사(멀티 가능)
  if(ta.selectedIndex == -1){ return; }  
  for(var i=0,m=ta.length;i<m;i++){
   if(ta.options[i].selected){
    var ol = ta.options[i];
    var ta_ol=ol.cloneNode(true)
    ta2.appendChild(ta_ol);
   }
  }
  ta.focus();
 }
 function select_remove(ta,ta2){ //선택된 옵션 이동(멀티 가능)
  select_copy(ta,ta2);
  select_del(ta);
 }
 function select_updown_sel(ta,type){ //1,2,3,4(맨위,위,아래,맨아래); //선택된 option 순서 바꾸기(멀티 불가)
 var sel_len = ta.length
 var sel_idx = ta.selectedIndex;
 if(sel_idx==-1){alert!!('대상을 선택해주세요.'); return;}
 if(type<3 && sel_idx==0 ){ alert!!('대상이 맨 위에있습니다'); return; }
 if(type>2 && sel_idx==(sel_len-1) ){ alert!!('대상이 맨 아래에있습니다'); return; }
  switch(type){
  case 1:
  select_goto(ta,sel_idx,0);
  break;  
  case 2:
  select_goto(ta,sel_idx,sel_idx-1);
  break;
  case 3:
  select_goto(ta,sel_idx,sel_idx+1);
  break;
  case 4:
  select_goto(ta,sel_idx,(sel_len-1));
  break;  
  }
 }
 function select_goto(ta,st,ed){
 var ta_num =-1;
 var ol,ta_ol;
 if(st<0 || ed<0 || st >=ta.length  || ed >=ta.length ) return;
  if(st<ed){
   while(st<ed){
   ta_num=st+1;
   ol = ta.options[st].cloneNode(true);
   ta_ol = ta.options[ta_num].cloneNode(true);
   ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
   ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);  
   st=ta_num;
   }
  }else if(st>ed){
   while(st>ed){
   ta_num=st-1;
   ol = ta.options[st].cloneNode(true);
   ta_ol = ta.options[ta_num].cloneNode(true);
   ta.options[ta_num]=new Option(ol.innerHTML,ol.value,false,true);
   ta.options[st]=new Option(ta_ol.innerHTML,ta_ol.value,false,false);  
   st=ta_num;
   }
  }
 }

$db['to_charset'] = 'UTF-8';
$db['from_charset'] ='EUC-KR';

  • $row[$key] = mb_convert_encoding($value,$db['to_charset'],$db['from_charset']);
  • $row[$key] = iconv ($db['from_charset'],$db['to_charset']  , $value );
















IE7.0 에따른 이슈사항들



1. window.status

window.status 코드가 인터넷 영역에서 실행되지 않습니다

function test() {

    window.status = 'Hi!';

}

단 로컬에서는 됩니다 즉 로컬에 저장된 html을 실행하면 window.status가 먹지만

인터넷에 있는 window.status는 실행되지 않네요

개인적으로 js 디버깅시 자주 사용하곤 했는데 아쉬운 부분입니다 ㅠ.ㅠ



2. 태그

HTML3.2 스펙에 따라 태그는 반드시 에 위치해야 합니다

그렇지 않으면 인식하지 않는다네요

예전엔 base태그를 간간히 썼지만 요즘은 frame 을 잘 사용하지 않아서인지 거의 사용하진 않죠



3. window.close()

window.close()시 나타나는 프롬프트를 회피하기 위해 window.opener 를 사용했었는데

더이상 아래 코드는 먹지 않고 창을 닫겠냐는 프롬프트가 뜨게 됩니다


window.opener=top;

window.close();

or

self.opener = self;
window.close();

패치 : http://haco.tistory.com/1118


4. _search

_search를 통해 검색창을 더이상 열지 못합니다

Test Sidebar




5. window.prompt()

디폴트로 block 됩니다




6. 제한되는 메쏘드들


execCommand

clipboardData.getData()

clipboardData.setData()

clipboardData.clearData()

클립보드 저장, 및 클립보드 데이터 가져오기등의 메쏘드들이 제한됩니다

해보니 보안경고창이 뜨더군요

MS에서는 clipboardData 객체 사용을 권고하지 않습니다



7. Modal 및 Modeless Dialog 크기가 변경!


한마디로 크기가 커집니다 -0- (짜증)

사이즈를 지정하면 content 크기를 의미합니다



8. 새창으로 뜰때 주소줄 보임

더이상 새창을 window.open 의 property 특성으로 조절할 수 없습니다

무조건 주소창이 나타납니다 아주~ 짜증 이빠십니다 ㅠ.ㅠ




9. window.resizeTo!()

window.resiztTo 함수는 에러가 발생하거나 차단됩니다

function changeSize(){
    window.resizeTo!(1024,768);
}


10. HTTP, HTTPS 혼합된 인터넷 영역에서 보안 경고가 발생합니다



11. SELECT가 windowed element로 개선

이전까지는 SELECT Element가 Windowsed Element였기 때문에 다른 element와 달리 별도의 MSHTML pane에서 rendering되었습니다

즉 SELECT가 그림과 같이 layer들을 다 먹어버렸었는데, 이젠 그렇지 않다는거죠

요거 하나는 좋아졌네요 -0-



12. 스크립트 차단

6.0 까지는 아래 코드가 실행되어 보안에 매우 취약했었습니다 (XSS)

 

7.0 부터는 아예 실해이 안되네요

FF 2.0 도 실행이 안되는군요 ^^



13. CSS

100%는 아니지만 CSS2.1 표준 구현 강화가 되었습니다

또한 태그에서만 가능했던 :hover나 background-attachment: 가 모든 태그에서 사용가능해 졌습니다



11월 18일에 한글판 IE7이 배포되며 3주후에는 자동 업데이트를 통해 IE7가 설치가 된다고 합니다

슬슬 준비하셔야 할겁니다


위에 열거한 사항들은 대부분 인터넷 옵션의 "보안"항목에서 수정할 수 있지만

중요한점은 이 사항들이 기본빵이라는점이겠죠 -0-


이밖에도 알려진 버그로는 "신뢰할수 있는 사이트"에 추가를 했는데도, 보안창이 뜬다든가,

flash에서 _blank로 새창을 열면 자기 자신창에서 열린다든가 하는 버그가 있다고 합니다


내년에 왼도 비스타가 나오면 한번더 보안관련된 사항들이 많이 나올듯 합니다

웹프로그래머로써 프로그램하기 점점 힘들어 지네요 징징

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>이미지 없이 라운딩 박스 표현하기!</title>
<style type="text/css">
.rtop, .rbottom{display:block}
.rtop *, .rbottom *{display: block; height: 1px; overflow: hidden; background:#CCCCCC}
.r1{margin: 0 5px}
.r2{margin: 0 3px}
.r3{margin: 0 2px}
.r4{margin: 0 1px; height: 2px}
.box { background:#CCCCCC; padding:5px 10px; font-size:12px; font-size:12px}
</style>
</head>

<body>

<div id="container">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box">이미지 없이 라운딩 박스 표현하기!</div>
<b class="rbottom"><b class="r4"></b><b class="r3"></b><b class="r2"></b><b class="r1"></b></b>
</div>

</body>
</html>

/*
Creator : shj at xenosi.de

if(false == (birth = checkPersonalNo(주민번호))) 틀렸어요;
년 = birth[0];
월 = birth[1];
일 = birth[2];
if(birth[3]) 외국인;
*/

function checkPersonalNo(personal_no)
{
    personal_no = personal_no.replace(/[^\d]+/g, '');
    pattern = /^[0-9]{6}[1-8][0-9]{6}$/;

    if(!pattern.test(personal_no)) {
        return false;
    }
    var birth = new Array();
    birth[0] = personal_no.substr(0, 2);
    switch(personal_no.charAt(6)) {
    case '1':
    case '2':
        birth[0] = ('19' + birth[0]) * 1;
        birth[3] = false;
        break;
    case '3':
    case '4':
        birth[0] = ('20' + birth[0]) * 1;
        birth[3] = false;
        break;
    case '5':
    case '6':
        birth[0] = ('19' + birth[0]) * 1;
        birth[3] = true;
        break;
    case '7':
    case '8':
        birth[0] = ('20' + birth[0]) * 1;
        birth[3] = true;
        break;
    /*case '9': // 이렇게 늙은 사람은 있어도 안받아요. 위의 정규식에서 안받음.
    case '0':
        birth[0] = ('18' + birth[0]) * 1;
        birth[3] = true;
        break;*/
    }

    birth[1] = personal_no.substr(2, 2) * 1;
    birth[2] = personal_no.substr(4, 2) * 1;

    if(birth[1] < 1 || birth[1] > 12) {
        return false;
    }
    if(birth[2] < 1 || birth[2] > 31) {
        return false;
    }
    var check = 0;
    var mul = 2;

    if(birth[3]) {
        if(((personal_no.charAt(7) * 10 + personal_no.charAt(8)) % 2) != 0) {
            return false;
        }
    }
    for(i = 0; i < 12; i ++) {
        check += personal_no.charAt(i) * mul;
        mul ++;
        if(mul > 9) {
            mul = 2;
        }
    }

    check = 11 - (check % 11);

    if(check > 9) {
        check %= 10;
    }
    if(birth[3]) {
        check += 2;
        if(check > 9) {
            check %= 10;
        }
    }
    if(check != personal_no.charAt(12)) {
        return false;
    }
    return birth;
}


/*
License : Public Domain
*/


2007년 11월 6일 인터넷익스플로러7 자동다운로드 강제업데이트 막는 프로그램..

http://www.microsoft.com/downloads/details.aspx?FamilyId=4516A6F7-5D44-482B-9DBD-869B4A90159C&displaylang=en

강제 업데이트를 막는 도구 내려받는 링크입니다.


1. 받아서 압축 풀고

2. command 창 띄우고(시작 - 실행 - cmd 입력 후 엔터)

3. 1의 압축 푼 폴더로 이동

4. IE70Blocker.cmd /b 입력하면 자동업데이트 되지 않습니다.

5. 추후 ie7로 가고 싶을 때는 IE70Blocker.cmd /u 입력하면 막아놓은 자동업데이트가 풀립니다.

6. 자세한 내용은 압축풀면 나오는 IE70BlockerHelp.htm 를 참고하세염.



IE6, IE7 경고없이 윈도우 창닫기.

지금 보고 있는 웹 페이지에서 창을 닫으려고 합니다.
이 창을 닫으시겠습니까?

요런 메시지 없애줍니다.

이전 IE6은 아래걸로도 가능했는데..

self.opener = self;
self.close();

11월6일 부터인가 XP 정품인증이든 아니든 IE7로 강제 업데이트 한다고 합니다.



onclick="top.window.opener = top;top.window.open('','_parent', '');top.window.close();"



<script language='javascript'>
function win_close(){
        top.window.opener = top;
        top.window.open('','_parent', '');
        top.window.close();
}
</script>

<a href="#None" onclick="Javascript:win_close();">Close</a>
<input type=button value='Close' onclick="Javascript:win_close();">

p.s : 강제 업데이트 막는 프로그램 - http://haco.tistory.com/1119

포토샵에서 한가지 색만 빼고 흑백처리

많은 사람들이 디카로 사진을 찍잖너! 또한 사진을 미니홈피나 블로그 등에 올릴 때 흑백처리를 해서 올리는 경우가 많걸랑!

근데! 간혹 흑백처리를 한 다음 중요한 부분이나 부각하고 싶은 부분을 따로 칼라로 하고 싶은 경우가 있을거야!


나도 처음 포토샵을 사용할 때 잘 몰라서 아주 대담한 방법을 사용했는데, 잘 살펴보니 아주 간단한 방법이 있더라구!

참! 한가지 주의할 부분은 인터넷을 통해 구한 사진 중에서 이 효과가 제대로 적용되지 않는 것도 있어! 왜냐면 여러 사람들 손을 통해 사진의 변형 등으로 사진이 가지고 있는 원래 속성이 잃어버리는 경우가 있걸랑!

그렇다고 전부 안되는 것은 아니구! 그러나 디카로 찍은 사진을 100% 됨.


[일단] 이해해야 할 부분이 있는데, 보통 흑백 사진을 만드는 방법 중에서 [Image] 메뉴의 [mode - Grayscale]과 [Image] 메뉴의 [Adjustments - Desaturate]을 많이 사용하는거 같애!

물론  [Image] 메뉴의 [Adjustments - Hue/Saturation]에서 Saturation의 값을 -100으로 해도 흑백사진을 만들 수 있어! 그러나 mode와 Adjustments의 흑백사진은 분명히 차이가 있어


mode에서 Grayscale은 사진이 가지고 있는 색상정보를 빼고 명암 정보만을 남기는 것을 말하구!

Adjustments 에서 Desaturate는 사진이 가지고 있는 색상정보는 남겨두고, 단지 채도감소를 통해 흑백사진처럼 만드는 거야!


따라서 Desaturate으로 하면 사진은 원래의 색상정보를 가지고 있긴 때문에 특정 부분에 대한 색을 복원할 수 있어!


1) 포토샵을 실행하고, 사진을 불러온 다음 [Image] 메뉴의 [Adjustments - Desaturate] 클릭!

사용자 삽입 이미지

2) 채도감소로 흑백사진으로 되어 있을거야! 그런 툴박스에 히스토리 브러쉬 툴[History Brush Tool]을 클릭

사용자 삽입 이미지

3) 그런 다음에는 원하는 부분을 문질러! 계속 문지르는 부분이 칼라로 변할거야! 축소/확대(Zoom)을 통해 세세하게 해주면 더욱 좋구

사용자 삽입 이미지

<참고> 각종 브러시을 사용하다가 크기가 너무 큰 경우나 작은 경우 브러스의 모양을 조절할 필요가 생겨! 이런 위에 있는 옵션 바에서 크기를 조정해서 사용하는데, 때로는 귀찮지! 그래서 단축키는 사용하면 편해! 키보에서 ( [ ) 과 ( ] )인데! ( [ ) : 작게, ( ] ) : 크게


4) 어때? 쉽지! 그럼 잘해봐바바바바!

사용자 삽입 이미지

http://blog.naver.com/formmail/20003176853




그냥 단순히 원하는 색외에 전부 흑백으로 하는 방법은 간단하게 원하는 색을 마법봉으로 선택을 하던지 올가미툴로 범위를 선택하던지 한후에 ctrl+shift+i 로 선택영역을 반전시킨 후 메뉴 image-abjustments-desaturate(단축키는 ctrl+shift+u) 를 하면 선택한 영역외에 다 흑백으로 바뀜니다. 선택영역을좀더 세밀하게 조절하려면 퀵마스크모드로 선택영역을 잡는것이 좋겠지요.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>이미지 없이 라운딩 보더 표현하기!</title>
<style>
.rtop, .rbottom{display:block;}
.rtop *, .rbottom *{display:block; height:1px; overflow:hidden;}
.r1{margin:0 5px; background:#CCCCCC}
.r2{margin:0 3px; border-left:2px solid #CCCCCC; border-right:2px solid #CCCCCC;}
.r3{margin:0 2px; border-left:1px solid #CCCCCC; border-right:1px solid #CCCCCC;}
.r4{margin:0 1px; height:2px; border-left:1px solid #CCCCCC; border-right:1px solid #CCCCCC;}
.box { margin:0; padding:5px 10px; border-left:#CCCCCC solid 1px; border-right:#CCCCCC solid 1px; font-size:12px}
</style>
</head>

<body>
<div id="container" style="background: #fff">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box">이미지 없이 라운딩 보더 표현하기!</div>
<b class="rbottom"><b class="r4"></b><b class="r3"></b><b class="r2"></b><b class="r1"></b></b></div>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>이미지 없이 라운딩 박스 + 보더 표현하기!</title>
<style>
.rtop, .rbottom{display:block;}
.rtop *, .rbottom *{display:block; height:1px; overflow:hidden;}
.r1{margin:0 5px; background:#CCCCCC}
.r2{margin:0 3px; border-left:2px solid #CCCCCC; border-right:2px solid #CCCCCC; background:#EEEEEE}
.r3{margin:0 2px; border-left:1px solid #CCCCCC; border-right:1px solid #CCCCCC; background:#EEEEEE}
.r4{margin:0 1px; height:2px; border-left:1px solid #CCCCCC; border-right:1px solid #CCCCCC; background:#EEEEEE}
.box{ margin:0; padding:5px 10px; border-left:#CCCCCC solid 1px; border-right:#CCCCCC solid 1px;  background:#EEEEEE; font-size:12px}
</style>
</head>

<body>
<div id="container" style="background: #fff">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box">이미지 없이 라운딩 박스 + 보더 표현하기!</div>
<b class="rbottom"><b class="r4"></b><b class="r3"></b><b class="r2"></b><b class="r1"></b></b></div>
</body>
</html>

//============================================================
// 돈 숫자에 ',' 붙이기
//============================================================
function money_point(str){ //함수형
 str = parseInt(str,10);
 str = str.toString().replace(/[^-0-9]/g,'');
 while(str.match(/^(-?\d+)(\d{3})/)) {
        str = str.replace(/^(-?\d+)(\d{3})/, '$1,$2');
    }
 return str;
}
String.prototype.money_point = function(){ //프로토타입형
str=this;
 str = parseInt(str,10);
 str = str.toString().replace(/[^-0-9]/g,'');
 while(str.match(/^(-?\d+)(\d{3})/)) {
        str = str.replace(/^(-?\d+)(\d{3})/, '$1,$2');
    }
 return str;
}


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


<INPUT style="TEXT-ALIGN: right" onchange="this.value = money_point(this.value);" size=60>

<INPUT style="TEXT-ALIGN: right" onchange="this.value = this.value.toString().money_point();" size=60>

<!--StartFragment-->
<SCRIPT>
//============================================================
// 라디오버튼 타입에서 선택된 값 가져오기
//============================================================
function get_radio_value(radios){
        var len = radios.length;
        if(!len && radios.checked){ return radios.value; }
        for(var i=0,m=radios.length;i<m;i++){
                if(radios[i].checked)
                { return radios[i].value; }
        }
}
</SCRIPT>

<HR id=null>

<P></P>
<FORM name=test>

<P>
<INPUT type=radio value=0 name=pro_period required this_name="기간"> 0년
<INPUT type=radio CHECKED value=1 name=pro_period> 1 년
<INPUT type=radio value=2 name=pro_period> 2 년
<INPUT type=radio value=3 name=pro_period> 3 년
</P>

<INPUT onclick=alert(get_radio_value(test.pro_period)) type=button value=test>
</FORM>





http://www.rainny.pe.kr/33
<html>
<head>
<script language="javascript">
<!--
//체크된 라디오 버튼의 value 값을 가져오는 스크립트
function getRadioValue(obj) {
 var len = obj.length;
 if(!len && obj.checked) {
  return obj.value;
 }

 for( var i =0, m=obj.length; i < m; i++) {
  if( obj[i].checked) {
   return obj[i].value;
  }
 }
}

function alertRadio() {
   alert(getRadioValue(document.aaa.ANS));
}
//-->
</script>
</head>

<body>
<form name="aaa">
          <input type='radio' name='ANS' value='1'>
          <input type='radio' name='ANS' value='2'>
          <input type='radio' name='ANS' value='3'>
</form>
</body>
</html>

//============================================================================
// input text용 updown 버튼
//============================================================================
function input_print_updown(this_s,v_min,v_max,step){
 //==========================
 // 초기화
 //==========================  
 if(this_s.type!='text'){return;}
 this_s.value = parseFloat(this_s.value);
 if(!isFinite(step))step=1;
 if(isFinite(v_max) && this_s.value>=v_max){this_s.value=v_max;}
 if(isFinite(v_min) && this_s.value<=v_min){this_s.value=v_min;}
 //==========================
 // SPAN에 출력후 textbox를 속에 넣는다
 //========================== if(!step) step=1;
 var span = document.createElement('span');
 //span.style.borderStyle='solid';
 if (this_s.nextSibling)
 this_s.parentNode.insertBefore(span,this_s.nextSibling);
 else this_s.parentNode.appendChild(span);
 
 span.appendChild(this_s);
 //==========================
 // 버튼 생성부
 //==========================
 var input_m = document.createElement('input');
 input_m.type='button';
 input_m.value='-';
 input_m.className = this_s.className;
 input_m.style.fontSize = this_s.style.fontSize;
 input_p = input_m.cloneNode(input_m);
 input_p.value='+';
 //==========================
 // 버튼 이벤트 생성부
 //==========================
 to =null;
 var to_clear = function(){ clearTimeout(to); }//타임아웃 클리어
 var m = function(){
  var t = parseFloat(this_s.value);
  if(isFinite(v_min) && t<=v_min){to_clear();return;}
  this_s.value=t-step;
 }
 var m_d = function(){
  m();to = setTimeout(m_d,200);
 }
 var p = function(){
  var t = parseFloat(this_s.value);
  if(isFinite(v_max) && t>=v_max){to_clear();return;}
  this_s.value=t+step;
 }
 var p_d = function(){
  p();to = setTimeout(p_d,200);
 }
 input_m.onmousedown = m_d;
 input_m.onmouseout = to_clear;
 input_m.onmouseup = to_clear;
 input_p.onmousedown = p_d;
 input_p.onmouseout = to_clear;
 input_p.onmouseup = to_clear;
 //==========================
 // 버튼을 붙인다.
 //==========================
 span.appendChild(input_m);
 span.appendChild(input_p);
}



<input name="test" type="text" id="test" value="20" size="5" maxlength="5" />
<script>input_print_updown(document.getElementById('test'),0,50);</script>

<SCRIPT>
//================================================================
// 문자열 바이트 알아내기
//================================================================
function cm_get_byte(str) { //문자열의 byte 길이를 알아냄(한글 2byte로 처리)
    var i,m=str.length, re_count=0,val = 0;;
    for(i=0;i<m;i++) {
        val = escape(str.charAt(i)).length;
        if(val>3) re_count++;
        re_count++;
    } return re_count;
}
function cm_get_byte_length(str,limit_byte){ //지정된 바이트 길이만큼의 length를 반환, 홀수로 짤리면 -1의 길이반환
    var i,m=str.length, re_count=0,val = 0;;
 var len_count = 0;
    for(i=0;re_count<limit_byte ;i++) {
        val = escape(str.charAt(i)).length;
  len_count++;
        if(val>3) re_count++;
        re_count++;
    }
 if(re_count%2 == 1)  return (len_count-1);
 else  return (len_count);
}
//================================================================
// 입력 글자바이트 제한 (필수 : 문자열 바이트 알아내기)
//  textarea에 사용
//================================================================
function input_textarea_limit_byte(ta,limit){
 var layout = document.createElement('table');
// layout.border='2';
 layout.style.padding='0px';
 layout.style.margin='0px';
 if(ta &&ta.style && ta.style.width){
  layout.style.width=ta.style.width
 }
 layout.border="0";
 layout.cellspacing="0";
 layout.cellpadding="0";
 var tr1 = layout.insertRow(-1);
 var td1 = tr1.insertCell(-1);
 td1.style.padding='0px';
 td1.style.textAlign='right';
 var tr2 = layout.insertRow(-1);
 var td2 = tr2.insertCell(-1);
 td2.style.padding='0px';
 td2.style.textAlign='right';
 
 var txt_limit = document.createElement('input');
 txt_limit.type='text';
 txt_limit.style.borderStyle='none';
 txt_limit.style.textAlign='right';
 txt_limit.style.fontSize='10px';
 txt_limit.style.width='40px';
 txt_limit.readOnly=true;
 txt_limit.value=0;
 var span_text1 = document.createElement('span');
 span_text1.innerHTML='Limit : ';
 var span_text2 = document.createElement('span');
 if(limit){
  span_text2.innerHTML=' byte /'+limit+' byte';
 }else{
  span_text2.innerHTML=' byte ';
 }
 var div_title = document.createElement('div');
 div_title.style.fontSize='10px';
 div_title.appendChild(span_text1);
 div_title.appendChild(txt_limit);
 div_title.appendChild(span_text2);
if(ta.tagName.toString().toLowerCase()=='textarea'){ //textarea일 경우만

 if(!ta.rows){ta.rows="3";}
 var btn_0 = document.createElement('input');
 btn_0.type='button';
 btn_0.value='■';
 btn_0.style.fontSize="10px";
 btn_0.style.width="18px";
 btn_0.style.height="18px";
 btn_0.style.borderWidth="1px";
 btn_0.onclick=function(){
  this.blur();
  ta.rows='3';
 }
 var btn_p = btn_0.cloneNode(true);
 btn_p.value='▼';
 btn_p.onclick=function(){
  this.blur();  
  ta.rows=parseInt(ta.rows)+2;
 }
 div_title.appendChild(btn_0);
 div_title.appendChild(btn_p);
 }
 
 ta.parentNode.insertBefore(layout,ta);
 td1.appendChild(div_title);
 td2.appendChild(ta);
 ta.onkeyup=function(){
  txt_limit.value= cm_get_byte(this.value)
  if(limit && txt_limit.value>limit){
   alert!!('Max Byte = '+limit);
   this.value = this.value.toString().substr(0,cm_get_byte_length(this.value,limit));
   txt_limit.value= cm_get_byte(this.value)
  }
 }

 //처음 처리
  txt_limit.value= cm_get_byte(ta.value)
 if(limit && txt_limit.value>limit){
  ta.value = ta.value.toString().substr(0,cm_get_byte_length(ta.value,limit));
 }
  txt_limit.value= cm_get_byte(ta.value)
}
</SCRIPT>

<HR>
 <TEXTAREA id=test_textarea1 name=test_textarea1 rows=10 cols=50>"공대여자는 이쁘다."를 나타내야 쓸 수 있습니다.</TEXTAREA>
<SCRIPT type=text/javascript>
input_textarea_limit_byte(document.getElementById('test_textarea1'),1000);
</SCRIPT>

<HR>
 <INPUT id=test_textarea2 size=50 value="'공대여자는 이쁘다.'를 나타내야 쓸 수 있습니다.'공대여자는 이쁘다.'를 나타내야 쓸 수 있습니다.'공대여자는 이쁘다.'를 나타내야 쓸 수 있습니다." name=test_textarea2>
<SCRIPT type=text/javascript>
input_textarea_limit_byte(document.getElementById('test_textarea2'),50);
</SCRIPT>

<HR>
<TEXTAREA id=test_textarea3 name=test_textarea3 rows=10 cols=50>"공대여자는 이쁘다."를 나타내야 쓸 수 있습니다.</TEXTAREA>
<SCRIPT type=text/javascript>
input_textarea_limit_byte(document.getElementById('test_textarea3'));
</SCRIPT>

* 이글에서 -papmsetup 은 비밀번호(-p)가 apmsetup이라는 말임..
apm 설치 후 콘솔에서.. mysql 사용하기 (window 에서 mysql 사용하기)
mysql 메뉴얼과 교제 참고해서 작성했음
 
시작-> 실행 에서 cmd 입력
해당디렉토리로 이동
cd C\APM_Setup\Server\Mysql4\bin
실행할때
.....bin\mysqld -install                     //mysql 을 windows운영체제의 서비스로 등록해서 실행하고 싶을때(서버관리자 서비스 목록에 포함된다.)
....bin\mysqld --remove                  //이미설치된 서비스를 windows운영체제의 서비스에서 제거할때..
....bin\net start mysql                    //mysql 서비스 시작
....bin\net stop mysql                    //mysql 서비스종료
 
종료하는 다른 방법
....bin\mysqladmin -u root -p shutdown
enter password:
 
리로드하기
....bin\mysqladmin -u root -p reload
enter password:
mysql 클라이언트 실행 및 종료
//실행
mysql -u 사용자명 -p비밀번호 데이타베이스이름
ex)mysql -u root -papmsetup mysql
//종료
mysql>quit;
mysql>exit;
 
mysql 클라이언트 명령어
//db 모두보기
mysql>show databases;
//db 생성
mysql>create database 데이타베이스명;
...binmysqladmin -u root -papmsetup create 데이타베이스명
//db 삭제
mysql> drop_database 데이타베이스명;
...binmysqladmin -u root -papmsetup drop 데이타베이스명
//db 선택하기
mysql>use 데이타베이스명;
//데이블보기
mysql>show tables;
//특정 db 테이블 보기
mysql>show tables from 데이타베이스명;
//테이블 구조보기
mysql>show columns from 테이블명;
또는
mysql>desc 테이블명;
//인덱스 보기
mysql>show index from moja;
//키 보기
mysql>show keys from moja;
//데이터베이스의 설정상태 보기
mysql>show status;
//데이터베이스의 설정환경변수와 값보기
show variables;
//현재 데이터베이스에 연결된 프로세스들 보기
show processlist;
//테이블생성
create table moja (noint,name varchar(16),addr varchar(50),tel varchar(15));
//테이블 삭제
drop table 테이블 이름;
// 테이블 변경
//필드추가
alter table 테이블명 add 추가필드정보;
ex) alter table moja add etc varchar(255) not null default '';
   
한 테이블 열에서 특정 위치에 컬럼을 추가 하기 위해서는 FIRST 혹은 AFTER 컬럼 이름 을 사용한다. 기본적으로는 컬럼을 가장 마지막 부분에 추가 한다. 여러분은 또한 CHANGE나 MODIFY 기능들에서 FIRST 와 AFTER를 사용할 수 있다.
alter table moja add etc2 varchr(255) not null default '' after name;
//필드삭제 삭제되면 포함된 인덱스에서도 삭제된다.
alter table 테이블명 drop 삭제할필드명;
ex) alter table moja drop etc;
//필드수정
(필드 이름바꾸며 타입수정)
ALTER TABLE t1 CHANGE a b INTEGER;
ex)alter table moja etc etc2 varchar(255);
//필드타입수정
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
alter table moja modify etc varchar(16);
//테이블 이름 수정 (테이블이름1->테이블이름2)
alter table 테이블이름1 rename 테이블이름2;
ex)alter table moja rename momo;
//인덱스추가
alter table 테이블이름 add [index_name] [index_type] (index_col_name,...)
alter table 테이블이름 add index i_no (no);
//인덱스삭제
alter table 테이블이름 drop index index이름;
//프라이머리키 삭제
alter table 테이블이름 drop primary key;
//외부키지우기
alter table 테이블명 DROP FOREIGN KEY fk_symbol;
//키 사용불가
alter table 테이블명 DISABLE KEYS;
//키 사용가능
alter table 베이블명  ENABLE KEYS;
 
데이타 처리관련
//입력
insert into moja values('1','홍길동','서울 동작구 상도동 000번지','010-000-0000');
insert into moja (no,name,addr,tel) values ('1','홍길동','서울 동작구 상도동 000번지','010-000-0000');
//조회하기
select * from moja;
select no,name,addr,tel from moja;
select no,name,addr,tel from moja where no=1 and name='홍길동';    // (and,or...)
select no,name,addr,tel from moja where no beetween 1 and 3;  // (no가 1~3사이값가져오기)
select no,name,addr,tel from moja where name !='김경환'  limit 10; // 10개만 뽑아서
select no,name,,addr,tel from moja where name like '%aa%';  //중간에 aa가들어간것 '%aa' aa로 끝나는것,'aa%'aa로 시작하는것
// 팁!  limit i,j 는 i부터 j개 가져오기 (i 는 0부터 시작하는 번호 배열의 인덱스와 같은 방식으로 생각하면 된다.)
select no,name from moja where name !='' order by no desc limit 3;   // no 역순으로 3개만 뽑아보여주기  order by 필드면 asc 는 순차순으로..
//업데이트
upate set 테이블이름 set 업데이트필드1='업데이트값1',업데이트필드2'='업데이트값2'  where 필드명='조건값';
//삭제하기
delete from 테이블이름;
delete from 테이블이름 where no=2;    //no가 2인것만..
//백업
//백업  데이타를 파일로 저장 (밖에서 실행하기..
....binmysqldump -u root -papmsetup db명 > 파일이름.sql
//복구
...binmysql -u root -papmsetup db명 < 파일이름.sql

http://www.liutilities.com/products/wintaskspro/processlibrary/security/

중요 윈도우용 프로세스 목록을 볼 수 있다.
악성에서부터 윈도우 기본 프로세스 등을 확인할 수 있다.

WinTasks Process Library

In the recesses of your computer, 20-30 invisible processes run silently in the background. Some hog system resources, turning your PC into a sluggish computer. Worse yet, other useless processes harbour spyware and Trojans - violating your privacy and giving hackers free reign on your computer. WinTasks Process Library is an invaluable resource for anyone who wants to know the exact purpose of every single process. The categories available online are:

Top Security Risks Listed in the WinTasks Process Library

 Top Security Risks  
1.exe actalert.exe adm4005.exe
a.exe aq3hel~1.exe arupld32.exe
asm.exe asmonitor.exe backweb.exe
bargains.exe basfipm.exe belt.exe
bmupdate.exe bpk.exe cdaengine0500
cds.exe cfmon.exe check.exe
cmesys.exe cmrss.exe conime.exe
crss.exe crsss.exe csrrs.exe
ctfmon32.exe dcomcfg.exe ddcman.exe
desktop.exe dfrgsrv.exe dinst.exe
dlhost.exe dssagent.exe dw.exe
exec.exe exp.exe explore.exe
explorere.exe fc.exe fservice.exe
gmt.exe gui.exe ibm00001.exe
iexplorer.exe install.exe inst.exe
isamini.exe isamonitor.exe isass.exe
istsvc.exe kernel32.exe keygen.exe
lass.exe license_manager.exe lockx.exe
logon.exe lsas.exe lsass32.exe
lssas.exe ma.exe matcli.exe
mediagateway.exe mfc71.dll microsoft.exe
mm.exe mrtstub.exe msbb.exe
msblast.exe msmgs.exe msmsg.exe
mspmspv.exe mssearchnet.exe mtask.exe
mwsoemon.exe nail.exe navapp.exe
netmon.exe netsurf.exe netsvc.exe
nls.exe nsvsvc.exe ntosa32.exe
nvcpl.exe nvsc32.exe optimize.exe
p2p networking.exe p2pnetworking.exe picsvr.exe
pmmnt.exe pmmon.exe pmsngr.exe
pmsnrr.exe poker.exe powerreg
powerreg scheduler.exe pro.exe resetservice.exe
rk.exe rlvknlg.exe rundl32.exe
sacc.exe sais.exe sass.exe
scchost.exe schedulingagent scrss.exe
scvhost.exe senslogn.exe servic.exe
shmgrate.exe sms.exe smsss.exe
soproc.exe spollsv.exe spooler.exe
spool.exe spools.exe spoolsrv.exe
spoolsvc.exe sqlserver.exe sr.exe
sservice.exe ssk.exe start.exe
susp.exe svch0st.exe svchosts.exe
svchot.exe svhost.exe svshost.exe
sychost.exe system32.exe sysupd.exe
taskbar.exe taskmon.exe tbon.exe
tbps.exe tool.exe updater.exe
updmgr.exe vsnpstd2.exe wauclt.exe
wdfmrg.exe wfdmgr.exe whagent.exe
whsurvey.exe win32.exe win.com
winctlad.exe winlogin.exe winmain.exe
winnt.exe winotify.dll winshost.exe
winstall.exe winsys2.exe winsys.exe
winupdate.exe winupdates.exe wsys.exe
wtoolsa.exe wupdt.exe xhrmy.exe
zango.exe

Recommended: Scan Your System for Errors Now
Avoid frequent error mesasges, slow start-ups and poor system performance by running a free system scan today.


Other Process Categories:
- Top System Processes
- Top Security Risks
- Top Applications
- Other Processes ( A to Z )



javascript:alert(decodeURIComponent(document.cookie.toString()).replace(/;/g,';\n'));


javascript:alert(document.cookie.toString()).replace(/;/g,';\n');


인코딩된거 디코딩해주고, 줄바꿈해줌

















바이러스 백신 소프트웨어 공급업체 목록

바이러스 백신 소프트웨어는 바이러스를 감지하고 예방하도록 특별히 설계된 소프트웨어입니다. 컴퓨터에서 바이러스 백신 소프트웨어를 사용하는 것이 좋습니다. 이 문서에는 독립된 바이러스 백신 소프트웨어 공급업체 목록이 포함되어 있습니다.

다양한 Microsoft 제품에서 동작하도록 설계된 추가 바이러스 백신 리소스와 바이러스 백신 제품 목록을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://www.microsoft.com/security/antivirus/default.mspx (http://www.microsoft.com/security/antivirus/default.mspx)

AhnLab, Inc.

V3
ACS
V3와 ACS에 대한 자세한 내용을 보려면 다음 AhnLab, Inc. 웹 사이트를 방문하십시오. http://info.ahnlab.com/english (http://info.ahnlab.com/english)

Aladdin Knowledge Systems

eSafe
eSafe에 대한 자세한 내용을 보려면 다음 Aladdin Knowledge Systems 웹 사이트를 방문하십시오. http://www.ealaddin.com/Microsoft (http://www.ealaddin.com/Microsoft)

ALWIL Software

avast!
avast!에 대한 자세한 내용을 보려면 다음 ALWIL Software 웹 사이트를 방문하십시오. http://www.avast.com (http://www.avast.com)

Authentium, Inc.

Windows용 Command Antivirus(tm)
Windows용 Command Antivirus(tm)에 대한 자세한 내용을 보려면 다음 Authentium, Inc. 웹 사이트를 방문하십시오. http://www.authentium.com (http://www.authentium.com)

Computer Associates International, Inc.

eTrust Antivirus
eTrust Antivirus에 대한 자세한 내용을 보려면 다음 Computer Associates International, Inc. 웹 사이트를 방문하십시오. http://www3.ca.com/Solutions/Product.asp?ID=156 (http://www3.ca.com/Solutions/Product.asp?ID=156)

Doctor Web, Ltd.

Dr.Web
Dr.Web에 대한 자세한 내용을 보려면 다음 Doctor Web, Ltd. 웹 사이트를 방문하십시오. http://www.drweb.com (http://www.drweb.com)

Eset

NOD32
NOD32에 대한 자세한 내용을 보려면 다음 Eset 웹 사이트를 방문하십시오. http://www.nod32.com/home/home.htm (http://www.nod32.com/home/home.htm)

FRISK Software International

F-Prot Antivirus
F-Prot Antivirus에 대한 자세한 내용을 보려면 다음 FRISK Software International 웹 사이트를 방문하십시오. http://www.f-prot.com/products/microsoft (http://www.f-prot.com/products/microsoft)

F-Secure Corp.

F-Secure Anti-Virus
F-Secure Anti-Virus에 대한 자세한 내용을 보려면 다음 F-Secure Corp. 웹 사이트를 방문하십시오. http://www.f-secure.com/ (http://www.f-secure.com/)

GFI Software Ltd

Microsoft Exchange/SMTP용 GFI MailSecurity
Microsoft ISA Server용 GFI DownloadSecurity
Exchange/SMTP용 GFI MailSecurity와 ISA Server용 GFI DownloadSecurity에 대한 자세한 내용을 보려면 다음 GFI Software Ltd 웹 사이트를 방문하십시오. http://www.gfi.com/microsoft (http://www.gfi.com/microsoft)

Grisoft

AVG Anti-Virus
AVG Anti-Virus에 대한 자세한 내용을 보려면 다음 Grisoft 웹 사이트를 방문하십시오. http://www.grisoft.com (http://www.grisoft.com)

HAURI Inc.

ViRobot Expert
ViRobot Expert에 대한 자세한 내용을 보려면 다음 HAURI Inc. 웹 사이트를 방문하십시오. http://www.globalhauri.com/html/products/products.html (http://www.globalhauri.com/html/products/products.html)

Kaspersky Lab

Kaspersky Anti-Virus
Kaspersky Anti-Virus에 대한 자세한 내용을 보려면 다음 Kaspersky Labs 웹 사이트를 방문하십시오. http://www.kaspersky.com (http://www.kaspersky.com)

McAfee, Inc.

자세한 내용을 보려면 다음 McAfee, Inc. 웹 사이트를 방문하십시오. http://www.mcafeeb2b.com (http://www.mcafeeb2b.com)

MicroWorld Technologies, Inc.

eScan
eScan에 대한 자세한 내용을 보려면 다음 MicroWorld Technologies, Inc. 웹 사이트를 방문하십시오. http://www.mwti.net (http://www.mwti.net)

Norman

NVC(Norman Virus Control)
NVC에 대한 자세한 내용을 보려면 다음 Norman 웹 사이트를 방문하십시오. http://www.norman.com/Product/Home_Home_office/Antivirus/en-us (http://www.norman.com/Product/Home_Home_office/Antivirus/en-us)

Panda Software

Panda Titanium Antivirus
Panda Titanium Antivirus에 대한 자세한 내용을 보려면 다음 Panda Software 웹 사이트를 방문하십시오. http://www.pandasoftware.com/microsoft (http://www.pandasoftware.com/microsoft)

Proland Software

Protector Plus
Protector Plus에 대한 자세한 내용을 보려면 다음 Proland Software 웹 사이트를 방문하십시오. http://www.protectorplus.com (http://www.protectorplus.com)

Sophos

Sophos Anti-Virus
Sophos Anti-Virus에 대한 자세한 내용을 보려면 다음 Sophos 웹 사이트를 방문하십시오. http://www.sophos.com/products/software/antivirus (http://www.sophos.com/products/software/antivirus)

Sybari Software, Inc.

Antigen
Antigen에 대한 자세한 내용을 보려면 다음 Sybari Software, Inc. 웹 사이트를 방문하십시오. http://www.sybari.com/products (http://www.sybari.com/products)

Symantec

loadTOCNode(2, 'moreinformation'); 자세한 내용을 보려면 다음 Symantec 웹 사이트를 방문하십시오. http://www.symantec.com/microsoft (http://www.symantec.com/microsoft)

Trend Micro, Inc.

PC-cillin 2003
PC-cillin 2003에 대한 자세한 내용을 보려면 다음 Trend Micro, Inc. 웹 사이트를 방문하십시오. http://www.trendmicro.com/en/partners/alliances/profiles/profiles/microsoft.htm (http://www.trendmicro.com/en/partners/alliances/profiles/profiles/microsoft.htm)
원문 : http://support.microsoft.com/kb/49500/ko?FR=1&PA=1&SD=HSCH

function get_user_info($id){
$sql = "SELECT * FROM members id=BINARY('{$id}')";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
return $row
}
처럼 SQL이 있습니다.
이렇게하면 비밀번호도 나오겠죠.
실수해서
$row = get_user_info($_GET['id'])
print_r($row);
print($row['pass']);
해버렸고, 그 사이트를 오픈했다면...
난감하죠... 난감합니다.

이런 일을 예방하기 위해서

function get_user_info($id){
$sql = "SELECT *,REPEAT('*',LENGTH(pass)) AS pass
 FROM members id=BINARY('{$id}')";
$result = mysql_query($sql);
$row = mysql_fetch_array($result,MYSQL_ASSOC);
return $row
}

라고 해줍니다.
---------=-------------------------
pass는 pass의 길이만큼 * 로 바뀝니다.
즉, 비밀번호는 출력이 안되는거죠.(출력은 되지만, fetch_array  할 때 값이 덥어씌워져 버립니다.)
-------=---------------------------
이건 MYSQL_ASSOC 이걸 꼭 써야하죠. 안 그러면 숫자로 접근할 수 있으니깐.
--------=--------------------------
그냥 간단한 중요 DB정보 보호방법이었습니다.

  • 아파치 ,리눅스 기준
  • openssl & mod_ssl  설치되어있어야함

 

  • 개인키 생성
    • #openssl genrsa -des3 -out ssl.key 1024
      Generating RSA private key, 1024 bit long modules
      [생략]
      Enter PEM pass parase : [패스워드 입력]
      Verifying password - Enter PEM pass parase : [패스워드 입력]
  • CSR(Certificate Signing Request) 생성
    • #openssl req - new -key ssl.key -out ssl.csr
      Country Name (2 Letter code) [GB] : KR
      State or Province Name (full name) [Berkshire] : Seoul
      Locality Name (eg, city)(Newbury) [] : Gangnam
      Organization Name (eg, company)[My Company Ltd] : Test Company
      Organizational Unit Name (eg, secction) [] : Team Cert
      Common Name (eg, your name or your sever's hostname) [] : www.test.com
      Email Address [] : info@test.com

      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A chllenge password[] : [그냥 엔터만 누릅니다.]
      An optional company name[] : [그냥 엔터만 누릅니다.]

object.js로 저장..
function __ws__(id) {
        document.write(id.innerHTML);id.id="";
}




<script language="javascript" src="object.js"></script>

<comment id="__NSID__">

<object .......>
<param....>
<embed...>
</object>

</comment>
<script>__ws__(__NSID__);</script>


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

다른거.. 좀 복잡...;;

//============================================================================
// IE flash 패치용
//============================================================================
function IE_flash_patch(textarea_id){
 //textarea 사용
 var textarea = document.getElementById(textarea_id);
 if(!textarea){
  alert!!('No Textarea');    
 }else{
  document.write(textarea.value);
 }
}
function IE_flash_patch2(ta_id){
 // obejct 의 id사용(object를 똑같게 만듬  IE전용
 var ta = document.getElementById(ta_id);
 if(!document.all){return;}
 if(!ta){
  alert!!('No Target');    
 }else{
  var str = ta.outerHTML;
  //ta.removeNode(true);
  ta.id='';
  ta.style.display='none';//숨기기만 함, 삭제하면 IE가 계속 파일을 찾음
  ta.onload=function(){alert!!('test');}
//  parent.appendChild(ta2);
//  ta.outterHTML = '';
  document.write(str);
 }
}

function js_flash(file,wid,hei){ //가져온 함수
    document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+wid+'" height="'+hei+'">');
    document.write('<param name="movie" value="'+file+'">');
    document.write('<param name="quality" value="high">');
    document.write('<param name="wmode" value="transparent">');
    document.write('<embed src="'+file+'" quality="high" pluginspage="
http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+wid+'" height="'+hei+'"></embed>');
    document.write('</object>');
}




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


또 다른거..

미리보기 : http://www.iezn.com/test/ie/index.php

소스수정없이 헤더부분에 스크립트링크로 IE ActiveX 컨트롤을 활성화 하는 자작소스입니다

IE 패치관련 내용은 이미 많이 올라왔으므로 추가하지 않겠습니다

OBJECT,EMBED,APPLET 에 대하여 DOM으로 처리하므로 개발자의 최종 DOM 노드에는
영향을 주지 않습니다(원시코드와 동일한 형태로 작업가능)


사용방법
===============================
<head>
<script type="text/javascript" src="iezn_embed_patch.0.43.js"></script>
</head>
<body>
<object .......>
<param....>
<embed...>
</object>

요건 원 소스를 건드리지 않고, head 태그 안에 넣어주면 되기 때문에.. 간단하지만..
좀 버벅 거릴때도 있다는....,..


태그 : 이올라스 패치, 플래시 테두리, 플래시 보더, 플래쉬 테두리

/*==========================================================/
 js_input_file_skin
 input file의 위치와 투명도를 조절하여 예쁘게 꾸밀 수 있도록 함

ex>
js_input_file_skin(대상file,가짜textbox,가짜탐색botton);

js_input_file_skin(document.test.test_file,
document.test.test_textbox,
document.test.btn_filesearch);

"공대여자는 이쁘다."를 나타내야만 사용하실 수 있습니다.
/==========================================================*/
function js_input_file_skin(ta_file,ta_textbox,ta_button){
 if(!ta_file||!ta_textbox||!ta_button){return false;}
 var span = document.createElement('span');
 if (ta_file.nextSibling){ ta_file.parentNode.insertBefore(span,ta_file.nextSibling);}
 else{ ta_file.parentNode.appendChild(span);}
 ta_textbox.size = ta_file.size ;
 ta_textbox.value = ta_file.value;
 
 span.appendChild(ta_file);
 span.appendChild(ta_textbox);
 span.appendChild(ta_button);
 
 ta_file.style.verticalAlign='middle'
 ta_textbox.style.verticalAlign='middle'
 ta_button.style.verticalAlign='middle'  
 if(ta_button.width){
  if(ta_button.width>80) ta_button.width = 80;
 }else if(parseInt(ta_button.style.width)){
  if(parseInt(ta_button.style.width)>80) ta_button.style.width = '80px';
 }else{
  ta_button.style.width = '80px';
 }

 if(ta_button.height){
  if(ta_button.height>20)  ta_button.height = 20;
 }else if(parseInt(ta_button.style.height)){
  if(parseInt(ta_button.style.height)>20)  ta_button.style.height = '20px';
 }else{
  ta_button.style.height = '20px';
 }
 if(!ta_textbox.style.width){
  ta_textbox.style.width = '100px';
 }
 span.style.position = 'relative';
 span.style.top='0px';
 span.style.left='0px';
 ta_textbox.style.position = 'relative';
 ta_textbox.style.zIndex = '100';
 
 ta_textbox.size=ta_file.size;
 with(ta_file.style){
  width = parseInt(ta_textbox.style.width)+80+'px';
  position = 'absolute';
  top=left='0px';
  zIndex='99';
  if(document.all){
   filter="Alpha(opacity=0)";
  }else{
   opacity='0';
  }
 }
 ta_textbox.onclick=function(){this.blur();}
 ta_textbox.onkeydown=function(){this.blur();}
 ta_file.onkeydown=function(){this.blur();}
}




Gray Gray Gray Gray
#FFFFFF #FFFFFF #FFFFFF #FFFFFF
#FEFEFE #FEFEFE #FEFEFE #FEFEFE
#F2F2F2 #F2F2F2 #F2F2F2 #F2F2F2
#DDDDDD #DDDDDD #DDDDDD #DDDDDD
#CCCCCC #CCCCCC #CCCCCC #CCCCCC
#BBBBBB #BBBBBB #BBBBBB #BBBBBB
#999999 #999999 #999999 #999999
#666666 #666666 #666666 #666666
#333333 #333333 #333333 #333333
#222222 #222222 #222222 #222222
#000000 #000000 #000000 #000000




사용법

<img src="이미지주소" onload="image_auto_resize(this,180,180);" nmouseover="image_auto_resize(this,180,180);">
지정된 이미지에 자동 리사이즈를 적용합니다.

사용법2

 image_auto_resize_inarea(document.getElementById('div_area'),100,'',true);
document.getElementById('div_area') 안에서의 모든 img에 자동 리사이즈를 적용합니다.

//============================================================================
// 이미지 자동 리사이즈
//============================================================================
function image_auto_resize(this_s,width,height){
 var ta_image = new Image();
 ta_image.src = this_s.src;
  if(!width){this_s.removeAttribute('width');
  this_s.style.width='auto';}
  else if(width < ta_image.width){
   this_s.width = width;
  }else{
   this_s.width = ta_image.width;
  }
  if(!height){this_s.removeAttribute('height');
  this_s.style.height='auto';}
  else if(height < ta_image.height){
   this_s.height = height;
  }else{
   this_s.height = ta_image.height;
  } 
}

function image_auto_resize_inarea(this_s,width,height,view){
//this_s안의 모든 이미지는 자동 리사이즈 된다.
 //alert!!(this_s.childNodes.length);
 if(!view){view=true;}
 if(!this_s){return;}
 if(this_s.nodeType!=1){return;}
 for(var i=0,m=this_s.childNodes.length;i<m;i++){
  var ta = this_s.childNodes[i];
 
  if(ta.nodeName=='IMG'){
   //ta.style.border='1px solid #333333';  
   image_auto_resize(ta,width,height);

   if(view){
    if(!ta.title){ta.title=ta.src;}
    if(!ta.onclick){
     ta.style.cursor='pointer';
     ta.onclick=function(){js_image_view(this,1);}
    }
    if(!ta.onload)
     ta.onload=function(){image_auto_resize(this,width,height);}
    if(!ta.onmouseover)  
     ta.onmouseover=function(){image_auto_resize(this,width,height);}
   }
  }
  if(ta.childNodes.length>0){
   image_auto_resize_inarea(ta,width,height);
  }
 }
 return;

}

지정된 대상안의 모든 링크(<a>)의 타겟을 바꿉니다.

type이 true면 타겟이 있어도 바꿉니다. false면 타겟이 없는 것만 바꿉니다.

ex>
link_auto_target_inarea(document.getElementById('test'),'_blank',false);


---------------=----------------------------------
제약사항
-'공대여자는 이쁘다'를 마른하늘에 날벼락 칠 때 외쳐주세요... 마른하늘 날벼락 안치면 .. 말고..
--------------------------------------------------------------------------------


//=======================================================
// 링크 자동 타겟 설정
//=======================================================
function link_auto_target_inarea(this_s,target,type){
//this_s안의 a를 체크해서 타겟을 바꾼다.
//type가 true이면 target이 있어도 강제로 바꾼다. false면 없을 경우만 바꾼다
 //alert!!(this_s.childNodes.length);
 if(!target){target='_blank';}
 if(!type){type=false;}
 if(!this_s){return;}
 if(this_s.nodeType!=1){return;}
  //alert!!(this_s.nodeName);
 for(var i=0,m=this_s.childNodes.length;i<m;i++){
  var ta = this_s.childNodes[i];
  if(ta.nodeName=='A'){
  if(ta.href){
    if(ta.href.toLowerCase().indexOf('javascript')==0){
    continue;
    }else if((!ta.target || type) ){
    ta.target = target;
    }
  }
  }
  if(ta.childNodes.length>0){
  link_auto_target_inarea(ta,target,type);
  }
 }
 return;
}

/*========================================
 js_han_split.js
 한글 초성,중성,종성 자르기

 사용법
 arr = js_han_split('뷃');
 arr -> Array('ㅂ','ㅞ','ㄼ');

 원리
 한글의 유니코드는
 초성 기준으로 588개로 나눌 수 있다.(가~깋:588개, 하~힣도 갯수가 같다)
 초성 19개, 중성은 21개, 종성은 28개로 나눠지는데, 이것이 일정하게 나뉜다.
 그 규칙을 바탕으로 초,중,종성의 차이를 계산해서 초,중,종성을 알아낸다.


 mins01,mins,공대여자
 MSN,NateOn : mins01(at)lycos.co.kr
 2007-03-06
 "공대여자는 예쁘다."를 나타내야만 쓸 수 있습니다.
//========================================*/
function js_han_split(char){ //한글을 자름
 var char_st = 44032 ;//'가'의 유니코드 넘버(10진수)
 var char_ed = 55203 ;//'힝'의 유니코드 넘버(10진수)
 //초성구분 : 588단위로 잘림
 //가까나다따라마바빠사싸아자짜차카타파하 :초성 19개
 //가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기 : 중성 21개
 //가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛 : 종성 28개
 var arr_1st=new Array('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');//초성 19개
 var arr_2nd=new Array('ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ','ㅣ');//중성 21개
 var arr_3th=new Array('','ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');//종성 28개

 //======================================================
 if(char.length>2){char=char.charAt(0);}
 var uninum = escape(char);
 if(uninum.length<4) return false;//한글이 아니다
 uninum = parseInt(uninum.replace(/\%u/,''),16);
 if(uninum < char_st || uninum > char_ed) return false;//한글이 아니다
 var uninum2 = uninum-char_st;
 var arr_1st_v = Math.floor(uninum2/588);
 uninum2 = uninum2%588;
 var arr_2nd_v = (Math.floor(uninum2/28));
 uninum2 = (uninum2%28);
 var arr_3th_v = uninum2;
// alert!!(arr_1st_v); alert!!(arr_2nd_v); alert!!(arr_3th_v);
 var return_arr=new Array(arr_1st[arr_1st_v],arr_2nd[arr_2nd_v],arr_3th[arr_3th_v]);
// alert!!(return_arr);
 return return_arr;
}

<?
/*========================================
han_split.php (js_han_split.js의 php버전);
한글 초성,중성,종성 자르기

사용법
arr = han_split('뷃');
arr -> array('ㅂ','ㅞ','ㄼ');

원리
한글의 유니코드는
초성 기준으로 588개로 나눌 수 있다.(가~깋:588개, 하~힣도 갯수가 같다)
초성 19개, 중성은 21개, 종성은 28개로 나눠지는데, 이것이 일정하게 나뉜다.
그 규칙을 바탕으로 초,중,종성의 차이를 계산해서 초,중,종성을 알아낸다.

한글이 아닌 것은 무시합니다.

mins01,mins,공대여자
MSN,NateOn : mins01(at)lycos.co.kr
2007-03-06
"공대여자는 예쁘다."를 나타내야만 쓸 수 있습니다.
//========================================*/
function han_split_string($string='',$enc_type='EUC-KR'
){
//문자열을 처리할 때
   
$re_arr
= array();
    for(
$i=0,$m=mb_strlen($string,$enc_type);$i<$m;$i
++){
       
$char = mb_substr($string,$i,1,$enc_type
);
        if(
$char=='&'
){
           
$char=''
;
            while(
$char2!=';' && $i<$m
){
               
$char2 = mb_substr($string,$i++,1,$enc_type
);
               
$char .= $char2
;
            }
           
$i
--;
        }
       
$re_arr[] = han_split($char,$enc_type
);
    }
    return
$re_arr
;
}
function
han_split($char='',$enc_type='EUC-KR'
){
//글자 하나만 처리할 때
   
$char_st = 44032 ;
//'가'의 유니코드 넘버(10진수)
   
$char_ed = 55203 ;
//'힝'의 유니코드 넘버(10진수)
    //초성구분 : 588단위로 잘림
    //가까나다따라마바빠사싸아자짜차카타파하 :초성 19개
    //가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기 : 중성 21개
    //가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛 : 종성 28개
   
$arr_1st=array('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');
//초성 19개
   
$arr_2nd=array('ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ','ㅣ');
//중성 21개
   
$arr_3th=array('','ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');
//종성 28개
   
   
if(strpos($char,'&#')===false){
//HTML엔티티가 아닐 경우

       
$char = mb_convert_encoding($char, "UTF-16", $enc_type
);
       
$char = mb_substr($char,0,1,"UTF-16"
);
       
$char_hex = ''
;
        for(
$i=0,$m=strlen($char);$i<$m;$i
++){
           
$char_hex .= sprintf('%02s',base_convert(ord($char{$i}),10,16
));
        }
       
//print("문자열 길이 : $m<br/>");
        //print("16진수문자열 : $char_hex<br/>");
       
$char_int=base_convert($char_hex,16,10
);        
    }else{
       
$char_int = preg_replace('/[^0-9]/','',$char
);
    }

//    print "$char<br>";
//    print "$char_hex<br>";
//    print "$char_int";
//print("$char_int < $char_st || $char_int > $char_ed");
   
if($char_int < $char_st || $char_int > $char_ed) return false;
//한글이 아니다
   
$uninum2 = $char_int-$char_st
;
   
$arr_1st_v = floor($uninum2/588
);
   
$uninum2 = $uninum2%588
;
   
$arr_2nd_v = floor($uninum2/28
);
   
$uninum2 = ($uninum2%28
);
   
$arr_3th_v = $uninum2
;
   
$return_arr=array($arr_1st[$arr_1st_v],$arr_2nd[$arr_2nd_v],$arr_3th[$arr_3th_v
]);
    return
$return_arr
;
}
?>

<A id=test1 onmouseover="js_layer_tooltip_show(event,'실험용실험용실험용실험용실험용실험용실험용실험용실험용실험용실험용\n험용실험용\n험용실험용\n험용실험용\n험용실험용\n험용실험용\n험용실험용\n',400)" title="실헙입니다1. 실험이죠">tvzxcest</A>
<A id=test1 onmouseover="js_layer_tooltip_show(event,'실험용2',200)" title="실헙입니다1. 실험이죠">tvzxcest</A>


/*========================================
 js_lauer_tooltip.js
 레이어 툴팁

 ex>
 js_layer_tooltip_show([이벤트:event],[내용],[너비],[높이]) //높이는 안 사용하길 추천.
 <a id="test1" onmouseover="js_layer_tooltip_show(event,'내용',200[,200])" >test</a>

 mins01,mins,공대여자
 MSN,NateOn : mins01(at)lycos.co.kr
 2007-03-08
 "공대여자는 예쁘다."를 나타내야만 쓸 수 있습니다.
//========================================*/
var js_layer_tooltip_show_timeout_idx=null;
var js_layer_tooltip_root=null;
var js_layer_tooltip_show = function(evt,msg,width,height){
 if(!js_layer_tooltip_root) {
  js_layer_tooltip_root = js_layer_tooltip(msg,width,height);
  document.body.appendChild(js_layer_tooltip_root);
 }
 if(js_layer_tooltip_root.innerHTML!=msg){
  js_layer_tooltip_root.innerHTML = msg.replace(/\n/g,'<br />');
 }
  js_layer_tooltip_root.style.display='block';
  width?width:200;
  if(width)js_layer_tooltip_root.style.width=width+'px';
  if(height)js_layer_tooltip_root.style.height=height+'px';
  js_layer_tooltip_move(evt);
 
 this_s = evt.toElement?evt.toElement:evt.currentTarget;
 if(!this_s.onmouseout){
  this_s.onmouseout=function(){js_layer_tooltip_hide()}
 }
 if(!this_s.onmousemove){
  this_s.onmousemove=js_layer_tooltip_move;
 }
}
var js_layer_tooltip_hide = function(){
 js_layer_tooltip_root.style.display='none';
}
var js_layer_tooltip_move = function(evt){
 evt=evt||event;
 try{
 js_layer_tooltip_root.style.left=evt.clientX+10+'px';
 js_layer_tooltip_root.style.top=evt.clientY+10+'px';
 }catch(e){}
}
var js_layer_tooltip = function(){
 //========================================== 초기 설정
 var id = 'layer_tooltip';
 //========================================== 중복을 확인
 if(document.getElementById(id)){
  document.getElementById(id).a.focus();
  return false;}
 //========================================== 레이어를 만든다.
 var div_ori = document.createElement('div');
 var root = document.createElement('div');
 root.style.cssText='text-align:left;padding:5px;position:absolute;left:10px;top:10px;font-size:12px;line-height:100%;border:1px solid #A6CBFC;';
 root.style.backgroundColor='#DAE9FC';
 return root;
}

window.document.location


속성 예제 URL
http://oxtag.com:80/zboard/zboard.php?id=qna&page=1&sn1=&divpage=1&sn=on&ss=on&sc=on&select_arrange=headnum&desc=asc&no=2475#top
hostname 접속한 서버의 호스트네임(서브도메인등이 포함된 도메인 이름 or IP)
ex> mins01.zerock.net
href 접속한 URL 주소(완변한 모양의 주소)
ex> http://oxtag.com:80/zboard/zboard.php?id=qna&page=1&sn1=&divpage=1&sn=on&ss=on&sc=on&select_arrange=headnum&desc=asc&no=2475#top
host

접속한 서버의 호스트네임과 포트(보통 도메인, 포트가 기본이 80번이지만 지정되지 않으므로 안보임)
ex>oxtag.com:80

hash href에 표시된 #~~~~ 부분
ex> #top
port 서버에 접속 할 때 사용한 포트(기본값은 80 이지만 나타나지 않으므로 빈값)
ex>80
pathname 현재페이지의 위치와 파일이름
ex>/for2007/index.php
search href에서 표시된 ?~~~=~~~&~~~~=~~~~ (쿼리스트링) 부분
ex>?mm=2&sm=1
protocol 접속에 사용된 프로토콜 (ex > http: , https:)
ex>http:

메소드  
assign 페이지 이동(보통 같은 페이지 내의 #~~~~ 의 위치를 이동하기 위해서 사용됨
document.location!.assign('#manual')
reload 현재 페이지 다시 읽기(href 주소와 동일한 페이지를 다시 읽는다. 히스토리가 변경되지 않는다.)
document.location!.reload()
replace

페이지 이동(window.open()과는 다르게 히스토리가 변경되지 않는다. 타겟을 지정할 수 없다.)
document.location!.replace('http://oxtag.com')

홈 페이지 작성시 잊어서는 안 되는 것이, HTML의 태그인 Meta Tag의 사용입니다.

실제의 스크린 화면상에는 나오지는 않으나, Meta Tag에 의한 여러분 사이트의 내용 설명 및 키워드인 META Tag는 HTML문서의 header에 위치하여 Alta Vista 나 Lycos와 같은 일본, 국내,외 로보트형 검색엔진이 그 문서를 효율적으로 index 하도록 해줍니다. 효율적으로 인덱스 처리된 문서는 그 정보를 원하는 사람들이 쉽게 그 문서에 접근할 수가 있습니다.

■ 로보트 검색엔진에 잘 걸리는 Meta Tag 작성법

① 검색 엔진에 의해 검색되는 단어(키워드:핵심어)를 지정합니다.
<META NAME="keywords" CONTENT="제로보드, 제로보드팁"> 키워드는 「제로보드, 제로보드팁」입니다.

② 검색 결과에 표시되는 문자를 지정합니다.
<META NAME="description" CONTENT="제로보드의 이해와 팁을 공유하는 사이트입니다."> 검색 결과의 표시시에 「제로보드의 이해와 팁을 공유하는 사이트입니다.」라고 표시합니다.

③ 로보트 검색에 의한 검색 방법을 제한합니다.
<META NAME="robots" CONTENT="ALL">
현재의 페이지와 링크되고 있는 페이지의 검색을 허가합니다.

<META NAME="robots" CONTENT="NONE">
로보트 검색을 허가하지 않는다.

■ 페이지에 관한 정보를 명시합니다.

① 페이지를 작성한 제작자명을 명시합니다.
<META NAME="author" CONTENT="구솔">
페이지를 작성한 제작자명은 「구솔」입니다.

② 페이지에 관한 문의처 메일 주소를 명시합니다.
<META NAME="reply-to" CONTENT="goosol@goosol.info">
연락처 메일 주소는 「goosol@goosol.info」입니다.

③ 기술된 언어를 명시합니다.
<META NAME="content-language" CONTENT="ja">
여기서 기술된 언어는 일본어입니다. 한글은 꼭 " kr " 입니다.
  - 영어 "en"
  - 한글 "kr"

④ 제작 년월일을 명시합니다.
<META NAME="build" CONTENT="2002. 1.1">
제작 년월일이 「2002년 1월 1일」입니다.

⑤ 문자 코드의 종류의 설정(문자가 각 언어권으로 인코딩하는 대책입니다.)
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS">
이 페이지의 문자 코드는 일본어 쉬프트 JIS입니다.

[참고]
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=문자코드">문자코드에 따라 여러가지 언어로 변합니다.
  - JIS 코드→ISO-2022-JP  
  - EUC→EUC-JP
  - 한국어 : kr
  - 중국어 간체 : gb2312
  - 중국어 변체 : big5
  - 사용자 정의 : x-user-defined

■ 로보트 검색엔진에 잘 걸리는 Meta Tag는 다음과 같이 표시합니다.[작성 예]

<HTML>
<HEAD>
<TITLE>TRADE GOPHER</TITLE>
<META NAME="keywords" CONTENT="제로보드, 제로보드팁">
<META NAME="description" CONTENT="제로보드의 이해와 팁을 공유하는 사이트입니다.">
<META NAME="robots" CONTENT="ALL">
<META NAME="author" CONTENT="구솔">
<META NAME="reply-to" CONTENT="goosol@goosol.info">
<META NAME="content-language" CONTENT="kr">
<META NAME="build" CONTENT="2002. 1.1">
<META HTTP-EQUIV="content-type" content="text/html; charset=euc-kr">
</HEAD>
<BODY>
홈페이지 내용
</BODY>
</HTML>