GIGABYTE Q2432A 사용기

사용기 들어가기 전.. 

이 노트북에 외관이나 무게 그리고 사이즈 같은 것은 왠만한 정보가 인터넷에 나뒹굴고 있으니 그것에 대한 상세 정보는 생략하고 정말 사용해본 후기를 남기려고 한다.
필자가 이 노트북을 산 이유는 단순하다.
게임!!!!!!
그렇다. 난 게임을 하기 위하여 이 노트북을 구매했다.
근데 사실 그리 부자가 아니다보니 초 고가형 노트북을 구매할 순 없었다. 대략 100만원 이하의 노트북에서 좀 무겁더라도 백팩에 담아갈 수 있을 정도의 무게면 괜찮고 원래 하려던 게임도잘되는 노트북도 원했던 것이다.
근데 저가형이건 고가형이건 인텔 그래픽 칩셋을 사용하는 노트북은 그냥 다 거지같았다.물론 그냥저냥 대충 그래픽인 경우 무리가 없지만..배틀필드3를 돌리고 싶었다. -0-;; 
뭐 어쨋든  ati 6730 그래픽카드를 사용하는 이 노트북에 대해서 가격면에서 저렴하다고 생각하여 구매하였다.


1. 겉모습


핸드폰으로 찍은 직찍이다.고화질 사진들은 인터넷에 막 굴러다니니까 제외하기로 하자.열면 저렇게 생겼다. 자판배열은 다음과 같다. 

보면 알겠지만 뭐 다른건 다 비슷하고 HOME, PGUP, PGDN, END  순으로 위에서 아래로 키 배열이 되어 있다.
키보드를 사용하는 스타일마다 다르겠지만 필자의 경우 홈버튼과 엔드 버튼을 자주 쓰기 때문에 이걸 붙여 놨으면 하는 생각이 있었다. 키감은 나름 괜찮다. 물론 막 리얼포스나 이런것과 비교하면 별로라고 생각할 수 있지만 나는 이정도면 만족스럽다. 키보드 의 키가 다른 노트북 키보다는 크다 그래서 오타가 잘 안나는 것도 맘에 든다.


아.. 이 노트북 사면 구성품으로 드라이버 CD를 주는데 이거 좀 괜춘하다. Free Dos 제품 중에는 드라이버 CD가 동봉되어 있지 않은 녀석이 있다.HP꺼가 그런데 열라 짜증난다. 이녀석은 모든 윈도우 버전의 드라이버 CD가 다 들어있다. 그래서 한번에 그냥 드라이버 인스톨을 하면 된다.이거 사고 그 뒤에 HP 초 저가 노트북을 샀는데 뭔 가이드 CD만 들어있고 드라이버 CD가 없어서 짜증났었다.이너마는 일단 왠간한 운영체제의 드라이버는 제공되는 CD 안에 다 들어있다.


2. 성능 

일단 이게 정말 중요하다.키감이 어떻고 자판 배열이 어떻고 다 필요없다.이 노트북은 이게 정말 중요하다.왜냐하면 게임을 위해서..ㅋㅋ
윈도우 체험 점수를 보자내가 인스톨한 윈도우는 Windows7 64bit이다.

뭐 이건 특별히 말은 안하겠다.
SSD를 낀 모델이 아니라서 그냥 이해는 한다. 
이제 게임을 돌려보자.과연 어느정도 나올까? FNonline인가? 이 게임을 친구너마가 거의 메일 내 노트북으로 돌렸었는데 잘돌아갔다. 일단 노트북 모니터 해상도가 1366x768의 저해상도라 대충 풀옵으로 해도 왠간히 다 돌아간다. 이제 진짜 배틀필드를 돌려보자. 

일단 보자.영상 품질은 자동으로 맞췄을 때 지가 알아서 잡은 세팅값이다.사실 플레이를 한 것 1컷을 올릴까하다가 말았는데 세팅값만 봐도 대략 이 게임을 해본 사람들은알 것 같아서 그랬다.자동으로 했을 경우 대부분 품질은 높음으로 세팅된다. 그만큼 ATI 6730M이 성능이 좀 난다는 이야기다. 물론 해상도는 저해상도니까.. 높음으로 나왔을테지.. 모니터 1680x1080인가로 돌리면 아마 중옵 정도로 돌아가지 않을까 싶다.
노트북에서 배필 멀티가 안끊기고 돌아간다면 성능은 이정도면 난 만족스럽다.아.. 물론 해상도가 낮아 실제로 게임을 하면 좀 발리기도 한다.이유는 해상도가 낮아서 멀리있는 애들은 잘 안보여서 곧 잘 죽는다..--;;


3. 소음 & 발열

요거 대학생들에겐 좀 민감하다.게임도 하고 싶은데 도서관에서 인강도 보고 싶은 사람들이 있을터니 말이다.소음은.. 일단 게임하면 펜이 미친듯이 빨리 돌아간다. 이건 뭐 너무 당연한거니까..평소엔 그렇게 소음이 큰 건 아니다. 그냥 도서관에 들고 가서 인강 볼 정도는 된다.
발열은.. 일단 게임하면 왼쪽 손목 부분 받치는 부분이 뜨거워진다.근데 게임하면 다 그러니.. 이해하자.


4. 결론

게임하나 딸랑 실행해보고 결론을 내다니.. 
뭐 사용기가 이따위야? 라고 생각할 수도 있지만..배필3정도 무난하게 돌리는 노트북이면 굳이 성능을 밴치마크 돌리면서 숫자가 어떻니 저떻니 하는 것보단 확실할 것 같아 그냥 저것만 올렸다.
총체적으로 봤을 때 다음과 같은 사용자에게 이 노트북을 추천해주고 싶다.
1. 돈이 많지 않은데 게임하고 싶은 사람.봤지만 나름 배필3를 노트북 자체에선 무난하게 돌린다. 노트북에서 그래도 어느정도 돌아가는 게임을 하고 싶다고 생각하는 사람은 이 노트북을 추천한다.게임 안할거면 이거 필요 없다.  2. 2.2kg정도는 거뜬하게 들고 다닐 수 있는 사람. 노트북은 무게 0.1kg정도 줄이는데 동급 사양보다 대략 10만원 정도 가격이 올라간다.그렇기 때문에 2.2kg 정도는 이 노트북 가격에 비하면 괜찮은 것이다. 그러니 가벼움 대신에 난 그럭저럭 성는 좋고 가격대비 괜찮은 걸 사야지~ 라고 생각하는 사람에게 추천한다.돈 많고 가벼운거 사고 싶으면 다른거 사길 추천한다. 2.2kg.. 어뎁터까지 하면 더 무거워진다. 

Posted by 서오석
,
스크립트로 데이터를 뽑아내고 나서 이를 파일로 저장한 후에 메일로 보내고 싶을 때가 있다.

그래서 간단한 메시지와 함께 메일에 파일을 첨부해서 보내는 모듈을 소개한다.

모듈명은 Multpart 이다.

인스톨 방법은 다음과 같다. 

[root@xxx /xxx/perlprogram/Net-SMTP-Multipart-1.6] perl Makefile.PL
WARNING: HTMLLIBPODS is not a known parameter.
Checking if your kit is complete...
Looks good
'HTMLLIBPODS' is not a known MakeMaker parameter name.
Writing Makefile for Net::SMTP::Multipart
[root@xxx /xxx/perlprogram/Net-SMTP-Multipart-1.6] make
pod2text Multipart.pm >README
pod2html Multipart.pm >Multipart.html
/usr/bin/pod2html: no title for Multipart.pm.
cp Multipart.pm blib/lib/Net/SMTP/Multipart.pm
Manifying blib/man3/Net::SMTP::Multipart.3
[root@xxx /xxx/perlprogram/Net-SMTP-Multipart-1.6] make install
Installing /usr/lib/perl5/site_perl/5.8.5/Net/SMTP/Multipart.pm
Installing /usr/share/man/man3/Net::SMTP::Multipart.3
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod
[root@biz-anal /daum/perlprogram/Net-SMTP-Multipart-1.6]
 
인스톨을 했으니 이제 메일을 보내면서 파일을 전송해보자.
        my $to = $_[0];         #받는 사람
        my $from = $_[1];       #보내는 사람
        my $subject = $_[2];    #제목
        my $text =$_[3];        #내용
        my $file = $_[4];       #첨부파일 (파일위치와 파일명까지 써줘야함)

        my $smtp = Net::SMTP::Multipart->new('127.0.0.1'); #<- SMTP 서버 
        $smtp->Header(To   => $to,
                Subj => $subject,
                From => $from);
  $smtp->Text($text);
  $smtp->FileAttach($file);
  $smtp->End();
소스는 위와 같다.

이제 간단한 프로그램을 짜서 메일로 잘 오는지 테스트 해보면 된다.

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Term-ReadPassword를 이용해서 입력값을 숨김으로 받는 법  (0) 2011.04.15
PERL FTP 파일 다운로드  (0) 2010.11.18
PERL Error Handling  (0) 2010.11.18
PERL Subrountines  (0) 2010.11.18
PERL Regular Expressions  (0) 2010.11.18
Posted by 서오석
,
가끔 Perl에서 입력값을 숨기고 싶을 때가 이다.
예를 들어 DB에 access하려고 하는 스크립트를 만든다고 했을 때 스크립트에 id나 PW를 박아서 연결하거나 간단한 scanf 를 통해  값을 입력받는다.

근데 그렇게 하면 PW가 공개될 우려가 있기 때문에 이를 막아주기 위하여 IO-Prompt를 사용하여 마치 리눅스 로그인하듯이 입력값을 가릴 수 있게 할 수 있다.
===========================================================================
본시스템은 허가된 사용자만 이용하실수 있습니다.
부당한 방법으로 전산망에 접속하거나 정보를 삭제/변경/유출하는
사용자는 관련법령에 따라 처벌 받게 됩니다

This is a private computer facility.
Access for any reason must be specifically authorized by the manager.
Unless you are so authorized, your continued access and any other use may
expose you to criminaland or civil proceedings
=========================================================================== 
login: 5dolstory
Password:  

리눅스에 로그인하게 될 때 Password를 치게 되면 이 때 Password 입력값은 먹지만 실제로 화면에 보여주지는 않는다.

이걸 할 수 있는 녀석이Term-ReadPassword이다.

우선 다운받아 리눅스에 인스톨을 하자.


[root@xxxx /xxxx/perlprogram/Term-ReadPassword-0.11] perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Term::ReadPassword
[root@xxxx /xxxx/perlprogram/Term-ReadPassword-0.11] make
cp ReadPassword.pm blib/lib/Term/ReadPassword.pm
Manifying blib/man3/Term::ReadPassword.3pm
[root@xxxx /xxxx/perlprogram/Term-ReadPassword-0.11] make install
Installing /usr/lib/perl5/site_perl/5.8.5/Term/ReadPassword.pm
Installing /usr/share/man/man3/Term::ReadPassword.3pm
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod
[root@xxxx /xxxx/perlprogram/Term-ReadPassword-0.11]


저렇게 하면 모듈이 인스톨 된 것인다.

소스를 짜는 건 단순하다. 

#!/usr/bin/perl
use Term::ReadPassword;

print "input pw :";
$pw = read_password($_[0]);
print $pw; 


저렇게 짜고 실행을 시키면 이런 결과가 나온다.
 /.pw.pl
input pw :
aaaa 

즉 input pw : aaaa
aaaa
이렇게 출력되지 않는다는 것이다.


모듈 설명서 링크 : http://search.cpan.org/~phoenix/Term-ReadPassword-0.11/ReadPassword.pm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl로 메일보낼 때 파일 첨부하기  (0) 2011.04.15
PERL FTP 파일 다운로드  (0) 2010.11.18
PERL Error Handling  (0) 2010.11.18
PERL Subrountines  (0) 2010.11.18
PERL Regular Expressions  (0) 2010.11.18
Posted by 서오석
,
현재 일시
> date
Fri Nov 27 11:07:02 KST 2009


일분 전
 > date -d -1minutes
Fri Nov 27 11:09:28 KST 2009

한시간 전
date -d +1hours
Fri Nov 27 12:10:03 KST 2009


하루 전
> date -d -1days
Thu Nov 26 11:09:32 KST 2009
 

한달 전
> date -d -1months
Tue Oct 27 11:08:18 KST 2009


일년 후
> date -d +1years
Sat Nov 27 11:09:01 KST 2010
 


일자 포멧 변경
 > date '+%Y/%m/%d %H:%M:%S'
2011/02/16 13:47:05


Date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

  -d, --date=STRING         display time described by STRING, not `now'
  -f, --file=DATEFILE       like --date once for each line of DATEFILE
  -ITIMESPEC, --iso-8601[=TIMESPEC]  output date/time in ISO 8601 format.
                            TIMESPEC=`date' for date only,
                            `hours', `minutes', or `seconds' for date and
                            time to the indicated precision.
                            --iso-8601 without TIMESPEC defaults to `date'.
  -r, --reference=FILE      display the last modification time of FILE
  -R, --rfc-2822            output RFC-2822 compliant date string
  -s, --set=STRING          set time described by STRING
  -u, --utc, --universal    print or set Coordinated Universal Time
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다

FORMAT controls the output.  The only valid option for the second form
specifies Coordinated Universal Time.  Interpreted sequences are:

  %%   a literal %
  %a   locale's abbreviated weekday name (Sun..Sat)
  %A   locale's full weekday name, variable length (Sunday..Saturday)
  %b   locale's abbreviated month name (Jan..Dec)
  %B   locale's full month name, variable length (January..December)
  %c   locale's date and time (Sat Nov 04 12:02:33 EST 1989)
  %C   century (year divided by 100 and truncated to an integer) [00-99]
  %d   day of month (01..31)
  %D   date (mm/dd/yy)
  %e   day of month, blank padded ( 1..31)
  %F   same as %Y-%m-%d
  %g   the 2-digit year corresponding to the %V week number
  %G   the 4-digit year corresponding to the %V week number
  %h   same as %b
  %H   hour (00..23)
  %I   hour (01..12)
  %j   day of year (001..366)
  %k   hour ( 0..23)
  %l   hour ( 1..12)
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale's upper case AM or PM indicator (blank in many locales)
  %P   locale's lower case am or pm indicator (blank in many locales)
  %r   time, 12-hour (hh:mm:ss [AP]M)
  %R   time, 24-hour (hh:mm)
  %s   seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)
  %S   second (00..60); the 60 is necessary to accommodate a leap second
  %t   a horizontal tab
  %T   time, 24-hour (hh:mm:ss)
  %u   day of week (1..7);  1 represents Monday
  %U   week number of year with Sunday as first day of week (00..53)
  %V   week number of year with Monday as first day of week (01..53)
  %w   day of week (0..6);  0 represents Sunday
  %W   week number of year with Monday as first day of week (00..53)
  %x   locale's date representation (mm/dd/yy)
  %X   locale's time representation (%H:%M:%S)
  %y   last two digits of year (00..99)
  %Y   year (1970...)
  %z   RFC-2822 style numeric timezone (-0500) (a nonstandard extension)
  %Z   time zone (e.g., EDT), or nothing if no time zone is determinable

By default, date pads numeric fields with zeroes.  GNU date recognizes
the following modifiers between `%' and a numeric directive.

  `-' (hyphen) do not pad the field
  `_' (underscore) pad the field with spaces




'서버 이야기 > Linux 이야기' 카테고리의 다른 글

리눅스 시간 동기화  (0) 2012.09.05
No space left on device  (0) 2012.06.28
VI에서 인코딩 변환해서 보기  (0) 2010.12.02
Linux screen 사용하기  (0) 2010.11.30
리눅스에서 FTP로 사용하기  (0) 2010.02.18
Posted by 서오석
,

SID와 SERIAL을 알 경우 간단하게 이렇게 KILL할 수 있다.
 
alter system kill session '123, 23132'; 


뒤에 '123, 23132' 이 부분 중 첫번째 123이 SID이고 23132가 SERIAL이다.

그리고 만약에 KILL을 했는데도 세션이 살아있는 경우는 프로세스를 죽일 수 있다.

프로세스는 다음과 같다.

select   spid  from  v$process
where addr = (select paddr from v$session where sid = '123');

요라면 유닉스의 pid가 나오는데 이걸 kill -9 pid로 죽이면 된다.
Posted by 서오석
,
VI에서 파일 인코딩을 변환하여 저장하거나 불러오려면 다음의 명령을 이용한다.

인코딩을 변환하여 불러오기.
:e ++enc=euc-kr

그리고 아래 명령으로 인코딩을 변환한 다음 저장한다.
:set fileencoding=utf-8

'서버 이야기 > Linux 이야기' 카테고리의 다른 글

No space left on device  (0) 2012.06.28
Date 명령어 사용  (0) 2011.02.16
Linux screen 사용하기  (0) 2010.11.30
리눅스에서 FTP로 사용하기  (0) 2010.02.18
vmstat 항목 설정 보기  (0) 2010.02.02
Posted by 서오석
,
예전에 screen + vim 조합으로 열심히 써서 손에 익었던 것도 잠시.. 몇 년이 지나고 나니 어느새 다 잊어버렸다.
screen 을 이용하면 vim 에서 창을 나누지 않고 여러 화면을 전환하면서 쓸 수도 있고, 새로운 파일 들을 열어서 볼 때도 매우 편리하다.  또한, 원격지에서 접속 후 일을 하다가 중간에 작업은 진행시켜 둔 채로 접속을 끊고, 다른 곳에서 접속하여 하던 작업을 이어서 할 수 있다는 장점(이게 난 가장 좋다!)도 있다.
사용법을 찾아보니 이 곳이 정리가 너무 잘되어 있다.

내가 자주 사용하거나 유용한 몇 가지만 요약하여 정리하면 다음과 같다.

1. screen 생성시
$ screen -S <세션명>
또는 그냥
$ screen

2. 어떤 screen 이 있는지 보고 싶을 때
$ screen -list

3. 이전에 생성한 screen으로 돌아가고 싶을 때
$ screen -r [세션명]

4. 작업 중 새로운 screen 생성
Ctrl + a, c

5. 현재 screen 의 Title 명 변경
Ctrl + a, A

6. 작업 중 다른 screen으로 옮기고 싶을 때
6.1. 바로 이전에 사용하던 screen
Ctrl + a, a
6.2. screen 번호와 Title 보고 이동(5 항목과 함께 이용하면 편리하다)
Ctrl + a, " (화살표 키 이동 후 엔터)
6.3. 번호 창으로 이동
Ctrl + a, [0-9]
6.4. 다음 screen
Ctrl + a, n
6.5. 이전 screen
Ctrl + a, p

7. screen 을 잠깐 사용 중인 상태로 떼어놓고(detach) 싶을 때
Ctrl + a, d

8. screen 세션을 kill하고 싶을 때
screen -X kill

'서버 이야기 > Linux 이야기' 카테고리의 다른 글

Date 명령어 사용  (0) 2011.02.16
VI에서 인코딩 변환해서 보기  (0) 2010.12.02
리눅스에서 FTP로 사용하기  (0) 2010.02.18
vmstat 항목 설정 보기  (0) 2010.02.02
Crontab 설정 하기  (0) 2010.02.02
Posted by 서오석
,
#! /usr/local/bin/perl
use strict;
use IO::File;
use Net::FTP;

my @CHECK = ("1log.gz"
            ,"2log.gz"
);

if(@CHECK){
        my $FTP = Net::FTP->new("192.168.0.1", Debug => 0) or die "Cannot connect to 192.168.0.1: $@";
        $FTP->login("hanadmin","여기엔PW를 넣습니다.") or die "Can not login \n", $FTP->message;
        my $loc = "/data01/";
        foreach my $j (0..$#CHECK){
        chomp $CHECK[$j];
        my $file = $CHECK[$j];

        $FTP->cwd($loc) or die "Cannot change working directory ", $FTP->message;
        $FTP->binary;
        $FTP->get($file,"/daum/logs/".$file) or die "$file", $FTP->message;

        }
        $FTP->quit;
}
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_error_handeling.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Term-ReadPassword를 이용해서 입력값을 숨김으로 받는 법  (0) 2011.04.15
PERL FTP 파일 다운로드  (0) 2010.11.18
PERL Subrountines  (0) 2010.11.18
PERL Regular Expressions  (0) 2010.11.18
PERL Files & I/O  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_subroutines.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

PERL FTP 파일 다운로드  (0) 2010.11.18
PERL Error Handling  (0) 2010.11.18
PERL Regular Expressions  (0) 2010.11.18
PERL Files & I/O  (0) 2010.11.18
Perl Built-in Operators  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_regular_expression.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

PERL Error Handling  (0) 2010.11.18
PERL Subrountines  (0) 2010.11.18
PERL Files & I/O  (0) 2010.11.18
Perl Built-in Operators  (0) 2010.11.18
Perl Loops  (0) 2010.11.18
Posted by 서오석
,

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

PERL Subrountines  (0) 2010.11.18
PERL Regular Expressions  (0) 2010.11.18
Perl Built-in Operators  (0) 2010.11.18
Perl Loops  (0) 2010.11.18
Perl Conditional Statements  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_operators.htm

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

PERL Regular Expressions  (0) 2010.11.18
PERL Files & I/O  (0) 2010.11.18
Perl Loops  (0) 2010.11.18
Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_loops.htm

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

PERL Files & I/O  (0) 2010.11.18
Perl Built-in Operators  (0) 2010.11.18
Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_conditions.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Built-in Operators  (0) 2010.11.18
Perl Loops  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Perl Array Variable  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_special_variables.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Loops  (0) 2010.11.18
Perl Conditional Statements  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Perl Array Variable  (0) 2010.11.18
Perl Scalar Variable  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_hashes.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Array Variable  (0) 2010.11.18
Perl Scalar Variable  (0) 2010.11.18
Perl Variable Types  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_arrays.htm


'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Perl Scalar Variable  (0) 2010.11.18
Perl Variable Types  (0) 2010.11.18
Posted by 서오석
,
출처 : http://www.tutorialspoint.com/perl/perl_scalars.htm

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Perl Array Variable  (0) 2010.11.18
Perl Variable Types  (0) 2010.11.18
Posted by 서오석
,

'서버 이야기 > Perl 이야기' 카테고리의 다른 글

Perl Conditional Statements  (0) 2010.11.18
Perl Special Variables  (0) 2010.11.18
Perl Hash Variable  (0) 2010.11.18
Perl Array Variable  (0) 2010.11.18
Perl Scalar Variable  (0) 2010.11.18
Posted by 서오석
,

import java.net.InetAddress;
import java.net.UnknownHostException;
 
public class Print{
  public static void main(String[] args){
    try{
      System.out.println( InetAddress.getLocalHost().getHostName() );
      System.out.println( InetAddress.getLocalHost().getHostAddress() );
    }
    catch( UnknownHostException e ){
      e.printStackTrace();
    }
  }
}
간단하다.

출처 : http://blog.naver.com/websearch/70086250465
Posted by 서오석
,
출처 : http://blog.naver.com/dudwo00/130013004957
분석함수는 8i 버전에서 persnal edition, enterprise edition에서 지원하고, 
9i버전에서는 모든 버전에 지원된다. 문법은 다음과 같다. 

SELECT Analytic_Function ( arguments )
       OVER( [ PARTITION BY 칼럼 ] [ ORDER BY 절 ] [ Windowing 절] )
FROM 테이블 명;


     - Partition By : 전체 집합을 기준에 의해 소그룹으로 나눔     
     - Order By     : PARTITION BY에 나열된 그룹을 정렬함
     - Windowing : 펑션의 대상이 되는 행 기준으로 범위를 세밀하게 조정
                   (메뉴얼: window IS a physical or logical SET of rows)

* Windowing절에 대한 설명

1. ROWS/RANGE  UNBOUNDED PRECEDING/
                         CURRENT ROW/
                         value_expr PRECEDING

2. ROWS/RANGE BETWEEN UNBOUNDED PRECEDING/
                      CURRENT ROW/
                      value_expr PRECEDING/FOLLOWING 
                      AND UNBOUNDED FOLLOWING
                      CURRENT ROW/
                      value_expr PRECEDING/FOLLOWING 
: RANGE는 값이며, ROWS는 행의 수를 의미한다.                      

- RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING
  : BETWEEN Current_Row -50 AND 150 의 파티션 내의 모든행이 window
    즉, Current_Row의 값 - 50 ~ Current_Row의 값 + 150의 값은 모두 하나의 그룹

- ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
  : 현재행을 기준으로 파티션 내의 앞/뒤 한건이 Window

- RANGE UNBOUNDED PRECEDING
  : 현재 행을 기준으로 파티션 내의 첫 번째 행까지가 Window

- ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING     
  : 현재행을 기준으로 파티션 내의 첫 번째 행부터 끝 행까지가 Window. 즉, 파티션 모두가 Window



select
        ename
      , sal
      , sum(sal) over(partition by deptno order by sal) ASC순으로_부서별_sal누적
      , sum(sal) over(partition by deptno) 부서별_sal합계
      , sum(sal) over(order by deptno, sal) deptno_sal_ASC정렬후_누적
      , sum(sal) over() sal총계
from emp
order by deptno, sal;
--over() 안의 oder by는 정렬 후 해당 행과 이전행을 모두 함친 것의 계산 - 여기에서는 SUM()
--over() 안의 partition by는 group by 역할을 한다. 분석에 대한 범위를 지정하는 역할.

/*
ENAME            SAL ASC순으로_부서별_SAL누적 부서별_SAL합계 DEPTNO_SAL_ASC정렬후_누적    SAL총계
---------- --------- ------------------------ -------------- ------------------------- ----------
MILLER       1300.00                     1300           8750                      1300      29025
CLARK        2450.00                     3750           8750                      3750      29025
KING         5000.00                     8750           8750                      8750      29025
SMITH         800.00                      800          10875                      9550      29025
ADAMS        1100.00                     1900          10875                     10650      29025
JONES        2975.00                     4875          10875                     13625      29025
SCOTT        3000.00                    10875          10875                     19625      29025
FORD         3000.00                    10875          10875                     19625      29025
JAMES         950.00                      950           9400                     20575      29025
WARD         1250.00                     3450           9400                     23075      29025
MARTIN       1250.00                     3450           9400                     23075      29025
TURNER       1500.00                     4950           9400                     24575      29025
ALLEN        1600.00                     6550           9400                     26175      29025
BLAKE        2850.00                     9400           9400                     29025      29025

14 rows selected
*/


* 사원 중 직무별로 가장 많은 월급을 받는 사람의 사원번호, 직무명, 월급을 출력하라
SELECT T1.EMPNO, T2.JOB, T2.MAX_SAL
FROM EMP T1,
          (SELECT JOB, MAX(SAL) AS MAX_SAL 
            FROM EMP
            GROUP BY JOB) T2
WHERE T1.JOB = T2.JOB
AND T1.SAL = T2.MAX_SAL;

EMPNO JOB          MAX_SAL
----- --------- ----------
7788 ANALYST         3000
7902 ANALYST         3000
7934 CLERK           1300
7566 MANAGER         2975
7839 PRESIDENT       5000
7499 SALESMAN        1600

6 rows selected

* 아래와 같이 분석함수를 사용하면 위와 똑같은 결과를 가져올 수 있다. --놀라운 것은 테이블을 한번만 읽어서 처리를 할 수 있다는 것이다.

select empno, job, max_job_sal sal
from (
select 
         empno
       , job
       , sal
       , max(sal) over (partition by job) max_job_sal 
from emp ) 
where sal = max_job_sal;
 
EMPNO JOB              SAL
----- --------- ----------
7788 ANALYST         3000
7902 ANALYST         3000
7934 CLERK           1300
7566 MANAGER         2975
7839 PRESIDENT       5000
7499 SALESMAN        1600

6 rows selected



* 모든 사원의 월급의 평균에 가장 근접한 사원의 사번과 월급 출력
select empno, sal
from (
      select
              empno
            , min(abs_sal) over() min_sal
            , abs_sal
            , sal
      from (
            select
                    empno
                  , sal
                  , abs(sal - avg(sal) over()) abs_sal
            from emp) )
where abs_sal = min_sal;
 
 
SQL> select avg(sal) from emp;

  AVG(SAL)
----------
2073.21428

EMPNO       SAL
----- ---------
7782   2450.00
 

부서별로 일련번호를 붙이되 각각의 부서마다 1로 시작하는 일련번호를 붙인다.
SELECT
        deptno
      , empno
      , ename
      , row_number() over(PARTITION BY deptno ORDER BY deptno)
FROM emp;
 
DEPTNO EMPNO ENAME      ROW_NUMBER()OVER(PARTITIONBYDE
------ ----- ---------- ------------------------------
    10  7782 CLARK                                   1
    10  7839 KING                                    2
    10  7934 MILLER                                  3
    20  7369 SMITH                                   1
    20  7876 ADAMS                                   2
    20  7902 FORD                                    3
    20  7788 SCOTT                                   4
    20  7566 JONES                                   5
    30  7499 ALLEN                                   1
    30  7698 BLAKE                                   2
    30  7654 MARTIN                                  3
    30  7900 JAMES                                   4
    30  7844 TURNER                                  5
    30  7521 WARD                                    6

14 rows selected




* 부서별 월급이 많은 순서대로 순위구하기
SELECT
        empno
      , ename
      , sal
      , rank() over(PARTITION BY deptno ORDER BY sal DESC)
FROM emp;
 
--rank() over(PARTITION BY deptno ORDER BY sal DESC)를 
--rank() over(PARTITION BY deptno ORDER BY sal ASC)로 고치면 역순이 된다. 
--rank()는 동일 순위에 대하여 동일한 값을 리턴하지만 공백이 생긴다.
--즉, 1위에 해당된느 행이 2개이면 2는 존재하지 않고, 바로 3으로 넘어간다.

EMPNO ENAME            SAL RANK()OVER(PARTITIONBYDEPTNOOR
----- ---------- --------- ------------------------------
7839 KING         5000.00                              1
7782 CLARK        2450.00                              2
7934 MILLER       1300.00                              3
7788 SCOTT        3000.00                              1
7902 FORD         3000.00                              1
7566 JONES        2975.00                              3
7876 ADAMS        1100.00                              4
7369 SMITH         800.00                              5
7698 BLAKE        2850.00                              1
7499 ALLEN        1600.00                              2
7844 TURNER       1500.00                              3
7521 WARD         1250.00                              4
7654 MARTIN       1250.00                              4
7900 JAMES         950.00                              6



SELECT
        empno
      , ename
      , sal
      , dense_rank() over(PARTITION BY deptno ORDER BY sal DESC)
FROM emp;
 
dense_rank()는 rank()와는 달리 1위가 2개 존재하면 다음의 순위는 2가 된다.

EMPNO ENAME            SAL DENSE_RANK()OVER(PARTITIONBYDE
----- ---------- --------- ------------------------------
7839 KING         5000.00                              1
7782 CLARK        2450.00                              2
7934 MILLER       1300.00                              3
7788 SCOTT        3000.00                              1
7902 FORD         3000.00                              1
7566 JONES        2975.00                              2
7876 ADAMS        1100.00                              3
7369 SMITH         800.00                              4
7698 BLAKE        2850.00                              1
7499 ALLEN        1600.00                              2
7844 TURNER       1500.00                              3
7521 WARD         1250.00                              4
7654 MARTIN       1250.00                              4
7900 JAMES         950.00                              5


* TOP n개 가져오기
SELECT 
         empno
       , ename
       , sal
       , rank
FROM (
      SELECT
              empno
            , ename
            , sal
            , rank() over(PARTITION BY deptno ORDER BY sal DESC) rank
      FROM emp)
WHERE rank <= 3;    
경우에 따라서 rank(), dense_rank()를 사용한다. 

EMPNO ENAME            SAL       RANK
----- ---------- --------- ----------
7839 KING         5000.00          1
7782 CLARK        2450.00          2
7934 MILLER       1300.00          3
7788 SCOTT        3000.00          1
7902 FORD         3000.00          1
7566 JONES        2975.00          3
7698 BLAKE        2850.00          1
7499 ALLEN        1600.00          2
7844 TURNER       1500.00          3



* 피봇
SELECT
         deptno
       , max(CASE WHEN rank = 1 THEN sal END) rank_1
       , max(CASE WHEN rank = 2 THEN sal END) rank_2
       , max(CASE WHEN rank = 3 THEN sal END) rank_3
FROM (
      SELECT 
               sal
             , deptno
             , rank
      FROM (
            SELECT
                    sal
                  , deptno
                  , rank() over(PARTITION BY deptno ORDER BY sal DESC) rank
            FROM emp)
      WHERE rank <= 3 )
GROUP BY deptno      
 
DEPTNO     RANK_1     RANK_2     RANK_3
------ ---------- ---------- ----------
    10       5000       2450       1300
    20       3000                  2975
    30       2850       1600       1500
      

* 앞 뒤행 가져오기 lead() lag() * 입사일에 차이에 따른 전/후 월급차이
SELECT 
         empno
       , ename
       , sal - lag(sal, 1) over(ORDER BY hiredate) pre
       , sal
       , sal - lead(sal, 1) over(ORDER BY hiredate) NEXT
FROM emp;
EMPNO ENAME             PRE       SAL       NEXT
----- ---------- ---------- --------- ----------
7369 SMITH                    800.00       -800
7499 ALLEN             800   1600.00        350
7521 WARD             -350   1250.00      -1725
7566 JONES            1725   2975.00        125
7698 BLAKE            -125   2850.00        400
7782 CLARK            -400   2450.00        950
7844 TURNER           -950   1500.00        250
7654 MARTIN           -250   1250.00      -3750
7839 KING             3750   5000.00       4050
7900 JAMES           -4050    950.00      -2050
7902 FORD             2050   3000.00       1700
7934 MILLER          -1700   1300.00      -1700
7788 SCOTT            1700   3000.00       1900
7876 ADAMS           -1900   1100.00 


* 특정 범위내의 첫행/끝행
SELECT DEPTNO,ENAME,SAL,
       FIRST_VALUE(ENAME) OVER(PARTITION BY DEPTNO 
                               ORDER BY SAL DESC
                               ROWS BETWEEN UNBOUNDED PRECEDING 
                                        AND UNBOUNDED FOLLOWING) AS FV,
       LAST_VALUE(ENAME) OVER(PARTITION BY DEPTNO
                              ORDER BY SAL DESC
                              ROWS BETWEEN UNBOUNDED PRECEDING 
                                       AND UNBOUNDED FOLLOWING) AS LV                                        
FROM EMP;
DEPTNO ENAME            SAL FV         LV
------ ---------- --------- ---------- ----------
    10 KING         5000.00 KING       MILLER
    10 CLARK        2450.00 KING       MILLER
    10 MILLER       1300.00 KING       MILLER
    20 SCOTT        3000.00 SCOTT      SMITH
    20 FORD         3000.00 SCOTT      SMITH
    20 JONES        2975.00 SCOTT      SMITH
    20 ADAMS        1100.00 SCOTT      SMITH
    20 SMITH         800.00 SCOTT      SMITH
    30 BLAKE        2850.00 BLAKE      JAMES
    30 ALLEN        1600.00 BLAKE      JAMES
    30 TURNER       1500.00 BLAKE      JAMES
    30 WARD         1250.00 BLAKE      JAMES
    30 MARTIN       1250.00 BLAKE      JAMES
    30 JAMES         950.00 BLAKE      JAMES



* RATIO_TO_REPORT : 그룹에서 현재 행의 비율
SELECT JOB, ENAME, SAL, 
       RATIO_TO_REPORT(SAL) OVER(PARTITION BY JOB) AS RR
FROM EMP
ORDER BY JOB, ENAME;
 
JOB       ENAME            SAL         RR
--------- ---------- --------- ----------
ANALYST   FORD         3000.00        0.5
ANALYST   SCOTT        3000.00        0.5
CLERK     ADAMS        1100.00 0.26506024
CLERK     JAMES         950.00 0.22891566
CLERK     MILLER       1300.00 0.31325301
CLERK     SMITH         800.00 0.19277108
MANAGER   BLAKE        2850.00 0.34441087
MANAGER   CLARK        2450.00 0.29607250
MANAGER   JONES        2975.00 0.35951661
PRESIDENT KING         5000.00          1
SALESMAN  ALLEN        1600.00 0.28571428
SALESMAN  MARTIN       1250.00 0.22321428
SALESMAN  TURNER       1500.00 0.26785714
SALESMAN  WARD         1250.00 0.22321428


SELECT ENAME,SAL,
       COUNT(*) OVER(ORDER BY SAL
                     RANGE BETWEEN 149 PRECEDING 
                               AND 0 FOLLOWING) AS m_cnt
FROM EMP;
 
ENAME            SAL      M_CNT
---------- --------- ----------
SMITH         800.00          1
JAMES         950.00          2  ---> 950 - 150  ~  950 + 0, 만약 149로 범위를 줄이면 1로 된다. 
ADAMS        1100.00          2
WARD         1250.00          3
MARTIN       1250.00          3
MILLER       1300.00          3
TURNER       1500.00          1
ALLEN        1600.00          2
CLARK        2450.00          1
BLAKE        2850.00          1
JONES        2975.00          2
SCOTT        3000.00          4
FORD         3000.00          4
KING         5000.00          1


Posted by 서오석
,

우선 excel을 xml 포멧으로 다중 시트를 만들어야 하기 때문에 아래 포멧을 사용해야 한다.

xml 코드

위의 것은 간단한 예제 시트인데 설명을 하자면 다음과 같다.
<Author> : 작성자
<LastAuthor> : 마지막 작성자
<Created> : 생성일
<Company> : 회사
<Version> : 파일 버전
<Styles> : 셀의 style을 지정한다.
<Worksheet ss:Name="Sheet1"> 요게 시트의 구분이다 요 포멧으로 묶여 있는 애들이 1개의 시트가 된다.

xml에서 아래처럼 만들면

 <Worksheet ss:Name="Sheet1">
내용
</Worksheet>
<Worksheet ss:Name="Sheet2">
내용
</Worksheet>

엑셀파일을 엑셀로 열었을 때 다중시트가 생긴다.

설정할 때 주의해야할 것이 있는데

 <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="65535"
   x:FullColumns="1" x:FullRows="1">

요기서 한 시트에 사용할 컬럼과 최대 row를 지정하는데
만약 엑셀의 데이터를 싣는
<Row> 의 갯수나 <cell>의 갯수가 저기 설정한 갯수보다 많으면

파일이 열리지 않는다.

일종의 최대 크기를 지정한다고 보면 된다.

'개발 이야기 > 유용한 Coding' 카테고리의 다른 글

I/O Docs 구조  (0) 2014.08.18
I/O Docs 설치하기  (0) 2014.08.18
jdbc 사용 예제  (1) 2009.08.25
Struts2 + Spring2.0 엮을 때 나는 NullPointerException 해결방법  (1) 2009.02.02
FTP 파일 업로드  (0) 2008.12.01
Posted by 서오석
,

  SELECT TO_CHAR (SID) sid, serial# serialNumber,
   SUBSTR (TO_CHAR (last_call_et), 1, 6) executeSeconds, userName, machine,
   b.sql_text sqlText
  FROM v$session a, v$sqltext b
  WHERE username NOT IN ('SYSTEM', 'SYS')
   AND a.TYPE != 'BACKGROUND'
   AND a.status = 'ACTIVE'
   AND a.sql_address = b.address(+)
   AND a.sql_hash_value = b.hash_value(+)
  ORDER BY a.last_call_et DESC,
   a.SID,
   a.serial#,
   b.address,
   b.hash_value,
   b.piece
   

이 쿼리를 돌리면 현재 오라클에서 돌고 있는 쿼리와 수행 시간을 알 수 있다.

다만 저 쿼리를 돌리는 계정이 $session과 $sqltext 를 확인할 수 있는 권한이 있어야 한다.
Posted by 서오석
,

select table_name, num_rows * avg_row_len / 1024 / 1024 mb
from user_tables

이렇게 하면 각 테이블 별로 하드 디스크 용량이 얼마나 되는지 확인이 가능하다.
Posted by 서오석
,