프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 4.7 체스 프로그램 디자인하기 간단한 체스 프로그램을 대상으로 하여 C++프로그램을 체계적으로 디자인해보자. 전체 디자인 절차를 개괄적으로 이해하기 위해 우선 먼저 그대로 진행해보고 모르는 부분은 따로 찾아보는 것도 좋은 방법이다. 4.7.1 요구사항 디자인에 들어가기 전에 프로그램의 기능과 성능에 대해 요구되는 조건을 명확하게 정리하는 것이 중요하다. 이상적으로는 이런 요구 조건은 요구 사항 명세서라는 이름으로 문서화되어 있어야 한다. 체스 프로그램에 대한 요구 사항은 다음과 같다. ( 실제라면 더 자세하고 개수도 많을 것 이다.) 프로그램은 체스의 표준 룰을 지원한다. 프로그램은 두 명의 플레이어를 지원한다. 인공지능 컴퓨터 플레이어는 지원하지 않는다. 프로그램은 텍스트 기반 인터페이스를 지원한다...

  • 4.6 패턴과 테크닉을 이용한 디자인 C++언어를 배우는 것과 훌륭한 C++ 프로그래머가 되는 것은 매우 다른 일이다. 책상에 앉아서 C++표준을 읽고 모든 부분을 암기했다면 아마 누구보다도 C++를 잘 알게 될 것이다. 하지만, 다른사람의 코드를 보고, 자신이 직접 프로그램을 개발해보지 못했다면 좋은 프로그래머가 되기 어렵다. 왜냐하면 C++문법은 저수준에서 언어가 어떤 기능을 할 수 있는지 설명해주지만 각 기능이 어떤 방식으로 사용되어야 하는지 설명해주지 않기 떄문이다. C++언어를 사용하면서 경험을 쌓을수록, C++ 프로그래머는 언어의 기능을 사용하는데 있어 자신만의 방식을 구축하게 된다. C++커뮤니티에서도 큰 맥락에서 언어 활용 방식에 대해 표준적, 비표준적 방식을 구축해놓았다. 디자인 테크닉과..

  • 언리얼에서 몽타주를 활용하여, 에니메이션의 하체와 상체를 분리적용 해보자. 우선 ABP의 클래스에 들어가서 ABP를 조정해보자. ABP에서 Jumping을 위와같은, 캐시 포즈 새로 저장을 통해 변수처럼 이용할 것이다. 해당 방법을 통해 필요할 때 마다 에니메이션을 호출할 수 있게 된다. 본마다 레이어 블렌딩 언리얼 에서는 에니메이션을 필요한 부분만 블렌딩 하여 사용할 수 있게 해놓았다. 이걸 위해서 먼저 뼈대를 살펴보자. 캐릭터의 뼈대 설계이다. 뼈대가 각 Root부터 밑까지 이어져 상속되어 있는것 을 볼 수 있다. 본마다 레이어 블렌딩을 통해, 가장 상위에서 블랜딩 될 애니메이션의 부모를 설정할 수 있다. 즉, 내가 설정된 본을 상속받는 뼈대만 애니메이션을 적용하여 변경한다는 의미 이다. 다시 ABP..

  • 4.5.6 C++ 표준 라이브러리 C++ 프로그래머로서 가장 중요한 라이브러리는 C++표준 라이브러리는 C++표준 라이브러리다. 이름이 암시하는 것 처럼 C++ 표준의 한 부분으로서 표준을 따르는 모든 컴파일러는 해당 라이브러리를 제공한다. 표준 라이브러리는 통짜(monolithic)로 되어 있지 않고 여러 이질적인 컴포넌트가 모여 있다. 일부는 이미 앞서 예제를 통해 이용해보았다. 아마도 그러한 부분이 언어 자체 기능인 줄 알았을 것이다. 4.5.6.1 C 표준 라이브러리 C++는 C의 상위 집합(거의 대부분의 경우) 이기 때문에 C 라이브러리를 거의 모두 포함하고 있다. C라이브러리는 abs(), sqrt(), pow()등의 수학 함수와 assert(), erno같은 에러 처리 도구를 포함한다. 추가..

  • 4.5.5 오픈 소스 라이브러리 코드 재사용에서 오픈 소스 라이브러리는 단연 인기 메뉴다. 오픈소스의 일반적인 의미는 모든 사람이 소스 코드를 볼 수 있도록 공개한다는 것이다. 모든 배포방식별로 오픈 소스의 법률적인 정의가 따로 있지만. 핵심은 오픈 소스 소프트웨어라면 모든 사람이 소스코드에 접근할 수 있게 해야 한다는 것이다. 오픈 소스는 라이브러리에만 국한하지 않는다. 리눅스 운영체제는 사실 가장 유명한 오픈소스 제품이다. 구글 크롬과 모질라 파이어폭스 브라우저도 유명한 오픈소스 제품이다. 4.5.5.1 오픈소스 운동 오픈소스 커뮤니티 안에서도 용어에 약간의 혼란이 있다. 첫 번째로 오픈 소스 운동에는 두 가지 경쟁 중인 이름이 있다. 리차드 스톨만과 GNU 프로젝트에서는 프리 소프트웨어(free s..

  • 4.5.4 서드파티 애플리케이션의 번들링 프로젝트 하나에 여러 애플리케이션이 포함될 때도 있다. 예를 들어 전자 상거래 솔루션이라면 웹서버가 프론트 엔드로 필요한데, 서드파티에서 개발한 웹 서버가 번들링될 수도 있다. 애플리케이션 번들링은 코드 재사용이 극단적으로 확장된 형태로 볼 수 있다. 애플리케이션을 번들링 할 때 고려해야할 사항은 사실 라이브러리와 크게 다르지 않다. 라이선스와 관련한 법률적 문제가 애플리케이션 번들링을 사용할지 말지 판단할 기준이 된다. 서드파티의 애플리케이션을 번들링하려 할 때는 지적 재산권 전문가에게 법률적 검토를 받는 것이 안전하다. 기술 지원 문제는 좀 더 복잡해진다. 고객이 번들링된 웹서버에서 문제를 제기했다면 웹 서버를 개발한 서드파티 벤더에게 연락해야 하는지 아니면 ..