sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
extra_vars6  
http://wiki.javajigi.net/pages/viewpage.action?pageId=258

오픈 소스와 소프트웨어 개발의 전반적인 개념 확립 스터디의 목적

프로젝트 준비, 개발, 완료까지 프로젝트 전반적으로 각각의 오픈 소스들이 어떠한 역할을 하며, 어떻게 활용될 수 있는지에 대하여 살펴본다. 또한 소프트웨어 개발 전반적으로 큰 이슈라고 할 수 있는 것들에 대하여 개념적으로 공유한다.
이번 스터디에서는 향후에 진행하게될 각 툴에 대한 역할과 프레임워크들이 어떻게 조화를 이루며, 어느 위치에서 활용될 수 있는지를 논의한다.

이번 스터디에서 반드시 이해해야 할 부분

  • 일반적인 웹 아키텍처의 각 레이어에서 각각의 프레임워크들이 어떻게 활용될 수 있는가?
  • LightWeight Container Architecture란 무엇인가?
  • Dependency Injection이 무엇인가?
  • AOP(Aspect Oriented Programming)이 뭐하는 놈일까?
  • Annotation 얼마나 중요할까?
  • AJAX 개념과 향후 가능성은 무엇일까?

우선 위 다섯가지 사항에 대하여 미리 공부하시고 오시기 바랍니다. 관련 문서는 아래 각각의 항목에서 다루도록 하겠습니다. 이번 스터디에서 위 다섯가지를 이해하지 못하더라도 다음 기회가 있겠지만 가능하면 이번 스터디에서 해당 항목들에 대하여 공감대를 형성할 경우 정말 좋은 토론들이 진행될 것으로 생각합니다. 다음번 스터디부터는 좀 여유있게 하시더라도 이번 스터디 만큼은 꼭 공부 많이 하고 오시기 바랍니다.

각각의 툴과 프레임워크의 역할 규명

프로젝트를 진행하는데 있어서 각각의 툴과 프레임워크가 어떠한 위치에서 어떤 역할을 하는지를 살펴볼 필요가 있다. 각각의 툴과 프레임워크에 대한 간단한 소개와 역할을 규명한다.

Eclipse

IDE툴.
뭐 이건 다들 사용하신다고 했으니까 굳이 설명이 필요없겠죠. 이윤정씨만 사용안한다고 했는데 IDE:Eclipse 시작하기 문서 보시고 로컬에 Eclipse 설치한 다음 사용해보시기 바랍니다.

이번 스터디에서 사용할 Eclipse 버전은 3.1입니다. Annotation에 대해서도 다룰 생각이기 때문에 JDK 5.0을 지원해야합니다. 현재 Eclipse 3.1 RC2인데 이달말(2005년 6월) 3.1 최종 버전이 나오기 때문에 큰 문제는 없을거 같습니다. 우선 3.1 RC2로 공부하세요. 3.1 RC2 버전은 http://www.eclipse.org/downloads/index.php에서 다운 받을 수 있습니다.

MyEclipse WorkBench AND WTP(Web Tools Project)

Eclipse를 사용하면서 가장 불편한 점이 웹 개발을 할 때입니다. 특히 괜찮은 JSP Editor 플러그인하나 없다는 것이 가장 큰 불편함입니다. 이러한 단점을 보완하기 위하여 이 두가지 툴을 분석할 필요가 있을 것으로 생각합니다.

이번 스터디는 MyEclipse WorkBench를 사용해볼 생각입니다. WTP도 괜찮기는 하지만 아직 개발되고 있는 중이라 최종 배포 될려고 시간이 좀 걸리기도 하고, 프레임워크에 대한 지원이 없습니다.

MyEclipse WorkBench는 다양한 Editor(JSP, XML, CSS, JavaScript 등)를 포함하고 있으며, Struts, Hibernate에 대한 지원, UML(4.0이후), DB 플러그인등 다양한 기능을 지원하고 있습니다. 그러나 이 플러그인은 상용입니다. 매년 29.9달러(미화)를 지불해야합니다. 우선 스터디에서 사용해보시기 마음에 드시는 분들은 구입해서 사용하는 방향으로 하겠습니다.

WTP 또한 다양한 Editor를 지원하고 있으며, Eclipse 서브 프로젝트로 개발되고 있습니다. 당연히 무료로 사용할 수 있습니다. 그러므로 추후 최종 배포되었을 때 한번 사용을 고려해도 좋을 것으로 생각합니다. WTP와 관련된 내용은 IDE:Eclipse에 Web Tools Project 설치 및 사용방법 문서를 참고하시기 바랍니다.

Ant AND Maven

빌드 툴.
Ant는 대부분의 개발자 분들이 사용해보셔서 아실 것이라고 생각합니다. Maven은 Ant보다 추상하된 개념으로 프로젝트를 관리하기에 유용한 빌드툴입니다. Ant를 이용할 경우 매번 비슷한 구조의 프로젝트를 만드는데 번거로움이 있었지만, Maven의 경우에는 이미 정해져 있는 구조하에서 프로젝트를 관리하게 됩니다. 사용해보면 알겠지만 Maven을 통하여 빌드를 할 경우 프로젝트를 관리하기 위한 하나의 사이트도 쉽게 만들어낼 수 있습니다. Maven 시작하기 관련된 문서는 IDE:Maven문서를 참고하시기 바랍니다. 현재 부족한 부분이 많기 때문에 추후 스터디 할 때 보강해야 할 것으로 생각합니다.

http://jroller.com/page/carlossg/20050221글을 보면 ANT vs Maven의 비교를 JDBC vs와 Hibernate와 같다는 글이 있네요. 참 적절한 비유라고 생각합니다. JDBC vs와 Hibernate 뿐아니라 Servlets vs Struts와 같이 비교하는 내용도 있습니다. 이렇게 서로 간의 관계가 명확하지 않을 경우 다른 기술들을 이용해서 비교해보는 것도 좋은 방법인거 같습니다.

http://jroller.com/page/carlossg/20050221글을 보면 Maven을 좋아할 수 밖에 없는 5가지 특징이 있네요. 그 내용은 다음과 같습니다.

  • Automatic downloading of dependencies.
  • A consistent and standarized directory layout
  • A consistent naming of goals (targets): war, jar, javadoc,...
  • AOP like chain of goals (before invocation and after invocation pointcuts)
  • A declarative descriptor of dependencies and project settings

CVS AND SVN(SubVersion)

버전 관리 시스템.
버전 관리 시스템에 대하여도 굳이 설명하지 않아도 될 것으로 생각합니다. SVN은 CVS에서 부족했던 점을 보완하기 위하여 최근에 생겨난 버전관리 시스템입니다. 이 또한 무료로 사용할 수 있으며, 앞으로 대세가 될 것으로 생각합니다. 이번 스터디에서는 CVS로 진행하고 다음 스터디에서 SVN에 대해서도 다루는 것이 좋겠습니다. SVN에 대한 더 자세한 정보는 http://subversion.tigris.org/에서 찾아보시기 바랍니다.

Junit AND Cactus

단위 테스트 툴.
단위 테스트의 중요성은 계속해서 증가하고 있습니다. JunitCactus는 이러한 단위 테스트를 원할하게 해주시기 위한 테스트 프레임워크입니다.

AJAX

  • AJAX 작동 원리

  • 향후 전개될 웹의 발전 방향을 고민해보고 WEB 2.0의 모습에 대하여 논의해본다.*

Spring Framework

Spring 프레임워크는 Container 성격을 가지는 프레임워크이다. Spring은 아키텍처 상에서 Business Layer에서부터, Persistence Layer, UI Layer 전체적인 영역을 모두 포함하고 있다. 물론 Spring이 Business Layer만을 전담하고 Persistence Layer, UI Layer는 다른 프레임워크를 이용하여 개발하는 것도 가능하다.
Spring에서 가장 중심이 되는 기능은 Dependency Injection(또는 Inversion of Control)와 AOP 기능이다. Dependency Injection은 각 Component와 Class들의 Dependency를 Spring이 가능하도록 해준다. Spring AOP 기능은 Container에서 담당할 수 있는 Transaction, 보안등의 기능을 담당할 수 있도록 지원하고 있다.

Spring 프레임워크의 중요성은 점점 더 커지고 있으며, 향후 실무 프로젝트에서 EJB 3.0이 등장하기 전까지 활발하게 이용될 것으로 생각한다. EJB 3.0이 등장해봐야 알겠지만 Spring의 기세가 쉽게 꺽이지는 않을 것이라 생각한다. 그러나 대형 벤더들이 EJB 3.0으로 영업 전략을 가져갈 경우 향후 판도는 어떻게 바뀔지 지켜봐야할 것이다.

Spring 프레임워크가 뭐하는 놈인지 이해하기 위하여 먼저 Introduction to the Spring Framework문서를 읽어 보시기 바랍니다.

위 그림은 Spring의 기본적인 아키텍처에 대한 그림입니다. Spring 프레임워크에 대한 더 자세한 정보는 http://static.springframework.org/spring/docs/1.2.x/reference/introduction.html문서를 참고하시기 바랍니다.

Hibernate Framework

Hibernate 프레임워크는 Persistence Layer를 담당하는 ORM(Object Relation Mapping) 툴이다. 근래에 들어 ORM에 대한 관심도가 높아지면서 Hibernate 프레임워크에 대하여 많은 개발자들이 관심을 가지고 있다.

또한 국내에 ORM에 대한 관심이 높아지면서 Hibernate, IBatis에 대한 개발자들의 관심이 증가하고 있다. ORM의 기존의 JDBC에 기반을 두고 있지만 개발방식의 기존의 DAO 패턴내에서 SQL을 이용하던 개발하던 방식과 다른 구조를 가진다. 물론 IBatis는 약간 성경이 다르다.

아직 Hibernate 프레임워크에 대한 제대로된 국내 참고 자료가 없는 실정이며, 제대로 된 방법론이 없다보니 개발에 많은 어려움을 겪고 있는 것이 사실이다. Hibernate 프레임워크를 제대로 사용할 경우 개발 속도의 향상을 가져올 수 있지만 그렇지 않을 경우에는 오히려 부작용만 증가할 것이다.

Hibernate 아키텍처를 보면 다음과 같다.

Struts Framework

Struts 프레임워크는 UI Layer에 중점을 두고 개발된 프레임워크이다. 이미 전세계적으로 가장 많이 사용되고 있는 프레임워크로 알려져 있다. 오픈 소스 사용을 꺼리고 있는 대부분의 국내 대형 SI 업체들도 Struts를 사용하고 있는 실정이다.

Struts를 지원하기 위한 다양한 상용 Eclipse 플러그인이 등장한 상태이며, BEA의 Workshop에 포함되어 있는 UI 개발 툴은 Struts 기반하에서 개발이 가능하도록 구현되어 있다. Workshop의 이 기능은 Eclipse Pollinate 프로젝트를 통하여 무료로 사용할 수 있을 것이다.

FRAMEWORK:Struts를 통해서 이해해야되는 내용은 기존의 FRAMEWORK:Model1, Model2, Struts 개발 방식의 비교 분석의 차이점에 대하여 이해해야 한다. 모델 2 개발 방식의 우리들이 흔히 알고 있는 MVC(Model View Controller) 패턴에 기반을 두고 있다.

Velocity

Velocity는 하나의 템플릿 엔진이다. 이렇게 설명하면 뭐하는 놈인지 이해하기 힘들 것이다. 예제 소스를 보면 쉽게 이해하겠지만 웹 개발의 아키텍처 상에서 기존의 JSP를 대체할 수 있는 녀석이다. 기존의 JSP는 Servlet으로 변환된 다음 처리되기 때문에 실행속도의 저하를 가져오고 재사용성이 부족하다. 그러나 Velocitoy를 이용할 경우 재사용성 뿐만 아니라 실행속도의 향상을 가져올 수 있다.

Rod Johnson이 쓴 "Expert One-on-One J2EE Development without EJB" 책을 보면 Velocity가 JSP 보다 몇배 더 좋은 성능을 보여준다고 나와 있네요. 정말 그런지 한번 테스트해봐야겠습니다.

SiteMesh

SiteMesh는 웹 페이지의 Layout을 처리하기 위한 프레임워크입니다. 보통 Struts를 쓰는 분들은 Tiles를 사용하는데 Tiles의 경우에는 부가적으로 너무 많은 작업을 해주어야 합니다. 그러나 Sitemesh는 Tiles의 작업보다 훨씬 적은 작업으로 같은 효과를 발휘할 수 있습니다.

Eclipse Profiler AND TPTP(The Eclipse Test & Performance Tools Platform (TPTP) Project)

Eclipse Profiler는 Profile를 하기 위한 Eclipse 플러그인입니다. 아래 그림을 보시면 좀 더 이해하기 쉽겠죠.

위 그림에서 볼 수 있듯이 각 메써드를 호출할 때 걸리는 시간을 체크함으로서 어느 곳이 문제의 소지가 있는지를 파악할 수 있도록 지원하는 툴입니다. 애플리케이션을 개발하는 과정에서 의심이 가는 부분들을 이러한 Profiling 툴을 이용하여 체크함으로서 실행속도의 향상을 가져올 수 있습니다.

TPTP는 Eclipse 서브 프로젝트로서 Test와 Performance에 대한 지원을 하기 위한 플러그인입니다. TPTP의 아키텍처를 보면 다음과 같습니다.

위 아키텍처를 보면 TPTP 프로젝트가 Profiling만을 지원하는 것이 아니라 Test Tools, Mornitoring, Reporting등의 기능 또한 지원하고 있습니다. 이번 스터디에서는 이 기능 중 Profiling만 살펴보고 더 많은 관심이 있다면 다음 스터디나 새롭게 시간을 할애할지 논의하도록 하겠습니다.

Apache JMeter

Apache JMeter는 Apache Group에서 개발한 오픈 소스 Stress Tool입니다. 웹 개발시 퍼포먼스 테스트하는데 사용하기에 충분하다고 생각합니다. 리포트로 제출하기에 쓸만한 결과물도 만들어주고 실질적인 Performance Test를 진행하는 것도 가능합니다. 이 툴을 이용하여 Perfomance Test를 진행하는 방법과 Tuning 방법에 대하여 논의하도록 하겠습니다.

아키텍처

Non EJB, EJB 아키텍처에서 LightWeight Container 아키텍처로 변화하고 있다.

  • 현재 새롭게 등장하고 있는 LightWeight Container 아키텍처가 최선의 방법인지를 논의한다.

Dependency Injection 또는 Inversion of Control

Inversion of Control Containers and the Dependency Injection pattern : Martin Fowler가 쓴 문서로 IoC Container와 Dependency Injection 패턴에 대하여 자세하게 다루고 있습니다.

[IoC 컨테이너와 의존성 삽입 패턴] : 최근 Business Layer에서 서비스를 관리하기 위한 방법으로 Dependency Injection pattern 패턴이 중요한 화두가 되고 있습니다. 서비스 컴포넌트를 지원하는 대부분의 프레임워크에서 Dependency Injection pattern을 지원하고 있습니다. 이에 대한 개념에 대하여 자세하게 설명하고 있습니다.

  • Dependency Injection은 최근 프레임워크들이 중요한 역할을 하고 있다. Dependency Injection의 개념에 대하여 이해해야 한다.

위 그림은 현재까지의 일반적인 애플리케이션 개발 방법이다. 지금까지 위처럼 개발하던 것을 Dependency Injection을 이용하여 다음과 같이 구현하는 것이 가능하다.

  • Dependency Injection이 왜 중요한 역할을 담당하는지에 대하여 이해해야 한다.

AOP(Aspect Oriented Programming)

  • Aspect와 Concerns가 무엇인지 이해한다.
  • AOP가 실무 프로젝트에서 어떻게 활용되었을 때 유용한지를 논의한다.

AOP 개념을 이해하기 위하여 다음 문서를 꼭 읽어보시기 바랍니다.

위 문서 보시면서 AspectJ에 대해서는 뭐 별다르게 볼 필요는 없습니다. Part 1. Separate software concerns with aspect-oriented programming를 집중적으로 보셔서 AOP가 뭐하는 놈인지만 이해하시기 바랍니다. 이 문서에서 가장 핵심이 되는 내용을 그림을 통해서 살펴보도록 하겠습니다.


위 그림은 AOP로 개발하지 않았을 때의 일반적인 현상입니다. 현재까지 대부분의 프로젝트에서 발생하는 것으로 비지니스 로직을 고민할 코드에서 Persitence(Transaction), Security, Logging등을 모두 고민해야 합니다. 소스코드 또한 이러한 Concern들을 동시에 해결할 수 있도록 구현합니다.


이와 같은 개발환경하에서 AOP의 의도는 각 Concern들을 찾아 분리한 다음 별도의 코드에서 구현하자는 것입니다. 위 그림처럼 Concern Identifier과정을 거쳐 Concern들을 분리한 다음 각 기능들을 별도로 구현합니다. 이와 같인 Concern들을 별도로 구현한 것을 하나의 Aspect라고 합니다.


이렇게 별도로 구현되어 있는 Aspect들이 최종적으로는 핵심 비지니스 로직과 결합하여 작동해야 합니다. 위 그림에서 보는 바와 같이 각 Concern별로 구현되어 있는 것을 Weaving 작업을 통하여 핵심 비지니스 로직에 통합하여 실행하는 방법입니다.

다들 위 과정에 대하여 한번씩 고민해 보시기 바랍니다. 스터디 시에는 예제 소스를 통하여 살펴보도록 하겠습니다. AOP가 적용된 예제 소스를 보시면 더 쉽게 이해하실 수 있습니다. 물론 위에서 첨부한 문서에도 예제 소스가 있으니 참고하시기 바랍니다.

AOP 용어 정리

*Cross-cutting concerns : Cross-cutting concerns에 대하여 이야기하기 전에 Concern이 무엇인지를 먼저 이해해야 한다. Concern을 우리말로 번역해 보면 "관계,관심,걱정,염려"로 풀이할 수 있다. 관심이 가는 것, 걱정해야 할 것..도대체 무엇을 말하는 것일까? 한참을 고민하다 나는 다음과 같이 결론을 내렸다. 우리들이 애플리케이션이 개발하기 위하여 관심을 가지고 구현해야하는 각각의 기능들을 하나의 Concern이다. Concern에는 해당 애플리케이션에서 필요로하는 비지니스 로직도 될 수 있으며, Logging, Transaction 처리, Security등 각각이 하나의 Concern이다.
그렇다면 Cross-cutting concerns이란? Cross가 나오는거 보니까 여러 기능들에 관여하는 Concern인가보다. Cross-cutting concerns이란 하나의 영역에서만의 고유한 Concern이 아니라 여러군데에서 공통적으로 관여하는 Concern인가보다. 그렇다면 어떤 Concern들이 여기에 속할 수 있을까? 앞의 Concern 종류를 보면 고유 비지니스 로직은 각 모듈과 클래스마다 다를 것이 분명하기 때문에 이건 아닐거 같다. 그럼 Logging, Transaction 처리, Security등은 어떨까? 이런 놈들은 애플리케이션 전체 영역에서 공통적으로 사용되는 Concern이다. 그러므로 이 같은 놈들을 Cross-cutting concerns이 될 수 있겠다라는 생각이다. 즉, 애플리케이션 개발에서 여러 영역에 같은 방식으로 관여하는 Concern을 Cross-cutting concerns이라고 잠정적인 결론을 내렸다.

  • Advice : Logging과 같은 Cross-cutting concerns의 경우 거의 모든 클래스에 분산되어 있는 것을 볼 수 있다. 이와 같은 Cross-cutting concerns을 여러 영역에 분산해 구현하는 것이 아니라 한 곳에 모아서 구현하는 것을 Advice라고 한다. 즉, 일정한 패턴을 가지는 클래스의 특정 method에는 해당 Logging을 출력하라는 구현부분을 가지는 것을 Advice라고 한다.
  • JoinPoint : 메소드 호출이나 특정 예외를 던지는 것과 프로그램이 실행되는 지점을 이야기한다.
  • Point-cut : Cross-cutting concerns에 해당하는 기능을 구현한 부분이 Advice라고 했다. 그렇다면 이렇게 구현되어 있는 Advice를 어떤 패턴을 가지는 클래스와 메써드에 적용할지를 결정하는 것이 Point-cut이다. 즉 해당 Advice가 적용되어야 하는 곳을 가리키는 것이 Point-Cut이다. 즉, JoinPoint의 모음이 Point-Cut이다.
  • Aspect : Aspect는 Advice와 Point-Cut을 합쳐서 하나의 Aspect라고 칭한다. Advice와 Point-Cut을 이용하여 Logging이라는 Concern을 분리하여 독립적으로 구현할 수 있었다. 이처럼 Advice와 Point-Cut을 이용하여 원하는 Concern을 구현하는 것을 하나의 Aspect라고 한다. 지금까지 살펴본 Logging은 Logging Aspect가 될 것이다.
  • Introduction : 실행되고 있는 클래스에 새로운 인터페이스를 추가하여 원래의 Object가 가지고 있는 속성, 행위이외의 다른 일이 가능하도록 하게 된다.

Spring AOP의 Advice는 여러개의 Advice를 가진다. Spring에서 지원하고 있는 Advice는 다음과 같다.

  • Around advice : 메소드 호출과 같은 joinpoint주위(surround)의 advice. 이것은 가장 강력한 종류의 advice이다. Around advice는 메소드 호출 전후에 사용자 지정 행위를 수행한다. 그것들은 joinpoint를 처리하거나 자기 자신의 반환값을 반환함으로써 짧게 수행하거나 예외를 던지는 것인지에 대해 책임을 진다.
  • Before advice : joinpoint전에 수행되는 advice. 하지만 joinpoint를 위한 수행 흐름 처리(execution flow proceeding)를 막기위한 능력(만약 예외를 던지지 않는다면)을 가지지는 않는다.
  • Throws advice : 메소드가 예외를 던질다면 수행될 advice. Spring은 강력한 타입의 Throws advice를 제공한다. 그래서 당신은 Throwable 나 Exception으로 부터 형변환 할 필요가 없는 관심가는 예외(그리고 하위클래스)를 잡는 코드를 쓸수 있다.
  • After returning advice : joinpoint이 일반적으로 예를 들어 메소드가 예외를 던지는것없이 반환된다면 완성된 후에 수행되는 advice.

AOP에 대한 개념은 처음 접하는 개발자들에게 다소 어렵게 느껴질 수 있다. 앞에서 살펴본 용어 또한 생소한 개념이기 때문에 도대체 무슨 말을 하는지 이해하기 힘들 수도 있다. 그러나 너무 걱정하지 마라. 앞으로 살펴볼 Spring AOP의 예제를 본다면 지금까지 이야기한 내용이 무엇인지 쉽게 이해할 수 있을 것이다.

Annotation

  • [Annotation]에 있는 문서를 참고하여 Annotation이 무엇인지에 대하여 살펴본다.
  • Annotation이 현업에서 어떻게 활용되고 있는지에 대하여 살펴보고 향후 발전 가능성을 살펴본다.

Annotation을 이해하는 것은 위에서 살펴본 Depedency Injection과 AOP에 비하면 쉽게 이해하실 수 있을 겁니다. 먼저 Annotations Sun Guide에 나와 있는 예제를 Eclipse 3.1에서 실행해 보시면 Annotation이 무엇인지 쉽게 이해하실 수 있을 겁니다. 이 부분은 어렵지 않은 부분이므로 꼭 이해하고 오시기 바랍니다.

Annotation은 AOP와 밀접한 관련을 가지고 발전해 나가고 있습니다. Aspect-Oriented Annotations문서를 통하여 Annotation과 AOP가 어떻게 접목되어 사용될 수 있는지 확인해 보시기 바랍니다.


번호 제목 글쓴이 날짜 조회 수
공지 2023 Software Development Trend 정리 황제낙엽 2024.01.19 1
48 자료구조 Part7. "트리" - 기본편 황제낙엽 2007.11.24 22
47 자료구조 Part6. "연결리스트로 구현한 스택"의 모든 것 황제낙엽 2007.11.24 39
46 자료구조 Part5. "연결리스트로 구현한 큐"의 모든 것 황제낙엽 2007.11.24 28
45 자료구조-쉬어가기. (스택과 큐가 쓰이는 기본적인 예) 황제낙엽 2007.11.24 23
44 자료구조 Part4. "연결리스트"의 모든 것. (1) file 황제낙엽 2007.11.24 49
43 자료구조 Part3. "스택"의 모든 것. 황제낙엽 2007.11.24 103
42 자료구조 Part2. "큐"의 모든 것. 황제낙엽 2007.11.24 18
41 자료구조 Part1. "동적배열"의 모든 것. 황제낙엽 2007.11.24 431
40 자료구조에 대해. (1. 기초편) 황제낙엽 2007.11.24 10
39 Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(3 - 완결) 황제낙엽 2007.11.20 68
38 Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(2) 황제낙엽 2007.11.20 383
37 Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(1) 황제낙엽 2007.11.20 74
36 Fault Tolerant 컴퓨터 시스템의 개요 황제낙엽 2007.11.02 57
35 Fault Tolerant 의 정의 황제낙엽 2007.11.01 44
34 XML-RPC HOWTO 황제낙엽 2007.08.27 81
33 SSO(Single Sign On) vs SLO(Sing LogOn) 차이점 황제낙엽 2007.08.17 359
32 실무를 통해 분석해 본 오픈 프레임워크 활용 예 황제낙엽 2007.07.20 78
31 phpBB2 설치가이드 황제낙엽 2007.03.03 82
» 오픈 소스와 소프트웨어 개발의 전반적인 개념 확립 황제낙엽 2007.01.30 72
29 텍스트 효과 황제낙엽 2006.09.09 11