2009년 11월 24일 화요일
xps-m1210 노트북 키스킨 구입은...
구입을 하려면 http://www.rearth.com/mall/m_mall_detail.php?ps_ctid=&ps_goid=50&ps_page=1 에서 구입하자.
2009년 11월 5일 목요일
server update 건
Package Arch Version Repository Size
=============================================================================
Installing:
kernel i686 2.6.9-89.0.11.EL update 13 M
kernel-devel i686 2.6.9-89.0.11.EL update 4.0 M
kernel-smp i686 2.6.9-89.0.11.EL update 12 M
Updating:
acl i386 2.2.23-5.4.el4 update 59 k
acpid i386 1.0.3-2.el4_7.1 update 20 k
at i386 3.1.8-82.el4 update 54 k
audit i386 1.0.16-4.el4 update 202 k
audit-libs i386 1.0.16-4.el4 update 39 k
authconfig i386 4.6.10-7.el4 update 289 k
autofs i386 1:4.1.3-238 update 296 k
bash i386 3.0-21.el4 update 1.7 M
bind i386 20:9.2.4-30.el4_8.4 update 583 k
bind-libs i386 20:9.2.4-30.el4_8.4 update 569 k
bind-utils i386 20:9.2.4-30.el4_8.4 update 142 k
binutils i386 2.15.92.0.2-25 update 2.9 M
bzip2 i386 1.0.2-14.el4_7 update 47 k
bzip2-libs i386 1.0.2-14.el4_7 update 34 k
cpio i386 2.5-16.el4 update 47 k
cpp i386 3.4.6-11 update 1.6 M
crash i386 4.0-5.0.0.2 update 1.4 M
cryptsetup i386 0.1-6 update 441 k
cups-libs i386 1:1.1.22-0.rc1.9.32.el4.3 update 114 k
cvs i386 1.11.17-11.el4 update 1.2 M
device-mapper i386 1.02.28-2.el4 update 577 k
dhclient i386 7:3.0.1-65.el4_8.1 update 227 k
dhcp i386 7:3.0.1-65.el4_8.1 update 566 k
dhcp-devel i386 7:3.0.1-65.el4_8.1 update 109 k
dhcpv6_client i386 0.10-24_EL4 update 71 k
diffutils i386 2.8.1-12.1.el4 update 204 k
diskdumputils i386 1.4.1-7 update 111 k
dmraid i386 1.0.0.rc14-9_RHEL4_U7.el4 update 692 k
e2fsprogs i386 1.35-12.24.el4 update 784 k
e2fsprogs-devel i386 1.35-12.24.el4 update 490 k
file i386 4.10-8.el4 update 259 k
freetype i386 2.1.9-10.el4.7 update 765 k
freetype-demos i386 2.1.9-10.el4.7 update 96 k
freetype-devel i386 2.1.9-10.el4.7 update 534 k
freetype-utils i386 2.1.9-10.el4.7 update 27 k
gcc i386 3.4.6-11 update 4.4 M
gcc-c++ i386 3.4.6-11 update 2.4 M
gdb i386 6.3.0.0-1.162.el4 update 2.6 M
glibc i686 2.3.4-2.43 update 6.0 M
glibc-common i386 2.3.4-2.43 update 16 M
glibc-devel i386 2.3.4-2.43 update 1.9 M
glibc-headers i386 2.3.4-2.43 update 589 k
glibc-kernheaders i386 2.4-9.1.103.EL update 696 k
grep i386 2.5.1-32.4.el4 update 170 k
hal i386 0.4.2-8.EL4 update 153 k
hotplug i386 3:2004_04_01-7.10 update 62 k
hwdata noarch 0.146.33.EL-17 update 481 k
iproute i386 2.6.9-4.el4 update 683 k
ipsec-tools i386 0.3.3-7.el4_7 update 221 k
iptables i386 1.2.11-3.2.RHEL4 update 171 k
iputils i386 20020927-22.el4 update 106 k
jwhois i386 3.2.2-15.el4 update 78 k
kernel-smp-devel i686 2.6.9-89.0.11.EL update 4.0 M
kernel-utils i386 1:2.4-18.el4 update 1.1 M
krb5-devel i386 1.3.4-62.el4 update 826 k
krb5-libs i386 1.3.4-62.el4 update 486 k
krb5-workstation i386 1.3.4-62.el4 update 827 k
kudzu i386 1.1.95.26-1 update 333 k
kudzu-devel i386 1.1.95.26-1 update 144 k
lftp i386 3.0.6-8.el4 update 706 k
libacl i386 2.2.23-5.4.el4 update 16 k
libgcc i386 3.4.6-11 update 64 k
libpng i386 2:1.2.7-3.el4_7.2 update 155 k
libpng-devel i386 2:1.2.7-3.el4_7.2 update 169 k
libstdc++ i386 3.4.6-11 update 283 k
libstdc++-devel i386 3.4.6-11 update 1.6 M
libtiff i386 3.6.1-12.el4_8.4 update 255 k
libuser i386 0.52.5-1.el4.3 update 326 k
libxml2 i386 2.6.16-12.7 update 622 k
libxml2-devel i386 2.6.16-12.7 update 1.8 M
libxml2-python i386 2.6.16-12.7 update 441 k
libxslt i386 1.1.11-1.el4_7.2 update 436 k
logrotate i386 3.7.1-10.RHEL4 update 35 k
logwatch noarch 5.2.2-4.el4 update 133 k
lvm2 i386 2.02.42-5.el4_8.2 update 2.2 M
make i386 1:3.80-7.EL4 update 336 k
man-pages noarch 1.67-17.el4 update 3.9 M
mgetty i386 1.1.31-14.el4 update 428 k
mkinitrd i386 4.2.1.13-4 update 96 k
module-init-tools i386 3.1-0.pre5.3.11 update 357 k
net-snmp-libs i386 5.1.2-18.el4 update 1.8 M
net-tools i386 1.60-39.el4 update 341 k
netconfig i386 0.8.21-1.2 update 68 k
netdump i386 0.7.16-15 update 16 k
newt i386 0.51.6-10.el4_8.1 update 82 k
nfs-utils i386 1.0.6-93.EL4 update 194 k
nfs-utils-lib i386 1.0.6-10.el4 update 49 k
nscd i386 2.3.4-2.43 update 140 k
nss_ldap i386 253-7.el4 update 1.1 M
ntp i386 4.2.0.a.20040617-8.el4_8.2 update 1.2 M
openldap i386 2.2.13-12.el4_8.2 update 238 k
openssh i386 3.9p1-11.el4_7 update 326 k
openssh-clients i386 3.9p1-11.el4_7 update 349 k
openssh-server i386 3.9p1-11.el4_7 update 212 k
pam i386 0.77-66.26 update 1.9 M
pam-devel i386 0.77-66.26 update 86 k
pam_krb5 i386 2.1.17-8.el4 update 97 k
parted i386 1.6.19-23.EL update 490 k
perl i386 3:5.8.5-49.el4 update 12 M
perl-HTML-Parser i386 3.55-1.el4 update 91 k
popt i386 1.9.1-32_nonptl update 61 k
prelink i386 0.3.3-1.EL4 update 945 k
procps i386 3.2.3-8.17 update 190 k
python i386 2.3.4-14.7.el4_8.2 update 4.9 M
quota i386 1:3.12-7.el4 update 304 k
rhnlib noarch 2.1.4-7.el4 update 61 k
rpm i386 4.3.3-32_nonptl update 652 k
rpm-build i386 4.3.3-32_nonptl update 461 k
rpm-libs i386 4.3.3-32_nonptl update 784 k
rpm-python i386 4.3.3-32_nonptl update 82 k
samba i386 3.0.33-0.17.el4 update 16 M
samba-client i386 3.0.33-0.17.el4 update 4.5 M
samba-common i386 3.0.33-0.17.el4 update 7.6 M
samba-swat i386 3.0.33-0.17.el4 update 8.1 M
sed i386 4.1.2-7.el4 update 167 k
selinux-policy-targeted noarch 1.17.30-2.152.el4 update 126 k
sendmail i386 8.13.1-3.3.el4 update 577 k
sendmail-cf i386 8.13.1-3.3.el4 update 302 k
setup noarch 2.5.37-3.el4 update 32 k
shadow-utils i386 2:4.0.3-66.RHEL4 update 594 k
shared-mime-info i386 0.15-10.2.el4 update 68 k
sos noarch 1.7-6.6.el4 update 102 k
spamassassin i386 3.2.4-1.el4.1 update 1.0 M
specspo noarch 9.0.92-3 update 4.3 M
squid i386 7:2.5.STABLE14-4.el4 update 1.1 M
strace i386 4.5.16-1.el4_8.2 update 156 k
sudo i386 1.6.7p5-30.1.5 update 162 k
sysklogd i386 1.4.1-28.el4 update 68 k
sysstat i386 5.0.5-25.el4 update 117 k
system-config-network-tui noarch 1.3.22.0.EL.4.6-1.el4 update 1.4 M
tcl i386 8.4.7-4.el4 update 898 k
tcp_wrappers i386 7.6-37.9.el4 update 98 k
tcsh i386 6.13-10.el4 update 586 k
tmpwatch i386 2.9.1-1.el4.1 update 15 k
traceroute i386 1.4a12-27.EL4.1 update 25 k
tzdata noarch 2009m-1.el4 update 457 k
udev i386 039-10.29.el4 update 854 k
unzip i386 5.51-10.el4 update 142 k
usermode i386 1.74-2.el4.1 update 138 k
util-linux i386 2.12a-24.el4 update 1.5 M
vim-common i386 1:6.3.046-2.el4.1 update 3.4 M
vim-enhanced i386 1:6.3.046-2.el4.1 update 958 k
vim-minimal i386 1:6.3.046-2.el4.1 update 252 k
vixie-cron i386 4:4.1-57.el4 update 85 k
vsftpd i386 2.0.1-8.el4 update 123 k
xinetd i386 2:2.3.13-4.5.el4 update 128 k
xmlsec1 i386 1.2.6-3.1 update 147 k
xmlsec1-openssl i386 1.2.6-3.1 update 58 k
xorg-x11-Mesa-libGL i386 6.8.2-1.EL.63 update 389 k
xorg-x11-libs i386 6.8.2-1.EL.63 update 2.7 M
ypserv i386 2.13-19 update 130 k
zip i386 2.3-29.EL4 update 114 k
Installing for dependencies:
perl-Archive-Tar noarch 1.30-1.el4 update 47 k
perl-Compress-Zlib i386 1.42-1.el4 update 54 k
perl-IO-Zlib noarch 1.04-4.2.el4 update 16 k
Transaction Summary
=============================================================================
Install 6 Package(s)
Update 152 Package(s)
Remove 0 Package(s)
Total download size: 192 M
2009년 10월 31일 토요일
리눅스: 실시간프로세스확인
watch --interval=0.000000001 mysqladmin -utaegwan processlist
이런 것두 있다.. ㅡㅠㅡ;
watch -d -n 1 ftpwho
watch -d -n 1 w
watch -d -n 1 cat /proc/meminfo
꼽사리...load 수치 그래픽화
tload -d 1
[출처]. 고독을 즐기는 진정한 아웃사이더
EditPlus 단축키 모음
새 보통 문서 Ctrl+N 보통 텍스트 문서를 새로 작성합니다
새 HTML 페이지 Ctrl+Shift+N HTML
페이지를 새로 작성합니다
열기
Ctrl+O 기존 문서를 엽니다
인쇄
Ctrl+P 현재 열린 문서를 인쇄합니다
저장 Ctrl+S 현재 열린 문서를 저장합니다
FTP
업로드 Ctrl+Shift+S 파일을 FTP 서버로 업로드합니다
날짜 Ctrl+D 현재 날짜를 삽입합니다
날짜
길게 Ctrl+Shift+D 현재 날짜를 긴 형식으로 삽입합니다
들여쓰기 줄임
Ctrl+Shift+I 현재 줄이나 선택 부분의 들여쓰기를 줄입니다
줄 끝까지 지우기
Ctrl+Shift+Delete 현재 줄의 끝까지 지웁니다
단어 끝까지 지우기 Ctrl+Delete 현재
단어의 끝까지 지웁니다
줄 지우기 Alt+Shift+Delete 현재 줄을 지웁니다
단어
지우기 Alt+Delete 현재 단어를 지웁니다
글자 복제
Ctrl+- 이전 줄에서 글자를 복제합니다
줄 복제
Ctrl+J 현재 줄을 복제합니다
클립텍스트 찾기 F2 현재
단어를 대응하는 클립텍스트 항목으로 바꿉니다
들여쓰기 늘임 Ctrl+I 현재 줄이나 선택
부분의 들여쓰기를 늘입니다
삽입 모드
Insert 삽입 모드와 겹쳐쓰기 모드를 전환합니다
대소문자 뒤바꿈
Ctrl+K 선택한 텍스트에서 대소문자를 뒤바꿉니다
줄 합치기
Ctrl+Shift+J 선택한 줄들을 하나로 합칩니다
붙여넣기 Ctrl+V 클립보드의 내용을 붙여 넣습니다
다시 실행 Ctrl+Y 이전에 취소한 동작을 다시
수행합니다
모양 재구성 Ctrl+Shift+R 모양 기준 칸에 맞추어 단락의 모양을 다시
구성합니다
문서에서 찾기 Shift+F2 현재 단어를 현재 문서에서 찾은 확장된 단어로
바꿉니다
열려진 모든파일 찾기 Ctrl+F2 현재 단어를 열려진 모든 파일에서 찾은 확장된 단어로
바꿉니다
선택 시작/종료 Alt+Shift+B 선택영역 지정을 시작하거나 종료합니다
전체 선택 Ctrl+A 문서 전체를
선택합니다
칸 단위 선택 시작/종료Alt+Shift+E 칸 단위 선택영역 지정을 시작하거나
종료합니다
줄 선택 Ctrl+R
현재 줄을 선택합니다
소문자로 Ctrl+L 선택한 텍스트를 소문자로
변환합니다
대문자로 Ctrl+U 선택한 텍스트를 대문자로 변환합니다
실행
취소 Ctrl+Z 마지막으로 한 동작을 취소합니다
브라우저로 보기 Ctrl+B 현재 열린 문서를
웹 브라우저에 읽어 들입니다
모두 숨김 Ctrl+Alt+Num - 들여쓰기된 텍스트를
모두 숨깁니다
표시 Ctrl+Num + 현재 줄에 생략된 코드를 표시합니다
모두 표시 Ctrl+Alt+Num + 생략된 텍스트를 모두 표시합니다
한 단계 표시
Ctrl+Shift+Num + 전체 코드를 한 단계 표시합니다
클립텍스트/디렉토리로 가기F5
포커스를 클립텍스트/디렉토리와 문서 사이에서 전환합니다
코드 생략 사용 Ctrl+Shift+F 코드 생략
기능을 켜거나 끕니다
전체화면 모드 Alt+Shift+0 전체화면 모드를 켜거나 끕니다
커서
위치 표시 Alt+Shift+C 커서 위치 표시를 보이거나 숨깁니다
탭과 공백 기호
Alt+Shift+I 탭과 공백 기호를 보이거나 숨깁니다
줄 번호
Ctrl+Shift+L 현재 열린 문서에서 줄 번호를 보이거나 숨깁니다
URL 강조
Alt+Shift+U URL과 전자 메일 주소를 강조합니다
찾기 Alt+F3 지정한
문자열을 찾습니다
다음 찾기
F3 다음 일치하는 말을 찾습니다
이전 찾기
Shift+F3 이전에 일치하는 말을 찾습니다
바꾸기 Ctrl+H 지정한 문자열을 다른 문자열로 바꿉니다
괄호
찾기 Ctrl+] 짝을 이루는 괄호를 검색합니다
다음 단어 찾기
Ctrl+F3 현재 단어나 선택한 텍스트와 다음에 일치하는 말을 찾습니다
이전 단어 찾기
Ctrl+Shift+F3 현재 단어나 선택한 텍스트와 이전에 일치하는 말을 찾습니다
URL로 가기
F8 강조된 URL로 찾아갑니다
자동 줄 바꿈 Ctrl+Shift+W
현재 열린 문서에서 자동 줄 바꿈 기능을 켜거나 끕니다
최근 작업 창 F12 바로 전에
작업한 문서 창으로 이동합니다
창 목록
F11 모든 문서 창들의 목록을 보여줍니다
다음 창
Ctrl+Tab 다음 문서 창으로 이동합니다
이전 창
Ctrl+Shift+Tab 이전 문서 창으로 이동합니다
[출처]. jinclown님의 노트 , "Programmer"님의 'Editplus에서 자주 쓰는 기능 정리'도 볼만함
2009년 10월 22일 목요일
디아블로2 퀘스트
| 퀘스트 1 : 덴 오브 이블 Den of
Evil
카샤의 로그 정찰병에 의해 알려진 바로는 마을근처에 있는 동굴(Den of Evil)은 수많은
몬스터들로 채워져 있다한다. Tip : 퀘스트는 아카라와의 대화에서 퀘스트를 받을 수있으며, 해결후에도 아카라에게
보상(스킬포인트 1)을 받을 수 있다. | |
| 퀘스트 2 : 베리얼 그라운드
Sisters' Burial Grounds
카샤의 로그정찰병에 의해 발견되어진 수도원 묘지안에 있는 한 몬스터를 죽여야 한다. Tip : 퀘스트를 해결하면 카샤가 보상으로 한명의 로그용병을 공짜로
붙여준다. | |
| 퀘스트 3 : 케인을 찾아서 The
Search for Cain
트리스트럼(Tristram)에 갇혀있는 케인(Deckard Cain)을 구출하는 것이 퀘스트의
목표이다. 로그캠프에 와있던 데커드케인이 감사와 함께 앞으로 모든 아이템의 감정을 공짜로 해주겠다고 한다. | |
| 퀘스트 4 : 포가튼 타워 The
Forgotten Tower
잊혀진 탑에 살며 처녀의 피로 목욕해 젊음을 유지한다는 카운테스(Countess)를 죽여야
한다. 카운테스는 탑 곳곳에 많은 양의 골드를 숨겨놓고 있는데 퀘스트 해결에 대한 보상으로 가지면 된다. | |
| 퀘스트 5 : 거래의
도구 Tools of the Trade
엑트1의 대장장이인 찰시가 주는 퀘스트이다. 퀘스트 해결에 대한 보답으로 찰시는 어떤 아이템이든 한개의 아이템에 대해 마법을 부여해
준다. | |
| 퀘스트 6 : 자매교의 학살자
Sisters to the Slaughter
데커드 케인으로 부터 주어지는 퀘스트 이다. 마을에 돌아온후 케인과 대화하고 케인옆에 있는 워리브를 만나면 엑트 2로 데려다 준다. |
| 퀘스트 1 : 라다먼트의 은신처
Radament's Lair
술집 앞에 가보면 울고 있는 아트마를 발견할 수 있는데 첫번째 퀘스트는 아트마의 부탁대로 그녀의 남편과
아들의 복수를 해주는 것이다. 이 퀘스트의 보상은 스킬포인트 1점이다. 또 라다먼트의 보물상자안에 있는 호라드릭 스크롤은 다른 퀘스트와도 연결된다. | |
| 퀘스트 2 : 호라드릭 스태프 The
Horadric Staff
퀘스트1의 호라드릭 스크롤을 데커드 케인에게 줌으로써 시작된다. 드라이 힐 아래에 있는 죽은자의 방(Halls of the Dead)에서 호라드릭 큐브를 찾은
후, 매우 길고도 지루한 퀘스트 이지만 이번 퀘스트를 넘기지 않고는 마지막 퀘스트를 수행할 수 없게 연결
되어있으므로 | |
| 퀘스트 3 : 더럽혀진 태양 The
Tainted Sun
두번째 퀘스트를 수행중 갑자기 하늘이 어두워진 적이 있을 것이다. 크로 바이퍼 템플 2층의 제단을 클릭하면 일식이 사라진다. | |
| 퀘스트 4 : 비밀의 성역 The
Arcane Sanctuary
드로그난(Drognan)과의 대화를 통해 시작 되는 퀘스트이다. 이번 퀘스트 역시 퀘스트5 와 중복되어 있는데 무덤의 단서를 찾아야 한다. | |
| 퀘스트 5 : 서모너 The
Summoner
Arcane Sanctuary의 한 곳에서 서모너를 만났다면 그를 죽이면 된다. | |
| 퀘스트 6 : 일곱개의 무덤 The
Seven Tombs
퀘스트 5의 마지막에 열린 빨간색 포털을 통해 마기의 계곡으로 이동하면 황량한 사막과 만나게 된다. 사막은 절벽에 둘러쌓여 있는데 절벽을 따라가보면 지하 무덤으로 들어가는 여러개의 입구를 만날 수 있다. 모든 무덤의 입구에는 각기 다른 심벌이 세겨져 있는데 퀘스트5를 마치고 마을로 갔을때 얻은 정보가 퀘스트 로그 화면에 나타난다. 퀘스트로그 화면에 나타난 심벌과 같은 심벌이 세겨진 무덤으로 들어가면 된다. 진짜 무덤의 끝에는 호라드릭 오리피스가 나타난다. 이곳에 호라드릭스태프를 놓으면 감춰진 벽이 뚫리며 엑트2의 보스인 듀리엘과 만날 수 있다. 듀리엘을 죽이고 옆방으로 이동하면 대천사 티라엘이 묶여있는데 그를 풀어주고 마을로 돌아 가면 된다. 마을에서 순서대로 NPC를 만나야만 다음 엑트로 이동 할 수 있다. |
| 퀘스트 1 : 황금 조각 새 The
Golden Bird
이 퀘스트는 엑트3의 전투를 통해 제이드 인형(Jade Figurine)을 얻고나서 열리게
된다. 퀘스트의 보상으로 포션 오브 라이프 를 알코에게서 얻을 수 있다. | |
| 퀘스트 2 : 고대 종교의 검
Blade of the Old Religion
Hratli와 대화를 통해 시작 되는 퀘스트이다. 오무스를 거쳐 아샤라에게 가면 한명의 용병을 공짜로 고용시켜 준다. | |
| 퀘스트 3 : 카림의 의지
Khalim's Will
케인에게서 주어지는 이번 퀘스트는 엑트3의 목적인 메피스토와 연결 된다. 스파이더 포리스트에 있는 스파이더 캐빈에서 '카림의 눈'(Khalim's Eye)을 찾을 수
있다. 모두 찾았다면 네개의 아이템을 큐브에 넣고 합성하면 하나의 새로운 아이템인 카림의 의지가 만들어 진다. | |
| 퀘스트 4 : 람 에센의 무덤 Lam
Esen's Tome
알코가 주는 이 퀘스트는 메피스토와는 아무런 상관이 없는 퀘스트이다. 책을 찾아준 대가로 알코로 부터 5점의 스테이트 포인트를 받는다. | |
| 퀘스트 5 : 어둠의 사원 The
Blackened Temple
오무스(Ormus)에게서 주어지는 이 퀘스트는 퀘스트 3을 완수 하기위해 넘겨야
한다. 퀘스트의 목적이 불분명하다. 이미 말했듯 3번째 퀘스트와 중복된다. | |
| 퀘스트 6 : 가디언 The
Guardian
오무스가 비관적인 상황을 설명하면서 시작된다. 메피스토를 죽이면 소울스톤을 떨어뜨리는데 엑트4의 퀘스트 2와 연관 있으므로 챙겨두자. |
| 퀘스트 : 타락한 천사 The
Fallen Angel
엑트2에서 풀어주었던 대천사 티라엘에 의해 주어진다. 힘든 만큼 보상도 크다. 티라엘은 감사의 표시로 2개의 스킬포인트를 준다. | |
| 퀘스트 : 헬포지 The
Hellforge
메피스토가 죽으며 떨어뜨린 소울스톤을 파괴하는것이 이번 퀘스트의 목적이다. 소울 스톤이 파괴되면 많은 양의 퍼펙트 보석과 룬이 떨어진다. | |
| 퀘스트 : 공포의 끝 Terror's
End
티라엘이 이번 퀘스트를 주는데 혼돈의 신전(Chaos Sanctuary)에 있는 디아블로를 죽여야
한다. 오리지널 디아블로2때 디아블로를 죽이면 그 게임은 카운트 다운이 시작되며 몇초후 게임이
종료되었다. |
| 퀘스트 1 : 해로개쓰의 위기 Siege
On Harrogath 첫번째 퀘스트는 대장장이인 라주크(Larzuk)가 준다. Baal과 싸우울 수 있는 전사임을 증명하라면서 그의 부하 중 하나인 'Shenk the Overseer'를 찾아서 없애라고 한다. 마을 끝에 있는 게이트를 통해 나가면 'BLOODY FOOTHILLS' 이라는 지역이 펼쳐져 있다. 엑트 4에서와는 다른 새로운 종류의 몬스터들과 싸우며 긴 계단앞에 이르면 'Shenk the Overseer'를 만날 수 있다. 라주크를 만나면 플레이어가 가지고 있는 아이템 중 하나에 소켓을 추가해주며, Larzuk의 대장간을
보다 적은 돈으로 사용할 수 있게 해준다. | ||
| 퀘스트 2 : 아리앗 산의
구출 Rescue on Mount Arreat 마을의 중앙에 있는 Qual-Kehk에게서 받게되는 퀘스트이다. 'BLOODY FOOTHILLS'를 지나면 'The Frigid Highlands'란 지역이 나온다. 이 Frigid Highland에 포로로 잡혀있는 15명의 바바리안 병사들을 구출해 주면 임무가 완성된다. 모두 세곳에 5명씩의 바바리안들이 갖혀있는데 그들이 갖힌 감옥의 입구를 파괴하면 바바리안들이 포털을 열고 사라진다. 마을로 돌아가면 'Qual-Kehk'은 이번 퀘스트의 보답이라고 하면서 자신이 보관하고 있던 3개의
룬(Rune)인 Tal Rune, Ral Rune, Ort Rune을 준다. | ||
| 퀘스트 3 : 얼음 감옥 Prison
of Ice Malah에 의해 시작되는 이번 퀘스트의 목적은 프로즌 리버(Frozen River)에 갇혀있는 실종된 연금술사 앤야(Anya)를 찾아 마을로 데려오는 것이다. 퀘스트2를 수행하였던 지역인 'The Frigid Highlands'를 지나가면 'The Arreat Plateau'가 나오고 그곳에서 다시 'Crystalline Passage'로 통하는 입구를 찾아 그 속으로 들어 가야한다. 그 안은 얼음 동굴처럼 구성되어있는데 다양한 몬스터가 진을 치고있다. 다시 프로즌 리버(Frozen River)로 내려갈 수 있는 입구를 찾을 수 있고 그 끝에는 앤야가 있다. 주변의 몬스터를 모드 처치하고 앤야를 클릭하면 앤야가 마라에게서 자신의 몸을 녹일 포션을 받아 주길 바란다는 부탁을 한다. 마라에게서 받은 포션을 앤야에게 주면 퀘스트는 마무리 된다. 마라에게로 가면 마라는 'Scroll of Resistance'라는 스크롤을 주는데 이것을 오른쪽으로
클릭하면 모든 저항력을 +10 올려준다. | ||
| 퀘스트 4 : 배신의 장소 해로개쓰
Betrayal of Harrogath 앤야는 Baal에 의해 조종되는 'Nihlathak'을 막아보려고 했지만 오히려 그에게 당해 얼음 동굴 안에 갖혔다며 그가 은신하고 있는 Nihlathak's Temple에서 그를 찾아 제거해 달라고 하며 자신의 옆에 Nihlathak's Temple로 통하는 빨간 포털을 열어준다. 니라타의 템플에는 죽음 시체들이 널려있지만 곧 살아나 플레이어를 공격해온다. 이들은 'Halls of Anguish'로 들어가는 입구를 지키는데 이 좀비들의 대장이 바로 핀들스킨이다. Halls of Anguish로 들어가서 다시 Halls of Pain 을 거쳐야만 니라타가 숨어있는 'Halls of Vaught'로 갈 수 있다. 니라타를 죽인후 앤야를 만나면 플레이어에게 감사하 는 표시로 플레이어가 소유하고 있는 아이템중 하나에 플레이어의 이름을 새겨넣어 준다. | ||
| 퀘스트 5 : 고대인의 통과의례
Rite of Passage Qual-Kehk에 의해 시작되는 이 퀘스트는 다른 퀘스트들과는 달리 레벨 제한이 있다. 자격없는 자들은 접근할수 없도록, 고대인들에 의해 보호받고 있는 곳이라는 아리앗 정상에 가서 고대인3명을 죽여야만 한다. 크리스탈라인을 지나 그래이셜 트레일에서 프로즌 툰드라를 지나 고대인의 길을 걷다보면 Arreat Summit의 입구에 이르게된다. 이 입구로 들어가면 입구가 닫히며 Baal에게 갈 수 있는 유일한 길목을 지키고 있는 동상처럼 서있는 세명의 고대인을 보게된다. 립어택, 워크라이, 훨윈드등 바바리안의 기술을 사용하며 공격해오는 이들을 한번의 포털도 열지않고 무찔러야만 한다. 이들을 모두 죽이면 한꺼번에 많은 양의 경험치를 얻을 수 있으며 앞에서 밝힌 바와 같이 레벨의 제한이
있다.
| ||
| 퀘스트 6 : 파멸의 전야 Eve of
Destruction 고대인의 시험에 통과한후 바로 뒤쪽벽으로부터 'World Stone Keep'으로 갈 수 있다. 'The Worldstone Keep'은 지하 3층으로 이루어져 있으며 각각의 층마다 많은 몬스터가 기다리고 있다. 이들을 물리치며 가면 마침내 'Throne of Destruction'으로 내려가는 입구를 찾을 수 있는데 이곳에서 부터 바알의 웃음 소리가 간혹들리며 웃음속에는 독이 포함되어 있다. 여기서 만나게 되는 바알은 'The Worldstone Chamber'입구에 지키고 앉아 액트1부터 액트5까지 대표적인 몬스터들을 소환해 낸다. 이들을 물리친후 도망치는 바알을 쫓아 'The Worldstone Chamber'로 들어가면 바알과 대결 할 수 있게된다. 특징있는 바알만의 공격을 물리치고 바알을 죽이면 대천사 티라엘이 내려와 플레이어에게 바알을 죽여줘서
고맙다는 인사를 한다. |
2009년 7월 21일 화요일
PHP 프로그래밍을 위한 Zend Studio 사용하기
원문출처. Using Zend Studio for PHP Programming
참고영상. PHP에 테스트 주도 개발 쉽게 도입하기
PHP 프로그래밍을 위한 Zend Studio 사용하기
저자 : Michael J. Ross
역자 : 진영학
원문 : Using Zend Studio for PHP Programming
Java, C++ 또는 이와 비슷한 언어를 사용하는 데스크톱 응용 소프트웨어 개발자들은 다양하고 강력한 통합 개발 환경(IDEs: Integrated Development Environments)을 선택할 수 있는 것에 익숙하다. 각 IDE는 에디터의 여러 가지 기능, 소스 레벨 디버거, 소스 코드 관리, 그리고 내장 FTP 클라이언트 등을 함께 제공한다. 여러 가지 유용한 기능을 제공하는 IDE들의 모든 특징과 기능을 완전히 익히는 데에는 약간의 시간이 걸릴 수도 있다. 그러나 대부분의 프로그래머는 시간과 노력을 잘 투자함으로써 더 견고한 많은 코드를 더 빨리 개발할 수 있다.
반면, 웹 개발자들은 프로젝트와 자신의 건강을 챙길 수 있는 IDE를 긴 세월동안 경험하지 못하고 있다. 그러나 지난 몇 년 동안 시대는 변했고 현재 많은 소프트웨어 회사는 PHP와 같은 웹 언어에 많은 관심을 가지고 있다.
이러한 명백한 예의 한 가지가 캘리포니아 Cupertino에 본사를 둔 Zend사의 Zend Studio이다. Zend사는 자신을 “The PHP Company"라고 광고하는데, 이것은 회사가 1997년부터 현재까지 PHP 실행 엔진인 Zend 엔진의 개발과 공헌을 포함해서 PHP를 계속해서 지원하는 역사를 가지기 때문이다.
Zend사가 제공하는 PHP IDE용 Zend Studio for Eclipse의 최신 업데이트는 6.0버전이다. 처음 만들어질 때부터 이 제품은 매년 기능이 발달하고 널리 사용되는 오픈 소스 플랫폼인 Eclipse를 사용하고 있으며 또한 PHP Development Tools(PDT) 프레임워크를 사용한다.
Zend Studio 6.0은 2008년 1월에 5.5.1버전의 출시와 함께 계속해서 Zend사에 의해 유지 및 지원이 될 5.5버전의 모든 기능을 포함하며, 이 제품이 새로운 세대임을 나타낸다. Zend사에서 홍보를 담당하며 두 제품의 정보를 제공하는 Jeff Koo는 5.5버전의 유지를 계속할 것임과 동시에 고객들이 그들의 계획에 따라 제품을 바꾸도록 하는 Zend사의 계획을 언급했다. 5.5버전은 Zend Studio의 마지막 non-eclipse 제품이 될 것이다.
제품군, 요구사항, 가격
Zend Studio는 Standard와 Professional의 두 가지 에디션이 있다. Standard는 완전한 소스 코드 에디터(PHP4와 5를 지원함)와 로컬 PHP 스크립트를 위한 상호작용이 가능한 디버거를 제공한다. Professional은 아래에 자세하게 설명한 코드 분석, 최적화, 버전 컨트롤, 그리고 소스 관리를 포함하는 다양한 기능을 제공한다.
이 리뷰에서는, 두 가지 제품군을 모두 검토할 것이지만 Professional에 초점을 둘 것이다.
취향에 따라 Eclipse 자체는 현재 63MB부터 153MB까지 다양한 설치 옵션을 제공하고 있어 크기에 관해서는 이것은 분명 작은 제품이 아니다. Zend Studio의 새로운 버전이 Eclipse와 PDT를 포함한 것이 5.5보다 설치 파일이 더 커지게 된 주된 이유인 것 같다. 즉, 290MB 이상 대 약 68MB이다. 디스크에 설치될 때, 5.5는 157MB를 차지하는 반면에 6.0은 433MB를 차지한다. 대부분의 응용 소프트웨어가 시스템 요구사항에서 밝히는 것과 달리, Zend사에서는 디스크 사용 용량에 관해서 어떠한 언급을 하지 않는다.
그러나 시스템 요구사항 페이지는 Zend Studio가 Intel x86 또는 PowerPC G4, G5 프로세서와 함께 Windows 2000, XP, 2003, 그리고 Vista(32bit에서만), Linux x86 and x86-64, 그리고 Mac Os X 10.4에서 사용이 가능함을 명시한다. Zend 플랫폼을 위한 시스템 요구사항 또한 제공이 된다.
1년간 지원하는 가입 조건으로 Professional의 가격은 399달러이고 3년간의 지원에는 717달러이다. 2008년 1월 22일 이후 첫 30일간은 가격이 299달러와 498달러이다. Standard는 99달러로 책정이 될 것이며 기술 지원은 포함이 되지 않는다. 하지만 제품 구입자는 항상 Professional로 업그레이드가 가능하다. 사용자가 Eclipse를 사용하는 것에 관심이 있는가에 따라 5.5 또는 6.0버전을 선택할 수 있다.
설치와 시작하기
특정 운영체제에 해당하는 Zend Studio 설치 파일을 다운로드한 후, 제품을 인스톨하는 데 여러 가지 단계가 있다. 설정과 설치가 두 가지 주요한 것들이다. 설정에서, 브라우저에 Zend Firefox와 Internet Explorer 툴바를 설치할 수 있도록 선택할 수 있다. 또한 설치 디렉터리와 Zend Studio와 연결되는 파일 확장자를 명시할 수 있다. Zend Studio의 최신 버전에서는 13단계의 과정을 거치는 5.5보다 설치가 더 간단하다. 게다가 전체 PHP 매뉴얼의 설치가 더 이상 옵션이 아니다. 그러나 매우 쉽게 이용 가능한 매뉴얼을 설치하는 것은 확실히 그것이 차지하는 작은 공간을 생각해 보면 가치가 있다. 마지막으로 5.5에서는 Zend Core(추가 확장, 라이브러리, 원거리 디버깅 등 포함)와 Zend Platform(PHP 응용소프트웨어 서버)을 선택할 수 있다.
Eclipse는 시작시 4321포트를 이용해서 IP주소 192.168.255.255에 접속하려고 한다. 이것은 제품의 라이선스 보호를 위한 일부분일 수 있다. 적어도 30일 간의 평가 기간 동안은 접속하지 않아도 제품의 기능을 사용하는 데 문제가 없다. 또한, 처음 시작할 때, Zend Studio의 두 가지 버전 모두 사용 팁을 제공한다. 원한다면 비활성화 가능하다. 5.5버전은 처음에 제품의 이전 버전이 있는지 확인한다. 6.0버전은 그런 것 같지 않다.
만약 로컬 PHP 스크립트를 디버깅하려고 할 때, 대부분의 사용자는 Zend Studio에서 어떤 작업을 하기 전에 서버가 살아있는지 확인하는데, 때때로 이유가 무엇이든 간에 로컬 웹 서버를 다운시킨다. 반면 “The selection cannot be launched, and there are no recent launches."와 같은 이해하기 어려운 에러 메시지를 받을 수 있다. 더 많은 것을 설명해주는 "Web server not running."와 같은 메시지는 덜 혼돈스럽다(특히 만약 사용자가 강조된 몇 줄의 코드만을 선택했을 경우).
사용자 인터페이스와 환경설정
대부분의 통합개발도구에서 인터페이스가 명쾌함과 적절한 구조를 가지는 것이 아주 유용하며 프로그래머가 새로운 도구를 사용할 것인지 아닌지를 판단하고 이전 개발 환경으로 다시 되돌아가려 하지 않도록 하는데 중요한 사항이다.
먼저 Zend Studio 5.5의 인터페이스를 검토해 보고 Eclipse버전(6.0버전)과 함께 그것이 어떻게 변화되었는지 간단히 알아보자. 두 가지 버전에서 사용자 인터페이스는 패널, 여러 개의 창, 메뉴와 도구 모음을 구성하는 여러 가지 컴포넌트를 가진다. 창들은 크기와 위치가 조정되어질 수 있으나 기본적으로 중앙에 위치한 편집 창은 다른 창들이 주위에 위치하고 현재 디버깅되어지는 PHP 스크립트를 포함한다.
[그림 1] Zend Studio 5.5 - 사용자 인터페이스
5.5버전에서는 non-Editor 창([그림 1]의 왼쪽 상단에서 시작해서 시계 반대 방향으로 설명함)들이 다음과 같이 디폴트로 설정된다. 파일 관리자(File Manager)는 사용자가 파일, 프로젝트 SQL 서버를 처리할 수 있도록 한다. 파일 관리자는 많은 컴포넌트의 정보를 끊임없이 알아내어 프로젝트 관리를 쉽게 할 수 있어 대규모 프로젝트에 필수적이다. 그 아래 패널은 파일, 프로젝트, PHP inspector를 위한 inspectors 창이다. 왼쪽 아래에는 디버그 메시지 창(Debug Messages window)이 있다. 그 오른쪽에는 변수, 감시점(watchpoint) 등을 감시하는 디버그 창이 있다. 좋은 IDE에서와 같이, 코드를 쉽게 만들고 변수의 변화 값을 감시할 수 있는 것은 엔트리 값을 만드는 데 가치가 있다. 코드 창의 오른쪽에서는 앞에서 이야기한 디버그 출력 창이 있다.
나는 부주의하게 몇 개의 창들을 조정하고 어지럽혀 놓은 후에 기본 레이아웃을 저장하는 방법을 찾았다. 프로젝트로 현재 작업창을 저장하지 않은 채 Zend Studio를 다시 시작하였지만 통하지 않았다. View > Restore Default Layout는 그러한 상황에 맞는 편리한 기능이다. 분명히 창들은 각각의 왼쪽 상단에 있는 조절점을 이용해서 새로운 위치로 드래그 될 수 있지만 꽤 다루기 힘들어서 초기 레이아웃을 저장할 수 없었다.
[그림 2]에서 보는 바와 같이 내장된 디버그 데모를 실행할 때 이러한 여러 가지의 창들을 볼 수 있다.
[그림 2] Zend Studio 5.5 - 디버그 데모
6.0버전에서는 처음에 아래 [그림 3]에서 보는 바와 같이 환영 화면을 볼 수 있다. 새로운 프로젝트를 시작하기 위해 링크 중의 하나를 선택함으로써 디버그 데모를 실행하는 [그림 4]와 같이 주 개발 창으로 갈 수 있다.
[그림 3] Zend Studio 6.0 - 환영 화면
[그림 4] Zend Studio 6.0 - 디버그 데모
새로운 Eclipse 버전에서 사용자 인터페이스는 경험 많은 사용자들이 초기에 전보다 6개 더 적은 도구모음 아이콘으로 어쩌면 더 깔끔하고 덜 번잡하다고 생각하는 외관을 가진다(하지만 메뉴 수는 1개 더 많다.). 현재 색상은 더 밝아졌으며 인터페이스는 전체적으로 더 우아한 분위기가 난다. 특정 도구모음 아이콘을 같은 리본에 위치시킴으로써 공간이 절약되어 메뉴바 아래에 있는 아이콘들이 난잡해지지 않도록 한다.
프로젝트를 생성하기 전에 또는 만들어진 파일로 작업하려면 환경 설정을 해야 한다. 이것은 항상 제품의 가능성과 사용자가 제품을 어떻게 가장 잘 이용할 수 있는지에 대해 더 많이 학습함에 따라 미래에 조정되어질 수 있다. 5.5버전에서는, 이것은 Tools > Preferences를 통해 실행한다. 그림5에서 보는 바와 같이, Zend Studio의 desktop, editor, code completion, colors and fonts, debugger, Zend Platform, keymaps, file types, templates, source control, dialog boxes, 그리고 SQL을 설정할 수 있다. 예를 들어, 프로그래머가 이미 가장 좋아하는 편집기 내에서 그들이 수행하는 많은 동작을 위한 키 배열의 많은 목록을 내면화한 프로그래머들은 Zend Studio의 에디터 내에서 같은 키 배열을 설정 및 저장할 수 있다. 불행히도, 몇 개의 에디터와는 달리, Zend Studio는 다중 키 배열을 지원하지 않는다(예를 들어, “Ctrl+G L" : 라인으로 이동하라.).
Preference > Dialog panel에서, 사용자는 보기 원하는 Zend Studio 대화상자가 무엇인지를 지정할 수 있다. 마지막으로, 사용자는 SQL 패널에서 LIMIT 키워드, 페이지당 최대 엔트리 등을 사용하는지의 여부를 명확하게 할 수 있다.
[그림 5] Zend Studio 5.5 - 환경 설정
6.0버전에서는 환경설정은 “Windows" 메뉴에서 할 수 있다. 이 Eclipse 버전에서는 여기서 논의되는 것보다 더 많은 환경 설정 옵션을 제공한다. 일반적으로 5.5버전의 옵션들이 더 간단하고 생각한다. 옵션들이 많이 생겨난 까닭은 의심할 여지없이 제품이 Eclipse에 기반을 둔 결과이다.
[그림 6] Zend Studio 6.0 - 환경 설정
다행히도 6.0버전은 옵션 트리의 상단부의 엔트리 필드에 사용자가 텍스트를 기입하고 이것을 옵션의 문자열과 맞는지 비교하여 옵션을 제한하는 방법을 가지고 있다. [그림 6]에서 “type filter text"를 보라. 예를 들어, 여러분이 어디에서 코드의 형식을 변경하는지를 몰라 어려움을 겪을 때, 간단히 "format"을 입력해 보면 [그림 7]에서 보는 것과 같이 제한된 결과를 얻을 수 있다.
[그림 7] Zend Studio 6.0 - 환경 설정 필터링
편집기
Zend Studio의 내장 편집기는 베테랑 코드 작성자들이 현대 프로그래머가 사용하는 편집기에서 제공하는 모든 기능을 가지고 있다(다중 문서 편집, 문단 텍스트 선택, 다중 되돌리기 및 다시 실행, 다중 행 탭 들여쓰기 및 내어 쓰기, 자동 매칭 브레이스 생성과 색지정, 스마트 들여쓰기와 내어 쓰기, 코드 폴딩, 그리고 코드 블록 커멘팅).
찾기 및 바꾸기는 Edit > Find/Replace를 통해 여러 파일, 지역 또는 원격으로, 텍스트에 대해 실행할 수 있다. 찾기 및 바꾸기는 정규 표현식을 지원한다. 또한 PHP 파일에서 문자열 찾기는 Search > Search를 통해 클래스, 함수 또는 상수 심지어 특정 작업창에서 제한되어질 수 있다. 이것은 여러분이 특정 파일에서 PHP 엘리먼트를 제거하거나 재명명하는 것을 가능하게 하며 문맥에 민감하여(context sensitive) 실수로 바꾸기 하는 것과 같은 문제를 피하도록 한다. 예를 들어, 주석에서 몇 개의 문자열과 매치하는 클래스 이름과 같은 것이다. 이러한 정제 작업은 코드 리팩토링을 수행할 때 특히 가치가 있을 수 있다. 또한 미리보기 기능은 하나 혹은 그 이상의 파일에서 안전하게 엘리먼트 발생을 변경하도록 한다. 와일드카드 *와 ?는 지원되나 분명 정규 표현식은 아니다.
편집기의 구문 강조와 기능 확인은 뛰어나고 모두 사용자 맞춤이 가능하다. 그러나 6.0버전에서 처음에 환경설정 트리(PHP > Editor > Syntax Coloring)내 어디에서 변경할 수 있는지 찾기가 어렵다. 여러분은 선호하는 공백 스타일(PHP > Editor > Formatter)을 명시할 수조차 있다. 코드 완성하기는 대부분의 프로그램에서 주로 발견되는 템플릿이라고 하는 코드 조각들의 형태에서 한 단계 더 나아간다. 여러분이 코드에 템플릿을 추가할 때 값과 함께 치환되어 템플릿은 “${name}”과 같은 저장소를 포함할 수 있다. 예를 들어, 기본적으로, 키 “cls”는 다음의 클래스 문장을 생성하는 템플릿을 추가하도록 한다. “class ${name} { function ${name}() { ${END} } }". 여러분은 자신의 템플릿을 생성할 수도 있으며 그것을 가용한 키에 할당할 수도 있다.
Zend Studio 편집기는 정말 멋지다. 보통 더 진보된 편집기와 통합개발도구에서 빠진 기능 - 기록 가능한 매크로, 키스트로크 반복, 사각 블록 문자열 선택, 그리고 문자열 결합과 환류 - 들이 몇 가지 있었다. 하지만, 단지 첫 번째 이유에 의해 프로그래머는 더 많은 제품을 사용할 것이다.
디버거
만약 이전에 논의된 편집 기능들이 Zend Studio가 제공하는 모든 것이라면, jEdit과 같은 최고의 프로그래머를 위한 편집기면 충분할 것이다. 그러나 Zend Studio는 새로운 사용자가 통합개발도구를 전환하는데 충분할 정도의 그래픽 기반의 디버거이며 지금은 불필요한 ‘echo' 문장을 제거하도록 한다.
Zend Studio의 디버거는 step control과 중단점을 포함하는 비슷한 제품에서 보이는 강력한 기능을 제공한다. 특히 프로그래머로 하여금 항상 변수 이름을 일치하도록 요구하는 종류의 통합개발도구에 의한 접근에 반하거나 또는 개개의 엘리먼트를 보여주는 배열을 확장하거나, 범위 내에서 모든 변수의 자동화된 목록을 얻을 수 있어 고맙다. 또한, 더 많은 시간을 아낄 수 있는 문자열 길이가 보일 수 있다(특히 텍스트 처리와 비교를 하는 많은 양의 코드를 디버깅할 때).
또한 Zend Studio의 5.5와 6.0버전 모두는 내부 디버깅 그리고 원격 디버깅을 지원한다. 원격 기능은 원격 머신에 배치된 후에 하나 혹은 그 이상의 버그를 나타내는 로컬 환경에서 실행되는 상황일 때 유용하다.
만약 여러분이 Zend Studio 디버거를 처음 사용한다면 HTML 테이블에서 예시 자료를 나타내는 디버거 데모를 실행해 봄으로써 쉽게 사용할 수 있다. 편집 창에서 예시 PHP 코드를 실행해 보면서 여러분은 대응하는 결과를 보게 된다. 단계적으로 디버그 출력 창에서 두 가지 보기를 제공한다. 5.5버전에서는 “Text"(HTML 코드를 보여줌)와 “HTML"(웹 브라우저에서 어떻게 변환되는가?)이 있다. 더 좋은 이름은 첫 번째 보기의 경우 “HTML" 그리고 두 번째는 "Web"이었을 것이다. 6.0버전에서 "Debug Output"과 “Browser Output”으로 개선되었다.
디버거는 일반적으로 부드럽게 작동한다. 그러나 5.5버전에서 데모를 실행하는 동안, 나는 “Go to Cursor" 명령이 예상한 대로 완전히 동작하지 않는 것을 발견했다. 함수 호출 후에 오는 코드 라인 상의 편집 커서와 함께, “Go to Cursor” 명령을 선택하는 것은 디버거를 제대로 동작시키지 않았지만 대신 이전 함수로 가도록 하였다. 이것의 원인은 명백하지 않다. “Go to Cursor" 명령은 6.0버전에서는 보이지 않는다.
파일과 버전 관리
코드의 양과 프로그래머의 수에 비례하여 소프트웨어 개발에 있어 가장 치명적인 함정의 하나는 소스 코드를 관리하는 것이다. 이것은 소스 코드를 구성하는 것을 포함하며 만들어진 컴포넌트는 빨리 발견되어질 수 있다. 그리고 새로운 컴포넌트는 최적의 위치에 두는 것이 좋다. 게다가, 코드에 저장하고 개정된 것을 추적해야만 한다.
Zend Studio는 환경에 관계없이 프로젝트를 생성하고 관리하는 도구(프로젝트 기반의 코드 찾기, 내장된 프로젝트, 코드, 오브젝트 브라우징)를 이용해서 이러한 것을 가능하게 하며, 이러한 것은 버전 관리 시스템과 관계되는 것이다. 프로젝트의 소스 코드는 CVS나 Subversion을 이용해서 추적이 가능하다. 두 버전 관리 시스템 모두 다른 색상을 이용하여 경로, 요구 메시지, 파일 상태의 텍스트 스타일을 명시할 수 있다.
Zend Studio의 두 버전 모두 두 파일 간의 색이 들어간 코드 차이를 표시할 수 있다. 갈래진 코드를 처리할 때, 똑같은 코드의 두 개 혹은 더 많은 버전 사이에 기능적인 차이를 결정하도록 시도할 때, 가능한 하나의 파일로 병합하는 것이 아주 유용하다.
로컬 혹인 원격 서버 사이의 파일 전송에는 5.5버전은 내장된 FTP 클라이언트(Files > Add FTP Server)가 사용되며 이것은 FTP와 SFTP 모두를 지원하고, 나중에 쓰이게 될 것을 대비하여 설정을 모두 저장합니다. 6.0버전은 Remote System Explorer(RSE) plugin을 통해 FTP와 SFTP를 제공한다(아직 테스트 해 보지는 않았다.).
코드 생성과 샘플
바쁜 프로그래머는 적은 노력과 시간으로 코드 그 자체가 코드를 생성하는 것을 포함하여 더 많은 것을 얻기 위한 방법을 항상 찾고 있다. Zend Studio는 여러 가지 형태(코드 생성 마법사, 코드 조각, 코드 확장, 그리고 템플릿)로 이러한 칭찬받을 만한 원칙을 고수한다. 두 가지는 앞에서 살펴보았다.
Zend Studio의 마법사는 자동적으로 클래스, 인터페이스, 그리고 그들의 메서드를 위한 소스 코드를 자동적으로 생성시키기 위해 사용되어질 수 있다. 예를 들어, 여러분이 Zend Studio로 하여금 새로운 클래스나 인터페이스를 생성하도록 요청할 때, Zend Studio는 아이템의 특정 형태의 초기 구조를 즉시 삽입할 것이다. 간단히 코드의 어느 곳에서나 right-click하고 메뉴로부터 New > Class를 선택하라. 인스턴스 변수가 정의되는 클래스 내에서, getter and setter 메서드([그림 8]에서 보는 바와 같이)를 삽입할 것이다. 이와 같이 객체 지향 개발에서 지루한 단계를 자동화하는 것이다. Zend Studio의 제품 매니저인 Yossi Leon은 전화 통화에서 제품의 사용자들이 Zend Studio의 코드 생성 기능을 칭찬하고 있다고 밝혔다.
[그림 8] Zend Studio 6.0 - getters and setters 만들기
Zend Studio는 여러분 자신의 스크립트에 쉽게 삽입되도록 고안된 미리 작성된 코드 조각의 그룹들인 “Code Galleries"를 제공한다. Zend Studio는 기본으로 여러분 자신의 코드 조각을 추가할 수 있는 사용자 코드 갤러리를 제공하며, Zend 코드 갤러리는 Zend Network에 등록을 요구한다. 6.0버전에서 코드 조각은 코드 갤러리 보기(Window > Show View > Other > PHP Tools > Code Gallery)로부터 접근되어질 수 있다.
테스팅과 최적화하기
애자일 소프트웨어 개발론에서 커지고 있는 관심과 함께 Zend Studio for Eclipse는 테스트 주도 개발 - 엄밀히 말하면 PHP 코드의 단위 테스트 - 을 더욱 쉽게 하고 있다. Zend Studio for Eclipse는 또한 Zend Studio의 사용자 인터페이스에서 PHPUnit으로 더 훌륭한 통합을 제공한다. 게다가, 마법사는 여러분이 작업하는 특정 클래스를 위한 뼈대를 생성할 수 있다. 결국 모든 테스트를 요약하여 볼 수 있으며 정확히 어디에서 문제가 발생하였는지에 대한 표시와 함께 어떠한 실패의 요약을 제공할 것이다.
[그림 9] Zend Studio 6.0 - 단위 테스팅
PHP 코드를 최적화하도록 시도할 때, 가장 가치 있는 도구중 하나는 코드의 각 부분에 의해 얼마만큼의 시간이 소모되고 있는가를 밝히는 어떤 종류의 프로파일러(profiler)이다. Zend Studio는 [그림 10]과 같은 내장된 프로파일러가 있다.
[그림 10] Zend Studio 6.0 - 프로파일러
브라우저 툴바
Zend Studio의 설치 과정 동안 웹 브라우저에 Zend Studio 툴바가 설치되도록 선택할 수 있었다. 이 때 두 가지의 지원되는 브라우저는 파이어폭스와 인터넷 익스플로러이다(그림 11).
[그림 11] Zend Studio 6.0 - 파이어폭스 툴바
첫 번째 아이콘은 Zend Studio를 시작한다. 두 번째는 현재 브라우저에서 열린 페이지의 디버깅을 시작한다. 만약 Zend Studio가 아직 실행되고 있지 않다면 Zend Studio를 시작하도록 한다. 불행히도 제품이 C:Program FilesZendZendStudioClient-5.0.0bin.에 설치되었다.
[그림 12] Zend Studio 6.0 - 브라우저 툴바 에러 메시지
“Extra Stuff > Preferences"는 Zend Studio가 아니라 브라우저 툴바 그 자체에 있는 메뉴 아이템을 참조한다. 환경 설정을 수정하기를 원하며 프로그램에서 찾는 사용자는 찾을 수가 없을 것인데 분명 온라인 도움 정보(online help information)에서 조차 언급되어 있지 않다.
세 번째 아이콘은 현재 페이지, 다음 페이지, 현재 사이트상의 모든 폼들을 디버깅하기 위한 드롭다운 메뉴이다. 처음에 툴바에서 모든 다섯 개의 아이콘 중에서 세 번째 아이콘만 이름이 없어서 이상해 보였다. 그러나 세 번째 아이콘의 논리적 이름은 이미 두 번째 아이콘에 의해 사용되어진 “Debug"가 될 것이다. 이것은 두 개의 메뉴가 아마 하나로 합쳐져야 한다는 것을 말한다.
네 번째 아이콘은 현재 페이지를 프로파일하는 것이다. Zend Studio의 환경 설정을 수정하고 난 후조차도 이것과 두 번째 아이콘은 예상한대로 작동하지 않았다.
마지막 아이콘인 “Extra Stuff"는 Zend와 비(非)Zend PHP 사이트의 링크와 툴바 설정을 포함한다. 그래서 메뉴의 더 좋은 이름은 “Resources"가 될 것이다.
파이어폭스 그 자체와 같이 툴바는 또한 Zend.com 사이트, Zend Knowledge base, PHP.net, 그리고 구글을 통한 전체 웹 검색과 같은 내장된 검색 기능을 가진다.
Zend Framework
PHP 프로젝트들은 점점 더 Zend 프레임워크를 포함하여 오픈 소스 프레임워크를 기반으로 만들어지고 있다. Zend Studio는 Zend 프레임워크 프로젝트 디렉터리의 생성을 쉽게 하는 등 Zend 프레임워크를 위한 지원을 넓히고 있다. 그것은 제품의 Eclipse 버전에 내장되어 있으며 5.5.1의 출시와 더불어 5.5버전에도 추가될 것이다.
[그림 13] Zend Studio 6.0 - Zend 프레임워크
지원
대부분의 오픈 소스 통합개발도구들은 보통 쓸모없는 문서들을 긁어모은 것을 사용자에게 보라고 하거나 아주 적은 트래픽을 가진 포럼을 운영하는 등 적절치 못한 지원으로 사용자가 고통을 겪게 한다. 반면에 Zend Studio는 도움이 될 만한 적절하고 충분한 양의 여러 가지 자원에 의해 지원이 되고 있다. 내장된 도움 정보는 주제가 넓고 완전히 인덱스화 되어 있으며 검색어의 하이라이팅과 함께 full text 검색을 제공한다. 도움 정보는 또한 이전에 논의된 환경 설정 옵션을 제한하는 것에 대해 필터링 기능을 가지고 있다. 도움말을 필터 하는 기능은 새로운 사용자가 빠르게 제품에 적응하는데 큰 도움이 될 것 같다.
Zend의 지원과 관련된 웹 페이지는 knowledge base, 포럼, FAQ를 제공한다. Resource 페이지는 출시 정보, 사용자 가이드, 설치 가이드, 데이터시트, 빠른 시작 가이드, 그리고 공식 Keymap으로 가는 링크를 가지고 있다. 여러 가지 도움이 되는 6.0버전의 비디오 자료는 Zend의 데모 비디오 페이지에서 찾을 수 있다.
게다가 인증 받은 사용자는 Zend사의 Technical Support Team에 구입 정보를 제출함으로써 전문기술 지원을 온라인으로 받을 수 있다.
결론
Zend Studio, 특히 Eclipse 버전은 이 기사에서 살펴본 것보다 아주 많은 기능을 가지고 있다. 여기서 논의되지 못한 것은 코드 리팩토링, 데이터베이스 도구, 작업 세트, Zend Guard와 같은 외부 Zend 도구와의 통합 등 내장된 도구이다. 관심 있는 독자들은 자신들이 테스트해 볼 수 있을 것이고 개발에 얼마나 가치를 더할 수 있을지 확인해 볼 수 있다.
Zend Studio가 가지는 한 가지 장점은 비슷한 PHP 통합개발도구에는 없는 내장된 PHP 인터프리터가 있는 것이다. 그 결과로, 여러분은 통합개발도구에게 컴퓨터상에 실행할 수 있는 PHP가 어디에 있는지 알리는 설치 장애물을 피할 수 있다. 이것은 사소해 보일 수도 있다. 그러나 내가 테스트한 메이저급 비(非)Zend 통합개발도구는 완벽하게 실행되는 PHP 파일을 실행하지 못하였고, 그 통합개발도구는 쓸모가 없어졌다. Zend Studio의 경우에는 내장된 Zend 엔진을 가지고 있으며 5.5와 6.0버전이 모두 PHP4와 PHP5를 지원한다. 6.0버전은 더 사용자 맞춤이 가능하며 원한다면 심지어 여러분이 자신이 사용하고 싶은 인터프리터를 할당할 수도 있다.
작은 문제들과 위에서 언급한 몇 가지를 제외하고, Zend Studio는 가능한 고통 없이 개발하는 것을 원하는 프로그래머와 얼마만큼 Zend Studio가 능력을 가졌는지 배우기 위해 시간과 노력을 기꺼이 투자할 PHP 프로그래머에게 강력하고 인상적이며 잠재력이 풍부한 가치 있는 통합개발도구이다. PHP 애플리케이션을 개발하는 개인과 팀에게 Zend Studio를 강력하게 추천한다.
저자 Michael J. Ross는 웹 컨설턴트, 프리랜서 작가이자 PristinePlanet.com의 뉴스레터 편집자입니다.
2009년 7월 20일 월요일
군자는 사람을 쓸 때에..
1. 먼 곳에 심부름을 시켜 그 충성을 보고
2. 가까이 두고써서 그 공경을 보며
3. 번거로운 일을 시켜 그 재능을 보고
4. 뜻밖의 질문을 던져 그 지혜를 보며
5. 급한 약속을 하여 그 신용을 보고
6. 재물을 맡겨 그 어짐을 보며
7. 위급한 일을 알리어 그 절개를 보고
8. 술에 취하게 하여 그 절도를 보며
9. 남녀를 섞여 있게 하여 그 이성에 대한 자세를 보는 것이니
이 아홉가지 결과를 종합해서 놓고 보면
사람을 알아볼 수 있게 되는 것이다.
2009년 7월 1일 수요일
2009년 6월 9일 화요일
스푸핑과 스니핑
▶ 스니핑(Sniffing)
Sniffing 이란 단어의 사전적 의미는 ‘코를 킁킁거리다’, ‘냄새를 맡다’ 등의 뜻이 있다. 사전적인 의미와 같이 해킹 기법으로서 스니핑은 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 엿듣는 것을 의미한다. 간단히 말하여 네트워크 트래픽을 도청(eavesdropping)하는 과정을 스니핑이라고 할 수 있다. 이런 스니핑을 할 수 있도록 하는 도구를 스니퍼(Sniffer)라고 하며 스니퍼를 설치하는 과정은 전화기 도청 장치를 설치하는 과정에 비유될 수 있다.
TCP/IP 프로토콜은 학술적인 용도로 인터넷이 시작되기 이전부터 설계된 프로토콜이기 때문에 보안은 크게 고려하지 않고 시작되었다. 대표적으로 패킷에 대한 암호화, 인증 등을 고려하지 않았기 때문에 데이터 통신의 보안의 기본 요소 중 기밀성, 무결성 등을 보장할 수 없었다. 특히 스니핑은 보안의 기본 요소 중 기밀성을 해치는 공격 방법이다.
이 러한 스니핑 공격은 웹호스팅, 인터넷데이터센터(IDC) 등과 같이 여러 업체가 같은 네트워크를 공유하는 환경에서는 매우 위협적인 공격이 될 수 있다. 하나의 시스템이 공격당하게 되면 그 시스템을 이용하는 네트워크를 도청하게 되고, 다른 시스템의 User ID/Password를 알아내게 된다. 비록 스위칭 환경의 네트워크를 구축하여 스니핑을 어렵게 할 수는 있지만 이를 우회할 수 있는 많은 공격방법이 존재하고 있다.
1. 허브 환경에서의 스니핑
허 브(Hub)는 기본적으로 들어온 패킷에 대해 패킷이 들어온 포트를 제외한 모든 포트에 대해 패킷을 보내는 리피터 장비이다. 만약 기업에서 허브를 사용하고 있고 기업의 시스템이 그 허브에 연결되어 있다면 원하던 원치 않던 간에 계속하여 다른 사람의 패킷들을 받아보고 있었던 것이다.
2. 스위치 환경에서의 스니핑
(1) Switch Jamming
스위치는 원래 앞서 말한 바와 같이 실제 수신 대상으로만 패킷을 보내는 브리지 장비이다. 그러나 엉뚱한 MAC 주소를 가진 패킷을 계속하여 보냄으로써 스위치가 허브처럼 동작하도록 만들 수 있다. 많은 종류의 스위치가 주소 테이블이 가득 차게 되었을 때 패킷을 모든 포트로 브로드캐스팅 하는 성질을 이용한 것이다.
(2) ARP Redirect
대표적인 툴로 Dsniff와 같은 툴이 이 방법에 의한 스니핑을 제공한다. 네트워크 상에서 패킷이 보내질 때 목적지의 IP 주소를 갖고 해당 목적지가 어떤 MAC 주소를 사용하는지를 요청하는데 이를 ARP request라고 한다.
ARP request는 네트워크 상에 브로드캐스팅되어 모든 호스트가 그 패킷을 받게 되고 해당 IP를 가진 호스트는 그런 IP를 사용하는 것은 나라고 ARP reply를 주게 된다.
(3) ICMP Redirect
ICMP 프로토콜은 네트워크 상의 오류 메시지 전송, 트러블슈팅 등을 위해 사용되는데 그 중 ICMP Redirect 메시지를 이용한 스니핑 방법이며 일단 기본적으로는 ARP Redirect의 경우와 마찬가지로 공격 대상 시스템으로 패킷이 오도록 만드는 것이다. 네트워크 상에 라우터가 여러 대 존재할 때 비효율적인 라우팅 경로가 존재한다면(즉 1 hop 만으로 보낼 수 있는데 3 hop으로 보내게 설정되었다든지) 라우터에 대해 이를 수정할 것을 권고하는 ICMP Redirect 메시지가 보내진다. 공격자는 이를 악용한 ICMP Redirect 메시지를 보냄으로써 패킷이 자신으로 보내지도록 한다.
(4) ICMP Router Advertisement
특정 호스트가 자신이 라우터라고 다른 호스트들에 대해 알리는 메시지이다. 공격자는 이를 악용하여 다른 호스트들이 자신을 라우터로 생각하게 하여 패킷이 자신으로 보내지도록 한다.
▶ 스푸핑(Spoofing)
Spoof 란 단어의 사전적 의미는 'hoax; trick; swindle 골탕 먹이다.; 속여먹다.; 야바위(치다), 우롱, 사취'이다. 즉 해커가 악용하고자 하는 호스트의 IP 어드레스를 바꾸어서 이를 통해 해킹을 하는 것을 IP 스푸핑이다.
네 트워크 시스템에서 서로 신뢰관계에 있는 A, B 두 시스템간에는 A 시스템의 어카운트를 가지고 B 시스템을 액세스 할 수 있다. 이는 네트워크에서 신뢰관계를 형성하는 서비스가 네트워크 주소에 기반하여 이를 인증하기 때문이다. 이로 인해 IP 스푸핑이 가능해 진다. IP 스푸핑은 이 신뢰관계에 있는 두 시스템사이에서 해커의 호스트를 마치 하나의 신뢰관계에 있는 호스트인 것처럼 속이는 것이다. 또한 IP 스푸핑과 항상 연동돼 사용되는 공격법으로 TCP sequence number guessing attack을 들 수 있다.
1. 스푸핑의 종류
(1) IP 스푸핑
IP 스프핑은 말 그대로 IP 정보를 속여서 다른 시스템을 공격하는 것이다. IP 스프핑을 통해 서비스 거부 공격(TCP Syn flooding, UDP flooding, ICMP flooding)을 수행할 수도 있으며, 공격대상 컴퓨터와 서버 사이의 연결된 세션에 대해서 세션 끊기도 가능하다.
(2) DNS 스푸핑
DNS 프로토콜은 인터넷 연결시 도메인 주소를 실제 IP 주소로 대응시켜 주는 프로토콜이다. 인터넷 연결시 사용하는 DNS 서버가 IP 주소를 찾아달라는 요청을 받았을 때, 자기 자신의 도메인이 아닌 주소에 대해서는 보다 상위 단의 DNS 서버로부터 재귀적(recursive)인 방식으로 IP 주소를 찾아 알려준다. 만약 해커가 어떤 도메인의 DNS 컴퓨터를 장악하여 통제하고 있다면 최종적으로 얻어진 IP 주소는 원래 사용자가 찾아가고자 하였던 홈페이지가 아닌 다른 홈페이지로 연결되게 된다. 이는 요청을 발송했던 DNS와 응답을 주는 DNS 사이의 트래픽을 해커가 스니퍼링함으로써 Query ID라는 값을 통해 해커의 사이트 IP를 최종 응답으로 넘겨주도록 하는 것이다. 사용자가 쇼핑몰을 이용하고자 하였다면 해커에 의해 조작된 홈페이지 내에서 자신의 아이디와 필드, 신용 카드 정보를 기입함으로써 개인 정보를 탈취당할 수 있다. 위와 같은 스니핑 공격들은 실제로 인터넷 상의 툴로써 공개가 되어 있으며 여러가지 다른 복합적인 공격과 같이 사용될 수 있다.
(3) ARP 스푸핑
공격 대상 컴퓨터와 서버 사이의 트래픽을 해커 자신의 컴퓨터로 우회시킬 수 있다. 우회된 트래픽 으로부터 해커는 패스워드 정보 등 유용한 정보를 마음껏 획득할 수 있다.
(4) E-mail 스푸핑
이메일 발송시 송신자의 주소를 위조하는 것이다. 요즘 들어서 극성인 대량의 스팸 메일과 바이러스 감염 메일은 송신자의 주소가 아예 존재하지 않는 이메일 주소를 사용한다. 또한 이메일을 발송한 메일 서버 또한 직접적인 메일 발송 서버가 아닌 중계 서버이므로 메일을 발송한 자를 추적하기란 쉽지 않다.
2. 스푸핑을 막기 위한 대책
(1) 암호화된 Protocol을 사용 - 속도가 느려지고 사용이 아직 보편화되어 있지 않다.
(2) IP로 인증하는 서비스는 사용하지 않음 - 사용이 상당히 불편해 진다.
(3) Router에서 source routing을 허용하지 않음 - 내부 사용자끼리의 IP Spoofing은 막을 수 없다.
(4) Sequence number를 Random하게 발생시키도록 함 - Sequence number를 sniff할 수 있는 경우에는 막을 수 없다.
(5) DoS가 발생하지 않도록 함 - IP Spoofing의 시작은 DoS이다.
출처 : exerceo.egloos.com | linuxholic.tistory.com/74