2010년 5월 15일 토요일

윈도우 rundll32를 이용한 자동화

최대 절전 모드

%windir%\System32\rundll32.exe powrprof.dll SetSuspendState Hibernate

 
대기모드(절전 모드)

%windir%\System32\rundll32.exe powrprof.dll SetSuspendState

 
로그오프

%windir%\System32\Shutdown.exe –l –t 0

-l (영문자 L) 스위치 : 로그오프 기능
–t (영문자 T) 스위치 : 명령이 실행시까지 대기시간 (0 으로 설정시 바로 수행)

 
재시작

%windir%\System32\Shutdown.exe –r –t 0

-r (영문자 R) 스위치 : 윈도 재시작 기능
–t (영문자 T) 스위치 : 명령이 실행시까지 대기시간 (0 으로 설정시 바로 수행)

 
전원 끄기

%windir%\System32\Shutdown.exe –s –t 5

-s (영문자 S) 스위치 : PC 전원 종료 기능
–t (영문자 T) 스위치 : 명령이 실행시까지 대기시간 (예제에서는 5초 후 PC 종료)

 
사용자 전환

%windir%\System32\rundll32.exe user32.dll LockWorkStation


추가팁!

powercfg -devicequery wake_armed를 사용하면 어떠한 장치에 의해 최대,하이브리드,절전 모드가 종료되었는지 확인 할 수 있습니다.

 

- 출처  MS ANSWES

2010년 5월 13일 목요일

CSS 예제 모음

여백관련

4개의 여백이 틀릴경우

{padding : 속성값(top)  속성값(right)  속성값(bottom)  속성값(left)}

 

2의 값으로 지정할 수 있는 경우

{padding : 10px   20px }

상하 : 10px, 좌우 : 20px

 

1의 값으로 지정할 수 있는 경우

{margin :10px}

 

1개의 값을 안 적을 경우

{padding : 10px 20px 30px }

left를 30px으로 적용인식한다.

그러므로

padding:3px 4px 3px  는  3px 4px3px 4px  와 같고

padding:3px 4px 3px; 와 padding:3px 4px  는 같은 속성값을 가집니다.

div태그는 개체 인식용 name속성을 가지고 있지 않습니다. div태그는 id속성을 사용하여 개체에 접근할 수 있습니다.

 

 

2010년 5월 11일 화요일

폰트태그로

http://blog.naver.com/tear230?Redirect=Log&logNo=100001949273

SPAN에 스크롤(scroll)달기 - textarea처럼 보이게 출력

<span style="border:1px solid #dadada;overflow-x:hidden;overflow-x:auto;overflow-y:scroll;width: 270px; height:60px;">
</span>

 

MySQL의 기초 - 데이터 타입

MySQL은 크게 "숫자타입, 날짜와 시간타입, 스트링타입" 세종류의 데이터 타입을 제공합니다.

1. 숫자 데이터 타입
1) INT
일반적인 정수로 부호를 가질 수 있음. 부호가 있을 경우(signed) -2147483648 ~ 2147483647 까지를 표현합니다. 부호가 없을 경우(unsigned) 0 ~ 4294967295까지를 표현할 수 있습니다. 그리고 너비는 11자리까지 지정할 수 있습니다.

2) TINYINT
아주 작은 정수로 부호를 가질 수 있음. 부호가 있을 경우 -128~127 까지를 표현합니다. 부호가 없을 경우 0~255까지를 표현할 수 있습니다. 너비는 4자리까지 지정할 수 있습니다.

3) SMALLINT
비교적 작은 정수(small integer)를 위한 것으로 부호를 가질 수 있습니다.
부호가 있을 경우 -32768~32767까지를 표현합니다.
부호가 없을 경우 0~65535 까지를 표현하며, 너비는 6자리까지 지정할 수 있습니다.

4) MEDIUMINT
중간정도의 정수를 위한 것으로 부호를 가질 수 있습니다.
부호가 있을 경우 -8388608~8388607 까지를 표현합니다.
부호가 없을 경우 0~16777215 까지를 표현하며, 너비는 6자리까지 지정할 수 있습니다.

5) BIGINT
큰정수를 위한 것으로 부호를 가질 수 있습니다.
부호가 있을 경우 -9223372036854775808~9223372036854775807 까지를 표현합니다. 헐~;;
부호가 없을 경우 0~18446744073709551615 까지를 표현하며, 너비는 20자리까지 지정할 수 있습니다.

* 그 외 FLOAT, DOUBLE, DECIMAL 이 있습니다.




2. 날짜와 시간타입

1) DATE
YYYY-MM-DD 형태의 날짜로 1000-01-01 부터 9999-12-31일까지 지정할 수 있습니다.

2) DATETIME
YYYY-MM-DD HH:MM:SS 형태의 날짜와 시간 타입입니다. 1000-01-01 00:00:00부터 9999-12-31 23:59:59 까지 지정할 수 있습니다.

3) TIMESTAMP
1970년 1월 1일 자정부터 2037년까지의 시각을 표현합니다.
YYYYMMDDHHMMSS 형식이며 DATETIME에서 하이픈이 없다고 보시면 됩니다.

4) YEAR(M)
두자리나 네자리로 연도를 저장합니다. 기본은 네자리입니다.
너비가 4로 지정되면 1901년부터 2155년까지를 표현할 수 있습니다.
너비가 2로 지정되면 - YEAR(2) : 1970년에서 2069년을 70~69로 표기합니다.




3. 스트링타입

1) CHAR(M)
고정길이 스트링으로 1~255개의 문자를 저장할 수 있습니다.

2) VARCHAR(M)
1~255개의 문자들을 저장할 수 있는 가변 길이 스트링입니다.
VARCHAR(20) 처럼 길이를 지정할 수 있으며, VARCHAR필드를 생성할 때는 반드시 길이를 지정해줘야 합니다.

3) BLOB
최대 65,535개의 문자저장이 가능하며 너비지정은 안합니다.
Binary Large Objects 의 약자로 이미지나 파일처럼 대용량 바이너리 데이터를 저장할 때 사용됩니다.
저장된 데이터를 정렬하거나 비교할 때 대,소문자를 구별합니다.

4) TEXT
최대 65,535개의 문자저장이 가능하며 너비지정은 안합니다.
BLOB와 달리 대소문자를 구별하지 않습니다.

5) TINYBLOB 또는 TINYTEXT / MEDIUMBLOB 또는 MEDIUMTEXT / LONGBLOB 또는 LONGTEXT
TINY - 최대 255 개의 문자를 저장할 수 있습니다.
MEDIUM - 최대 16,777,215 개의 문자를 저장할 수 있습니다.
LONG - 최대 4,294,967,295 개의 문자를 저장할 수 있습니다.
모두 너비를 지정하지 않습니다.

6) ENUM
값이 될 수 있는 항목들을 열거한 리스트입니다.
ENUM('A','B','C') 라고 정의하면 이들 세가지 값만 가질수 있습니다. (NULL도 포함)
최대 65,535 개의 값을 가질 수 있으며, 항목을 저장하기 위해 인덱스를 사용합니다.

2010년 5월 10일 월요일

해당년도의 주번호로 해당주의 월요일과 일요일 날짜 구하기

주수를 넣어서 해당 주의 리포트를 뽑을려고 하는데 함수가 없어서 직접 만들었다.

 

해당 년도의   주 번호를 입력 하면 그 기간을 구해 주는 함수 이다.


function dates_weekofyear($year,$nweek)
{
 
    $mdate = mktime(0,0,0,1,10,$year);

    $today = mktime(0,0,0,date("m"),date("d"),date("Y"));

    $firstday = mktime(0,0,0,1,1,$year);
    $firstnweek= date("W",$firstday);
    $fweekday = date("w",$firstday);


    if($firstnweek == 52 ){
        $day_firstweek = $firstday+60*60*24*(7-$fweekday+1);
    }
    else{
        $day_firstweek = $firstday-60*60*24*($fweekday-1);
    }

    $firstdate = date("Y-m-d",$day_firstweek+60*60*24*7*$nweek);
    $lastdate =  date("Y-m-d",$day_firstweek+60*60*24*7*$nweek + 60*60*24*6);
 
   return array($firstdate,$lastdate)";
}

// 사용법

$datearr = weekofyear("2010",20);

 

echo $datearr[0]."~".$datearr[1];

2010년 5월 9일 일요일

동적테이블 다루기 insertRow deleteRow

 

 

 

 

인터넷에 있는 소스가 동작을 안해서 TBODY를 빼고 document.getElementByID("tbl") 만을 이용해서

수정 하였습니다.

1. 각 라인별로 삭제 버튼으로 지우기

2. 체크 박스 선택해서 일괄로 지우기

3. 줄 추가 하기

 

 

<html>
<head>
<title>insertRow/deleteRow</title>
<meta http-equiv="Content-Type" content="text/html;charset=euc-kr">
<script language='javascript'>
<!--

function removeRow(r){
 var i=r.parentNode.parentNode.rowIndex;
 document.getElementById('tbl').deleteRow(i);
}

// delete Row
function delRow() {
 var objTable = document.getElementById("tbl");
 var lastRow = objTable.rows.length-1;

 var chkCnt = checkCount();
 if(chkCnt > 0) {
  if( confirm("Delete Selected Item?") ){
   for(var i = lastRow; i > 0; i--) {
    if(document.getElementsByTagName("TR")[i].cells[0].firstChild.checked) objTable.deleteRow(i);
  }
  }
 } else {
        alert("Please Select Delete Row.");
        return;
    }
}

function checkCount() {
 var objTable = document.getElementById("tbl");
 var lastRow = objTable.rows.length-1;
 var rtnCnt = 0;

 for(var i = lastRow; i > 0; i--)
 {
   if(document.getElementsByTagName("TR")[i].cells[0].firstChild.checked) rtnCnt++;
 }
 return rtnCnt;
}

function allCheck() {
 var objTable = document.getElementById("tbl");
 var lastRow = objTable.rows.length - 1;
 var rtnCnt = 0;
 for(var i = lastRow; i > 0; i--) {
  document.getElementsByTagName("TR")[i].cells[0].firstChild.checked = true;
 }
}

function checkExcute(obj) {
    if(obj.checked)
   allCheck();
    else
   allUnCheck();
}

function allUnCheck() {
 var objTable = document.getElementById("tbl");
 var lastRow = objTable.rows.length-1;
 var rtnCnt = 0;
 for(var i = lastRow; i > 0; i--) {
  document.getElementsByTagName("TR")[i].cells[0].firstChild.checked = false;
 }
}

function fInsertRow() {
  
   objTable = document.getElementById("tbl");
   var row = objTable.rows.length;
   objRow = document.createElement('TR');
   objCel1 = document.createElement('TD');
   objRow.appendChild(objCel1);
   objCel1.innerHTML="<input type='checkbox' name='chk' >";
   objCel1 = document.createElement('TD');
   objRow.appendChild(objCel1);
   objCel1.innerHTML="<input type='text' name='title' value='' size='20' maxlength='20'>";
   objCel1 = document.createElement('TD');
   objRow.appendChild(objCel1);
   objCel1.innerHTML="<input type='text' name='contents' value='' size='40' maxlength='40'>"; // i를 붙여서 독립된 row를 생성
   objCel1 = document.createElement('TD');
   objRow.appendChild(objCel1);
   objCel1.innerHTML="<input type='button' name=cmdDelete value='삭제' onClick='removeRow(this);'>";
   document.getElementById('tbl').children(0).appendChild(objRow); // 생성된 row를 적용한다.
 }

 //-->
</script>


</head>

<table id="tbl" border="1" cellspacing="0" cellpadding="0">
 <tr>
   <td><input type="checkbox" name="all_chk" onClick="checkExcute(this)"></td>
    <td>title</td>
    <td>contents</td>
    <td>삭제</td>
   </tr>
</table>

<a href='#' onClick="fInsertRow()">추가</a>
<a href='#' onClick="delRow()">삭제</a>

 

 

에버노트에서 원노트로 데이터 옮겨오기

에버노트를 무료로 이용하려면 한달에 업로드 할 수 있는 용량이 60M 밖에 되지 않습니다. 원노트도 에버노트만큼 기능이 개선되었고 무엇보다도 무료로 사용 할 수 있고 용량의 제약이 없어서 최근에는 업무 및 정보 수집 용도로 에버노트를 이용중입니다...