확장성 생성 언어(XML)와 하이퍼텍스트 전송 규약(HTTP) 등을 기반으로 하여 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신 규약. 마이크로소프트사와 유저랜드 소프트웨어(UserLand Software)사, 디벨롭멘터(Developmentor)사가 중심이 되어 개발하였다. SOAP에 의한 통신에서는 XML 문서에 봉투(envelope)로 불리는 부대 정보가 붙은 메시지를 HTTP 등의 프로토콜로 교환한다. 서비스를 이용하는 클라이언트와 서비스를 제공하는 서버 쌍방이 SOAP의 생성, 해석 엔진을 가지는 것으로 다른 환경 간에서의 객체 호출을 가능하게 하고 있다. SOAP 1.1에서는 실제로 데이터의 송수신에 사용하는 하위 프로토콜은 현재 널리 보급되어 있는 HTTP나 간이 전자 우편 전송 프로토콜(SMTP), 파일 전송 규약(FTP) 등에서 선택할 수 있게 되어 있어 기업 간에 이용하는 경우에도 방화벽 등을 안전하게 통과할 수 있다. 현재 월드 와이드 웹 컨소시엄(W3C)에 의해 표준이 행해지고 IBM, 로터스 등도 자사 제품에서의 대응을 표명하고 있다. 한편, SOAP 메시지의 생성 엔진은 ‘SOAP 프럭시’, 해석 엔진은 ‘SOAP 리스너, SOAP에 의해 외부로부터 이용 가능한 부품화된 웹 기반의 응용 프로그램은 ‘웹 서비스’라고 불린다. 인터넷상에서 각 회사가 제공하고 있는 웹 서비스를 모아 누구라도 검색, 조회할 수 있도록 하는 것이 UDDI이다.
alias l='ls -al -h '
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ducks='du -cks * |sort -rn |head -11'
export PATH=$PATH:/usr/local/mysql/bin
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
올해 초부터 본격적으로 웹2.0에 대한 관심도가 급격 상승했다. 그 이유는 여러 곳에서 살필 수 있는바, 첫번째는 2000년 초반 인터넷 업계에 버블의 제거된 이후 특별한 이슈가 없었다는 점. 두번째는 미국,유럽을 중심으로 거대 E-biz 기업의 성장과 그 이유를 웹2.0라 불리우면서 대단위 컨퍼런스를 진행, 상당한 마케팅적 효과를 얻은 점. 세번째는 무 비판적 서구라파 문화의 수용과, 이들의 문화를 따르지 않으면 '비전문가'라고 인식되는 잘못된 문화로 볼 수 있다.
홈페이지만 있으면 무엇이든 대박을 터트릴 수 있다는 소문에 너도 나도 뛰어들었다가, 거품이 거치고 살아남은 회사들은 그리 많지 않다. 그 이후 전략적이고 구체적인 e비즈니스를 진행하여 현재까지 남은 기업들은 나름대로 탄탄한 e비즈니스 기업이라 할만 한다. 그 이후 웹의 세계는 너무나 잠잠했다. 물론 사용자의 요구를 반영해 지속적인 발전이 있었지만 그러한 현상들을 불리울만한 철학과 이론적 노력은 우리의 석학들이 외면시 했거나 하찮게 여겼던 것 같다.
팀 오라일리 미디어 부회장, 데일 도허티(Dale Dougherty)의 'web2.0'의 말 한마디로 조용했던 e비즈니스업계는 새로운 화두가 활화산처럼 타오르기 시작했고, 구글의 비약적 발전을 예로 들어 그 논리를 세워 나갔던 것이다. 'web2.0'은 의미의 통합체로써 현재의 현상을 두루 포함하는 단어는 아닐지라도 “웹의 새로운 변화를 의미하는 것”이라는 데에는 그 누구도 반론할 여지가 없는 것이었다.
또한 미국과 유럽의 대규모 컨퍼런스를 통해 이제 국내 전문가들은 web2.0을 모르면 현시기에 뒤떨어질 것이라는 막연한 두려움과 공포에 'web2.0'이라는 단어를 사용하기 시작했고 일부의 사람들은 마치 구세주를 만난 것 처럼 '신봉' 하기에 이른다. 정확한 분석과 비판없이 모든 것을 그대로 수용하기에 이르렀고, 각 신문지상에 IT에 대해서 잘 알지 못하는 일부 기자들의 만행으로 'web2.0'을 조심히 분석하거나 비판하는 사람은 '비전문가','시대에 뒤떨어진 사람'으로 낙인 찍혀 버리는 현상으로까지 이르게 되었다.
Web2.0은 web1.0에서 한 단계 업그레이드 되었음을 의미한다. 즉 기존의 웹과는 다르다는 것을 확연하게 보여 주기 위해 기존의 웹을 '1.0'이라 하고 변화될 새로운 패러다임을 '2.0' 이라 부른 것이다. 그렇지만 'web2.0'은 팀 버너스리의 웹 창시 이후 지속적으로 연구 해오던 Next Generation web, 즉 Semantic Web의 다른 말이다. 이제는 정보간의 단순한 Link구조의 웹사이트 연결성에서 페이지와 페이지, 즉 정보와 정보간의 의미론적, 정황적 연결로의 발전을 의미 한다.
웹은 이와 같이 변화하고 있으며 진화하고 있다. 진화의 큰 틀 속에서 단순히 web의 변화만을 볼것이 아니라 인간과 정보와 자연(있는 그대로의 것.)의 조화 속에 인류 보편적 가치와 문화가 어떻게 변화될 것인가를 생각하고 그 문화가 web에 이름으로써 좀더 정확한 웹의 발전모델을 찾아 볼 수 있을 것이다.
web2.0이라 불리 우는 현상들
표준에 입각한 개방형 서비스 구조를 기반으로 사용자의 참여를 통한 집단 지성 등의 핵심가치를 창출하는 혁신적 인터넷 서비스를 말한다.
Web2.0에 대한 Tim O’Reilly 메모 요약
2001년 가을 닷컴버블의 붕괴는 웹이 그동안 지나치게 과장되었다 결론을 내렸다. 닷컴붕괴 이후 살아남은 몇 개의 기업들, 구글, 아마존, eBay, 야후와 같은 기업들을 분석해 보았더니 어떤 공통점을 갖고 있었다. ‘웹에 일종의 전환점을 찍은 닷컴 붕괴를 어떻게 표현할 수 없을까? 예를들어 웹2.0으로 부르는 것은 어떨까?’라는 의견에 주변 사람들이 동의했고 그 결과 웹2.0 컨퍼런스가 탄생 되었다.
웹2.0 서비스의 특징들
-플랫폼으로서의 웹
-집단지능(Collective intelligence)의 활용
-롱테일
-매쉬업(mash-ups)
전문가적 의견
- Flickr 공동창업자 Caterina Fake @ Syndicate conference (2005.12)
웹2.0은 사람들이 참여해서 공유하고 의견을 나누는 것이 기본이며, 시민 저널리즘 같은 것이다. 가장 중요한 부분은 소셜 네트워크와 같은 특징이다. 또한 개방형 API를 통해 자유롭게 새로운 서비스를 구축하도록 할 수 있는데, 이를 이용하면 Flickr의 계정들을 유지하면서 전혀 다른 UI와 포맷으로 서비스를 만들수도 있다.
- 제리 양 @ Yahoo!
플리커를 부러움을 가지고 봤다. 이것이 웹이 가야 할 방향처럼 느꼈다.
- John Doerr @ KLeiner Perkins Caufield & Byers
웹2.0은 버블이 아닌 강렬한 혁신의 시대에 나타난 붐이다. 가장 중요한 것은 사용자가 더욱 더 콘텐트를 창조하고 생성한다는 것이다. 사용자를 강력하게 만드는 혁신.
웹2.0의 기본 개념을 요약 정리하자면
“참여, 공유, 개방”을 통한 자발적이고 참여적인 활발한 지식 활동이 이루어지는 것을 말한다.
공유 개방이 참여를 만들고 참여가 모여 집단지성을 이루도록 한다. 이를 이루기 위해서는 아래 세가지의 조건의 뒷받침 되어야 한다.
- 인간중심의 Technical 패러다임의 변화
- 인간 중심의 철학 (‘인간이 먼저이고 그 다음에 서비스, 수익이다.’)
- 열린 문화 ‘내 지식을 열면 그 이상으로 내가 얻는다.’
첫번째 Technical 기술의 변화는 아래와 같이 예를 들수 있다.
web2.0의 10가지 기술들
[출 처: 윤석찬 @Web2.0 Conference, 2006.3]
1. 웹 표준(XHTML/CSS)
2. 브라우저 지원(Firefox.Safari)
3. 유니코드(UTF-8)
4. 논리 주소체계(Logical URL)
5. 컨텐츠 신디케이션(RSS/Atom,RDF)
6. 오픈API (REST,SOAP,Web Service)
7. 집단지성 (Folksonomy, Tag)
8. 가벼운 서비스 프레임웍(Python, Ruby on Rails)
9. 풍부한 사용자 경험(Ajax, Flex)
10. 확장기능(Firefox Extentions, Widget)
Ajax를 쓰면 웹2.0이고 쓰지 않으면 웹2.0이 아니다?
10가지 기술들에 대해서 이야기 하고 있지만 기술은 기술일 뿐이다. 물론 웹2.0이라는 말과 동시에 참으로 비약적이고 신비로운 기술들이 등장하고 있다. 이는 기존의 틀을 깨는 새로운 방법으로 접근하고 있다. 예를 들면 ActiveX가 없어지고 시스템이 가벼워 지고 있으며 더욱 더 사용성이 증가할 수 있는 도구를 제공해 주고 있다. (이제부터 웹2.0을 ‘웹의 새로운 패러다임’ 과 같이 부르겠다.)
그렇지만 기술은 웹의 새로운 패러다임(웹2.0)에 필요조건이지 충분조건은 아니다. Tag를 이용하던 Ajax를 이용하던, 또는 이용하지 않던 간에 서비스의 철학이 인간중심이고 공유와 개방을 통해 집단지성을 만들어내고 그 집단지성이 인류의 발전과 정의사회에 기여한다면 그것은 ‘새로운 패러다임’이라 할 수 있는 것이다.
그러므로 이사이트가 웹2.0이다 아니다의 문제는 위와같은 기술적인 요인을 쓰느냐 안쓰느냐의 문제도 아니거니와 아마존아나 야후 플리커, 구글 등등의 서비스의 기준을 따르는 것과는 무관한 누구든 새로이 방법을 만들어 낼 수 있는 것이다.
새로운 패러다임으로의 변화, 인류의 보편적 가치
인류의 역사는 고대 중세 근대를 거쳐 현대로 이어진다. 물론 국가간의 다른 문화마다 이를 구분하는 잣대는 서로 상이하지만 서양사를 기준으로 볼 때 '고대-중세-근대'로 이루어진다. 칼 맑스의 기준으로 본다면 '노예제-봉건제-자본제'로 이어지면서 국가를 운영하는 패러다임이 변했다.
노예제도의 비인격적인 사회문화를 탈피하고 지방군주 시대의 봉건제를 거쳐 물질중심의 자본제를 맞이하였으며 산업혁명을 계기로 인간보다는 물질에 대 가치를 두는 사회로 탈바꿈되 었다. 서양사와 한국사의 다른점을 여기서 이야기 하자는 것은 아니지만 한국사의 패러다임은 '고대-중세-근대'의 잣대로 나뉠 수 없으며 고려시대때 호족 중심의 일종의 봉건제를 실시한 적이 있지만 강력한 왕권중심의 국가인 '조선왕조'가 봉건제에서 자본제로 바뀌는 서양사적 패러다임과는 전혀 상관없는 특수하고 독립적인 문화를 갖고있다.
우리는 이미 역사적으로도 인간을 중요시하는 '인본주의' 사상이 존재했으며 강력한 왕권 아래 서양의 그들과는 다른 우리만의 '유교'를 받아들임으로써 나름대로의 정체성을 찾아갔던것이다. '유교' 그 자체가 보수적일 수 있고 물질을 경시하여 과학이 발전하지 못한 크나큰 오류가 있음에도 불구하고 우리의 정신은 '인간' 중심으로 문제를 해결하려던 민족이었다.
물론 서양에서도 '휴머니즘' 운동이 일어났다 하지만은 우리의 그것과는 비교할수 없는 운동에 불과 했다. 이렇듯 동양, 특히 한국의 문화는 서양의 그것보다 더 넓고 높은 위치에서 인간세상을 내다 보았으며 이제 물질만능의 패러다임에서 인간중심의 패러다임으로 바뀌는 웹의 세계에 있어서는 이미 우리는 그들보다 앞서 나갈 수 있다라고 생각한다.
결국 인류의 보편적가치를 몇세기 전부터 우리는 이미 파악하고 있었다는 것이다. 비록 갑오늑약으로 인하여 일제침략기를 거치면서 많이 변질된 부분이 존재 하지만 여전히 우리의 문화가 인류 보편적 가치를 선도 할만한 충분한 힘이 존재한다.
그럼 한국에서는 웹2.0이라 불리우는 현상이 없는것인가?
공유와 개방이 참여를 만들고 참여가 집단지성을 만들며 그 집단지성이 철학적으로 인류보편적 가치를 지향한다면 그것은 우리가 바라봐야할 미래의 모습인 것이다.
- 네이버의 지식인 서비스, 문제의 해를 찾아가는 과정
- 싸이월드의 인적네트워크
- 네이버의 블로그
- 다음의 카페
- 쇼핑몰의 평판 댓글
- 각 신문사의 댓글 등등 ...
이것이 기존(닷컴몰락전 시점)과는 다른 새로움 패러다임이 아니고 무엇인가?
한국만큼 이렇게 활발한 커뮤니티가 일어나는 나라가 어디 있는가? 몇몇 사람들은 초고속 인터넷망만이 세계1위라고 말하고 '냄비문화'라고 한국의 문화를 폄하 하지만 이미 우리는 웹2.0이고 뭐고 간에 이미 그러한것들을 '서구의 웹문화발전'보다 먼저 활성화 되고 있다라는 것은 그 누구도 부정할 수 없는 사실이다.
철학과 기술적인 부분을 먼저 이끌어 나가지 못하는 것은 안타까운 현실이다. 또한 아직도 포탈업체에서 오픈데이터의 마인드를 갖지못하는것도 안타까운 현실이나 서구의 규모의 경제를 밀고 들어올 경우 잘못하다간 순식간에 무너질수 있기에 조심스럽게 오픈데이터를 준비하고 있는 것이다.
물론 우리가 주의해야 할 사항은 많다. 이런 집단지성의 '아마추러리즘과 비도덕성 문제'를 해결해야 하며 이것들은 '성숙한 시민의식'을 필요로 한다. 나와 의견이 다르다 하여 '초딩'이라 내몰지 마라, 4~50대 장년층의 댓글 사용이 급속히 증가하고 있다는 기사도 보지 못했는가? 물론 과도기적 문제는 존재하리라 본다. 그걸 하나 둘 씩 해결해 나가는 노력이 같이 이루어 져야 할것이다. clean web을 위하여...
진화란 예고하고 오지 않는다.
한국은 웹문화는 이미 진화하고 있고 시행착오를 거쳐가고 있다. 알고 보면 이런 것이다. "서구에서 '웹2.0'이라고 말을 쓰며 기술적인 요소의 발전에 중심을 두는 반면 우리는 그것을 보고 어 우리거랑 비슷하네 하며 기술적인 것보다는 전체적인 '의미론적 정황의 웹2.0'을 바라보고 있는 것이다." 이것이 우리 동양권의 문화이다. 그러나 서구의 그들에게 배울점은 배워야 한다. 그 새로운 기술들을 이용함으로해서 우리의 서비스는 한층 풍요로워 질수 있으며 원하는 목표에 좀더 가까히 진입하게 해 줄 수 있다는 것이다.
'개방과 공유 그리고 집단지성' 무수한 강대국의 침략속에서 우리가 지금까지 살아남을수 있었던 원동력은 민족간의 신뢰를 통한 공유와 그리고 집단지성 즉 집단적 민족자주의 노력 이었음을 잊어서는 안되겠다.
이렇게 타 인권을 짓밝지 않으면서도 독특한 문화와 인류보편적사고방식을 전해 내려준 조상에 감사해야 하며 웹2.0의 새로운 패러다임은 우리가 이미 겪었고 또는 겪고 있는 '목적' 문제이며 그 수단을 잘 배워서 발전시켜 나가야 하는 것이 우리의 임무인것이다.
'새로운 웹의 패러다임'은 개벽처럼 하늘이 두쪽나듯 한번에 오지 않는다. 서서히 진화할뿐...
진화되는 웹의 목적은 '웹2.0'라는 단순한 하나의 현상을 바라보고 달려야 하는 것이 아니라 '인류 보편적 가치'에 중점을 둔 '인간중심의 접근'으로 시작해야 할 것이다.
국내에 PHP를 시작하는 사람들은 대부분 인터넷 붐을 타고, 홈페이지를 가져보자는 생각에 제로보드부터 시작한 사람들이 대부분인 것같다. (나 또한 그랬으니까..)
국내의 PHP서적들 역시 대부분이 Beginner를 위한 것들이고, 알고리즘이나 개발방법론 등의 고민 없이 연산자 소개부터 함수 레퍼런스로 끝을 맺는 경우가 대부분이다.
그런 서적들이 이야기하는 PHP저작도구는 메모장이나 에디트 플러스, 울트라 에디터, EmEditor 등이다.
이제는 변화를 생각해보자. PHP개발도 IDE를 사용해보자는 것이다.
PHP의 IDE중에는 PHP제작사인 Zend에서 만든 Zend Studio 등이 있지만, 상용이고, 한글지원도 불편해 여기서는 오픈소스 IDE인 이클립스를 사용하기로 한다.
이클립스가 무엇인지는 위키나 각종 검색사이트에서 검색해보면 방대한 자료를 얻을 수 있을 것이다. 이클립스의 태생 등은 논점에서 벗어날 뿐 아니라 필자가 잘 설명해 줄 수 있을정도로 많이 알고 있지도 않다. 따라서 Pass.
순서:
1. 이클립스 다운로드 받기
2. PHP Eclipse다운로드 받기
3. WTP(Web Tools Platform) 다운로드 받기
4. 설치
1. 이클립스 다운로드 받기
이클립스의 공식 사이트는 http://www.eclipse.org 이다.
상단 메뉴에서 Downloads를 하면 최신버젼을 바로 받을 수 있도록 큼지막하게 링크가 걸려있는 것을 볼 수 있을 것이다.
파일을 받을 수 있도록 링크를 클릭하면, 미러링 사이트를 고를 수 있도록 되어 있다. 아마 한국 사이트가 제일 위에 나올 것이다. 선택을 하면 다운로드가 시작된다.
2. PHP Eclipse다운로드 받기
PHP Eclipse 플러그 인은 이클립스에서 PHP를 다룰 수 있게 해주는 플러그 인이다. 가장 중요하다고 할 수 있다. PHPEclipse의 공식 사이트는 http://phpeclipse.de 이다.
http://sourceforge.net/project/showfiles.php?group_id=57621 에서 최신버젼 및 베타버젼도 다운로드받을 수 있다. 우리가 사용할 이클립스의 버젼은 3.1대 버젼이므로 1.1.7 이상 버젼을 다운로드 받으면 된다.
3. WTP(Web Tools Platform) 다운로드 받기
PHP는 주로 웹을 다루는 데에 쓰기 때문에, 개발 중에 HTML이나 CSS를 다룰 일이 많다. WTP는 이클립스에서 HTML, CSS, JavaScript 등을 다룰 수 있게 해주는 플러그 인이다.
http://download.eclipse.org/webtools/downloads/ 에서 다운로드 받을 수 있다.
4. 설치
(1) 이클립스 설치
이클립스에는 별 다른 인스톨러가 지원되지 않는다. 원하는 디렉토리에 압축을 풀어주고, 바탕화면에 단축아이콘을 만들어주는 것 정도로 설치가 끝난다.
(2) PHPEclipse, WTP설치
이클립스 내의 플러그인 관리툴을 이용해 설치하는 방법을 배워보자.
우선 다운로드 받은 파일들을 '알집의 각각의 폴더에 풀기'기능을 이용해 압축을 풀어준다.
이클립스의 첫 실행
처음 실행이 되면 작업디렉토리(workspace)를 지정하라는 메시지창이 뜬다. php파일이 실행되는 디렉토리 ( 예를들면 htdocs 폴더)를 지정해준다.
지정을 해주면 로딩 과정을 거쳐 큼지막한 Welcome 페이지가 나타날 것이다. 보고싶다면 나중에 볼 수도 있으니 우선은 그냥 넘어가자. 오른쪽 상단의 Go To The WorkBench를 클릭한다.
그러면 작업환경이 뜰 것이다. 이클립스는 기본적으로 자바를 제공한다. 지금 나온 화면은 Perspective가 Java로 설정이 된 상태다. 플러그 인들을 설치하면 여러가지 Perspective를 이용할 수 있다.
[ 이클립스 작업환경 - JAVA ]
메뉴를 살펴보면 가장 오른쪽에 Help가 있다. Help - Software Update - Find and Install을 선택하자. Install/Update 라는 창이 뜨는데, 여기서는 Search for new features to install 을 선택하자.
[ Help - Software Update - Find and Install을 선택하자 ]
그러면 Update sites to visit 이라는 창이 나온다. 오른쪽의 New Local Site를 골라주고, 조금전에 WTP와 PHP의 압축을 풀어준 폴더를 찾아서 확인을 해준다. 정상적으로 찾았다면 Edit Local Site라는 창이 뜰 것이다. 중요한 부분은 아니니 그냥 넘어가도 된다. 만약 오류가 났다면 골라준 폴더 아래에 fetures와 plugins 디렉토리가 있나 확인해보자. 플러그 인을 압축할 때 폴더로 묶어 압축시킨경우에는 바로 그 아래 하위 폴더를 골라주어야 한다.
이렇게 두개를 추가시켜주고 나서 체크박스에 체크를 해준 후, Finish 버튼을 누른다. 그러면 몇가지 확인 창이 나오는데 Next, I Accept 등을 선택하면 설치과정은 끝이 난다.
PHP작업환경을 열어보자. Perspective를 선택하고 Others를 선택한 후에 PHP를 선택한다. 화면의 약간의 변화가 느껴지는가? 이곳이 PHP작업창이다.
[ Perspective를 선택 ]
[ Others의 PHP를 선택 ]
[ PHP 작업환경 ]
테스트프로젝트를 추가하고, 테스트 파일 한개를 작성해보자.
프로젝트 추가는 왼쪽의 Navigation에서 마우스 오른쪽버튼을 눌러 PHP Project를 선택해주면, 프로젝트 이름과 디폴트 폴더를 지정하는 곳이 나온다. 지정해주고 확인을 눌러주면 PHP Project가 한개 추가된 것을 알 수 있을 것이다.
[ 새로운 프로젝트 추가 ]
파일 추가도 마찬가지다. 프로젝트에서 마우스 오른쪽 버튼을 눌러 PHP File을 선택해주고, 파일이름을 작성한 후 확인을 눌러주면 파일이 한개 추가된다.
[ PHP파일 추가 ]
지금까지 이클립스에 PHP개발환경을 설치하는 것을 알아보았다. 다음 포스트에서는 이클립스 PHP환경을 꾸미고 세세한 부분의 설정에 대해 알아보겠다.
들어가기 앞서
저의 짧은 글 실력과 대충 날림으로 적은 강좌에 많은 분들의 호응에 감사드립니다. 이번 강좌도 이전것과 별반 다르지는 않지만, 기다리시는 분들이 있는것 같아 주저주저하면서도 올리게됩니다. 많은 분들이 이클립스를 사용해 개발시간을 줄이고 또 함께 피드백 하면서 PHP를 발전시켜나갔으면 좋겠습니다. 감사합니다. 강좌에서는 1편과 같이 존칭을 생략합니다.
PHP를 Eclipse로 개발하기 - 2 설정편
1. 폰트 변경하기
PHPSchool에 올라온 글 중에 '프로그래머에게 적합한 폰트' 이라는 글이 있었다. 개발자들이 가장 많이 쓴다는 BitStream vera sans Mono 로 폰트를 변경해보자. [다운로드]
압축을 풀고 VeraMono.ttf 파일을 설치한다. (설치 방법은 생략)
Window->Preferences항목을 선택하면 Preferences창이 열린다. 앞으로의 모든 설정은 이곳에서 하게될 것이다.
가장 위의 General - Appearance - Color and fonts를 선택하면 이클립스 플러그인 들의 폰트나 색상을 지정해 줄 수 있는 화면이 나온다.
가장 위의 Basic에서 Text Font를 선택하고 Change Font버튼을 누른다. 글꼴 창에서 Bitstream VeraSans Mono를 고르고 확인을 눌러주면 폰트가 바뀐다. 그 후 OK를 눌러준다.
[ 기본 에디터 폰트 바꾸기 ]
간단하게 에디터의 폰트가 바뀐것을 확인할 수 있을 것이다.
2. 코드 템플릿 바꾸기
새로운 PHP파일을 생성하면,
< php
/*
* Created on 2006. 3. 6
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
? >
이런 식의 주석이 붙어있을 것이다. 이 문구는 주석에 나와있는 대로 Window - Preferences - PHPeclipse WebDevelopment - PHP - Code Templates 에서 바꿀 수 있다. 한번 바꿔보도록 하자.
[ Filter를 이용해 빨리 찾아가기. ]
이번에는 클릭을 반복하여 여는 대신, Filter를 이용해 빠르게 열어보도록 한다. 우선 Windows - Preferences를 열어보면 가장 상단에 type filter text 라는 텍스트박스를 볼 수 있다. 여기에 code template이라고 입력하면 트리메뉴가 필터링 되면서 빠르게 찾아지게된다. code template이라는 이름을 가진 것이 자바에 1개, PHP 에 1개가 있을 것이다. PHPeclipse 아래에 있는 code template을 선택한다.
[ 코드템플릿 찾아가기 ]
오른쪽의 트리 중 New PHP files를 선택하고 Edit버튼을 눌러주면 템플릿을 수정할 수 있는 창이 나온다. 이곳에서 자신이 원하는 템플릿을 넣어줄 수 있다. 나의 경우에는
< ?php
/**
* Created on ${date}
* Author: Kim HyunJin (loveisfunny-at-gmail.com)
*/
? >
이렇게 넣었다.
[ 코드템플릿 변경완료! ]
세 번쩨 줄의 ${date}는 커스텀변수로, 이렇게 넣으면 파일 생성날짜가 자동으로 찍혀나온다. 이 변수목록은 템플릿 수정창 하단의 Insert Variables 버튼을 클릭하면 볼 수 있다. 여러 가지가 있는데 직접 해본 것은 몇개 없어서 아는 것은 몇 개 안된다. 관심있으신 분들은 직접 사용해보시고 제일 좋은것을 사용하면 될것이다. 이렇게 설정해두면 새 파일을 생성할 때마다 설정해 둔 템플릿이 나오게 된다. 프로젝트를 진행하다보면 파일 가장 윗단에 공통 파일을 인클루드 하게되는 경우가 있는데, 이럴 때에도 유용하게 쓰일 수 있다.
3. 레퍼런스 연결하기
개발 중에 가장 많이 들춰보아야 하는 것이 바로 레퍼런스가 아닐까 싶다. PHP 레퍼펀스는 이곳에서 얻을 수 있다.
파일을 다운로드 했으면 이제 레퍼런스를 이클립스에 연결시켜 빠르게 열 수 있는 방법을 알아보자.
[ 레퍼런스는 이렇게 설정해준다. ]
Preferences 창에서 Help(WIN_32 *.chm format) 항목을 클릭한다. 그리고 방금 다운받은 chm파일의 경로를 적어주면 된다. 물론 Browse버튼을 클릭하면 탐색기에서 찾아 넣을 수 있다. 경로 위의 Show help in *.chm format? 이라는 체크박스를 선택해주면 chm파일을 직접 열어서 참고 할 수 있으므로 체크해두도록 하자. 체크 하지 않으면 이클립스 도움말 안에 삽입되어 같이 보여진다.(조금 불편하다) 이같이 설정해두면 앞으로 레퍼런스 파일은 Ctrl+Shift+h단축키로 열어볼 수 있다.
4. XAMPP와 연결하기
PHPEclipse에서 공식 지원하는 아파치 웹서버인 XAMPP를 설정해보겠다. XAMPP는 아파치재단에서 공식 후원하는 프로그램(Apache Friends)이다. 기본적으로 Apache 2.X, PHP 5.X, PHP 4.3.X, MySQL 5.X대를 지원한다. 특히나 PHP는 4와 5버젼이 동시에 설치되어 언제라도 다른 버전을 띄울 수 있도록 Switcher를 제공한다. 마지막으로 모든 (Stable) PEAR패키지를 한꺼번에 제공하므로 따로 다운로드 받을 필요가 없다는 장점이 있다. 연결되게되면 서버를 이클립스에서 아이콘 클릭만으로 시작/정지 할 수 있다.
지금까지 APMSETUP으로만 작업해왔던 개발자라면 한번쯤 바꿔보는 것도 좋다는 생각이 들어 장황하게 설명했다;;
글을 올린 시점의 XAMPP 사양은 이렇게 된다.
MySQL 5.0.18
Apache 2.2.0
PHP 5.1.1
phpMyAdmin 2.7.0 pl1
주의! 기존에 운용하던 아파치 서버(APMSETUP 등)가 있다면 끄고 XAMPP 서버를 켜도록 하자. 두개를 동시에 실행시키면 포트 충돌이 일어날것이다.
설치과정은 무척 간단하다. Next를 계속클릭하고 Finish를 날려주면 끝난다. 설치가 끝났으면 연결해보자.
[ xampp와 연결하기 ]
Preferences - PHPeclipse WebDevelopment - PHP external tools 의 XAMPP를 선택한다. XAMPP설치 시에 경로 설정을 따로 하지 않았다면 기본적으로 XAMPP는 c:\Program Files\xampp\에 설치된다. XAMPP start는 c:\Program Files\xampp\xampp_start.exe 로 설정해 주고, XAMPP stop은 c:\Program Files\xampp\xampp_stop.exe로 설정해 준다.
이제는 기본 아이콘에 있는 XAMPP START/XAMPP STOP 만으로 XAMPP를 시작/정지 할 수 있다. 두 버튼 모두 클릭 후에 콘솔이 열리면서 정상실행, 종료를 확인 할 수 있다.
5. UTF-8환경 만들기
요즘 프로젝트의 대세는 UTF-8이라 생각한다. UTF-8이 EUC-KR갖는 장점은 참 많지만 여기서는 논외로 하자. (사실은 논란에 휩싸이기 싫다..) 이클립스가 처음 설치되었을 때 인코딩은 MS949인데, 이것을 변경시켜보자. 인코딩 변경은 세곳에서 가능하다. 1. Preferences에서의 이클립스 기본 인코딩을 변경시키기. 2. Project속성에서 프로젝트 만의 기본인코딩을 변경시키기. 3. 파일 속성에서 파일만의 인코딩을 변화시키기. 눈치 챘겠지만 레벨 개념과 비슷하다. 1번을 변경시키면 앞으로 생성되는 모든 프로젝트는 UTF-8이 기본인코딩으로 설정되고, 2번을 변경시키면 그 프로젝트 내의 파일들이 모두 UTF-8이 기본인코딩이 된다. 마지막 3번은 따로 설명하지 않아도 알것이다.
(1) 이클립스 기본인코딩 변경시키기
Preferences - General - Editors에서 이클립스의 기본인코딩을 UTF-8로 변경시킬 수 있다. 대소문자의 구분이 없으므로 아무렇게나 입력해도 된다.
또한 WTP에서도 인코딩을 변경시켜줘야 한다.
Preferences - Web and XML 아래에 CSS files, HTML files에 들어가 Encoding을 UTF-8 로 맞춰주면 된다.
[ PHP인코딩 변경 ]
[ CSS 인코딩 변경 ]
[ HTML 인코딩 변경 ]
[ XML 인코딩 변경 ]
주의! 기존 EUC-KR을 사용하던 프로젝트가 있다면 실행하지 않도록 하자. 모든 인코딩이 깨져나올 것이다.
(2) 프로젝트/파일 기본 인코딩 변경시키기
메인 페이지의 Navigator에서 프로젝트를 하나 골라 마우스 오른쪽 버튼을 눌러 Properties를 선택하자. 가장 위의 Info 트리에서 Text file encoding에 Other를 골라 앞서 Preferences에서 골랐던 인코딩과는 다른 인코딩을 선택해주면 이 프로젝트에 한해 다른 인코딩을 사용할 수 있다. 파일 기본인코딩 변경도 같은 방법으로 해주면 된다.
이제 설정도 대략 끝이 났다. 이제는 이클립스로 개발만이 남았다.
여러분의 PHP개발이 이클립스로 날개를 달기를 바란다.
이것으로 저의 강좌를 마치며, 앞으로 단축키 목록, 쓸만한 플러그 인등의 소개를 꾸준히 올려볼 생각이다. 많은 호응 바란다.
//-------
이런 분들이 있어 프로그래머로 산다는게 자부심이 느껴지네요.
저도 열심히 해서 좋은 결과 남겨야죠 ㅎㅎ
system -- Execute an external program and display the output
Description
string system ( string command [, int return_var])
system() is just like the C version of the function in that it executes the given command and outputs the result. If a variable is provided as the second argument, then the return status code of the executed command will be written to this variable.
주의
사용자가 입력한 데이터를 이 함수로 넘길 때는, escapeshellarg()나 escapeshellcmd()를 사용하여, 사용자가 어떠한 명령을 실행하여 시스템을 조작하지 못하게 하여야 합니다.
참고: 이 함수를 사용하여 프로그램을 실행하고, 백그라운드에서 작업하게 내버려두려면, 그 프로그램의 출력이 파일이나 다른 출력 스트림을 향하게 하여야 합니다. 그렇지 않으면 PHP는 그 프로그램이 종료할 때까지 정지합니다.
The system() call also tries to automatically flush the web server's output buffer after each line of output if PHP is running as a server module.
Returns the last line of the command output on success, and FALSE on failure.
If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.
예 1. system() example
< ?php
echo '< pre>';
// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = system('ls', $retval);
// Printing additional info
echo '
Last line of the output: ' . $last_line . '
Return value: ' . $retval;
? >
참고: 안전 모드에서 실행 명령은 safe_mode_exec_dir 안에서만 실행할 수 있습니다. 실용적인 이유로, 실행 경로에 ..을 허용하지 않습니다.
주의
안전 모드에서는 처음 명령어 이후에 따라오는 모든 단어를 하나의 인수로 취급합니다. 그러므로, echo y | echo x은 echo "y | echo x"가 됩니다.
See also exec(), passthru(), popen(), escapeshellcmd(), pcntl_exec(), and the backtick operator.
vi /usr/local/apache/conf/httpd.conf
#------- 아래 부분 추가 -------
LoadModule rewrite_module libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#------- 여기까지 ---------
/usr/local/apache/apachectl configtest
/usr/local/apache/apachectl restart
1. 소개 : 웹서버 연동시 Apache, PHP, MySQL 연통설치하는데, 최적화된 서버 운영을 위해 추가로 Zend-Optimizer라 는 프로그램을 설치 할 수 있다.
2. 플렛폼 :OS :REDHAT 9(Linux)
3. 다운로드 사이트 :
MySQL : www.mysql.com
dev.mysql.com/get/Downloads/MySQL 다운로드 하면 된다.
Apache : www.apache.org
http://httpd.apache.org/
PHP : www.php.net
http://www.php.net/downloads.php
Zend-Optimizer : www.zend.com
http://www.zend.com/store/free_download.php
가입하면 자신의 메일로 가입허용이라는 메시지가 올 것이다.
클릭하면 된다.(즉 가입해야 다운 받을 수 있다.)
4. 압축 공통 방식 : tar.gz파일, tar.bz2파일
tar.gz 파일명
예 : tar zxvf mysql-standard-4.0.23-pc-linux-gnu-i686.tar.gz
tar.bz2 파일명
예 : tar jxvf mysql-standard-4.0.23-pc-linux-gnu-i686.tar.bz2
4개의 파일을 모두 압축을 풀어 줘야 한다. 그럼 각각의 디렉토리가 생성 될 것이다.
5. 기존의 인스톨된 apache제거하기 : rpm패키지로 설치되어 있는 아파치 웹서버 프로그램을 삭제 해야 한다. 그렇다고 꼭 해야 하는 것은 아 니지만 공간도 차지하고 서로 충돌이 생길 가능성을 배제하긴 어렵다. 최적화를 위한 작은 성의정도....
- 아파치 데몬을 정지 시킨다.
/etc/rc.d/init.d/httpd stop
설명 : 아파치 1.3버전은 apache라는 이름으로 설치되지만, 2.0버전은
httpd라는 이름으로 설치되므로 두가지 모두 검색해서 나오는 것을 삭제
- rpm으로 아파치 검색 또는 제거
rpm -qi | grep httpd -> 아파치의 정보를 볼때 사용한다.
즉 화면에 정보가 추출되면 설치 되어
있으므로 제거 하면 된다.
rpm -e httpd --nodeps -> 의존성관련된 패키지를 먼저 제거해주고
RPM 패키지를 제거 한다.
- PHP, MySQL도 위와 같은 방식으로 하면 된다.(응용이 될 거라 생각한다.)
6. MySQL 설치 하기
- mysql 소스파일의 압축을 푼 디렉토리로 이동한다.
cd /usr/local/src/cd mysql-standard-4.0.23-pc-linux-gnu-i686
- configure로 환경 설정 한다.
./configure --prefix=/usr/local/mysql --with-charset=euckr
설명 : --prefix는 인스톨한 기본 디렉토리를 지정하는 옵션이다.
--with-charset=ecukr은 한글을 지원한다는 뜻이다.
보통 소스파일에서 환경설정시에 configure를 사용하는데 configure와
관련된 옵션은 ./configure --help 하면 볼 수 있다.
기타 다른 옵션은 불 필요 하므로 사용자에 따라 정의 하면 된다.
- make : 소스이기 때문에 컴파일 과정이 필요하다.
- make install : 컴파일한 것을 실행시켜 설치한다.
7. mysql의 테스트
/usr/local/mysql/bin/mysql_install_db
설명 : 처음 설치시 한번 꼭 실행한다. 이작업은 mysql기본 데이터베이스
인 mysql과 testdb를 설치해준다.
/usr/local/mysql/bin/mysqld_safe --user=root &
설명 : 설치된 디렉토리로 이동하여 데몬을 띄운다.
/usr/local/mysql/bin/mysql
설명 : mysql 실행
8. apache 설치
설치될 디렉토리만 configure 한다.
- 아파치 압축을 푼 디렉토리로 이동한다.
- ./configure --prefix=/usr/local/apache --enable=-mods-shared=most --enable-module=so
설명 : prefix는 아파치가 설치될 디렉토리를 지정 하는 것이고,
--enable=-mods-shared=most --enable-module=so은 DSO 방식으로 PHP 모듈이 사용 될 수 있다.
DSO 동적 모듈로 설정 할 경우 PHP를 업데이트 할때 처음부터 재 설치 하지 않아도 된다.
make
make install
9. 환경 설정 파일 ( httpd.conf ) 설정
- /usr/local/apache/conf/httpd.conf 환경설정파일
설명 : 자신이 설치한 디렉토리 및에 conf폴더가 보일 것이다.
conf폴더 밑에 httpd.conf의 파일을 연다.
- vi httpd.conf
- /ServerName 항목을 찾는다.
설명 : IP 주소나 Domain Name을 적는다.
- php관련 환경 설정 : AddType이라는 항목이 모여있는 곳으로 이동한 뒤
아래와 같이 추가한다.
- AddType application/x-httpd-php .php .htm .html .inc .php5 .php4
- AddType application/x-httpd-php-source .phps
- DirectoryIndex index.html index.php index.htm
설명 : www.mass.com/index.php를 할 필요가 없이 www.mass.com 으로 웹 페이지를 로딩 한다.
10. PHP 설치
- PHP압축을 푼 디렉토리로 이동한다.
- ./configure --prefix=/usr/local/php \
설명 : prefix는 PHP가 설치될 디렉토리를 지정한다.
--with-apxs2=/usr/local/apache/bin/apxs \
설명 : --with-apxs2는 php가 아파치데몬에 DSO 모듈로 로딩 되도록 하기 위한 것이다.
--with-mysql=/usr/local/mysql/ \
설명 : mysql과 연동 하기 위한 설정 부분 이다.
--with-config-file-path=/usr/local/apache/conf \
설명 : php.ini 경로의 위치를 저정 하는 옵션 이다.
--with-exec-dir=/usr/local/apache/bin \
설명 : 아파치 데몬의 실행경로를 지정 한다.
--with-zlib --with-gd --with-ttf --with-png --with-jpeg-dir \
설명 : --with-zlib : zlib 는 zip 나 gzip 에 사용되고 있는 압축 알고리즘을 라이브러리화한 것이다.
--with-gd : GD에 있는 함수를 이용해서 이미지를 편집할 수 있는 라이브러리 이다.
--with-ttf ,--with-png, --with-jpeg-dir : 위와 동일하며 각각의 설정 이다.
--with-freetype-dir --with-gmp --with-xml --with-mod-charset \
--with-iconv \
--with-language=korean --enable-mbstr-enc-trans --enable-mbstring \
--enable-track-vars \
--enable-trans-sid \
설명 : --enable-track-vars는 HTTP_GET_VARS, HTTP_POST_VARS,
--enable-iconv
설명 : iconv라는 함수를 사용 하기 위해 iconv 라이브러리를 설정 한다.
- make
- make install
- cp php.ini-dist /usr/local/lib/php.ini
설명 : PHP의 환경설정파일인 php.ini를 라이브러리 디렉토리에 등록 시킨다.
모든 설치는 완료 된 것이다. 하지만 이렇게 한다고 웹 서버가 구축 된 것은
아니다 왜냐면 환경 설정 부분에서 조금 남아 있기 때문이다.
마무리 작업을 하도록 하겠다.
11. Zend-Optimizer 설치
- Zend-Optimizer 압축을 푼 디렉토리로 이동한다.
- ./install.sh을 실행하여 절차대로 설치한다.
12. 아파치 테스트
- 문서는 /usr/local/apache/htdocs/ 밑에 있다 모두 지우고 다시 만들어도
된다. 그러므로 자신이 원하는 이름으로 만들어 본다.
- index.html 문서에 아래와 같이 만든다.
리눅스 웹 서버 만들기
리눅스에 미치든가 아니면 하지 않는다.
리눅스를 자신의 것으로 만들면 된다.
13. 아파치와 PHP가 제대로 연동되는지 테스트
- test.php에 간단한 PHP문서를 이용하여 phpinfo()라는 PHP정보를 보여주는
함수를 이용해서 작성한 뒤에 웹상에서 불러오도록 한다.
- test.php 문서
php.info();
?>
- 웹상에서 실행 해본다.
예) 192.xxx.xxx.xx/test.php
DNS를 구축 했을 경우 : mass.com/test.php
- 실행 해보면 zend와 각종 관련 정보가 보일 것이다. 그럼 이제 부터 나머지는
각자의 노하우로 하면 된다.
14. 간단한 TIP
- /etc/hosts 네트워크 환경 설정 파일 이용하기
설명 : 많은 사람들은 웹 페이지에서 사이트를 입력 할때 문자로 입력하지
숫자로 입력 하지는 않 숫자로 입력 하지는 않는다. 바로 그 부분을 담당하는 것이라고 생각
하면 된다. 자신의 localhost가 192.33.23.xx이라면 아래와 같이 하면된다.
- vi /etc/hosts
- 192.33.23.xx www.mass.com mass
설명 : 이렇게 하면 telnet 192.123.23.xx 하지 않고
telnet mass 하면 해당 주소로 바인딩 된다.
- /etc/hosts 설명 : DNS 서버를 사용하기 이전에 사용하던 파일로 IP주소와
호스트이름을 매핑시켜 데이터베이스화해서 사용하는 파일이다.