2009년 3월 17일 화요일

ASP- ODBC MYSQL 연동하기

아시는 분들도 있겠지만... ^^



ODBC로는 연결이 잘되는데 OLEDB로 연결하려고 삽질 했네요 ㅡㅡ'

이렇게 간단한걸...



1.준비물

MyOLEDB3.exe (http://www.mysql.com/downloads/download.php?

file=Downloads/Win32/MyOLEDB3.exe&pick=mirror)



2. Connect 부분

"Provider=MySqlProv;Location=xxx.xxx.xxx.xxx;Data Source=디비명;User ID=아이디;Password=패스;"

- 한글부분은 알아서 ^^ (xxx.xxx.xxx.xxx는 ip)



3. 간략 예제

<%

strcon = "Provider=MySqlProv;Location=xxx.xxx.xxx.xxx;Data Source=디비명;User ID=아이디;Password=패스;"

set DbCon = Server.CreateObject("ADODB.Connection")

DbCon.open strcon



SQL_query = "SELECT count(*) FROM 테이블명"

Set RS = DbCon.Execute(SQL_query)



Response.Write " Query : " + SQL_query + "<p>"

Response.Write " Result : "



while not RS.eof

Response.Write RS(0)

Response.Write "<br>"

RS.MoveNext

wend



RS.Close

DbCon.Close



set RS = nothing

set DbCon = nothing

%>


FLEX와 MYSQL 연동

Flex는 MySQL과 직접적으로 연동을 할수가 없습니다.

때문에 Flex->PHP->MySQL->XML->Flex 라는 다소 복잡한 과정을 거쳐야합니다.

(PHP 대신에 ASP 혹은 JSP 등을 사용할수도 있습니다.)

(물론 잘 찾아보면 DB를 연동할수 있는 컴포넌트가 있긴합니다만,

Flex 자체에서 정식으로 지원하지는 않습니다. 자세한 정보를 원하시면

http://code.google.com/p/assql/ 를 참고하시기 바랍니다.)


개략적인 프로그램의 흐름은 다음과 같습니다.

inputID라는 textinput에서 ID를 받아서 버튼을 눌러 PHP파일을 호출합니다.

PHP파일에서는 mxml에서 보낸 id를 받아서 해당 id의 파일 목록을 얻어와서

xml형식으로 만들어서 다시 flex로 보냅니다.


자 다음은 소스를 보도록 합시다.


MXML

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   import mx.rpc.http.HTTPService;
   import mx.rpc.events.ResultEvent;
   
   private var SQLData:ArrayCollection = new ArrayCollection();
   

   
   private function sendAndReceive(event:ResultEvent):void {
    SQLData = event.result.file; //DB에서 받아온 내용을 배열에 바인딩
   }
   
  ]]>
 </mx:Script>
 
 <mx:HTTPService id="request" method="POST" url="http://xxx.xxx.xxx.xxx/~next2008/index.php" useProxy="false" result="sendAndReceive(event)">

 <!--url은 php파일의 경로이고, result는 php파일 호출후 실행할 함수명입니다.-->
  <mx:request xmlns="*">
   <userID>{inputID.text}</userID>

   <!--실질적으로 php에 데이터 보내는곳입니다. <tag>내용</tag>형식으로 추가하면 됩니다.-->
  </mx:request>
 </mx:HTTPService>
 <mx:Panel title="example"  width="100%" height="255">
  <mx:TextInput id="inputID"/>
 
  <mx:Button click="request.send();" />
 
 </mx:Panel>
</mx:Application>



PHP

<?
    $inputID = $_POST['userID'];

    //Flex에서 보낸 데이터를 받습니다. 변수를 추가로 더 받을때는

    //"$변수 = $_POST['tag'];" 형식으로 합니다.
    $link = @mysql_connect ("MySQL주소", "ID", "패스워드");

    //MySQL이 있는 주소를 적으면 됩니다. php파일이 있는곳에 DB가 있다면

    //localhost 라고 하면 됩니다. ID와 패스워드는 mysql의 아이디와 패스워드입니다.
    $db = mysql_select_db("web", $link);

    //db선택
    $query = "select * from userinfo where id='" .$inputID. "'";
    $result = mysql_query($query, $link) or die ("쿼리잘못");

    //쿼리
    $data = mysql_fetch_array($result) or die("데이터 못넘겨받음(ID이상)");
    $ID = $data[0];
    $db = mysql_select_db($ID, $link);

    //db교체


    $query = "select * from file";
    $result = mysql_query($query, $link) or die("쿼리이상");

    $dataNum = mysql_num_rows($result);
    $fileList = array();
    for($i = 0;  $i < $dataNum;  $i++)
    {
        $data = mysql_fetch_array($result) or die("데이터 잘못넘겨받음");
        for($j = 0;  $j < 4;  $j++)
            $fileList[$i][$j] = $data[$j];
    }

    //데이터를 배열로 받아옵니다.

    for($i = 0;  $i < $dataNum;  $i++)
    {
        $return .= "<file><name>" . $fileList[$i][0] . "</name><upperfolder>" . $fileList[$i][1] . "</upperfolder><size>" . $fileList[$i][2] . "</size><date>" . $fileList[$i][3] . "</date></file>";

    }

    print($return);

    //xml형식으로 만들어서 뿌려줍니다.


    mysql_close($link);


?>



MySQL

db생성-web

create database web;
web/userinfo테이블생성
create table userinfo(id char(10) not null, name char(10) not null, password char(16) not null, nickname char(20) not null, primary key(id));

web/userinfo테이블에 데이터 삽입
insert into userinfo values('tkeo', '최인명', 'asdf', 'Rese');

db생성-tkeo

create database tkeo;

tkeo/file테이블 생성
create table file(fileName char(20) not null, upperFolder char(20) not null, size integer not null, updateDate integer not null, primary key(fileName));

tkeo/file테이블에 데이터 삽입
insert into file values('fghj.exe', 'aaaa', 1301, 20070222);

2009년 3월 12일 목요일

CENT OS FTP 설치 및 설정

FTP를 운영하는 간편한 방법으로 리눅스에 기본으로 설치되있는 VSFTP를 실행해서 사용하는 방법이다.
###VSFTPD 실행####
> service vsftpd start or restart


 

CentOS 기반에서 FTP (proftp) 설치 및 운영하기 more..

2009년 3월 11일 수요일

리눅스 자동 백업 스크립트

그럼 먼저 crond 을 보도록 하자
crond 는 특정 시간이나 날짜(좀 복잡하게도 가능)에 정해진 일을 수행하는 데몬이다.
자세한거는 직접들 찾아보시고
# crontab -e 0 6 * * * /bin/backup.sh

이렇게 명령을 주게되면 crond 에 매일 아침 6시에 /bin/backup.sh 를 실행하라는
것을 의미한다. 자세한 의미는 굳이 설명하지 않겠다.
이러면 crond 는 매일 아침 6정각에 /bin/backup.sh 를 실행한다.

다음은 backup.sh 의 내용이다.

#!/bin/bash
dstring="backup_`date +'%y%m%d'`.tar.gz"  # 파일명을 만들어낸다.
                                                             # 04년06월21일같은경우에
                                                             # backup_040621.tar.gz 를 만든다.
#wall < /bin/start_backup_message             # 접속되어있는 모든 사용자에게
                                                             # 백업이 시작됨을 알리고
#/etc/init.d/network stop                            # 네트워크 서비스를 중지시킨다.
tar cfz $dstring "/home"                        # ex) home 디렉토리를 파일명으로 압축한다.
#/etc/init.d/ network start                           # 네트워크 서비스 재개

Server="Backup Server Address"   # 서버IP
UserID="USERID"                           # ID
Password="PASSWORD"              # backup 받는 유저의 패스워드

ftp -n $Server <<End-Of-Session  # ftp 에 접속 -n 옵션은 자동로그인을 안한다.
user $UserID $Password                # 로그인
binary
put "$dstring"
bye
End-Of-Session

rm -f $dstring                               # 백업파일 삭제

#wall < /bin/end_backup_message  # 백업이 끝났음을 알린다

2009년 3월 4일 수요일

흠.. 고민때리네..

앞으로 어떤 방향으로 흐름을 타고 가야하는걸까..
이도 저도 아닌 소속이 된거 같은데...
일단, 대략 200만원 정도 상당의 다음 트랙 장학금과 현장실습후 지급되는 돈 40만원 정도...
운이 좋다고 해야하나.. 성적은 그닥 잘 안나왔었지만, 운이 따랐는지..
돈으로 받게 되서 어려운 상황에서 한줄기 빛을 본거 같다..
그래, 인턴 3개월후에 내 인생의 방향이 결정될거 같군...
그때까지 이 악물고 미친듯이 해보자..

09.2.27 ~.2.28 먹자파 1박 2일!~

27일 선녀와 나무꾼에서
사용자 삽입 이미지

27일 리조트 도착후 이른 저녁식사 중
사용자 삽입 이미지

27일 화투치다 산책하다가..
사용자 삽입 이미지

28일 리조트 및 호텔 구경하다..
사용자 삽입 이미지

28일 위미리까지 가서 낚시 후 기념샷
사용자 삽입 이미지

2009년 3월 2일 월요일

리눅스 VI 편집기 명령어 정리

 

Vi 에디터 사용법


<Vi의 3가지 Mode>


모 드

전환키

설 명

Command Mode

ESC

문서내의 텍스트를 지우거나, 복사하거나, 추가하거나, 삽입하거나, 옮기거나 할 수 있는 명령을 사용할 수 있는 모드입니다.

Insert Mode

i,a,o,O, ...

문서에 텍스트를 추가하거나, 삭제하거나, 복사할 수 있는 모드입니다.

ex Mode

:

맨 아래 라인에 확장된 명령어를 입력할 수 있도록 해줍니다.


<Command Mode>

편집한 파일을 저장하고 닫고, 다른 파일을 편집하고 싶을 때, ESC를 눌러서 명령을 내릴 수 있는 상태로 변환하고, 다음 명령을 사용한다.


명  령

설  명

ZZ or :wq

저장하고 vi 끝내기

:w [파일이름]

주어진 파일이름으로 파일 저장하기

:w! [파일이름]

주어진 파일이름으로 저장/덮어쓰기

:q!

편집한 내용을 저장하지 않고 vi 끝내기

:e!

편집한 내용을 저장하지 않고 최종 저장된 상태로 파일 열기

:w 새파일이름

현재 작업중인 파일을 새파일이름으로 저장하기

:e 열고_싶은_파일이름

vi를 끝내지 않고 다른 파일 편집하기


<Inset(삽입) Mode>

1. 커서의 이동

   다른 에디터처럼 방향키나, 다른 기능키를 이용하여서도 가능하여 요즘은 아래의 키는 잘 사용하지 않지만 초창기 버전에서는 아래표의 키만 적용되는 버전도 있음


기 능

입력 키

기 능

h

오른쪽으로 한 칸

b

한 단어 뒤로 이동

j

아래로 한 칸

B

특수문자/기호들은 단어로 치지 않고, 한 단어 뒤로 이동

k

위로 한 칸

w

한 단어 앞으로 이동

l

왼쪽으로 한 칸

W

특수문자/기호들은 단어로 치지 않고, 한 단어 앞으로 이동

0

라인의 시작으로 이동

:0

문서의 맨 앞으로

$

라인의 끝으로 이동

:$

문서의 맨 뒤로

^

라인의 첫 번째 단어로 이동










2. 편집 명령


입력 키

기 능

입력 키

기 능

i

insert, 현재 문자 앞에서부터 입력

cw

한단어 change

a

append, 현재 문자 뒤부터 입력

x

한문자 delete

o

현재 줄 아래 한 줄 삽입

O : 현재 줄 위에 한 줄 삽입

y

yank(copy) text, 문자 복사

yw : 단어 복사

yy : 한줄 복사

3yy : 세줄 복사


r

replace


p

put(paste) 현재 줄 다음 줄에 버퍼의 내용을 붙인다.

R

현재 문자 이후부터 replace

P

현재 줄 앞에 버퍼의 내용을 붙인다.

dw

delete word

u

마지막 명령을 Undo

U : 그줄에서 수행한 명령들을 Undo

dd

delete line

J

join, 두 줄을 연결한다.


3. 기타 명령


명  령

설  명

:se nu

:set number

:se nonu

:set nonumber

:set ic

:set noic

^g

각 라인앞에 일련번호를 표시


각 라인앞에 일련번호를 표시하지 않는다.


검색시 대소문자를 구분하지 않는다.5

검색시 대소문자를 구분한다.

현재 라인버호를 표시

:ab ttt the

ttt를 the로 상용구 등록

:e filename

:r filename

:sh

:! command

:r !command

filename 불러와 편집

filename을 불러와 커서 위치에 삽입

shell 나들이

shell 명령어 수행

shell 명령어를 vi 화면내에 출력