3월24일 데일리 TIL
오늘의 느낀점
1) 팀플
- 팀플 3일차인데, 같이하는 nas가 실력이 뛰어나서 그런지 너무 나만 배우는거같아 미안하고,
- 빨리 나스의 진도인 미션4까지 진행해서 나스에게도 짝코딩의 즐거움을 알려드리고싶다 ㅠㅠ...
2) 미션3 마무리
- 미션3가 마무리되어가는 단계인데, 뭔가 이제야 알꺼같다. 지금까지 엄청나게 에러가 떠서 잡느라고 한참 걸렸는데, 이게 html 머스태취에서는 브레이스가 두개인데, 자바 코드에서는 브레이스가 하나인걸 의식하지 못하고 엄청 해멨던거같다.
- 내가 가장 부족한 부분이 웹개발도중 에러발생 >> 에러에 원인파악, 그러니까 트러블슈팅에서 가장 중요한 원인파악이 안된다. 당장 500에러가뜨면 이게 뭔지 구글링을 해야되니까, 너무 힘들었는데, 옆에서 에러와 원인을 말해주니까 트러블슈팅이 정말 잘되고 빨리된다. 예를들어
- 이건 404에러니까, 리소스가 없다는거고 >> 해당하는 유알엘에 해당하는 컨트롤러가 없는지
- 어디 컨트롤러의 경로가 꺠지거나 오타있는지 확인
- 이건 500 에러니까 배드리쿼스트고 해당하는 매소드가 지원하지않는다는거
- 이런것들이 되니까 정말 행복하다. 원래 개발이라는게, 컴퓨터가 가혹하다. 초보자들한테 한없이 깐깐한데, 고수들은 이렇게 당연할수가 없으니 말이다.
- 초보자들에게는 조금은 가혹한게 컴퓨터이고 개발공부인거같지만, 지금 이 프로젝트에 집중할 수 있어서 너무너무 좋고 행복하다 굿굿!
3) 개인 할일
- 백기선님 스터디 7,8주차 학습 및 정리 내용보완 (3H)
- 금요일날 저녁약속!, 토요일 오전스터디, 일요일 10-5 스터디
- 스프링부트 책 한권 읽고 끝내기 (??)
- 영한님 강의 스프링입문 강의 끝내기 (3H)
- 이번주 금요일까지 미션4 merge 받기
4) 지금당장 확보해야하는 역량이지만, 없는것
- 식별자(메서드명, 함수명), 로직처리방식 등 항상 옳은건 없다. 계속 의심하고 또 생각해보면서 좀더 나은 코드를 만들기 위해 노력해라 by (디온, 나스)
- 개발도중 에러발생시, 이게 어디에서 왜 발생한 문제인지
- 원인분석하고
- 문제해결하기
: 멘붕이라고 그냥 부르트포쓰로 찍기 하나씩 이상한짓 해보지 말고 왜그런지 분석해서 하나씩 차근차큰 해결해나가자
스프링에서 서비스와 컨트롤러를 분리하는 이유
-
왜 서비스와 컨트롤러 분리할까?? 컨트롤러에서 그냥 빨리 처리하지 뭐하로 컨트롤러까지 만들어야할까??에 대한 검색결과
-
컨트롤러
: 컨트롤러의 책임(역할)은 뷰에 맞는 리소스만 넘겨주는거야
: 요청에 따라 어떤 처리를할지만을 결정
: 실제로 처리하기 위한 로직(코드는) 서비스로 넘기는 게 맞다
- 안그러면 비지니스로 로직에 부담 커짐
- 간단한 게시판이야 문제가 없지만, 원칙은 서비스로 넘겨라
-
서비스
: 비지니스 로직은 서비스로 들어와야 하는데 주로 아래와 같은 역할
- 권한검증
- 빈데이터인지(널포인터 예외 검사..)
- 로그인여부 확인 등등..
- 위와같은 권한/검증/등등... "서비스에 관련된 할일"은 컨트롤러가 아닌 서비스에서 하자
- 컨트롤러 복잡도를 떨어트리기 위해서도 필요
-
커밋메시지 공부
- 참고링크 : https://velog.io/@djh20/Git-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90
- 근--본 : https://meetup.toast.com/posts/106
- 커밋메시지 출처 : https://github.com/codesquad-members-2021/spring-boot-qna/pull/97
@tmdgusya
feat : Post 검색시 조건 문 생성 …
4d1e7ea
@tmdgusya
feat : Post Pagenation …
3181bd2
---(중략)---
@tmdgusya
fix : 오류 수정 …
cfcd1a2
@tmdgusya
feat : Paging 추가
733943b
@tmdgusya
fix : 5 페이지로 보이도록 수정 …
- 로치선생님처럼 커밋메시지 앞에 타입메시지를 붙이는데
: 이런거를 추가해주면 뭔가 정갈/정리되는 느낌이다 앞으로는 이런 방식으로 쓰도록 노력
Commit Message의 7가지 규칙
1. 제목과 본문을 빈 행으로 구분한다
2. 제목을 50글자 내로 제한
3. 제목 첫글자는 대문자로 작성
4. 제목 끝에 마침표 넣지 않기
5. 제목은 명령문으로 사용하며 과거형을 사용하지 않는다
6. 본문의 각 행은 72글자 내로 제한
7. 어떻게 보다는 무엇과 왜를 설명한다
- 이건 404에러니까, 리소스가 없다는거고 >> 해당하는 유알엘에 해당하는 컨트롤러가 없는지
- 어디 컨트롤러의 경로가 꺠지거나 오타있는지 확인
- 이건 500 에러니까 배드리쿼스트고 해당하는 매소드가 지원하지않는다는거
- 초보자들에게는 조금은 가혹한게 컴퓨터이고 개발공부인거같지만, 지금 이 프로젝트에 집중할 수 있어서 너무너무 좋고 행복하다 굿굿!
- 원인분석하고
- 문제해결하기
: 멘붕이라고 그냥 부르트포쓰로 찍기 하나씩 이상한짓 해보지 말고 왜그런지 분석해서 하나씩 차근차큰 해결해나가자
-
왜 서비스와 컨트롤러 분리할까?? 컨트롤러에서 그냥 빨리 처리하지 뭐하로 컨트롤러까지 만들어야할까??에 대한 검색결과
-
컨트롤러
: 컨트롤러의 책임(역할)은 뷰에 맞는 리소스만 넘겨주는거야
: 요청에 따라 어떤 처리를할지만을 결정
: 실제로 처리하기 위한 로직(코드는) 서비스로 넘기는 게 맞다- 안그러면 비지니스로 로직에 부담 커짐
- 간단한 게시판이야 문제가 없지만, 원칙은 서비스로 넘겨라
-
서비스
: 비지니스 로직은 서비스로 들어와야 하는데 주로 아래와 같은 역할- 권한검증
- 빈데이터인지(널포인터 예외 검사..)
- 로그인여부 확인 등등..
- 위와같은 권한/검증/등등... "서비스에 관련된 할일"은 컨트롤러가 아닌 서비스에서 하자
- 컨트롤러 복잡도를 떨어트리기 위해서도 필요
커밋메시지 공부
- 참고링크 : https://velog.io/@djh20/Git-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90
- 근--본 : https://meetup.toast.com/posts/106
- 커밋메시지 출처 : https://github.com/codesquad-members-2021/spring-boot-qna/pull/97
@tmdgusya
feat : Post 검색시 조건 문 생성 …
4d1e7ea
@tmdgusya
feat : Post Pagenation …
3181bd2
---(중략)---
@tmdgusya
fix : 오류 수정 …
cfcd1a2
@tmdgusya
feat : Paging 추가
733943b
@tmdgusya
fix : 5 페이지로 보이도록 수정 …
- 로치선생님처럼 커밋메시지 앞에 타입메시지를 붙이는데
: 이런거를 추가해주면 뭔가 정갈/정리되는 느낌이다 앞으로는 이런 방식으로 쓰도록 노력
Commit Message의 7가지 규칙
1. 제목과 본문을 빈 행으로 구분한다
2. 제목을 50글자 내로 제한
3. 제목 첫글자는 대문자로 작성
4. 제목 끝에 마침표 넣지 않기
5. 제목은 명령문으로 사용하며 과거형을 사용하지 않는다
6. 본문의 각 행은 72글자 내로 제한
7. 어떻게 보다는 무엇과 왜를 설명한다
@tmdgusya
feat : Post 검색시 조건 문 생성 …
4d1e7ea
@tmdgusya
feat : Post Pagenation …
3181bd2
---(중략)---
@tmdgusya
fix : 오류 수정 …
cfcd1a2
@tmdgusya
feat : Paging 추가
733943b
@tmdgusya
fix : 5 페이지로 보이도록 수정 …
: 이런거를 추가해주면 뭔가 정갈/정리되는 느낌이다 앞으로는 이런 방식으로 쓰도록 노력
1. 제목과 본문을 빈 행으로 구분한다
2. 제목을 50글자 내로 제한
3. 제목 첫글자는 대문자로 작성
4. 제목 끝에 마침표 넣지 않기
5. 제목은 명령문으로 사용하며 과거형을 사용하지 않는다
6. 본문의 각 행은 72글자 내로 제한
7. 어떻게 보다는 무엇과 왜를 설명한다
인텔리제이 단축키 필수
- CMD + ALT + L : 자동정렬
- sfith + f6 : 변수명 한번에 바꾸기, 단 게터세터는 안바뀔수 있어서 조심
- alt + <화살표 방향키 위> : html 태그 수준별 잡기 - 자바코드도 되고
- CMD + N : 자동메서드생성
Optinal 베스트프랙티스
- 결국 너로 정했다!
.orElseThrow(NotFoundException::new)
- Optional은 null값을 안전하게 다루기 위해서 만들어지고 사용하는것이고
Question question = questionRepository.findById(id).orElseThrow(NotFoundException::new);
- 옵셔널의 의도대로, null값 처리는 커스텀익셉션을 발생시켜 처리하는게 일반적이다
public class NotFoundException extends RuntimeException {
public NotFoundException() {
super("존재하지 않습니다");
}
public NotFoundException(String message) {
super(message);
}
- 결국 너로 정했다!
.orElseThrow(NotFoundException::new)
- Optional은 null값을 안전하게 다루기 위해서 만들어지고 사용하는것이고
Question question = questionRepository.findById(id).orElseThrow(NotFoundException::new);
- 옵셔널의 의도대로, null값 처리는 커스텀익셉션을 발생시켜 처리하는게 일반적이다
public class NotFoundException extends RuntimeException {
public NotFoundException() {
super("존재하지 않습니다");
}
public NotFoundException(String message) {
super(message);
}
위 코드에서는 NotFoudException이라는 사용자 정의 예외(커스텀 익셉션)를 따로 만들어서 null이 들어오면 View에서 커스텀된 예외를 던져줄 수 있다(예를들어 로그인실패, 등등..)
- Optional
- 메서드가 반환할 결과값이 ‘없음’을 명백하게 표현할 필요가 있고,
- null을 반환하면 에러를 유발할 가능성이 높은 상황에서 메서드의 반환 타입으로 Optional을 사용하자는 것이 Optional을 만든 주된 목적이다.
- Optional 타입의 변수의 값은 절대 null이어서는 안 되며, 항상 Optional 인스턴스를 가리켜야 한다.
출처 : Java-Optional-바르게-쓰기
HTML에서 a href="#"를 사용하면 안되는 이유
-
href="#"을 해 놓으면 무조건 페이지 최상단으로 이동한다
-
A테그로 감싸줄 경우 Anchor도 URL에 포함되기 때문에 저 버튼을 누르면 주소맨뒤에 #가 붙게 된다. 크게 문제가 있다고 할 수는 없지만 보기에 좋지 않은건 사실
-
그리고 A테그로 이미지같은걸 감싸는건, 이미지 위에 커서를 올렸을 때 손가락 모양으로 커서형태가 바뀌는걸 의도하기 위한건데
- 그럴꺼면 차라리 css 스타일로 처리하는게 깔끔하다
-
작성자분께서 상당히 화나계시지만, 안티패턴까지는 아니고, "권장하지는 않는 옜날방식"인듯 하다.
-
-
백엔드 개발 실력이 어느정도 늘면 http cs js 같은 프론트엔드도 배워보고 싶다.
Author And Source
이 문제에 관하여(3월24일 데일리 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@d-h-k/3월24일-데일리-TIL
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
href="#"을 해 놓으면 무조건 페이지 최상단으로 이동한다
A테그로 감싸줄 경우 Anchor도 URL에 포함되기 때문에 저 버튼을 누르면 주소맨뒤에 #가 붙게 된다. 크게 문제가 있다고 할 수는 없지만 보기에 좋지 않은건 사실
그리고 A테그로 이미지같은걸 감싸는건, 이미지 위에 커서를 올렸을 때 손가락 모양으로 커서형태가 바뀌는걸 의도하기 위한건데
- 그럴꺼면 차라리 css 스타일로 처리하는게 깔끔하다
작성자분께서 상당히 화나계시지만, 안티패턴까지는 아니고, "권장하지는 않는 옜날방식"인듯 하다.
백엔드 개발 실력이 어느정도 늘면 http cs js 같은 프론트엔드도 배워보고 싶다.
Author And Source
이 문제에 관하여(3월24일 데일리 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@d-h-k/3월24일-데일리-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)