비전공자 119

2024.06.10(월) 슈퍼코딩 프로젝트1 1주차 Day 1 후기

회의2주간 하는 프로젝트 계획 수립노션 페이지 생성https://www.notion.so/ukung036/1-3617d293b6524e768fd16e1026562a10?pvs=4해야하는 일 노션, ERD cloud, Git 이메일 작성하기코드 & 깃허브 컨벤션 조사하기슈퍼코딩 1차 프로젝트 가이드 강의 들어오기강의1차 프로젝트 가이드프로젝트 가이드 라인웹페이지에 필요한 API 구현회원, 게시물, 댓글, 좋아요 구현회원 → JWT 사용argument resolver 이용security filter 이용로그아웃 방식(JWT)클라이언트에서 JWT 삭제JWT를 백엔드에서 블랙리스트 방식 → 별도의 DB 필요좋아요비정규화 → 트랜젝션 방지현재 사용자의 좋아요 상태 확인하기깃허브 과정이슈코드 리뷰PRGithub A..

2024.06.07(금) 슈퍼코딩 신입연수원 10주차 Day 5 후기 - Spring Security, 보안기초

강의113강(Spring Security v3) ~ 117강(wrap-up)Spring SecurityJava 기반 보안 프레임워크기능인증Authentication) : 신원 확인권한 부여(Authorization ) : 특정 자원이나 작업에 대한 접근 권한 확인세션 확인 : 사용자 세션 보호, 동시 세션 제어, 세션 고정 보호 등의 기능 제공CSRF 방지 : CSRF 공격 방지 기능 제공인증Authentication유저 확인인가Authorization유저 권한 확인 및 허가로그인 인증 처리 과정AuthenticationFilter, UserDetails, UserDetailsService 구현하기설정의존성 추가implementation 'org.springframework.boot:spring-boot..

2024.06.06(목) 슈퍼코딩 신입연수원 10주차 Day 4 후기 - Cache, Cookie & Session & JWT

강의109강(HTTP 캐싱과 스프링부트 캐싱) ~ 112강((Spring Security v2)캐싱파라토의 법칙 : 상위 20%가 전체의 80%에 영향을 미치는 현상파레토 법치과 cache 활용20%의 쿼리가 사용되는 쿼리의 80% 사용됨Cache데이터의 원래 소스보다 더 효율적으로 엑세스할 수 있는 임시 저장소웹 애플리케이션에서 사용1) 클라이언트측 HTTP 캐시 사용 → HTTP Cache2) 서버측 Spring 캐시 사용 → Spring CacheHTTP Cache(클라이언트측에서 사용)HTTP 클라이언트의 요청에 대한 응답값 임시 저장소Cache Validation을 서버에 보내서 캐시 유효성 확인이 필요HTTP Response HeaderCache-Control : 어떤 방식으로 유지할지 설정E..

2024.06.05(수) 슈퍼코딩 신입연수원 10주차 Day 3 후기 - 테스팅, 서버 업무, 서블릿 컨테이너, filter, interceptor

강의104강(SpringBoot와 테스팅) ~ 108강(서블릿 컨테이너와 WEB layer 좀 더 살펴보기)테스팅테스트 코드반복되는 검증(테스트) 과정을 줄이는 코드종류Acceptance Test(E2E Test)전체 코드 검증Integration Test(통합 테스트)전체 코드 검증 → 부분 또는 전체 통합 테스트Unit Test코드 일부 테스트종류모킹 유닛 테스트service layer 코드를 주로 검증순수 유닛 테스트의부 의존성이 없는 소스 코드 검증외부 라이브러리 동작 검증에 사용사용방법의존성 추가testImplementation 'org.springframework.boot:spring-boot-starter-test'// test lomboktestCompileOnly 'org.projectl..

2024.06.04(화) 슈퍼코딩 신입연수원 10주차 Day 2 후기 - JPA, PSA

강의102강(스프링 부트와 JPA v1) ~ 103강* 스프링 부트와 JPA v2)JPA기본 SQL 사용 구문의 불편한 점rowMapper 사용, 비슷한 SQL문 직접 작성발생 원인SQL → 데이터 지향, 관계 지향, 선언적Java → 객체 지향적, 행위 지향 패러다임해결방법 : ORMORMObject-Relation-Mapping객체지향 언어와 RDB 변환을 자동으로 처리하는 기술기존 entity의 간접 매핑 → "테이블 영속화" 변경기술 적용Python → django ORM, SQLAlchemyNode.js → Sequelize.jsJava → JPAJPAJava Persistence API(JPA) → Java ORM 규약장점객체 지향 실현 가능재사용 용이코드 생산성 향상단점복잡한 요구에 대한 J..

2024.06.03(월) 슈퍼코딩 신입연수원 10주차 Day 1 후기 - 예외 처리, AOP

강의100강(스프링부트와 문서화와 로깅 남기기) ~ 102강(스프링부트와 JPA)예외 처리HTTP status code500 : 최대한 지양400 : Bad Request403 : Forbidden404 : Not Found406 : Not AcceptableHTTP status 500 발생 이유특정 상황 예외 발생했지만 아무도 처리하지 않은 경우예외 처리의 핵심외부 전파 예외controller layer까지 전파 → 클라이언트에게 예외 전달controller : HTTP error 코드 + 메세지 응답 전달@RestContollerAdvice 사용내부 예외내부 다른 Default 값으로 치환상위 내부  layer 전파 후 처리@RestControllerAdvice특징web layer전역적인 except..