YAPP 22기 활동의 마무리, 성과공유회 4월 29일부터 8월 5일까지 약 3달이 넘는 기간 동안 진행된 YAPP 22기 활동을 마무리하는 날이다. 우리 팀은 유기견 봉사 매칭 플랫폼, 댕글댕글이란 웹 서비스를 만들었고, 성공적으로 출시할 수 있었다. 모든 팀원이 열정적으로 맡은 바에 최선을 다해준 덕분이다. 다른 팀들이 만든 서비스를 직접 이용해보고 궁금증과 피드백을 주고받는 시간도 주어졌다. 다양한 서비스를 구경하는 재미도 쏠쏠했다. 성과 발표 시간에는 각 팀들이 어떤 과정을 거쳐서 얼마큼의 성과를 만들어냈는지 공유하였다. 나도 우리팀 TPM으로서 22기 멤버들에게 댕글댕글 서비스를 소개하고 이후 목표를 발표했다. 성과 발표. 그리고 향후 목표 우리 팀은 처음 시작할 때부터 목표를 명확하게 잡았다...
TDD 법칙 세 가지 TDD: 실제 코드를 짜기 전에 단위 테스트부터 짜는 개발 방식 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 위 규칙을 따면 개발과 테스트가 약 30초 주기로 함께 나온다. 하지만 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다. 깨끗한 테스트 코드 유지하기 지저분한 테스트 코드를 짜는 것은 테스트를 안 하는 것보다 못하다. 실제 코드가 진화하면 테스트 코드도 변해야 한다. 테스트 코드가 지저분하면 변경하기 어려워진다. 테스트 코드가 복잡할 수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 길어진..
라이브러리, 패키지, 오픈 소스 등의 외부 코드를 우리 코드에 통합시키는 방법과 이런 소프트웨어 경계를 깔끔하게 처리하는 방법에 대해 알아본다. 소프트웨어 경계란, 인터페이스 제공자와 사용자 사이의 입장 차이로 발생하는 경계 인터페이스 제공자는 최대한 적용성을 넓히는 방향으로 설계한다. 인터페이스 사용자는 자신의 요구에 집중하는 인터페이스를 원한다. 외부 코드 사용하기 예를 들어 Map 객체는 굉장히 다양한 인터페이스로 수많은 기능을 제공하는데, 이런 유연성은 유용하지만 그만큼 위험이 크다. 객체 유형을 제한하지 않는다. 어떤 타입의 객체도 추가할 수 있다. 사용자에게 필요하지 않은 기능까지 제공한다. 누구나 내장된 clear() 함수를 호출하여 내용을 지워버릴 가능성이 있다. 제너릭 사용하기 const..
9강 그림자 three.js는 동적으로 그림자를 렌더링 할 수 있다. 내부적으로 텍스쳐 맵핑을 통해 그림자를 위한 이미지를 생성하고, 이 이미지를 이용해 그림자를 시각화 해보자. 그림자를 렌더링하기 위한 세 가지 객체 설정 1. Renderer 객체 renderer.shadowMap.enabled = true 2. 광원 그림자를 제공하는 광원 DirectionalLight PointLight SpotLight 이 광원들은 모두 shadow.camera 속성을 갖는다. 이 속성이 그림자에 대한 텍스쳐 이미지를 생성하는 데 사용된다. 그림자를 줄 것인지에 대한 여부를 다음처럼 설정할 수 있다. light.castShadow = true; // 활성화 3. 모델 그림자를 표현하는 모델에 다음 코드를 추가한다...
자료 추상화 구현을 감추기 위해서는 추상화가 필요하다 Getter와 Setter가 아닌, 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료와 핵심을 조작할 수 있어야 한다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다 자료/객체 비대칭 객체와 자료 구조의 정의는 본질적으로 상반된다. 객체: 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조: 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. 사소해 보이지만 이 차이가 미치는 영향은 매우 크다. 예제를 통해 둘의 차이점을 자세히 알아보자 도형 클래스를 자료 구조로 구현 - 절차적인 도형 class Square { topLeft: Point; side: number; } class Rectangle { ..
8강 카메라 카메라는 Camera 클래스를 상속받는다. 두 가지 종류가 있다. PerspectiveCamera: 원근감(거리감)을 표현한다. 가까이 있는 물체가 멀리 있는 물체보다 상대적으로 크게 보이도록 렌더링 OrthographicCamera: 원근감(거리감) 없이 표현한다. 물체의 원래 크기대로 렌더링된다. 이 두가지 카메라의 차이점을 알아보자 PerspectiveCamera 카메라를 정의하기 위해서 4개의 인자값이 필요 **절두체: 4개의 값을 통해 구성된 (아래 그림의 연두색) 육면체 이 절두체 안에 존재하는 물체가 카메라를 통해 보여지고 화면에 렌더링된다. fovy: 절두체 높이 방향의 각도 (단위: degree) aspect: 절두체 가로 길이를 세로 길이로 나눈 비율 zNear, zFar:..