분류 전체보기

    EP4. 검증2 - Bean Validation

    EP3. 검증1 에서 검증로직 구현은 개발자가 직접 작성했습니다. 사실 이 검증 로직은 여러 프로젝트에서 공통적으로 쓰이는 로직입니다. 그래서 검증 로직을 모든 프로젝트에서 공통적으로 쓰일 수 있게 공통화하고, 표준화 한 것이 바로 "Bean Validation" 입니다. Bean Validation 이란? Bean Validation 자체는 어떠한 구현체가 아니라 '기술 표준'입니다. 그래서 우리는 일반적으로 Bean Validation을 구현한 구현체 "하이버네이트 Validator"를 사용합니다. (앞에 붙은 하이버네이트는 ORM과는 관련이 없는 이름입니다.) (마치 기술 표준 JPA가 있고 구현체로 Hibernate 를 사용하는 것과 같은 맥락입니다.) Bean Validation 적용 1. va..

    EP3. 검증1 - Validation

    지금까지 만든 웹 어플리케이션은 사용자가 입력하는 모든 상황을 대비할 수 없습니다. 예를들어, 사용자가 가격을 입력하는 곳에 알파벳을 입력하거나 그냥 입력 창에 공백을 넣게되면 에러페이지로 연결이 되며 기존에 작성했던 데이터는 다 사라지게 됩니다. 만약 우리가 회원가입시 이런 상황을 겪게 된다면 당연히 이 사이트를 더이상 이용하고 싶지 않을 것입니다. 검증은 클라이언트에서도 가능하고 서버에서도 가능합니다. 클라이언트 검증은 포스트맨 등으로 조작할 수 있으므로 보안에 취약합니다. 하지만 서버만으로 검증하면, 즉각적인 고객 사용성이 부족합니다. 둘을 적절히 섞어서 사용하되, 최종적으로 서버에서 검증하는 과정은 필수입니다. API방식을 이용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 넘..

    [42Seoul] 전공자의 라 피신 4주차 후기 + 합격!

    들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에 함부로 비전공자의 입장에서 말씀드릴 수는 없습니다. 2021.09.12 - [지원 후기/42Seoul] - [42Seoul] 전공자의 라 피신 1주차 후기 [42Seoul] 전공자의 라 피신 1주차 후기 들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에 ksabs.tistory.com 4주차 진행 (feat. BSQ) 월 3주차 팁에서 말씀드린대로 3주차에 개인과제를 끝냈어야 했지..

    [42Seoul] 전공자의 라 피신 3주차 후기

    들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에 함부로 비전공자의 입장에서 말씀드릴 수는 없습니다. 정말 3주차는 어떻게 지나갔는지도 생각이 잘 안납니다. 가장 많이 c과제를 풀었고 자면서도 코딩했던 주차였습니다. 3주차 진행 2주차 후기 팁에서도 말씀 드렸듯이 2주차부터는 한주에 과제를 5개는 밀어야 합니다. 왜냐하면 제가 2주차때 안그랬기 때문에 3,4주차에 힘들었습니다...ㅋㅋㅋㅋ 라피신에서는 과제를 한번에 많이 미는 것이 어렵습니다. '동료 평가'라는 시스템이 있기 때문입니다. 자신이 평가를 받기 위해선 누군가의 코드를 평가해야합니다. 그리고 이 평가하는 과..

    [42Seoul] 전공자의 라 피신 2주차 후기

    들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에 함부로 비전공자의 입장에서 말씀드릴 수는 없습니다. 라피신 1주차 경험 후에, 2주차부턴 일주일에 하루정돈 후기를 쓸 수 있는 시간이 있을 거라고 생각했지만, 제 착각이었습니다. 그래서 2주차 후기부턴 깨작깨작 메모한 내용과 희미해져가는 기억을 바탕으로 라피신이 끝난 후 적게되어 다소 정확하지 않을 수 있습니다. 42서울 과제진행 시스템 개인과제 하나를 진행하면 동료평가 2회를 받아야 하고 평가를 다 받고나면 기계채점까지 통과해야 해당 과제가 통과가 됩니다. 이 전 과제를 통과해야 다음과제도 진행할 수 있습니다. 동료..

    [42Seoul] 전공자의 라 피신 1주차 후기

    들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에 함부로 비전공자의 입장에서 말씀드릴 수는 없습니다. 내 현재 상황 저는 현재 홍익대학교 컴퓨터공학과 3학년을 마치고 1년 휴학 후 스프링(자바)기반의 백엔드 공부를 혼자 해왔습니다. 학교 다닐때는 학교 공부를 나름 열심히는 하지만 학점은 그렇게 높진 않은 평균이었습니다. (3.6~7) 혼자 공부하고 혼자 프로젝트하는 기간이 길었고 팀원들과 같이 코딩을 해본 경험이 한번도 없습니다. C언어는 5년전 1학년 수업때한번, 2년전 운영체제 수업때 과제로 사용했습니다. 운영체제 과제할때 C를 이용해 OS의 (스케쥴러, 메모리스..

    [Java] 람다식

    람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 (Lambda expression) 람다식은 메서드를 하나의 '식(expression)'으로 표현한 것입니다. 즉, 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해줍니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 '익명 함수(anonymous function)'이라고도 부릅니다. 메서드와 함수의 차이 위의 설명에서 '함수'라는 용어를 사용했습니다. 원래 자바의 객체지향개념에서는 '함수' 대신 '메서드'라는 용어를 사용합니다. 메서드는 기본적으로 함수와 비슷한 의미이지만, 특정 클래스에 반드시 속해야 한다는 제약을 가지고 있습니다. 그래서 자바에선 함수와는 다른 '메서드'라는..

    [Java] 제네릭

    제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭 JDK 1.5에서 처음도입이 되었습니다. 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시에 타입체크 해주는 기능입니다. 장점 객체의 타입을 컴파일시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듭니다. (타입 안정성 : 의도하지 않은 타입의 객체가 저장되는 것을 막는다는 뜻) 제네릭 클래스 선언 클래스 Box가 아래와 같이 정의되어있으면 class Box { Object item; void setItem(Object item) { this.item = item; } Object getItem() { return item; } } Object 부분을 T로 바..

    [Class Flix] EP 20. messages 적용

    스프링과 타임리프에서는 messages를 편리하게 사용할 수 있도록 여러기능을 제공합니다. 2021.08.20 - [Web/MVC2] - EP2. 메세지와 국제화 EP2. 메세지와 국제화 메시지 현재 HTML의 상품명, 가격, 수량 등 'label'에 있는 단어들을 하드코딩 되어있습니다. 만약에 '상품명'이라는 단어를 '상품이름'으로 바꾸려면 모든 HTML상의 단어들을 바꾸어주어야합니다. ksabs.tistory.com 제 프로젝트의 HTML에서 하드코딩 되어있는 글자들을 messages 기능을 이용해 리팩토링했습니다. 다수의 label 또는 버튼이나 여러 text에 해당하는 부분을 th:text="#{}" 를 이용해 messages.properties에 미리 설정한 글자를 가져올 수 있도록 수정했습니다..

    [Java] I/O

    스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 스트림(Stream) 스트림은 바이트 단위로 데이터를 운반하는데 사용되는 연결통로 입니다. 스트림은 데이터의 흐름을 한쪽 방향으로 흐르는 물에 비유해서 붙여진 이름입니다. 즉, 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없습니다. 그래서 입력과 출력을 동시에 수행하려면 입력스트림, 출력스트림 모두 2개의 스트림의 필요합니다. 스트림은 먼저 보낸 데이터를 먼저 받게 되어 있는 큐(queue), FIF..