IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  오픈 소스  >

PHP 프레임워크, Part 1: 많이 사용하는 프레임워크 세 개

Zend, symfony, CakePHP

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Duane O'Brien, PHP 개발자, 프리랜서

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 7 월 15 일

몇 해 전까지만 해도 PHP를 둘러싸고 자주 터져나온 비평 중 하나가 MVC 아키텍처를 지원하지 않는다는 사실이었습니다. 하지만 상황은 변했습니다. 지금은 선택할 만한 PHP 프레임워크가 상당히 많아졌습니다. 이 연재 기사에서는 많이 사용하는 PHP 프레임워크 세 가지인 젠드(Zend), 심포니(symfony), CakePHP를 소개합니다. 각 프레임워크에서 간단한 프로그램을 구현하고 확장하면서 세 프레임워크의 유사점과 차이점을 설명합니다.

이 연재 기사에 대해

이 연재 기사는 프레임워크를 사용하고 싶으나 어떤 프레임워크를 선택할지 살펴보지 않은 PHP 개발자를 대상으로 삼는다. 여기서는 세 프레임워크를 선택한 이유, 각 프레임워크를 설치하는 방법, 각 프레임워크에서 확장한 테스트 프로그램을 구현하고 실행하는 방법을 살펴본다. 내용이 아주 많아보이지만 걱정할 필요는 없다. 독자 여러분이 따라오기 쉽도록 다섯 편으로 나누어 진행할 예정이다.

Part 1은 이 연재 기사에서 다루려는 내용을 전체적으로 조망한다. 앞으로 살펴볼 프레임워크 세 개를 소개하고, 각 프레임워크를 설치하고, 첫 번째 테스트 프로그램을 소개한다. (휴우!)

Part 2는 각 프레임워크에서 예제 프로그램을 작성한다. 이 과정에서 각 프레임워크의 유사점과 차이점도 살펴본다.

Part 3은 예제 프로그램을 확장한 다음 예외 상황을 소개한다. 어떤 프레임워크든 프레임워크 설계자가 의도한 범위 내에서는 문제 없이 돌아간다. 하지만 어떤 프로젝트든 프레임워크 설계자가 의도하지 않았던 예외적인 상황이 발생하기 마련이다. 이 기사에서는 이러한 예외 상황을 다룬다.

Part 4는 각 프레임워크가 Ajax를 지원하는 방식에 초점을 맞춘다. 고유 코드와 타사 라이브러리로 Ajax 프로그램을 구현하고, 각 프레임워크가 동작하는 방식과 지원하는 인기있는 라이브러리를 살펴본다.

Part 5는 프레임워크 밖에서 작업하는 방법을 다룬다. 매일 밤 갱신을 수행하는 간단한 스크립트를 예제로 삼아서, 각 프레임워크에서 이 예제를 구현하는 방법을 다룬다.




위로


이 기사에 대해

이번 기사는 다루는 내용이 상당히 많다. 그래서 정신을 바짝 차리고 따라오기 바란다. 여기서는 PHP 프레임워크 세 가지를 살펴본다. 그 세 가지가 무엇일까? 왜 하필이면 세 가지일까? 다른 프레임워크는 없는가? 다른 프레임워크가 있다면 그건 왜 살펴보지 않는가? 의문스러운 점이 아주 많으리라. 하지만 대다수 궁금증은 각 프레임워크를 설치하기 전에 해결되리라 믿는다. 프레임워크를 모두 설치한 다음에는 이 연재 기사에서 사용할 테스트 프로그램을 살펴본다. 테스트 프로그램만 봐도 각 프레임워크가 어떤 점이 다른지 혹은 어떤 점이 같은지 감이 오리라.

시스템 요구사항

시작하기 전에 환경부터 설정하자. 요구사항은 많지 않다.

  1. 세션을 지원하는 HTTP 서버가 필요하다. mod_rewrite 모듈을 지원하면 더 좋다. — 이 연재 기사에서는 아피치 V1.3을 사용한다. mod_rewrite 모듈을 활성화했다.
  2. PHP V5.1.4 이후 버전이 필요하다 — 여기서 살펴보는 모든 프레임워크가 V5.1.4를 요구하지는 않는다. 하지만 편의상 모든 프레임워크에서 같은 PHP 버전을 사용한다. 이 연재 기사는 PHP V5.2.3으로 작성했다.
  3. 어느 정도 최신 MySQL이 필요하다 — 다른 데이터베이스를 사용해도 좋지만, 이 연재 기사와 예제 프로그램은 MySQL V5.0.37을 사용한다.
  4. PHP V5.2.4 이후 버전과 MySQL을 지원하는 운영체제가 필요하다 — 이 연재 기사에서는 리눅스(Linux®)를 사용한다. 윈도우(Windows®) 사용자라면 적절히 대응하기 바란다. 특히 프레임워크를 설치할 때 디렉터리를 만드는 방식에 주의한다.

필요한 사전 지식

이미 독자가 PHP를 알고, 응용 프로그램을 설계할 줄 알고, 데이터베이스를 사용할 줄 안다고 가정한다. 프레임워크를 사용한 경험은 없어도 좋으나, 배우겠다는 의욕은 필요하다.




위로


왕초보를 위한 프레임워크 개요

선택한 프레임워크를 소개하기 전에 먼저 프레임워크 자체가 무엇인지 살펴보자.

프레임워크는 여러 응용 프로그램에서 공통적으로 사용하는 설계 방식을 제공한다. 모든 응용 프로그램은 기본 기능을 상당수 공유한다. 예를 들어, 데이터베이스를 사용하는 방법, 특정한 응용 프로그램 논리, 사용자에게 프로그램을 표현하는 방식 등은 많은 응용 프로그램에서 비슷하다. PHP 프로그램을 작성한 경험이 풍부하다면 어떤 모양새인지 충분히 짐작이 가리라. 데이터베이스에서 정보를 읽어들이고 데이터베이스로 정보를 쓰는 클래스나 함수를 작성해 보았을 것이다. Smarty와 같은 템플릿 엔진을 사용하여 UI를 관리했을지도 모르겠다. 폼에서 제출한 값을 분석하여 결정을 내리는 PHP 코드도 많이 작성했으리라. 응용 프로그램을 작성한 경험이 풍부하다면 같은 코드를 여러 번 작성한 경험도 많을 것이다. 필경 예전 프로그램 코드를 새 프로그램으로 가져다 썼겠지만.

프레임워크는 (데이터베이스 연결, 표현 층, 응용 프로그램 논리 등) 자주 사용하는 요소를 쉽게 사용하도록 구조적인 환경을 제공한다. 따라서 데이터베이스 인터페이스 코드나 표현 층 인터페이스를 작성하는 시간이 줄고 응용 프로그램 자체에 투자하는 시간이 늘어난다. 이러한 방식을 따르는 응용 프로그램 아키텍처를 MVC(Model-View-Controller)라고 부른다. 여기서 모델(Model)은 데이터를 뜻한다. 뷰(View)는 표현 층을 가리키며, 컨트롤러(Controller)는 응용 프로그램 논리나 비즈니스 논리를 뜻한다. MVC에 대한 설명은 이 기사 범위를 벗어나므로 더 이상 언급하지 않지만 연구해서 알아두는 편이 바람직하다. 자세한 내용은 참고자료를 살펴본다.




위로


프레임워크 선택

거의 모든 언어에서 프레임워크는 여러 가지가 존재한다. 올바른 프레임워크를 선택하기란 쉽지 않다. 특히 어느 프레임워크도 써보지 않은 상태에서는 자신에게 맞는 프레임워크를 선택하기가 더욱 어렵다. 믿을만한 developerWorks 필자나 동료가 주는 조언과 의견을 활용해도 좋지만, 프레임워크를 선택할 때는 한 가지 원칙을 명심해야 한다. 프레임워크의 우수성은 프레임워크를 사용해서 절약하는 모두의 시간과 노력에 비례한다. 개발자에게는 좋지만 지원하기 어려운 프레임워크는 바람직하지 못하다. 지원하기 쉽지만 개발이 어려운 프레임워크 역시 바람직하지 못하다. 아무리 우아해도 지원과 개발이 어려운 프레임워크는 쓸모가 없다.

프로젝트에 사용할 프레임워크를 선택할 때는 위에서 아래로 이해관계자 전부를 고려한다. 또한 프레임워크를 평가할 때는 다른 사람들에게 미칠 영향도 염두에 둔다.

프레임워크를 사용하려고 고려 중이라면 자신의 프로그램을 면밀하게 분석한다. 진짜로 프레임워크가 필요한가? 프레임워크는 필수적인 요건이 아니다. 이제까지 사람들은 프레임워크 없이도 기업 응용 프로그램을 작성해왔고 앞으로도 그럴 것이다. 프레임워크가 프로젝트에 도움이 될까? 모두의 시간과 노력을 절약할까? 프레임워크를 사용하면 프로그램 성능이 나아질까? 부족한 안정성이 높아질까? 모든 질문에 "예"라는 답이 나오면 프레임워크를 사용하라고 권한다. 모든 질문에 "아니오"라는 답이 나오면 프레임워크는 상황만 복잡하게 만들 뿐이다.

안타깝게도, 시간과 지면 제한으로, 여기서 PHP 프레임워크 모두를 상세히 살펴보지는 못한다. 이번 연재 기사에서는 다음 세 가지 프레임워크만 살펴보겠다.

  • 젠드 프레임워크
  • 심포니
  • CakePHP

위 세 가지 프레임워크를 선택한 이유는 다양하지만, 가장 큰 이유는 "상사가 아는 프레임워크", "누군가 이미 설치한 프레임워크", "남들 입에 오르내리는 프레임워크"이기 때문이다. 이 외에도 CodeIgniter, Seagull, Web Application Component Toolkit (WACT), PRADO, Zoop, PHP on Trax 등 다양한 PHP 프레임워크가 있으니 시간을 내 살펴보기 바란다. 프레임워크 선택은 프로그래밍 언어 선택처럼 매우 개인적인 선택이다. 어느 프레임워크가 더 나으며 어느 프레임워크가 더 못하다는 평가는 여러분에게 맡긴다. 여기서는 프레임워크가 잘하는 기능과 못하는 기능을 솔직하게 언급할 뿐이다. 많은 프레임워크를 철저하게 살펴보지는 못하지만, 여기서 접근하는 방식을 다른 프레임워크에 적용하면 프레임워크의 강점과 약점을 파악하는 데 도움이 되리라 생각한다. 어느 프레임워크가 마음에 들고, 어느 프레임워크를 선택할지는 여러분에게 달려있다.

젠드 프레임워크

모두가 젠드 사, "The PHP Company"를 안다. PHP를 내려받아 설치하려면 젠드 사에서 내려받아야 한다. V3 이후부터 그랬다. 지난 수년 동안 젠드 사는 PHP를 배포하는 역할 외에도 광범위한 PHP 지원 기술을 제공해왔다. 그러니 젠드 사가 PHP 프레임워크를 제공한다는 사실이 전혀 놀랍지 않다. 젠드 사가 제공하는 PHP 프레임워크는 지금까지 내려받은 횟수가 200만에 이른다. 상사가 PHP 프레임워크를 들어봤다면 젠드 프레임워크일 가능성이 크다.

심포니

Sensio 사가 후원하는 심포니는 "웹 응용 프로그램 생성/유지보수 속력을 높이고 반복적인 구현 작업을 강력함과 통제와 즐거움으로 대체하겠다는 목표"를 지향한다. 심포니 프레임워크는 많은 기업 응용 프로그램에서 전세계적으로 사용해왔다. 가장 대표적인 예가 Askeet와 Yahoo! Bookmarks다. 누군가 PHP 프레임워크를 설치해 사용했다면 심포니일 가능성이 크다.

CakePHP

Ruby on Rails를 많이 닮은 CakePHP는 PHP 프레임워크에 단순성과 확장성을 표방한다. PHP 프레임워크 중 최고로 손 꼽히며, 최근에는 Mambo Content Management System V5 코어로 선택되었다. 탄탄한 개발자 공동체와 급속히 증가하는 사용자 기반에 힘입어 CakePHP 인기는 날로 높아지는 추세다. 지나다 보니 누군가 PHP 프레임워크 이야기를 나누고 있었다면 CakePHP일 가능성이 크다.




위로


설치

각 프레임워크는 나름대로 설치 절차가 있다. 세세한 절차와 방법은 이 기사 범위를 벗어나므로 다루지 않는다. 대신, (개별 프레임워크 설치 설명서에서는 언급하지 않는) 다른 프레임워크와 비교해 좋은 점이나 세 프레임워크를 한 시스템에 설치할 때 주의할 점만 언급한다.

모든 코드와 프레임워크와 예제를 포함할 폴더를 생성한다. 예를 들어, 연재 기사를 위한 /column이라는 디렉터리를 생성한다. 이 디렉터리 안에 htdocs, protected, include, src라는 추가 디렉터리 네 개를 더 만든다. 아파치 환경 설정 파일을 수정하여 문서 루트를 /column/htdocs로 설정한다. 또한 필요하다면 mod_rewrite도 활성화해야 한다. php.ini 환경 설정 파일을 수정하여 include_path에 /colume/include/ 디렉터리를 추가한다. 지금은 무슨 뜻인지 몰라도 상관이 없다. 프레임워크를 설치하다 보면 모든 사항이 명백해진다.

젠드 프레임워크 설치하기

젠드 프레임워크를 내려받는다(내려받는 위치는 참고자료 절을 살펴본다). 이 연재 기사에서는 V1.0.1을 설치했다. 젠드 프레임워크 패키지를 내려받은 후 /column/src 디렉터리에 (untar/unzip으로) 푼다. 배포판은 여러 텍스트 파일과 디렉터리 세 개(demo, tests, library)를 포함한다. library 디렉터리에는 Zend 디렉터리 하나가 들어있다. 이 Zend 디렉터리를 /column/include/ 디렉터리 아래로 복사한다. 이제 /column/include/Zend 디렉터리는 다양한 파일과 디렉터리를 포함한다. 이것이 바로 젠드 프레임워크가 사용하는 라이브러리다.

이상으로 젠드 프레임워크를 설치했다.

심포니 설치하기

심포니를 내려받는다(내려받는 위치는 참고자료 절을 살펴본다). 다운로드 페이지에 있는 여러 방법 중 하나로 심포니를 설치해도 상관이 없다. 우리 목적에 맞춰 여기서는 tarball을 내려받는 방법을 권장한다. 내려받은 tarball을 /column/src/symfony/ 디렉터리에 푼다. 그러면 디렉터리 네 개(data, doc, lib, licenses)와 REAME 파일 몇 개 생긴다. 우리 예제를 완성하는 데는 모두가 필요하지 않지만, 지금은 이것으로 충분하다. 설치 단계가 너무 간단하다고 여길지도 모르겠다. 이런 프레임워크는 일반적으로 유틸리티와 라이브러리로 이루어져 있으므로 설치 자체는 별로 어렵지 않다. 사용하기가 좀 까다로울 뿐이다. 나중에 자세히 살펴보면 알게 된다.

모두가 각자 환경에서 PEAR(PHP Extension and Application Repository)를 사용하기는 어려우므로 위 방법으로 설치를 권장했다. 그러나 PEAR를 사용할 수 있다면 그렇게 하라고 권한다. 두 방법 모두 심포니 설치 페이지에서 상세히 설명한다(참고자료 참조).

CakePHP 설치하기

CakePHP를 내려받는다(내려받는 위치는 참고자료 절을 살펴본다). 이 연재 기사에서는 1.2.0.5427alpha 버전을 사용한다. CakePHP 공동체에서는 (안정적인 알파 버전이 있음에도) CakePHP 1.2 브랜치를 거의 표준으로 받아들인다. tar 파일을 내려받아 /column/src/cakephp/ 아래에 푼다. 그러면 디렉터리 네 개(app, cake, doc, vendors)와 파일 두 개(.htaccess, index.php)가 생긴다. 나중에 파일을 다른 위치로 옮기겠지만, 지금은 이 정도로 충분하다.




위로


테스트용 프로그램

지금까지 프레임워크 세 개를 내려받아 설치했다. 아직까지 설치가 정말 성공했는지는 모른다. “Hello World" 같은 프로그램으로 확인하지 않았으니까. 사실 "Hello World"보다 좀 더 재미난 프로그램으로 확인할 생각이다.

PHP 프레임워크에서 "Hello World" 같은 프로그램을 작성하기는 좀 번거롭다. 프레임워크는 기본적으로 좀 무거워서, "Hello World"처럼 단순한 프로그램에 사용하려면 자칫 배보다 배꼽이 더 커진다. 하지만 좀 더 복잡한 프로그램이라면 무거움이 오히려 장점으로 작용한다.

테스트 프로그램은 별로 복잡하지 않다. 아직은 말이다. 텍스트 영역(text area)에다 텍스트를 입력하여 게시하는 프로그램이다. 사용자가 입력한 텍스트를 데이터베이스에 저장한 후 사용자가 요청할 때마다 데이터베이스에서 가져와 브라우저에 출력한다. 이러한 프로그램을 사용하면 HTML 파일을 편집하거나 새 파일을 업로드할 필요 없이 웹 사이트 내용을 생성하고 갱신하기 쉬워진다. 우리가 만들 아주아주 혁신적이고 창의적인 프로그램을 Blahg라고 부르겠다.

Blahg가 어떤 프로그램이냐고?

앞서 간단한 설명을 고려하면 응용 프로그램을 어떻게 설계할지 대충 감이 오리라. Blahg는 네 가지 요소가 필요하다.

  1. 폼을 포함하는 페이지 — 폼은 텍스트 영역을 적어도 하나는 포함한다. 게시물 쓰기 페이지다.
  2. 게시물을 읽는 페이지 — 페이지로 게시물 ID를 넘긴다. 게시물 읽기 페이지다.
  3. 읽을 수 있는 게시물을 열거하는 페이지 — 색인(index) 페이지다.
  4. 게시물을 저장하는 데이터베이스 테이블 — 테이블은 게시물 텍스트와 게시물 ID를 저장한다. 게시물 제목과 최종 수정일을 저장해도 좋겠다.

물론 Blahg에 미흡한 점이 없지 않기에 (연재 기사 후반에서 프로그램을 개선한다. 하지만 지금은 이 정도 단순한 요구사항만으로도 충분하다. 불행하게도, 이번 기사에서는 구현에 뛰어들지 않는다. 구현은 Part 2로 미룬다. 여기서는 앞으로 사용할 데이터베이스부터 설정한다.




위로


데이터베이스 설정

Blahg를 실제로 구현하기 전에 먼저 데이터베이스를 설정해야 한다. 사실 프레임워크마다 데이터베이스를 따로 만들 필요는 전혀 없지만, 이 연재물의 목적에 맞춰 프레임워크마다 데이터베이스를 따로 사용하면 테이블 이름을 변경할 필요가 없으며 좀 더 조직적으로 관리가 가능하므로 여러 모로 편리하다.

Zend, symfony, Cake라는 데이터베이스 세 개를 만든다. 각 데이터베이스에서 적절한 사용자에게 모든 권한을 부여한다. 아래는 각 프레임워크마다 posts 테이블을 만드는 SQL이다.

데이터베이스를 만드는 김에 Blahg라는 테이블도 만든다. (Blahg 테이블은 초반에 사용한다.) 그러고 나서, 다음 SQL을 사용하여 Zend 데이터베이스와 symfony 데이터베이스에다 posts 테이블을 만든다.


Listing 1. Zend와 symfony 데이터베이스에 posts 테이블 만들기
                 
CREATE TABLE 'posts' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'text' TEXT NOT NULL , 
'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE = MYISAM ;

젠드와 심포니는 modified 열을 데이터베이스가 직접 관리한다. CakePHP는 조금 다른 SQL을 사용한다. 아래 SQL을 사용해 posts 테이블을 만들면 CakePHP가 modified 열을 개발자 입장에서 보면 마법처럼 직접 관리한다.


Listing 2. CakePHP 데이터베이스에 posts 테이블 만들기
                
CREATE TABLE 'posts' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'text' TEXT NOT NULL , 
'modified' DATETIME DEFAULT NULL 
) ENGINE = MYISAM ; 

기본적인 테이블 구문이라 별로 복잡하지 않다. 테이블 구조로 Blahg가 동작할 방식과 모양새를 충분히 짐작할 것이다. 심지어 프레임워크 없이 Blahg를 직접 구현해보아도 좋겠다.




위로


다음 단계

곧바로 프레임워크를 시작해서 이것저것 찔러보려는 유혹을 억누르기 바란다. 대신, 시간을 투자해 프레임워크를 사용하지 않은 상태에서 Blahg를 작성해보라고 권한다. 자신이 흔히 사용하는 방식으로 프로그램을 직접 짜본다. 단, Blahg를 만드는 동안 위 요구사항을 그대로 따른다. 아직은 화려한 기능을 추가하지 않도록 주의한다. 프레임워크 밖에서 테스트 프로그램을 직접 짜고 직접 개선하다 보면 각 프레임워크가 내 목적과 내 개발 스타일에 어느 정도 잘 맞는지 판단하기가 쉬워진다.




위로


요약

이번 기사에서는 다양한 기초 지식을 다뤘다. 별다른 어려움 없이 프레임워크를 설치했기 바란다. 문제가 발생했다면 각 프레임워크에서 제공하는 설치 문서를 살펴보기 바란다(참고자료 참조). Part 2로 넘어가기 전에 시간을 들여 Blahg를 직접 구현하면 좋겠다. 그만한 보람을 얻으리라 장담한다.



참고자료

교육
  • "PHP 프레임워크" 연재 기사를 모두 읽어본다.

  • 젠드 프레임워크 설명서를 읽어본다.

  • 심포니 문서를 읽어본다.

  • CakePHP 설명서를 읽어본다(주의: 이 설명서는 CakePHP V1.1용이다. CakePHP V1.2를 사용한다면 주의한다).

  • "Cookup Web sites fast with CakePHP.": 5부로 이루어진 기사 연재물이다.

  • software frameworks: 소프트웨어 프레임워크를 개략적으로 설명하는 위키 페이지다.

  • MVC architecture: MVC 아키텍처를 개략적으로 설명하는 위키 페이지다.

  • PHP와 관련한 자세한 정보는 PHP 설명서를 살펴본다.

  • PHP.net을 방문해 기타 추가 문서를 얻는다.

  • PHP로 프로그래밍하는 방법은 developerWorks 연재기사 "Learning PHP"를 살펴본다.

  • PHP.net은 PHP와 관련한 자료를 상세히 제공한다.

  • "Recommended PHP reading list"(Daniel Krook and Carlos Hoyos, 2006년 3월): PHP 개발자가 읽어야 할 자료 목록이다.

  • developerWorks에 실린 PHP 관련 기사 목록을 살펴본다.

  • IBM developerWorks' PHP 프로젝트 정보에서는 PHP 개발자에게 필요한 다양한 정보를 제공한다.

  • developerWorks 포드캐스트는 소프트웨어 개발자들이 나누는 토론과 흥미로운 인터뷰 자료를 제공한다.

  • PHP와 데이터베이스를 연동한다면 Zend Core for IBM을 권장한다. IBM Zend Core는 설치하기 쉽고 사용하기 간편한 PHP 개발 환경으로, IBM DB2 V9을 지원한다.

  • developerWorks' 기술 행사와 웹 캐스트를 놓치지 말기 바란다.

  • IBM 오픈 소스 개발자들이 흥미를 가지는 컨퍼런스, 전시회, 웹 캐스트 등 전세계적으로 벌어지는 행사 목록도 참고한다.

  • developerWorks 오픈 소스 영역은 오픈 소스 개발과 구현에 필요한 자원을 모아놓은 사이트다. 오픈 소스를 개발하는 방법, 오픈 소스 도구, 오픈 소스 프로젝트, 오픈 소스에서 IBM 제품을 사용하는 방법 등을 상세히 설명한다.

  • developerWorks On demand demos에서 IBM 제품과 기술, 오픈 소스 제품과 기술을 무료로 시연해 볼 수 있다.


제품 및 기술 얻기

토론


필자소개

Duane O'Brien은 오레건 트레일(Oregon Trail. 역주: Don Rawitsch, Bill Heinemann, Paul Dillenberger가 1971년 제작한 교육용 컴퓨터 게임)이 텍스트 버전일 때부터 기술에 관한 한 다방면의 재주를 가진 사람이었다. 초밥을 좋아한다. 달에 가본 적은 없다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us





위로


developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의