?? [Smle] and console game programming ::

[Smle] and console game programming

BLOG main image


사용자 삽입 이미지

3월 출시

hello world 동영상도 보시고
http://video.codegear.com/php/hello/hello.html

볼랜드의 관련 페이지도 보시고..
http://www.codegear.com/Products/Delphi/DelphiforPHP/tabid/237/Default.aspx

아카데믹 버전은 usd $99

기분이 좋으니 피쳐는 친절하게 번역..

  • PHP지원 통합 환경(!)
  • VCL for php - ajax가 통합된 재 사용 가능한 50여개의 오픈소스 비주얼 콤포넌트
  • interbase, mysql, oracle, ms-sql 기타 등등 DB지원
  • 통합된 강력한 PHP 디버거
  • 윈도우, 리눅스, 솔라리스 등 PHP 어플리케이션 배포기능
  • 국제화 지원
  • 데이터베이스 익스플로러를 이용한 드래그 앤 드랍 방식의 데이터베이스 프로그램 개발
  • 코드인사이트, 코드 익스플로러, 코드 템플릿 등 기존 델파이의 코드에디터로 php코드를 작성

    아놔~
  • 훌륭해...

    멋져...

    짱이야...

    이올린에 북마크하기(0) 이올린에 추천하기(0)
    2007/03/18 12:48 2007/03/18 12:48

    수정 중입니다.

    팔꿈치 털로 번역했으니 이해하세요...
    3일에 한개꼴로 업로드 예정

    ------------------------
    The Definitive Guide to symfony

    Chapter 1 - Introducing Symfony


    제목 : Symfony 핵심 가이드 (The Definitive Guide to symfony)
    원문 : http://www.symfony-project.com/book/trunk/01-Introducing-Symfony
    번역 : 스믈군(http://smle.net, na[at]smle.net)



    이번 챕터는 “심포니로 무엇을 할 수 있을까?”, “심포니를 사용하려면 무엇이 필요할까?” 대한 것입
    니다.

    Symfony in Breif

     프레임워크는 개발시 발생하는 많은 유형들을 자동화 하여 능률적인 개발을 할 수 있게 해줍니다. 또한 프레임워크는 코드를 구조화 하고 좀더 나은 코드와 더 읽기 좋은 코드를 작성하여 유지보수에 수월한 코드를 신속하게 작성 할 수 있게 해줍니다. 결론적으로 프레임워크를 사용하게되면 복잡한 명령을 간결한 구조와 문법으로 포장하여 프로그래밍 작업을 쉽게 만들어줍니다.

     Symfony는 핵심적인 몇 가지 기능을 제공하여 최적화된 완벽한 웹 애플리케이션을 개발하게 해주는 프레임워크입니다. Symfony를 처음 접하는 사람을 위해 소개하자면 Symfony는 웹 애플리케이션의 Business Rules, 서버 로직, 그리고 Presentation View로 분리되어있습니다. Symfony는 복잡한 웹 애플리케이션의 개발을 단축시켜주는데 특화된 많은 툴들과 클래스가 있고 공통된 작업을 자동화시켜 개발자가 전적으로 애플리케이션의 구체적인 부분에만 신경을 쓸 수 있도록 해줍니다. 결과적으로 Symfony를 사용하면 새로운 웹 애플리케이션을 만들 때 마다 바퀴를 새로 만들 필요가 전혀 없습니다!

     Symfony는 PHP5로 작성되었고 실제 여러 실무 환경과 고수준의 비즈니스 로직을 사용하는 웹사이트들을 통해 철저히 테스트 되었습니다. 그리고 Symfony는 MySQL, PostgreSQL, Oracle, Microsoft SQL을 비롯한 거의 모든 데이터베이스엔진과 문제가 없으며 *nix나 윈도우 플랫폼에서 훌륭히 구동 될 수 있습니다. 이제 Symfony의 기능을 더 자세히 알아봅시다.

    Symfony Features

    Symfony는 다음과 같은 기능을 지원 합니다.

    • 거의 모든 플랫폼에서 쉬운 설치와 설정을 지원합니다.(일반적인 *nix와 윈도우 플랫폼에서의 동작을 보장합니다.)
    • 데이터베이스에 독립적입니다.
    • 여러 복잡한 상황에 적용 할 수 있으면서도 쉬운 개발을 할 수 있습니다.
    • 간단한 문법에 기반을 둔 설정파일로 개발자는 자유롭게 설정 할 수 있습니다.
    • 대부분의 웹 환경에 최상의 방법과 디자인패턴을 지원합니다.
    • 엔터프라이즈 환경을 지원합니다. 현존하는 개발 규약이나 아키텍처를 지원하며 장기간 프로젝트에도 안정적으로 적용 할 수 있습니다.
    • phpDocuments 주석을 통해 읽기 쉬운 코드를 제공하며 유지보수에 좋습니다.
    • 확장성이 높아 다른 라이브러리를 쉽게 적용 할 수 있습니다.
    Automated Web Project Features

    다음과 같은 기능들이 Symfony를 통해 자동화가 가능합니다.

    • 내장된 국제화 레이어를 통해 컨텐츠 뿐만 아니라 데이터와 인터페이스 모두 국제화를 적용 할 수 있습니다.
    • 프레젠테이션 레이어는 템플릿과 배치를 사용하여 HTML디자이너가 프레임워크를 알지 못해도 개발할 수 있게 해주며 헬퍼 함수를 통해 간단한 함수 호출을 통해 복잡한 부분을 캡슐화 할수 있기 때문에 코드 작성 양을 줄일 수 있습니다.
    • 자동화된 Validation을 제공하는 Form을 지원하여 데이터베이스의 품질을 보증하고 더 좋은 유저 익스피어리언스를 통해 고객을 증가시킬 수 있습니다.
    • 부적절한 입력 데이터를 통한 공격을 막는 코드를 작성할 수 있습니다.
    • Cache 관리를 기능을 통해 bandwidth사용과 서버 부하를 줄여줍니다.
    • 인증과 인증서 기능 지원을 통해 제한된 영역을 만들수있고 유저 보안관리가 용이합니다.
    • 자동 Routing과 Smart URL을 지원하여 페이지주소을 인터페이스의 한 부분으로 만들고 검색엔진 노출에 용이하도록 만들어줍니다.
    • 내장된 e-mail과 API들을 통해 웹애플리케이션이 예전 웹브라우저를 지원할 수 있도록 해줍니다.
    • 유저에게 도움되는 자동화된 페이징과 정렬, 필터링을 제공합니다.
    • Factories와 플러그인을 통해 고수준의 확장 가능성을 제공합니다.
    • 크로스브라우징을 지원하는 캡슐화된 자바스크립트를 통한 Ajax지원 기능은 유저와 소통할 수 있는 좋은 도구가 될 것입니다.

    Development Environment and Tools

    Symfony는 기업이 필요로 하는 각자의 이미 정의 된 코딩가이드라인이나 프로젝트 관리 규칙을 완벽히 커스트마이즈가 가능하고 여러 개발 환경에도 완벽히 적용 할 수 있습니다.

    • 코드 생성 툴은 프로토타이핑과 원 클릭 기반의 백엔드 관리툴 개발에 훌륭합니다.
    • 내장된 유닛기반의 함수 테스팅 프레임워크는 TDD를 위한 완벽한 툴을 제공합니다.
    • Debug Panel을 통해 개발자가 페이지를 개발하는데 필요한 모든 정보를 표시하여 개발을 빠르게 해줍니다.
    • CLI(Command Line Interface)를 통해 두 대 이상의 서버에 어플리케이션 배포를 자동화 할 수 있습니다.
    • 실시간 환경설정을 통해 그 결과를 바로 반영 할 수 있습니다.
    • 애플리케이션 실행 로그 기능을 제공해 관리자가 원하는 정보를 바로 얻을 수 있습니다.


    Who made Symfony and why


     Symfony의 첫번째 버전은 이 책의 공동 저자인 Fabien Potencier에 의해 2005년 10월에 발표되었습니다. Fabien은 웹 개발에 혁신적인 관점을 제공한 프랑스의 웹 에이전시 Sensio(http://www.sensio.com)의 CEO입니다.

     2003년에 Fabien은 PHP 애플리케이션 개발을 위한 오픈소스 개발 툴을 찾는데 시간을 보냈지만 그는 여태까지 설명한 기능들을 만족할만한 도구를 찾을수 없었습니다. PHP5 가 발표되었을 때 그는 완벽한 기능을 갖춘 프레임워크를 만들기로 결심했습니다. 그 이후에 그는 Mojavi MVC(Model-View-Controller) 프레임워크와 propel ORM(object-relational mapping) 그리고 루비온 레일즈의 템플릿 헬퍼를 참고하여 Symfony의 핵심기능을 완성했습니다.

     Fabien은 처음에는 Sensio의 프로젝트로 Symfony를 만들었습니다. Symfony는 능률적이고 빠른 개발을 위한 이상적인 프레임워크였으며 웹 개발을 좀 더 직관적으로 할 수 있게 해주었습니다. 그리고 결과물 또한 강력하고 쉽게 유지보수가 가능했습니다. 처음에 Symfony는 란제리 쇼핑몰을 작성하는데 사용되었으며 그 이후에도 여러 프로젝트에 사용되었습니다.

     성공적으로 몇몇 프로젝트에 Symfony가 사용된 뒤 Fabien은 Symfony를 오픈소스 라이센스로 발표할 것을 결심했습니다. 그는 여러 개발자들의 Sensio의 경험을 소개 하고 피드백을 통해 Symfony를 개선하는 이득을 얻고 Symfony를 공개하는 일은 매우 재미있는 일이었기 때문에 오픈 소스 커뮤니티에 Symfony를 기증했습니다.

    왜 symfony일까요? Fabien은 sensio의 s를 포함하는 짧은 단어로 이름 짓기 원했고 f를 통해 framework를 쉽게 떠올릴 수 있으며 다른 개발도구들 이름과 차별 되기 원했습니다. 또 그는 대문자를 좋아하지 않았습니다. Symfony는 그가 원하는 이름에 가까웠고 완벽한 영단어가 아니기 때문에 중복을 피할 수 있었습니다. Symfony가 선택되지 않았다면 또 다른 대안으로는 Baguette를 선택했어야 할 것입니다.

     Symfony가 더 많은 프로젝트에 채택 되어 성공적인 오픈소스 프로젝트가 되기 위해서 영어로 된 더 많은 문서화가 필요했습니다. Fabien은 그의 동료이자 직원인 이 책의 공동 저자 François Zaninotto에게 Symfony에 대한 온라인 책을 쓰자고 제안했고 그것은 꽤 오랜 시간이 걸렸지만 Symfony가 공개되었을 때 수많은 개발자들을 위해 공개 될 수 있었습니다.

    The Symfony Community

     Symfony 웹사이트(http://www.symfony-project.com)는 런칭 되었고 세계의 수많은 개발자들이 Symfony를 다운로드 받고 온라인 문서를 읽었으며 Symfony를 통해 프로그램을 작성하기 시작했습니다. 그리고 입소문은 시작되었습니다.

     마침 웹 어플리케이션 프레임워크는 대중화 되기 시작했고 PHP로 작성된 완벽한 프레임워크의 수요는 증가했습니다. Symfony는 재빨리 성능 향상을 위한 패치와 문서를 교정해 인상적인 훌륭한 품질의 코드와 문서화를 제공했고 다른 프레임워크들 사이에서 두각을 나타냈습니다.

     Symfony는 공개된 소스 저장소와 티켓 시스템을 통해 Symfony에 기여할 수 있는 방법을 제공하며 여러 공개 개발자들을 환영하고 있습니다. 또한 원저자인 Fabien은 여전히 Symfony의 중요 개발자이로 코드의 질을 보장하고 있습니다.

     Symfony는 포럼과 메일링리스트, IRC를 통해 정보를 얻을 수 있습니다. 지금도 일주에 5개꼴로 Symfony로 작성된 프로그램이 늘어나고 있습니다. 새로운 개발자는 매일 Symfony를 설치하고 있으며 위키에 유저가 작성한 많은 양의 문서가 올라오고 있습니다.

     Symfony 커뮤니티는 또 다른 힘이며 당신이 이 책을 읽은 뒤에 동참 할 수 있기를 희망합니다.

    Is Symfony for me

     PHP에 뛰어난 개발자이거나 초보자인 것에 상관없이 Symfony를 사용 할 수 있습니다. 가장 중요한 고려사항은 프로젝트 크기입니다.

     5~10페이지로 구성되고 제한된 DB, 성능에 대한 의무나 문서화가 필요 없는 간단한 페이지를 개발한다면 단독으로 PHP만을 사용하는 것이 적당합니다. 적당하지 않은 크기의 프로젝트에 객체지향 방법론이나 MVC모델을 사용한다면 개발진행 속도가 떨어집니다. 여담으로 Symfony는 공유된 서버에서 CGI mode만으로 동작하는 PHP Script 환경에는 최적화되지 않았습니다.

     이 이야기는 복잡하고 무거운 비즈니스 로직을 사용하는 웹 애플리케이션 개발 환경에서는 PHP만으로 개발하기는 어렵다는 이야기입니다. 유지보수가 잘 되고 확장성이 뛰어난 개발을 하려는 계획이 있다면 코드를 좀더 경량화 하고 읽기 쉽게 효과적으로 작성해야 할 것입니다. 만약 당신이 직관적인 유저 상호작용을 위한 방법(Ajax같이)을 사용하고 싶을 때 빨리 개발해서 재미를 보고싶은 상황에서 당신은 자바스크립트를 수백 줄이나 작성 할 수 없을것이고 단독으로 PHP만을 사용한다면 매우 실망스러운 결과를 가져다 줄 것입니다. 바로 이 경우에 Symfony가 당신에게 필요합니다.

     물론 당신이 뛰어난 웹 개발자라면 당신은 이미 웹 애플리케이션 프레임워크의 장점을 충분이 알고 있을겁니다. Symfony는 잘 작성된 문서와 거대한 커뮤니티로 당신이 더 이상 프레임워크로 인해 고민하지 않게 해줄것입니다.

    Symfony를 사용한 데모 동영상을 보고 싶다면 Symfony 웹사이트에서 제공하는 스크린캐스트를 통해 Symfony를 사용한 개발이 얼마나 재미있고 빠른지 확인 할 수 있습니다.



    Fundamental Concepts

     Symfony를 사용하기전에 다음과 같은 기초적인 지식을 알 필요가 있습니다. OOP, ORM, RAD, DRY, KISS, TDD, YAML, PEAR에 대해서 이미 알고있다면 모르는것만 골라서 읽어도 됩니다.

    PHP5

     Symfony는 PHP5(http://www.php.net)로 작성되었고 같은 언어를 사용해 개발을 합니다. 프레임워크의 최대한의 기능을 뽑아내려면 PHP5에 대한 충실한 이해가 필요합니다.

     PHP5에 대해서 아직 모르는 개발자라면 PHP5의 새로운 언어모델인 객체지향모델(Object Oriented Model)에 집중하여 학습할 필요가 있습니다.

    OOP (Object Oriented Programming)

     OOP를 이 챕터에서 모두 소개하기는 불가능 할겁니다. Symfony는 많은 부분이 최대한 PHP5의 객체지향적인 메커니즘을 통해 개발되었기 때문에 한번쯤 스스로 OOP에 관한 책을 완벽히 읽을 필요가 있습니다. OOP는 Symfony를 이해하기 위한 필수 조건입니다.

    위키디피아는 OOP를 다음과 같이 설명하고 있습니다.

    OOP의 기본 컨셉은 전통적으로 프로그램이 함수들의 집합이거나 명령어의 나열이라고 생각되었던 것을 각자 행동하는 유닛이나 객체로 이루어있다고 생각하는 관점에 기원하고 있습니다.

    PHP5는 클래스, 객체, 메소드, 상속 등의 객체지향개발 패러다임을 지원합니다. 이러한 개념들에 익숙하지 않다면 관련된 PHP문서를 읽기를 권합니다. http://www.php.net/manual/en/language.oop5.basic.php


    Magic Methods

     Magic Methods는 PHP 객체가 가지고 있는 특징 중 하나입니다. 이 기능은 코드 변경없이 기본 메소드를 오버라이드 하여 객체의 기본 행동을 정의할수 있습니다. 이 기능을 통해 코드양을 줄일 수 있고 좀 더 확장성 있게 만들 수 있습니다. Magic Methods는 __로 시작되기 때문에 알아보기 쉽습니다. (역주: 클래스의 __construct(), __destruct(), __sleep() 등이 여기에 해당합니다.)

     예를 들어 객체를 표시할 필요가 있을 때 __toString() 메소드를 사용 할 수 있는데 이때 개발자가 정의한 표시 규칙(Display Format)으로 표현 할 수 있습니다.

    $myObject = new myClass();
    echo $myObject;
    // 매직 메소드 사용 예
    echo $myObject->__toString();

     Symfony는 매직 메소드를 사용하기 때문에 개발자는 이것을 완전히 익힐 필요가 있습니다. 다음과 같은 PHP 문서에서 확인 할 수 있습니다. (http://www.php.net/manual/en/language.oop5.magic.php)

    PEAR, PHP Extension and Application Repository

     PEAR는 재 사용 가능한 PHP콤포넌트의 모음인 프레임워크이자 분산시스템(Distribution System)입니다.  PEAR는 다운로드,설치,업그레이드,제거에 관련된 PHP스크립트를 제공하기 때문에 PEAR패키지를 사용할 때 어디에 스크립트를 사용할지 어떻게 CLI(Command Line Interface)를 활용해야 할지 걱정할 필요가 없습니다.

     PEAR는 커뮤니티를 통해 개발(Community-drivent) 되고 PHP를 통해 배포됩니다.

     PEAR 웹사이트는 http://pear.php.net/ 과 같고 카테고리화 된 PEAR패키지와 문서가 제공됩니다.

     PEAR는 PHP를 사용한 라이브러리 중 가장 프로페셔널한 설치 방법을 제공합니다. 여러 프로젝트를 넘나들 필요가 있을 때 Symfony는 PEAR의 중앙통제 설치기능 (Central installation) 을 사용 할 것을 권합니다. Symfony의 플러그인은 PEAR 패키지의 특별한 설정을 거치면 동작 할 수 있으며 Symfony는 PEAR패키지를 통해 동작 할 수 있습니다.

     Symfony를 사용하기 위해 PEAR의 모든 문법을 알 필요는 없습니다. 단지 설치 하는 법에 대해서 알고 싶다면 다음 CLI명령어를 통해 PEAR가 설치되어있는지 체크 할 수 있습니다.

    > pear into pear

    이 명령은 설치된 PEAR패키지의 버전을 알려줍니다.


     Symfony프로젝트는 PEAR를 가지고있거나 그것에 대한 채널을 가지고 있습니다. 채널은 PEAR의 1.4.0 버전 이상에서만 유효한 것을 명심하십시오. 그렇기 때문에 당신의 버전이 오래되었다면 버전업할 필요가 있습니다. 다음 CLI 명령어를 통해 PEAR를 업그레이드 할 수 있습니다.

    > pear upgrade PEAR


    ORM (Object-Relational Mapping)

     데이터베이스는 서로 상관적이고 PHP5와 Symfony는 객체지향적입니다. 객체지향적인 방법으로 데이터베이스에 접근 하기 위해서 객체지향적인 로직과 상관로직인 데이터베이스를 연동 할 수 있는 인터페이스가 필요합니다. 이 인터페이스를 Object-Relational Mapping 즉, ORM이라고 부릅니다.

     ORM은 객체가 비즈니스 로직을 지키며 데이터에 접근할 수 있게 해줍니다.

     Object/Relational 추상화 레이어는 특정한 데이터베이스에 종속된 문법을 사용하는 것은 막아주는 장점이 있습니다. 이 추상화 된 레이어는 모델객체를 통해 사용중인 데이터베이스에 최적화된 쿼리를 자동으로 생성해 줍니다.

     ORM은 중간에 위치하기 때문에 다른 데이터베이스로 쉽게 전환이 가능하다는 것을 의미합니다. 빠른 프로토타이핑을 위해 애플리케이션을 개발할 필요가 있다고 생각해 보십시오. 그 상황에서 고객에게 꼭 맞는 데이터베이스 시스템을 결정하지 못했다고해도 당신은 일단 SQLite로 개발을 시작 할 수 있습니다. 이 경우 나중에 고객이 Mysql, PostgreSQL 또는 Oracle을 사용할 것을 결심한다면 단지 설정 파일 한 줄을 바꾸는 것만으로도 바로 데이터베이스 시스템이 전환 될 수 있습니다.

     추상화 레이어는 데이터 로직을 캡슐화 합니다. 이것은 SQL쿼리를 알 필요가 없게 해주지만 SQL쿼리에 대해서 알고 싶다면 쉽게 찾을 수 있습니다.

     필드 대신에 객체, 레코드 대신에 클래스를 사용한다면 다음과 같은 장점이 있습니다.

     쉽게 테이블에 대한 접근자(accessors)를 추가 할 수 있습니다. 예를 들면 클라이언트에서 FirstName과 LastName 2개의 필드에 접근할 필요가 있을 때 “Name”이란 이름만으로 데이터를 추출하고 싶으면 객체지향 세계에서는 다음과 같이 클라이언트에 새로운 접근자를 추가하는 것만으로도 가능합니다.

    public function getName()
    {
         return $this->getFirstName.' '.$this->getLastName();
    }

     모든 반복되는 데이터접근 함수와 비즈니스 로직은 유지 될 수 있습니다. 예를 들어 물품목록을 보관할 필요가 있는 ShoppingCart를 생각해 보십시오. 결제를 위해 총액을 계산하기 위해서 getTotal()를 다음과 같이 추가 할 수 있습니다.

    public function getTotal()
    {
         $total = 0;
         foreach ($this->getItems() as $item)
         {
              $total += $item->getPrice() * $item->getQuantity();
         }
         return $total;
    }

     기존에는 이와 같은 기능을 하는 코드를 작성하기 위해 어느 정도의 SQL쿼리를 작성해야 했는지 생각해보십시오.

     Propel은 PHP5로 작성된 object/relational 추상화 레이어로 오픈 소스 프로젝트입니다. Symfony는 propel과 프레임워크 내에 긴밀하게 통합되어있습니다. 그렇기 때문에 이 책의 대부분은 data를 다루기 위해서 propel의 문법을 따르고 있습니다. 이 책은 propel을 사용하는 법을 설명하겠지만 완벽한 문서를 얻고 싶다면 propel 웹사이트를 방문 할 것을 권합니다. (http://propel.phpdb.org/trac/)

    RAD(Rapid Application Development)

     웹 애플리케이션을 만드는 일은 매우 길어서 지겹고 더딘 직업입니다. 일반적인 소프트웨어 엔지니어링 라이프사이클을 따르면 (예를 들어 RUP, Rational Unified Process 같은) 웹 애플리케이션을 만드는 일은 시작하기 전엔 완벽하게 작성된 요구사항과 UML 다이어그램 문서 등 개발에 필요한 문서가 한 트럭 쯤은 준비되기 전에는 개발을 시작 할 수 없습니다. 이것은 프로그래밍을 하면서 일어나는 다양한 일이나 고객이 생각을 바꾸거나 하지 않는다는 사실만으로도 충분히 치루어야 할 대가입니다.

     하지만 오늘날 비즈니스 환경은 빠르게 변하고 고객의 요구사항 또한 개발 진행에 따라 변화합니다. 물론 고객들은 개발팀이 자신들의 요구를 적용해서 빠르게 개발하기를 원합니다. 다행히도 Perl이나 PHP같은 스크립트 언어를 통해 RAD나 agile 개발을 적용하면 이것은 쉽게 가능합니다.

     이 방법론에 대한 개념 한가지를 소개하면 일단 고객이 확인할 수 있는 동작하는 프로토타입 어플리케이션을 가능한 빨리 제작합니다. 그리고 추가적인 주문을 받아 완벽한 기능을 갖출 때까지 짧은 간격으로 개발을 한 뒤 공개하는 것을 계속적으로 반복합니다.

     이 밖에 개발자를 위한 방법론은 많습니다. 일단 개발할 때 미래에 대한 기능을 염두하지 말고 작성하십시오. 메소드는 가능한 가장 간단하고 솔직하게 작성하십시오 이것은 “멍청할 만큼 간결하게 유지하라”라는 KISS원리의 격언으로 잘 설명되고 있습니다.

     요구사항이 추가되거나 기능이 추가될 때 기존의 코드는 부분별로 다시 쓰여질 필요가 있습니다. 이 과정은 웹 애플리케이션을 개발할 때 빈번하게 발생하고 이것을 리팩토링이라고 부릅니다. 코드는 그 특징에 따라 다른 곳으로 옮겨지고 중복된 부분은 “반복하지 말라”라는 DRY원리에 의해 한곳으로 통합됩니다. (Don’t Repeat Yourself)

     그리고 빈번한 변화에도 코드가 여전히 잘 동작한다는 것은 확실하기 위해 유닛 단위의 자동화된 테스트가 필요합니다. 잘 작성 한다면 유닛테스트는 코드추가나 리팩토링에 의해 관계없이 실패하지 않고 테스트를 실행할 수 있는 좋은 방법입니다. 개발 전에 테스트에 관련된 코드를 작성하는 이런 개발 방법을 Test Driven Development, TDD라고 부릅니다.

     여기 더 많은 개발원리와 agile개발에 관련된 다른 좋은 관습들이 있습니다. Agile 방법론 중에 효과적인 방법중 하나는 익스트림프로그래밍(XP)입니다. XP 강좌는 어떻게 개발을 빠르고 효과적으로 할 수 있는지 당신에게 가르쳐 줄겁니다. 추천하는 서적은 Kent-beck(Addison-wesley)의 XP시리즈입니다.


     Symfony는 RAD를 위한 완벽한 도구입니다. 사실 Symfony 프레임워크는 웹에이전시가 RAD이론을 자신들의 프로젝트에 적용하기 위해 개발되었습니다. 이말은 Symfony를 사용하기 위해 새로운 언어를 배우라는 것이 아니라 좀더 좋은 방법으로 개발하기 위해서 반사적이고 좋은 판단에 집중하라는 이야기입니다.

     Symfony 프로젝트 웹사이트의 Step-by-Step 튜토리얼을 통해 agile방법론을 개발에 적용하는 것을 제안하고 있습니다. 이것을 askeet라고 부릅니다. (http://www.symfony-project.com/askeet) 그리고 이것에 대해서 좀더 알고 싶은 사람은 agile방법론에 대한 책을 통해 배우길 권하고 있습니다.

    YAML

    YAML공식 사이트(http://www.yaml.org/ )에 따르면 YAML은 “인간이 읽기가 수월하고 스크립트와 연동 할 수 있도록 기계가 쉽게 분석 할 수 있는 데이터 포맷이다.”라고 되어있습니다. 간단하게 설명하면 YAML은 XML비슷한 매우 간단한 언어를 사용해 데이터를 기술하는 방법입니다. 하지만 이것은 더 쉬운 문법을 가지고 있고 다음 예제와 같이 배열이나 해쉬를 기술하는데 특히 유용합니다.

    $house = array(
         'family'     => array(
         'name'     => 'Doe',
         'parents'  => array('John', 'Jane'),
         'children' => array('Paul', 'Mark', 'Simone')
         ),
         'address' => array(
         'number'  => 34,
         'street'     => 'Main Street',
         'city'        => 'Nowheretown',
         'zipcode'  => '12345'
         )
    );

    이러한 PHP코드는 자동으로 다음과 같은 YAML String으로 파싱 될 수 있습니다.

    house:
         family:
              name:     Doe
              parents:
                   - John
                   - Jane
              children:
                   - Paul
                   - Mark
                   - Simone
              address:
                   number: 34
                   street: Main Street
                   city: Nowheretown
                   zipcode: 12345

     YAML은 들여쓰기에 의해 구조를 볼 수 있고 연속된 아이템은 대쉬 (–) 를 통해 확인 할 수 있습니다. 그리고 map의 key/value 쌍은 세미콜론(:)에 의해 구분됩니다. 또한 YAML은 짧은 문법을 통해 같은 데이터를 더 짧은 라인으로 표현 할 수 있습니다. Array는 [] 를 통해 해쉬는 ( )를 통해 표현 할 수 있으며 이전 예제 보다 더 짧은 방법을 통해 다음과 같이 작성 할 수 있습니다.

    house:
      family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
      address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }

     YAML은 Yet Another Markup Language의 약자이며 “yamel”이라고 발음합니다. YAML포맷은 대충 2001년부터 사용되기 시작했으며 현재는 YAML을 파싱하기 위해 수많은 언어로 작성된 파서가 존재합니다.

    YAML에 대한 포맷의 상세문서는 다음 사이트에서 구할 수 있습니다. http://www.yaml.org/


     당신도 확인했듯이 YAML은 XML보다 작성속도가 빠릅니다.(더 이상 닫는 태그나 인용부호에 신경 쓸 필요가 없습니다.) 또 .ini(계층을 지원하지 않습니다.) 보다 강력합니다. 이것이 Symfony가 설정을 저장하기 위해 YAML을 우선적으로 사용하는 이유이며 이 책에서도 수많은 YAML 파일을 보게 될겁니다. 하지만 솔직히 더 이상 YAML에 대해서 더 배울 필요는 없을 것 같군요

    Summary

     Symfony는 PHP5 웹 애플리케이션 프레임워크입니다. Symfony는 PHP언어에 새로운 레이어를 추가해서 복잡한 웹 애플리케이션을 개발을 빠르게 하기 위한 도구들을 제공합니다. 이 책은 당신이 OOP, ORM, RAD 같은 모던 프로그래밍에 대한 기초적인 이해와 PHP5에 대한 기술적인 배경지식만 있다면 Symfony에 대한 모든 것을 가르쳐 줄 것입니다.

    ----------------

    사용자 삽입 이미지









    에혀... 원문 라이센스에 따라 GFDL을 따릅니다.

    원문 : http://www.symfony-project.com/book/trunk
    번역페이지 : http://smle.net/tts/tag/Symfony

    • Chapter 1 - Introducing Symfony
    • Chapter 2 - Exploring Symfony's Code
    • Chapter 3 - Running Symfony
    • Chapter 4 - The Basics Of Page Creation
    • Chapter 5 - Configuring Symfony
    • Chapter 6 - Inside The Controller Layer
    • Chapter 7 - Inside The View Layer
    • Chapter 8 - Inside The Model Layer
    • Chapter 9 - Links And The Routing System
    • Chapter 10 - Forms
    • Chapter 11 - Ajax Integration
    • Chapter 12 - Caching
    • Chapter 13 - I18n And L10n
    • Chapter 14 - Generators
    • Chapter 15 - Unit And Functional Testing
    • Chapter 16 - Application Management Tools
    • Chapter 17 - Extending Symfony
    • Chapter 18 - Performance
    • Chapter 19 - Mastering Symfony's Configuration Files



     

    이올린에 북마크하기(0) 이올린에 추천하기(0)
    2007/02/05 03:50 2007/02/05 03:50



    스믈군’s Blog is powered by Tattertools.com / Original WP theme by John Wrana / tattertools skin by yuno