개발자일지 114

커스텀 Validation을 만들고 테스트 하기

프로젝트를 하면서 멘토님께 "클라이언트를 똑똑하게 만들어서는 안된다" 라는 말을 들었지만, 바쁘다는 핑계로 클라이언트에게 몇가지 기능을 맡겨버렸다. 그 중 하나가 유효성검사였는데 이번에 커스텀 어노테이션을 추가해서 백엔드에서도 완벽하게 유효성검사를 처리하려 한다. 요구사항 1. 비밀번호 입력의 유효성검사를 한다. 비밀번호는 숫자와 영문을 조합한 8에서 16글자이다. 2. 테스트 코드를 통해서 유효성 검사 여부를 확인할 수 있어야한다. 3. @Email과 같은 정규표현식이 드러나지 않는 커스텀 validation 적용한다 1. 정규표현식 String pattern = "^(?=.*\\d)(?=.*[a-zA-Z])[\\da-zA-Z]{8,16}"; @Pattern(regexp="^(?=.*\\d)(?=.*[..

코드스테이츠 섹션 3 회고

어느새 3개월이 지났다 그래도 아직 좀 남았다고 생각했던 지난 섹션과 달리, 이번엔 마지막에 가까워지고있다는게 느껴진다. 이번에는 코드스테이츠 컨텐츠에 소개된 KPT방식의 회고를 작성해보고자 한다. KPT는 Keep : 만족스러웠고 계속 이어나가고자 하는 부분 Problem : 아쉬웠고 해결이 필요한 부분 Try : 새롭게 시도해보려는 부분 세 가지로 나누어 작성하는 회고 방법이다. 목표 상기하기 나의 가장 큰 목표는 올해안에 취업하는 것이다 아마 더 높은 목표를 바라볼 수 있을 만큼 성장하게되지 않는 이상은 바뀌지않을 것 같다. '어디에'라고 묻는다면 잘 모르겠다 어차피 몇십, 안된다면 백군데도 넘게 지원서를 넣을텐데 의미가 있나 싶긴 하지만 조금 멀리 본다면 누구를 가르칠만한 개발자가 되고싶다 Kee..

개발자일지 2022.07.20

스프링 부트 - 오류 페이지 설정

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 시큐리티를 활용한 소셜 로그인 등으로 애플리케이션을 개발하고, 뒤이어 AWS 인프라의 기본 사용법과 www.aladin.co.kr 위 책을 보면서 웹 어플리케이션을 만들어보고 있다. 현재 4장 - 게시글 수정,조회,삭제 까지 구현했다 책에서는 여기에서 로그인을 구현하고 배포로 넘어가는데 여기서 마치기에는 너무 밋밋해보여서 몇가지를 나름대로 추가해보기로 했다 첫번째는 오류페이지 만들기 기본적으로 스프링부트에서 제공하는 오류페이지가 있다 에러코드도 담겨있고 중요 정보를 담고있지도 않긴 하지만 사용자 입장에서는 대체 뭔가 싶을 수 있다. 직접 에러 컨트롤러를 ..

올바른 괄호

올바른 괄호 문제 https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 괄호 '(' 과 ')' 만을 가진 문자열이 주어진다 올바르게 괄호가 열고 닫혔는지 확인하는 문제이다. 풀이 import java.util.Stack; class Solution { boolean solution(String s) { boolean answer = true; char[] chars = ..

Spring의 Bean

봄의 콩 Bean : Spring IoC 컨테이너가 관리하고 있는 자바 객체 Spring의 특징 중 IoC(제어의 역전)이 있는데 일반적인 코드 처럼 개발자가 객체를 생성하고 사용하게 아니라 Spring 컨테이너라는 공간에 저장되어 프레임워크가 관리하기 때문에 IoC(제어의 역전)이라고 한다. 왜 개발자가 직접 관리하지 않고 맡기느냐하면 객체의 생성과 소멸, 의존성을 관리하지 않고 비즈니스 로직에만 집중할 수 있기 때문이다. 예를들어 어느 기능을 사용할 때 직접 객체를 생성해서 사용하는 경우 클라이언트가 요청할 때 마다 새로운 객체가 생성되서 메모리 낭비가 심해진다. 해당 객체를 모두 공유해서 사용할 수 있다면 여러번 요청이 와도 하나의 객체만 사용하면 되는데 이를 코드로 구현하면 굉장히 길고 복잡하지만..

TIL 35. 찾은 블로그의 방향성

오늘 공부한 것 컴포넌트 스캔 의존관계 자동주입 빈 스코프 1. 즐거운(?) 스프링 공부 JAVA 는 내가 알던것 보다 훨~씬 복잡하고 어려운 친구였다 html/css는 말할것도 없고 알고리즘은 친구도 아니고 날 괴롭히는 퉁퉁이였다면 스프링은 위 세개에 비하면 내적친밀감은 있는 것 같다 건너건너 아는 사이였는데 어쩌다 게임 한판 같이 재밌게 한 정도? 물론 앞으로 함께 지내면서 이 친구의 숨겨진 무서운 모습을 보고 엉엉 울 수도 있겠지만 그래도 반갑고 아직은 재밌다 실제로 내가 개발자로써 처음 취직을 한다면 가장 잘 다뤄야할 기술이기에 돌다리도 두들겨보는 심정으로 천천히 깊게 잘 알아가야겠다 반갑다 스프링아! 2. 블로그의 사용처를 깨닫다 github에 TIL을 쓰는게 오히려 편하고 잔디심는것도 재밌다보..

2. 의존관계 주입 DI

김영한님의 스프링 핵심원리 - 기본편 강의를 정리한 내용 입니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 의존관계 스마트폰을 코드로 만들어본다고 하자 스마트폰이라는 클래스 안에 모든 기능을 직접 구현하는 것은 수정도 어렵고 비효율적이다 그래서 정말 핵심적인 기능 외에는 모두 외부에서 만든 후 객체를 가져오는 방식으로 만들고자 한다 public class SmartPhone{ private final Calculator cal = new Calculator(); public SmartPhone(Calculator cal, ....

1. Spring Framework의 특징과 싱글톤 패턴

Frame + work 프레임의 사전적 의미는 틀, 뼈대 개발에서 애플리케이션을 상품이라고 할 때 프레임워크는 상품을 효율적으로 만들기 위해서 틀에 맞춰서 제작하는 것과 비슷하다 Spring Framework 특징 POJO Plain Old Java Object 순수한 자바 객체만을 사용해서 코드를 작성함을 의미한다 순수 자바 외에 다른 기술 A를 함께 사용하는 경우 해당 기술이 업데이트 되어 새로운 기능이 추가되었다고 한다면 그 기능을 사용하기 위해서 코드를 뜯어고쳐야한다 이 뿐만 아니라 아예 더 상위호환되는 새로운 기술 B가 나왔다고 하면 기존에 사용하던 A를 위한 코드 전부를 수정해야하고 해당 기술에 의존적이었을 수록 수정해야하는 것은 많아진다 POJO를 지키면서 개발하는 것은 유연하면서도 단순하게..

0. SOLID와 Spring

처음부터 완전한 애플리케이션을 만드는 것은 정말 어려운 일이다 말이 정말 어렵다지 불가능에 가까울 수 있다 따라서 언제든 변화하고 수정될 수 있도록 유연해야하는데 이를 위해서는 'OOP객체 지향 원칙'을 잘 지켜야한다 좋은 객체 지향 설계의 5가지 원칙이 바로 SOLID다 - SRP단일책임원칙 한 클래스는 하나의 책임만 가져야 한다 : 변경이 있을때 파급 효과가 적어야한다 - OCP개방폐쇄원칙 확장에는 열려있으나 변경에는 닫혀있어야 한다 : 인터페이스를 통해 새로운 클래스를 생성할 수 있는데 인터페이스에 영향을 미치지는 않는다. - LSP리스코프치환원칙 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다. : 단순히 컴파일 성공을 넘어서 약속된 기능을 수행해야한다 - ISP인터페이스분리원칙 특정 ..

TIL 30. DFS 뒷북(feat.BFS)

오늘 공부한 것 HTTP GET, POST 요청하고 응답받기 백준 - 1260 : BFS와 DFS 드디어 내 손으로 푼 DFS 1주일도 전에 공부한 내용인데 이해가 되지않았다 그래서 벼르고벼르다 저번 연휴에 정복해야겠다 생각했는데 정말 놀랍게도 나의 뜻대로 되지 않았다 그냥 놀았다 바로 이해하고 푸는게 쉽지 않다고 들었고 실제로 느껴서 스트레스 받지 않고 넘기려했지만 정말 희안하게도 꿈에서도 DFS가 나왔다.. 나도 모르게 정말 스트레스였나보다 이번주 알고리즘 스터디 문제도 DFS여서 이번에야 말로 이해하리라 다짐하고 가장 기본이라 생각되는 1260번 문제를 도전했다 메모리초과가 뜨긴 했지만 일단 정답을 띄우는데 성공했다! 템플릿을 배끼지 않고 내 머리로 직접 짜내어 문제를 해결하는데 성공했다 DFS에만..