전체 글 140

[AOP] AOP에 대해 혼동하지 말자.

로그인 관련(세션체크) 처리, 권한체크, XSS(Cross site script) 방어, 로깅, 페이지 인코딩 변환 등, 종단이 아닌 횡단으로 관리하고 싶은 요소들이 있다. 이렇듯 횡단으로 공통 부분을 모아서 관리, 조금 어려운 말로 횡단 관심사를 핵심 로직과 분리하여 처리하는 개념이자 방식을 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)이라고 부른다. 그리고 그 AOP의 하위 범주에 있는것이 Filter, Interceptor, Spring AOP이다.Spring AOP는 Spring 측에서 AOP라는 개념을 어노테이션과 메서드 등으로 구현한 구현체인 것이다. AOP로 구글에 검색해보면 Spring AOP와 AOP를 동일시해서 말하는 포스팅이 많다. 다른 개발자분들이..

6. logback 설정 관련 정리

logback이란?Spring Boot에서 기본적으로 사용하는 로깅 프레임 워크Logback 설정들로 할수 있는 것들로그를 콘솔에 출력만 할지, 파일로 남길지, 네트워크를 통해 외부로 바로 전달할지 등을 결정하기Spring Profile 별로 로그 설정을 다르게 가져가기일정 로그 레벨 이상의 로그들만 남기기로그의 형식 지정하기일정 시간이 지날 때마다, 시간 별로 로그 파일을 정리하거나 로그 파일을 압축해서 보관하기로그레벨이란?Fatal매우 심각한 에러, 프로그램이 종료되는 경우가 많아 거의 사용되지 않음Error의도하지 않은 에러가 발생한 경우, 프로그램이 종료되지 않음Warn에러가 될 수 있는 잠재적 가능성이 있는 경우Info명확한 의도가  있는 정보성 로그, 주로 개발용DebugInfo 레벨보다 더 ..

5. PlantUML로 ERD와 Sequence Diagram을 그린 학습내용 정리하기

사이드 프로젝트를 진행하며 말로만 설명하는것에 대해 한계를 느껴,이런 설계문서를 작성해 두는것도 좋을것 같아서 학습한 내용을 정리해 본다.PlantUML로 ERD와 시퀀스 다이어그램을 만들어보자.  ERD 기본 문법plantUML은 @startuml과 @enduml 사이에 작성한다.테이블은 entity “테이블명” { } 사이에 작성하면 된다. 연관관계 매핑은 다음과 같다.무조건 하나 (1:1)||없거나 한개o|한개 또는 여러개 (1:N)|{없거나 여러개o{  관계선 종류는 다음과 같다.실선 (식별관계) —점선 (비식별관계).. 따라서 우리 프로젝트에 대한 erd를 간단하게 만들어보았다. @startumlentity 유저{ **user_entity** * id [PK] (integer) auto in..

4. React + Spring Boot 이용해서 카카오 로그인 구현기 (공식문서 참조)

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 이곳에 나와있는 대로 진행 할 예정이다.근데 공식문서 보고 하면 될거를 자꾸 구글링 해서 블로그 글 참조하게 되고 그러더라.. 다시 마음을 잡고 공식문서 있는거를 토대로 개발해 볼 예정이다.따라해보자. 0. 들어가기 앞서 - 시퀀스 다이어그램카카오 홈페이지에 이렇게 기재되어 있다.하나씩 천천히 해보자 1. Step 1. 인가 코드 받기① Get요청을 하기 위한 Spring Boot 컨트롤러..

3. 내가 @Setter 어노테이션을 싫어하는 이유

들어가며사이드 프로젝트 진행 중, 피어코드리뷰를 진행하며 팀원과 @Setter 어노테이션에 있어 이견 차이가 있었다. 나는 평소에 여러 이유로 @Setter를 쓰는것을 싫어한다. (물론 실무에서도 @Setter를 쓰는 경우를 왕왕 보긴 했다.)그러다 보니 상대방을 설득하려면 논리적으로 나의 생각을 설명해야 하는데, 단편적으로 느끼고 있었던 지식이 파편화 되어있어 말이 잘 안나오더라.. 그래서 그냥 빼애액 우기는 사람의 꼴이 되었다.그래서 좀 반성하며 복습할겸 나름의 이유를 글로 남겨보자 한다. @Setter 어노테이션 이란?이 글을 보고 있는 사람들에게는 의미없는 단락이겠지만.. '왜?' 를 알기 위해서는 '무엇'인지 부터 알아야 하기 때문에.. 간단히 적어보자면,public class Person { ..

2. Live Template을 이용하여 테스트 작성 시 자동완성 작성하기

거두절미하고, 바로 본론으로 넘어가 보자. ctrl + alt + s로 Settings 진입, 위에 Live Template로 검색하여 해당 부분까지 찾아간다.그러면, 아래와 같이 단축어를 셋팅 할 수 있다.그 후, 다음과 같이 입력해 주자. 또한, 밑에 Change 버튼을 눌러 Java로 셋팅해 준다. (눌러보면 무슨 말인지 알 것이다.) 이제 IDE에서 test라고 입력하면, 다음과 같이 이용할 수 있다.생각보다 생산성 향상에 좋으니, 애용하도록 해야겠다.

SideProject 2024.07.09

1. Spring Boot에서 h2 데이터베이스를 사용해보자.

사이드 프로젝트를 진행하던 중, 원래는 매번 설정된 프로젝트에서 시작하느라 몰랐는데, 아무것도 없는 프로젝트에서 다시 쌓아 올리려니 어떻게 해야하는지 알지 못함을 알 수 있었다. 그래서 지금이라도 적어놓고, 나중에 까먹으면 찾아보려 한다. 1. build.gradle에 의존성 추가 dependencies { // h2 runtimeOnly 'com.h2database:h2' }depenencies 부분에 h2 를 추가해 준다.2. application.properties 파일 수정# H2 콘솔 활성화spring.h2.console.enabled=truespring.datasource.driver-class-name=org.h2.Driverspring.datasource.url=jdbc:..

SideProject 2024.07.09

데스커 라운지 워크투게더, 향로님 강연 후기

어느 날과 같이 유튜브 세상을 탐험하던 중, 개발바닥 유튜브 커뮤니티에 올라온 해당글을 보게 되었다.향로님은 인프런 CTO 이 시고, 내 개발자 인생의 롤모델이기도 하다.. 개인적으로 팬심이 두터웠기 때문에 일단 신청을 해보았다.그렇게 잊고 살던 어느 날.. 다음과 같이 문자가 왔다.예약 후, 당일날 반차를 내고 데스커 라운지에 출근했다.시설은 굉장히 깔끔했고, 다만 의자가 불편해서 오래 앉아있었더니 허리가 아팠다. ㅠㅠ. 그것 말고는 직원분들도 친절하시고, 프로그램도 잘 진행해 주셔서 좋은 인상을 많이 받았다.특히, 진행해주시는 분들의 에너지가 엄청났는데, 수줍음 많은 개발자 분들이 잘 따라오게 하기 위해 많은 노력을 기울이시는 거 같아서 감명 깊었다. 프로그램은 1부와 2부로 진행되었는데, 1부는 주..

[SpringBoot] 프로젝트 만들 때 들어가는 Group? Artifact? 얘내는 뭐지?

서론 맨날 스프링 부트 프로젝트를 만들면서도, Group, Artifact, 이런 놈들이 뭔지도 모르고 사용했던게 생각나서, 이 기회에 정리해서 적어두려고 한다. 본론 이다 그래서 Package name 이 Group + Artifact 인 것이다.. 결론 결론은 Group => 회사명을 의미하고, Artifact => 프로젝트 이름을 의미한다. 별 뜻은 없다..

IntelliJ에서 React 프로젝트에 AirBnB의EsLint를 설정해보자.

1. 일단, git에서 가져온 프로젝트에 react 모듈을 추가해준다.Project Structure (Ctrl + Alt + Shift + S) 에서 사진처럼 모듈을 import 해준다. 그러면,위와같이 프로젝트가 잘 생성됨을 알 수 있는데, 이제 Lint를 깔아보자.  2. ESLint 설치여러 블로그들을 참고하였다. 터미널에서 다음과 같이 입력해주자.npm install --save-dev eslint 그러고 나서, Actions 창 (Ctrl + Shift + a) 에서 다음과 같이 설치됨을 확인 할 수 있다. 보통 자동으로 config를 잡아주기 때문에, 인텔리제이에서 해줄건 끝났고, 이후론 npm에서 설정해준다. 3. Airbnb Style 설치npx install-peerdeps --dev ..