2007년 7월 24일 화요일

2007년 7월 6일 금요일

[visual basic] Excel 객체를 사용한 ExportToExcel Module

Public Function ExportToExcel(rs As Recordset, Optional FileName As String = "resultset.xls") As Boolean
    Dim ExcelSheet As Object
    Dim X As Excel.Worksheet
    'Dim cl As rdoColumn
    Dim col As Integer, row As Integer: col = 1: row = 1
    Dim I As Integer

    On Error GoTo Export_Err
    Screen.MousePointer = vbHourglass
    Set ExcelSheet = CreateObject("Excel.Sheet")
    Set X = ExcelSheet.Application.ActiveSheet
       
    X.cells(1, 1).Value = "just test 한글문제 해결되나?" ' cell의 내용 설정
    X.Name = "배송확인"  ' sheet의 이름 설정
   
    X.SaveAs App.Path & "\" & FileName
    X.Application.Quit
   
    Set ExcelSheet = Nothing
    Set X = Nothing
    Screen.MousePointer = vbDefault
    ExportToExcel = True
    Exit Function


Export_Err:


    ' code to display error or handle it
    Screen.MousePointer = vbDefault
    ExportToExcel = False
    Exit Function


End Function


[apache] virtual directory설정 샘플

Alias /examplesite "/Users/lgrillo/Desktop/examplesite_folder/examplesite"
<Directory "/Users/lgrillo/Desktop/examplesite_folder/examplesite">
       Options Indexes FollowSymLinks MultiViews ExecCGI
       AllowOverride All
       Order allow,deny
       Allow from all
</Directory>

무지 쉽구만...역시 아파치다..

2007년 7월 4일 수요일

jdbc 설정

  • JDBC 드라이버 다운로드

    JDBC 드라이버는 자바에서 데이터베이스를 연동하기 위한 드라이버입니다.
    MySQL 연동을 위해 MySQL에서 제공하는 JDBC 드라이버를 다운로드해야 합니다.

    MySQL JDBC 드라이버는 Connector/J라는 이름으로 제공됩니다.
    처음부터 MySQL에서 JDBC 드라이버를 제공한 것은 아닙니다. 예전에는 몇몇 공개된 JDBC 드라이버가 있었는데, 그 중 가장 유명했던 것이 Mark Matthews가 만든 MM.MySQL JDBC 드라이버였습니다. 현재의 Connector/J는 이 MM.MySQL 드라이버를 MySQL AB사에서 공식적으로 받아들여 보완한 것입니다. 따라서 Mark Matthews의 MM.MySQL은 더이상 업그레이드되지 않고 MySQL AB사에서 Connector/J라는 이름으로 업그레이드하고 있습니다.
    이 글을 쓰고 있는 현재 기준으로 Connector/J는 3.1이 개발중입니다. 3.0이 안정 버전이고, 2.0이 구버전으로 되어 있습니다.

    1. 아래 MySQL Connector/J 다운로드 페이지에 접속합니다.

      MySQL Connector/J 다운로드 페이지 바로 가기

    2. Downloads, Licensing, and Support라는 제목 아래에 보면 Connector/J의 몇 가지 버전이 표시되어 있습니다.
      이 중에서 MySQL Connector/J 3.0 를 클릭합니다.

    3. Source and Binaries (zip)의 Download를 클릭하여 파일을 다운로드합니다.


  • JDBC 드라이버 설정

    1. 압축 파일을 적당한 위치에 풉니다.(예를 들어 c:\jdbc)

    2. 중요
      jdbc의 하위 폴더인 mysql-connector-java-3.0.6-stable에서 mysql-connector-java-3.0.6-stable-bin.jar 파일을,
      자바가 설치된 디렉토리(예를 들어, c:\j2sdk1.4.1_02)의 jre\lib\ext 디렉토리에 복사합니다.

      원래는, 이렇게 직접 복사하지 않고 시스템 환경 변수로 CLASSPATH를 만들어 mysql-connector-java-3.0.6-stable-bin.jar파일의 위치를 지정해 주어야 하는데, 번거롭기도 하고 Windows에서 잘 작동하지 않는 것 같아 직접 복사하는 방법을 사용한 것입니다.
      그렇다고 이것이 편법은 아닙니다. Connector/J 설치 매뉴얼에 보면,
      Put mysql-connector-java-3.0.6-stable-bin.jar in your classpath, either by adding the FULL path to it to your CLASSPATH enviornment variable, or putting it in $JAVA_HOME/jre/lib/ext.
      이렇게 직접 복사해 넣어도 된다고 명시되어 있습니다.

      ※ 자료실에 mysql-connector-java-3.0.6-stable-bin.jar 파일을 등록해두었습니다. 이 파일 하나만 있어도 됩니다~



  • 톰캣 재 실행

    1. 톰캣을 재 실행합니다.
      톰캣이 실행되면서 위에서 복사한 Connector/J 파일을 포함하여 실행하게 됩니다.

    2. 아파치와 MySQL을 실행하지 않았다면, 이것도 실행해야 합니다.

      앞으로의 실습은, 아파치-MySQL-톰캣을 모두 실행해 놓고 실습해야 합니다.
      APM_Setup을 실행하고 톰캣을 실행하면 되겠죠.
      이렇게 하면 JSP 뿐만 아니라 PHP도 모두 구동할 수 있는 환경이 됩니다.

[unix] VI 메뉴얼 - 내가 만들었음 내가 주로쓰느것들만 모음

esc: 명령어 입력
 
vi로 게시물 열기 및 저장
 vi file : vi를 시작하여 지정한 파일 편집
 vi -R file : 읽기 전용 편집기로서 vi를 시작하여 지정한 파일 편집
 view file : 읽기 전용 편집기로서 vi를 시작하여 지정한 파일 편집
 wq : 데이터를 저장하고 종료
 :q! : 데이터를 저장하지 않고 종료 
 
입력키의 종류
 a : 커서 위치의 다음 칸부터 입력하기
 A : 커서가 있는 줄의 끝부터 입력하기
 i : 커서 위치부터 입력하기 (Insert도 같은 역할)
 I : 커서가 있는 줄의 맨 앞에서부터 입력하기
 o : 커서 바로 아래에 줄을 만들고 입력하기
 O : 커서 바로 위에 줄을 만들고 입력하기
 s : 커서가 있는 단어를 지우고 입력하기
 S : 커서가 있는 행을 지우고 입력하기

삭제
 x  : 문자 삭제
 #x : #개의 문자 삭제
 dd : 한 줄 삭제
 #d : #줄 삭제
 
취소키의 종류
 u : 작업 취소하기
 U : 그 줄에 행해진 작업 모두 취소하기
 . : 조금 전에 했던 명령을 반복하기

줄이동
 h<Left> : 커서를 한 칸 왼쪽으로 이동
 j<Down> : 커서를 한 줄 아래로 이동
 k<Up> : 커서를 한 줄 위로 이동
 l<Right> :커서를 한 칸 오른쪽으로 이동
 <Backspace> :커서를 한 칸 왼쪽으로 이동
 0 : 커서를 현재 줄의 맨 앞으로 이동
 $ : 커서를 현재 줄의 맨 끝으로 이동
 ^ : 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동


마지막으로 지운거 복사
 p : 마지막으로 지워진 것을 커서의 뒤/아래에 삽입
 P : 마지막으로 지워진 것을 커서의 앞/위에 삽입
 
패턴검색
 / : 이전의 패턴에 대해 앞으로 검색을 반복
 n : 명령에 대해 같은 방향으로 반복
 N : 명령에 대해 반대 방향으로 반복


줄 길이의 조절
 : J : 줄의 결합
 
Visual 모드
  v ㅋㅋ

[sample] select box에 option추가 및 선택

<script language=javascript>
var m_index = 0;
function add()
{
    m_index++;
   
        var oNewNode=document.createElement("option");
        oNewNode.setAttribute("value", m_index);
        oNewNode.innerText= m_index;
        oNewNode.selected = true;
        obj_select.appendChild ( oNewNode );
}
</script>

<input type=button onClick=javascript:add() value="add">

<select name=obj_select>

</select>


select, table등의 동적 객체 생성

DOM객체를 이용, 동적select, table 제어
<SCRIPT>
function appChild(){
  if (oList.all.length<6){
    var oNewNode=document.createElement("option");
    oNewNode.setAttribute("id", "item"+(ulObj.all.length+1)); //ID부여
    oNewNode.innerText="id=item"+(oList.all.length+1);
    oList.appendChild(oNewNode);
  }
}
</SCRIPT>

<select id=oList size=10>
<option name=item1 value="">항목 번호 1</option>
</select>
<INPUT type="button" value="자식 개체 추가" onclick="appChild()">

<BR><BR>-------------------------<BR><BR>

<SCRIPT>
function insertElement(){
  var nod=document.createElement('option');
  nod.setAttribute("id","oLi"+(ulObj.all.length+1)); //ID부여
  nod.innerText="id=oLi"+(ulObj.all.length+1);
  ulObj.insertBefore(nod,eval("oLi"+(ulObj.all.length)));
}
</SCRIPT>

<select id=ulObj size=10>
<option  id="oLi1" name=item value="">항목 번호 1</option>
<option  id="oLi2" name=item value="">항목 번호 2</option>
<option  id="oLi3" name=item value="">항목 번호 3</option>
</select>
<INPUT type="button" value="개체 삽입" onclick="insertElement()">

<BR><BR>-------------------------<BR><BR>

<TABLE id=tableObj border=1 width=600>
<TR id=row1>
<TD id=cell11>예제 칸1-1</TD>
<TD id=cell12>예제 칸1-2</TD>
</TR>
<TR id=row2>
<TD id=cell21>예제 칸2-1</TD>
<TD id=cell22>예제 칸2-2</TD>
</TR>
<TR id=row3>
<TD id=cell31>예제 칸3-1</TD>
<TD id=cell32>예제 칸3-2</TD>
</TR>
</TABLE>
<SCRIPT>
function makeRow(){
  newTr=tableObj.insertRow(document.createElement('<TR>'));
  newTd=newTr.insertCell(document.createElement('<TD>'));
  newTd.innerText='생성, 삽입된 줄-칸1';
  newTd=newTr.insertCell(document.createElement('<TD>'));
  newTd.innerText='생성, 삽입된 줄-칸2';
}
function delRow(){
  tableObj.deleteRow(0);
}
</SCRIPT>
<BUTTON onclick="delRow();">테이블 줄 제거 클릭</BUTTON>
<BUTTON onclick="makeRow();">테이블 줄 생성 클릭</BUTTON>


TR에 insertCell(TD)이라는 함수가 잇음 이거 사용하면 TD를 제어할수있음

table를 마음대로 컨트롤 합니다.

<table id=sendTable border>
<tr>
<td>1</td><td>2</td><td>3</td>
</tr>
</table>

table id=sendTable<br>
otr = sendTable.insertRow(0) : 위한줄을 추가합니다<br>
otr = sendTable.insertRow()=sendTable.insertRow(1)  : 다음 한줄을 추가합니다<br>
<BR>
otd = otr.insertCell()=otr.insertCell(-1)=otr.insertCell(0) : 셀을 추가합니다<br>
otd.innerHTML = "sell1" : 로 그셀에 들어갈 내용을 정의합니다
<BR><BR>
(숫자) 가 들어가기 위해서는 row 나 cell 이 들어갈 숫자가 정의되야 합니다.

<script>
  otr = sendTable.insertRow();
  otd = otr.insertCell();
  otd.innerHTML = "*sell1";
  otd = otr.insertCell();
  otd.innerHTML = "*sell2";
  otd = otr.insertCell();
  otd.innerHTML = "*sell3";

  otr = sendTable.insertRow();
  otd = otr.insertCell(0);
  otd.innerHTML = "sell_a1";
  otd = otr.insertCell(1);
  otd.innerHTML = "sell_b2";
  otd = otr.insertCell(2);
  otd.innerHTML = "sell_c3";


  otr = sendTable.insertRow();
  otd = otr.insertCell();
  otd.innerHTML = "sell21";
  otd = otr.insertCell();
  otd.innerHTML = "sell22";
  otd = otr.insertCell(0);
  otd.innerHTML = "1번 sell에 덮어쓰기 insertCell(0)";

  otr = sendTable.insertRow(3);
  otd = otr.insertCell();
  otd.innerHTML = "&3번줄에 끼어넣기 sell1";
  otd = otr.insertCell();
  otd.innerHTML = "3번줄에 끼어넣기 sell2";
  otd = otr.insertCell();
  otd.innerHTML = "3번줄에 끼어넣기 sell3";
  otd = otr.insertCell();
  otd.innerHTML = "*3번줄에 끼어넣기 sell4";
</script>


=======================
동적 select 예제입니다
=======================

  if (document.all.COMP) document.all.COMP.options[0] = new Option("라인명","");
  if (document.all.PART) {
   if (document.all.PART[1].length==undefined) {
    document.all.PART.options[0] = new Option("설비명2","");
   } else {
    for (var i=0;i<document.all.PART.length;i++) {
     document.all.PART[i].options[0] = new Option("설비명2","");
    }
   }
  }
  if (document.etcSelect.PART) document.all.etcSelect.options[0] = new Option("설비명","");


DBMS 교육 커리큘럼


Devpia에서 멜로 온건데.. 맘에 들어서 나도 공부해 보려 함..



DBMS 구조
DBMS 내부 구조
병렬 처리와 LOCK 메커니즘
4시간
인덱스란? 인덱스 내부 구조
인덱스 스캔 방식
B-Tree & Bitmap & Function Based 인덱스
인덱스 사용 및 설정 시의 유의사항
전체 범위 처리와 부분 범위 처리
6시간
조인 & 클러스터링 Nested Loop 조인
Sort-Merge 조인
Hash 조인
Cartesian 조인
Cluster
Subquery & 순환 관계 처리
SQL Plan & Tkprof
7시간
옵티마이저 옵티마이저의 이해 3시간
SQL PATTERN SQL PATTERN 학습 5시간
실무 활용 기법 및 예제 Analytic Function의 기법 & Rollup & Cube
실무 활용법 I
실무 활용법 II
실무 활용법 III
튜닝의 기법
10시간

2007년 7월 3일 화요일

javascript 정규식 예제.

string+='<H1>다른 제목1</H1><H2>다른 제목2</H2>';
// string='<H3>과제 11. 정규식 예제 중 한정기호</H3><H1>다른 제목1</H1><H2>다른 제목2</H2>';
reg=/<.3*?.*\/.3>/g;
document.write(string.match(reg));