위의 파일을 받아서 인스톨 합니다.
특정한 설정없이 모두 OK 정도로 인스톨 하시면 됩니다.

이상없이 인스톨이 끝났다면, 해당 컴퓨터에는 CVS Client가 깔렸다고 보시면 됩니다.

이 문서는, 어딘가에 CVS 서버(CVSNT)가 깔려있다고 가정하고 작성되어 있습니다.

다른 이와 공유하여 프로젝트를 진행할 폴더를 생성합니다.
해당 폴더를 내컴퓨터로 연뒤에 우클릭을 하게 되면, 두가지 메뉴가 추가되어 보이게 됩니다.

CVS 체크 아웃
CVS

CVS 체크 아웃을 선택하게 되면 다음과 같은 창이 뜨게됩니다.

사용자 삽입 이미지

이때 CVS 서버 관리자에게 계정을 받아야 하며, 서버의 주소를 알아야 합니다.
그리고, 지정된 cvsroot 명을 알아야 합니다.
서버에 올려진 모듈명은 목록가져오기를 통해 쉽게 가져올 수 있습니다.

CVSROOT : 란에 형식에 맞게 작성을 하시면, 나머지는 자동으로 채워집니다.

모두 작성한 뒤에 확인을 누르게 되면, 새로운 창에 정상적으로 가져온 표시가 됩니다.
만일 정보가 정확하지 않다면, 이때 빨간색의 오류를 출력하며, 실행이 취소됩니다.
취소가 될 경우 정보를 다시 확인하시고 확인을 눌러주시기 바랍니다.

동기화가 성공하였다면, 해당 폴더 내에서 우클릭시에 메뉴가 더 있게 됩니다.

CVS 업데이트
CVS 수정
CVS 커밋
CVS 파일추가
CVS

각각은 눌러보시면 다 아실것입니다.
중요한 것은 CVS 커밋입니다.
CVS 커밋은 모든 작업이 완료되면, 실제로 서버에 반영되는 것이며,
의미상으로도 되돌릴수 없는 명령입니다.
즉, 이전 버전을 최신 버전으로 갱신하는 것입니다.

이때, 만약 서버에 있는 파일이 처음 받았던 파일 그대로이면, 정상적으로 커밋이 됩니다.
하지만, 문제는 내가 받은 뒤에 남이 또 받아서 수정하여, 다시 올린 상태라면,
두 파일은 합병이 되어야만 합니다.

코드의 경우에는 합병을 할 수 있지만, 바이너리 데이터 파일 (PPT, HWP,등등)은  합병이 불가능합니다.
때문에, 커밋되지 못하고, 원본은 (자신의 파일) 백업되며, 서버의 파일로 대체되게 됩니다.
그러면, 자신의 원본 파일과, 서버에 있던 파일을 열어, 비교해보고, 수정할 것을 반영한 뒤에 다시 올려야만 합니다. (이때는 다시 위의 경우와 같습니다. 자신이 받은 원본일 경우 커밋이 완료됩니다.)

그리고, 파일 아이콘에 표식이 붙은 것에 따라 종류가 달라지게 됩니다.

? : 아직 클라이언트의 cvs에도 등록되지 않았음
+ : 파일의 우클릭을 통해서 cvs에 추가가 되었음 (클라이언트에만)
v : 서버에 정상적으로 commit 되었음
< : 서버에 동기화 된 후 클라이언트에서 수정되었음

중요한 것은 이것이였구요. 나머지는 잘 살펴보시면 될 듯합니다.

에궁... 그럼...



덕분에 윈도우 2003에 CVS를 잘 깔아서 사용중입니다.

그런데, TortoiseCVS는 좀 개념이 어려웠다는... 흑흑...

다음에 더 공부해야겠네요.

그럼

* 출처 : 네이버 xodim님 블로그

윈도우2003에서 CVSNT + TortoiseCVS 설치하기 (1)

윈도우2003에서 CVSNT + TortoiseCVS 설치하기 (2)

윈도우2003에서 CVSNT + TortoiseCVS 설치하기 (3)

윈도우2003에서 CVSNT + TortoiseCVS 설치하기 (4)

객체지향 원칙
 - 바뀌는 부분은 캡슐화 한다.
 - 상속보다는 구성을 활용한다.
 - 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
 - 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는
   디자인을 사용한다.
 - 클래스 확장에 대새서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.
 - 추상화된 클래스에 의존 하고 구현 클래스에 의존 하지 말라


1. Iterator 패턴

정의 1 : 무엇인가가 많이 모여 있는 것 중에서 하나씩 끄집어내어
      열거하면서 전체를 검새하면서 처리하는 패턴
정의 2:  컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도
         컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리 할 수
   있도록 한다.

Itarator Pattern

사용자 삽입 이미지

2. Apapter 패턴

정의1 : 이미 제공하는것과 필요한것 과의 사이의 간격을 메우는 패턴
         Wrapper 패턴이라고도 함.
 ※ 클래스에 의한 Adapter패턴(상속을 이용한 것)
 ※ 인스턴스에 의한 Adapter패턴 (위임을 이용한것)
정의2 : 객체를 감싸서 다른 인터페이스를 제공 한다.

 ※Apapter는 Target 인터페이스를 구현하고 Adaptee클래스를 상속받는다

   Apater메서드는 상속받은 Apaptee의 메서드로 위임 시킨다.

Adapter Pattern

사용자 삽입 이미지

3. Template Method 패턴

정의1 : 상위 클래스에서 처리의 흐름을 정하고 하위 클래스에서 구체적인 내용을 결정하는
        디자인 패턴
정의2 : 알고리즘의 개별 단계를 구현하는 방법을 서브 클래스에서 결정 한다.

Template Method Pattern

사용자 삽입 이미지

4. Factory Method 패턴

정의1 : 인스턴스를 생성하는 공장을 Template Method패턴으로 구성한 것이 Factory Method 패턴이다.
정의2 : 생성할 구상 클래스를 서브 클래스에서 결정

Factory Method Pattern

사용자 삽입 이미지

5. Singleton 패턴

정의1 : 지정한 클래스의 인스턴스가 반드시 1개만 존재하도록 하는 패턴
정의2 : 딱 한 객체만 생성되도록 한다.

Singleton Pattern

사용자 삽입 이미지

6. Prototype 패턴

정의1 : 클래스로부터 인스턴스를 만드는것이 아니라 인스턴스를 복사해서 새로운 인스턴스를 만듭니다.
정의2 : 어떤 클래스의 인스턴스를 만드는것이 자원/시간을 많이 잡아 먹거나
  복잡한 경우에는 프로토타입 패턴을 쓴다.

 ※ 종류가 너무 많아 한개의 클래스로  할 수 없는 경우
 ※ 클래스로부터 인스턴스를 생성하기 어려운 경우
 ※ 프레임웍크와 생성할 인스턴스를 분리하고 싶은 경우
 ※ 클라이언트에서는 새로운 인스턴스를 만드는 복잡한 과정을 몰라도 된다.
 ※ 클라이언트에서는 구체적인 형식을 모르더라도 객체를 생성할수 있다.
 ※ 상황에 따라서 객체를 새로 생성하는 것보다 객체를 복사하는것이 더 효
 율적이다.

Prototype Pattern

사용자 삽입 이미지

 7. builder 패턴

 정의1 : 구조를 가진 인스턴스를 쌓아 올리는 패턴
 정의2 : 제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계를 캡슐화하고 싶을때
         사용

Builder Pattern

사용자 삽입 이미지

 8. Abstract Factory 패턴

 정의1 : 추상적인 부품을 조립해서 추상적인 제품을 만드는 추상적인 공장 같은 패턴
 정의2 : 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를
         생성할 수 있도록 하는 패턴

Abstract Factory Pattern

사용자 삽입 이미지

 9. Bridge 패턴

 정의 1: 기능의 클래스 계층과 구현의 클래스 계층을 분리하는 패턴
 정의 2: 구현 뿐만 아니라 추상화된 부분가지 변경시켜야 하는 경우 사용

Bridge Pattern

사용자 삽입 이미지

 10. strategy 패턴

정의1 : 알고리즘을 교체해서 동일한 문제를 다른 방법으로 해결 하는 패턴
정의2 : 알고리즘군을 정의하고 각각을 캡슐화하여 바꿔 쓸 수 있게 만듦
        스트래티지 패턴을 이용하면 알고리즘을 활용하는 클라이언트와 독립적으로 알고리즘을
        변경할 수 있다.

Strategy Pattern

사용자 삽입 이미지

11. Composite 패턴

정의1 : 그룻과 내용물을 동일시해서 재귀적인 구조를 만드는 패턴
정의2 : 클라언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰수 있도록
    함

Composite Pattern

사용자 삽입 이미지

12. Decorator 패턴

정의1 : 객체에 장식을 해가는 패턴
정의2 : 객체에 추가 요소를 동적으로 더할 수 있습니다.
         데코레이터를 사용하면 서브 클래스를 만드는 경우에
   비해 훨씬 유연하게 기능을 확장할 수 있다.

Decorator Pattern

사용자 삽입 이미지

13. Visitor 패턴

정의1 : 데이터 구조와 처리를 분리 한다. 데이터 구조 안을 돌아다니는 주체인
 '방문자'를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡긴다.
정의2 : 다양한 객체에 새로운 기능을 추가해야 하는데 캡슐화가 별로
        중요하지 않은 경우에는 비지터 패턴을 사용한다.

Visitor Pattern

사용자 삽입 이미지

14. Chain of Responsibility
정의1 : 어떠한 요구가 발생 했을때  그 요구를 처리할 객체를 바로 결정 할 수 없는
 경우에는 다수의 객체를 사슬처럼 연결해 두고 객체의 사슬을 차례로 돌아다니면서
 목적에 맞는 객체를 결정하는 패턴
정의2: 한 요청을 두 개 이상의 객체에서 처리하고 싶다면 역할 사슬 패턴을 사용한다.

Chain of Responsibility Pattern

사용자 삽입 이미지

15. Facade 패턴
정의1 : 대규모 프로그램을 사용해서 처리를 하려면 서로 관련 있는 많은 클래스들을
 적절히 제어 해야 한다. 많은 클래스들을 제어하기 위해서는 '창구'를 준비해야 한다.
 그렇게 하면 많은 클래스들을 개별적으로 제어하지 않아도 '창구'에게 요구만 하면
 일이 끝나기 때문이다.
정의2 : 일련의 클래스에 대해서 간단한 인터페이스를 제공하는 패턴

Facade Pattern

사용자 삽입 이미지

 

Factory Method Pattern

사용자 삽입 이미지

16. Mediator 패턴

정의1 : 마치 카운셀러 처럼 각 멤버로 부터 올라온 보고를 토대로 대국적인 팥단을 해서
 각 멤버에게 지시를 내리는 패턴
정의2 : 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로 집중시키고자 하는 경우에
        는 미디에이터 패턴을 사용한다.

Mediator Pattern

사용자 삽입 이미지

17. Observer 패턴
정의1 : 관찰대상의 상태가 변하면 관찰자에게 통지되는 패턴
        상태 변화에 따른 처리를 가술할때 유효함
정의2 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이
        가고 자동으로 내용이 갱신되는 방식으로 (one-to-many)의존성을 정의 한다.
정의3 : 자바에서 지원하는 java.util.Observer가 있으며 푸시(subject가 보내는),풀 방식
        (옵저버에서 Observale객체로부터 원하는 데이터를 가져 오는 방식)이 있다

Observer Pattern

사용자 삽입 이미지

18. Memento 패턴

정의1 : 상태를 보존한다. 어떤 시점에서의 인스턴스의 상태를 기록해서 저장
 해두었다가 나중에 인스턴스를 그 시점의 상태로 되돌리는 패턴
정의2 : 객체를 이전의 상태로 복구시켜야 하는 경우에는 메멘토 패턴을 쓰
  면 된다.

Memento Pattern

사용자 삽입 이미지

19. State 패턴

정의1 :상태를 클래스로 표현하는 패턴
정의2 : 상태를 기반으로 한 행동을 캡슐화한 다음 위임을 통해서 필요한 행동을
        선택 한다.

State Pattern

사용자 삽입 이미지

20. Flyweight 패턴

정의1 : 인스턴스를 가능한 한 공유시켜 쓸데없이 new를 하지 않도록 하는 패턴
정의2 : 어떤 클래스의 인스턴스 한개만 가지고 여러 개의 "가상 인스턴스"를 제공하
  고 싶다면 사용한다.

Fly Weight Pattern

사용자 삽입 이미지

21. Proxy 패턴

정의1 : 바빠서 그 일을 할 수 없는 본인 객체 대신에 대리인 객체가 어느 정도 일을 처리
 해주는 패턴
정의2 : 객체를 감싸서 그 객체에 대한 접근을 제어 한다.

Proxy Pattern

사용자 삽입 이미지

22. Command 패턴

정의1 : 명령을 클래스로 만든다.
정의2 : 요청을 객체로 감싼다.


Command Pattern

사용자 삽입 이미지




Introduction

Pseudo code (or Structured English) is used to specify program logic in a (somewhat) English like manner, that aims to be independent of any particular programming language. This simplifies program development by separating it into two main parts, logic design and coding. The use of pseudo code allows the programmer to focus on the logic of the program rather than implementation details such as how data is displayed Once the logic is developed, coding becomes the translation of the pseudo code into the required programming language.

Sequence

Assignment

Format

variable = expression

Examples

total = 0
y = x * x + z / 4 - 1
name = "Joan Smith"
validLength = True

Input

Format

Input variable, variable, ...

Examples

Input custName
Input distance, speed

Display

Format

Display value, value, ...

Examples

Display "Hello World"
Display totalPrice, taxPayable
Display "Customer Number: ", custNum, "Name: ", custName

Selection

If-Else

Format

IF condition THEN
   statement

   statement
   ...
ENDIF
 

IF condition THEN
   statement

   statement
   ...
ELSE
   statement

   statement
   ...
ENDIF
 

IF condition THEN
   statements

ELSE
   IF condition THEN
       statements

   ELSE
       IF condition THEN
           statements

       ELSE
          statements

       ENDIF
   ENDIF
ENDIF
 

IF condition THEN
   statements

ELSE IF condition THEN
   statements
ELSE IF condition THEN
   statements

ELSE
   statements

ENDIF

Note: the Else part is optional. Use it where required by the logic.

Examples

IF lineNumber > 50 THEN
   Display ""
   Display "Student Number", "Student Name"
   lineNumber = 0

ENDIF
 

IF monthNumber >= 1 AND monthNumber <= 12 THEN
   Display "valid month"

ELSE
   Display "invalid month"

   Display "Month must be between 1 and 12"
ENDIF
 

IF mark >= 80 THEN
   grade = "A"

   comment = "Excellent"
ELSE
   IF mark >= 70 THEN
       grade = "B"

   ELSE
       IF mark >= 60 THEN
           grade = "C"

       ELSE
           IF mark >= 50 THEN
               grade = "D"

           ELSE
               grade = "N"
               comment = "Poor"
           ENDIF
       ENDIF
   ENDIF
ENDIF
 

IF mark >= 80 THEN
   grade = "A"

   comment = "Excellent"
ELSE IF mark >= 70 THEN
   grade = "B"
ELSE IF mark >= 60 THEN
   grade = "C"

ELSE IF mark >= 50 THEN
   grade = "D"
ELSE
   grade = "N"
   comment = "Poor"
ENDIF

Iteration (Repetition)

For

Format

FOR counter = start-value to end-value DO
   statement
   statement
   ...
ENDFOR

Example

FOR x = 1 to 10 DO
   xSquared = x * x
   Display x, xSquared
ENDFOR

While

Format

WHILE condition DO
   statement
   statement
   ...
ENDWHILE

Example

count = 1
WHILE count <= 10 DO
   Display count
   Add 1 to count
ENDWHILE

Programs

Format

program-name()
   statement

   statement
   ...
STOP

Example

addTwoNumbers()
   Input number1, number2
   sum = number1 + number2
   Display sum
STOP 

Subprograms: Subroutines and Functions

Subroutines

Subroutines are also called procedures or void methods. Subroutines do not return a value.

Format - subroutine calls

subroutine-name()
subroutine-name(parameter, parameter, ...)

Examples - subroutine calls in a program

demoProgram()
    ...
   displayTenStars()

   displayAverage(count, total)
STOP

Format - subroutine declarations

subroutine-name()
   statement
   statement
   ...
EXIT

subroutine-name(parameter, parameter, ...)
   statement
   statement
   ...
EXIT

Examples - subroutine declarations

displayTenStars()
   FOR numStars = 1 to 10 DO
       Display "*"
   ENDFOR
   Display ""
EXIT

displayAverage(count, total)
   IF count > 0 THEN
       average = total / count
       Display average
   ELSE
       Display "Error, nothing to average"
   ENDIF
EXIT

Functions

Functions are also called non-void methods. Functions return a single value.

Format - function calls

function-name()
function-name(parameter, parameter, ...)

Examples - function calls in a program

demoProgram()
    ...
   month = inputMonth()

   IF oddNumber(month) THEN
       ...

   ENDIF
   volume = 4 /3 * PI * cube(radius)
   max = maximumNumber(a, b)
STOP

Format - function declarations

The following are called functions. They return a single value.

function-name()
   statement
   statement
   ...
RETURN with value

function-name(parameter, parameter, ...)
   statement
   statement
   ...
RETURN with value

Examples - function declarations

inputMonth()
   Input monthNumber
   WHILE monthNumber < 1 OR monthNumber > 12 DO
       Display "Error invalid month number"
       Input monthNumber
   ENDWHILE
RETURN with monthNumber

oddNumber(num)
   oddNumber = false
   IF num modulus 2 = 0 THEN
       oddNumber = true
   ENDIF
RETURN with oddNumber

cube(number)
   cube = number * number * number
RETURN with cube

maximumNumber (number1, number2)
   IF number1 >= number2 THEN
       maximumNumber = number1
   ELSE
       maximumNumber = number2
   ENDIF
RETURN with maximumNumber

Keywords

The following words have a special meaning in Pseudo Code (in this subject) and should only be used for the purposes described above.

AND, DO, ELSE, ENDIF, ENDFOR, ENDWHILE, EXIT, FOR, IF, NOT, OR, RETURN, STOP, THEN, TO, WHILE.

Other statements: Display, Input
Operators:  =, +, -, *, /, (), <, <=, >, >=, []

+ Recent posts