❒ Description
내일(10.15 화요일)부터 우테코7기 프리코스를 시작한다. 그에 따라 필요한 몇 가지 준비를 전날 미리 해두려고 한다.
❒ Java version
물로 최근에 Virtual Thread 기술을 탑재한 Java21이 나왔지만, 6기도 Java17을 썼기 때문에 17을 사용할 것 같다.
※ [2024.10.15]
나의 예상과 다르게 Java21이로 과제를 진행한다고 한다.
보자마자 java21로 변경해주고, Intellij java compile도 21로 변경해줬다.
❒ gradlew
1. Why?
mac을 사용하는 경우 다음 에러가 발생한다.
zsh: ./gradlew: bad interpreter: /bin/sh^M: no such file or directory
이 오류는 주로 Windows와 Unix 기반 시스템(예: macOS, Linux) 간의 줄바꿈 방식 차이로 인해 발생한다.
Windows에서는 줄바꿈을 `\r\n (Carriage Return + Line Feed)`으로 처리하고, Unix 기반 시스템에서는
`\n (Line Feed)`만 사용합니다. `^M`은 Carriage Return (\r)에 해당하며, 이는 파일이 Windows 형식의
줄바꿈을 포함하고 있다는 의미다. 이러한 이유로 `./gradlew build` 수행시 위와 같은 에러가 발생하는 것이다.
2. 해결 방법
dos2unix ./gradlew
vim gradlew
:set fileformat=unix #입력 후 에터
:wq
❒ 프리코스 과제 작업 순서
1. 시나리오 바탕의 요구 사항 분석
사용자/시스템 시나리오로 요구사항을 구분
우선순위를 부여하여 개발 순서를 잡아 가기.
+ 예외 상황도 생각나는 부분은 작성
2. 도메인 모델링
요구 사항을 바탕으로 도메인 모델의 역할, 관계, 핵심 필드를 정의
3. 메인 로직 분석
도메인 모델링을 기반으로 시스템에서 처리해야 할 핵심 로직 파악.
피그마 또는 freeform 활용
4. 도메인 로직과 비즈니스 로직 구분
도메인 로직과 비즈니스 로직을 명확히 구분. Util 기능도 함께 구분하는 것이 좋을 듯.
5. 코드 작성 & TC 작성
개발 과정에서 필요한 기능은 유연하게 추가
- 작업 방향성
- 시스템 로직 개발 후 입출력 작업을 한다.
- 로직-TC-로직-TC 순으로 작업한다. (이때 예외 케이스 추가로 고민해야 함.)
- 컨벤션을 지키지 못한 로직이 있다면 FIXME : 컨벤션(내용)이라는 태그 달아둔다.
- 수정 사항
- 추가된 로직은 도메인 모델에 갱신해준다.
6. 점검 & 제출 & 피드백
제출을 하고 피드백을 받는지, 피드백을 받고 제출하는지 이건 시작하는 날 판단
7. 회고
작업 과정에서 아쉬웠던 부분, 잘한 부분, 그리고 최초에 설정한 목표에 대한 회고