오랜만에 Tistory 스킨을 커스텀 한다고 html, CSS 등을 만져보는데 너무 재미있었다. 그냥 다른 사람이 작성해 둔 코드를 가지고 와서 조금만 수정해서 사용하는 건데도 중간중간 내 취향에 맞게 꾸밀 수 있어 진짜 시간 가는 줄 모르고 했다. velog를 쓸 땐 글을 작성할 때 할 수 있는 것이 조금 제한적이라고 느껴서 Tistory로 갈아탈까? 계속 고민하다가 어제 공부 내용을 좀 정리하며 글을 작성하고 싶다는 생각에 Tistory 계정만 만들어 두고 오늘 처음 작성해 봤는데 사실 velog와 크게 다르다는 생각은 안 들었다. 오히려 velog에 그새 적응이 되어서 Tistory를 velog 처럼 보일 수 있는 스킨을 찾았을 정도였다. 역시 각자의 장점이 확실한 것 같다.
문제 : 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
signs[i]
가 참이면 absolutes[i]
의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for (int i = 0; i < absolutes.length; i++) {
if (signs[i]) {
answer += absolutes[i];
} else {
answer -= absolutes[i];
}
}
return answer;
}
}
문제 : 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SELECT HOUR(DATETIME), COUNT(*)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
HOUR
WHERE HOUR(DATETIME) ⇒ 이렇게 작성해야 함
WHERE HOUR ⇒ 이런 식으로 작성 불가
오전에는 어제 새로 만든 Tistory에 개인 과제 관련 내용들을 정리하면서 과제 제출 시 생각해야 하는 부분에 대해 작성했다. 그리고 과제 제출하고 Tistory 스킨을 꾸미는 것에 꽂혀서 이것저것 찾아보고 내 마음에 들게 html을 수정하며 시간을 보내고 Spring 1주 차 강의를 들으며 급하게 넘어갔던 부분들을 하나씩 다시 보면서 조금 자세하게 공부하며 시간을 보냈다.
⇒ body 사용 : 수정 및 삭제 API의 요청 데이터는 @RequestBody를 사용하여 JSON 형식으로 전달하도록 함.
리소스 경로 설계 : /api/schedules로 일정을 나타내며, RESTful 한 경로 설계
HTTP 메서드 사용
POST /api/schedules: 새로운 일정을 생성
GET /api/schedules: 모든 일정을 조회
GET /api/schedules/{id}: 특정 일정을 조회
PUT /api/schedules/{id}: 특정 일정을 수정
DELETE /api/schedules/{id}: 특정 일정을 삭제
HTTP 상태 코드 사용
상태 코드 사용(예: 201 Created, 200 OK, 404 Not Found 등)은 클라이언트에게 요청의 결과를 명확히 전달함
상태 코드와 함께 더 구체적인 응답 메시지를 제공하지 않을 수 있음
예외 처리 및 에러 응답이 자세히 다루어지지 않았음
데이터 검증(예: 입력 데이터 유효성 검사)과 보안 조치(예: 비밀번호 해싱 및 보호)가 코드에서 명확히 다루어지지 않음.
결론
Controller: HTTP 요청을 처리하고, 클라이언트에게 응답을 반환하는 역할을 잘 수행하고 있으며, 비즈니스 로직을 서비스 계층에 위임하고 있음
Service: 비즈니스 로직을 처리하며, 데이터베이스 접근은 리포지토리 계층에 위임하고 있고 데이터 변환 로직도 포함하고 있음
Repository: 데이터베이스 접근 로직을 담당하고 있으며, JpaRepository를 통해 기본적인 CRUD 작업을 수행함
DTO 및 Request Classes: 데이터 전송 및 요청 데이터를 캡슐화하여 관심사를 분리하고 있음