전체 글
로그인/회원가입 구현부터 BCrypt 비밀번호 암호화 적용까지
개요이 글에서는 Spring Boot로 회원가입 및 로그인 기능을 구현하면서 BCryptPasswordEncoder를 이용해 비밀번호를 안전하게 암호화하는 방법을 소개합니다. 단순 기능 구현을 넘어서, 실제 서비스에 적용할 수 있는 보안적인 고려사항도 함께 정리했습니다. 🔸 회원 도메인 및 테이블 설계@NoArgsConstructor(force = true)@AllArgsConstructor@Getter@Builder@Entitypublic class Member { @Id @GeneratedValue private final Long id; private final String username; // 로그인 ID private final String password; pri..
디자인패턴 / Builder 패턴을 알아보자
개요Builder 패턴을 사용해야 하는 이유와 장단점을 알아봅니다. Builder 패턴이 나오게 된 과정생성자 패턴이란?생성자 패턴이란 필드를 직접 입력받는 생성자를 만들어 객체를 생성하는 방법입니다.프로젝트를 진행하며 DTO 를 사용하게됩니다.public class User { private String name; private String age; private String address;}위와같이 생성자 패턴을 사용하여 DTO를 설계했을때 몇가지 단점이 있습니다. 단점1. 파라미터 순서를 정확히 기억해야한다.User user = new User("홍길동", "11", "서울시");id, password, name 순으로 무조건 입력해줘야 합니다 지금은 파라미터가 3개지만 더 늘어난다면 힘..
패키지 구조 설계
개요초반 프로젝트 설계 시 알아야할 Spring 패키지 구조를 설명합니다. Controller클라이언트와 서버간의 중간 역할을 합니다. 사용자는 Controller를 통해 요청을 보낼 수 있고 서버는 Controller를 통해 요청을 받을 수 있습니다. Service를 사용해 요청을 처리하고 다시 클라이언트에 넘겨줍니다. Service핵심 비즈니스 로직들이 있는곳입니다. 컨트롤러에서 받은 요청을 처리하고 다시 컨트롤러로 넘겨줍니다. DAO ( Repository )DB와 직접 통신합니다 DB에 직접 데이터를 조회하거나 수정, 삭제하는 일을 합니다. DTO데이터를 전달하는 용도로 사용합니다. 요청용 DTO, 응답용 DTO 가 있습니다. DAO와 용도가 비슷해보이지만 보안, 확장에 용이합니다. 데이터를 전달..
강의실 예약 사이트 프로젝트 개요
개요강의실 예약 프로젝트(ROOMY)의 목적, 이루고자 하는 목표를 설명합니다. 강의실을 예약할 수 있는 실사용 공간 예약 사이트입니다.기존 회사에서 사용하는 Spring Legacy가 아닌 Spring Boot로 개발됩니다. 사용된 기술구분기술LanguageJava 24FrameworkSpring Boot 3.4.4, Spring Data JPABuild ToolGradleViewThmeleafDBMySQLVersion ControlGit + GitHubCI/CDGitHub Actions 주요 기능사용자 (USER)회원가입, 로그인강의실 목록 및 상세조회강의실 예약 등록, 조회, 취소내 예약 내역 확인관리자(ADMIN)강의실 등록, 수정, 삭제전체 예약 내역 조회예약 승인, 취소 이루고자 하는 목표기존..
Dependency Injection
Dependency Injection (DI)어떤 객체가 자신의 의존 객체를 직접 생성하지 않고 외부로부터 주입받는 설계 방식중 하나이다. MemberService memberService = new MemberService(new MemberRepository()); 이렇게 직접 생성하는 것이 아니라 아래처럼 외부 (AppConfig 나 Spring Container) 에서 주입받는다@Beanpublic MemberService memberService(){ return new MemberService(memberRepository());} 위와 같은 방식으로 코드를 설계하면 몇가지 장점이 있다객체 간 결합도 낮춤, 유지보수 쉬움, 테스트하기 쉬운 구조 설계 가능 개발을 할때 DB가 계속해서 바뀐다면 ..
Python / 2005 파스칼의 삼각형
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5P0-h6Ak4DFAUq&categoryId=AV5P0-h6Ak4DFAUq&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com t = int(input()) for tc in range(1, t+1): n = int(input()) box = [[0 for ..