전체 글 보기

    [JPA] 엔티티 설계시 주의점

    📄 값 타입은 변경 불가능하게 설계한다. @Embeddable @Getter @AllArgsConstructor public class Address { private String city; private String street; private String zipcode; protected Address() { } } Setter를 제거해 변경 불가능하게 만든다. JPA 스펙상 임베디드 타입은 public 또는 protected인 빈 생성자가 필요하다. 그나마 안전한 protected 제어자를 사용한다. 📄 가급적 Setter를 사용하지 않는다. Setter를 사용하면 변경 포인트가 많아 유지보수가 어려워진다. 📄 모든 연관관계는 지연 로딩으로 설정한다. 즉시 로딩 FetchType.EAGER는 예측과..

    [Error Handling] Spring - lombok, MapStruct를 동시에 사용하는 경우

    [Error Handling] Spring - lombok, MapStruct를 동시에 사용하는 경우

    💣 문제 상황 MapStruct로 객체 간의 Mapper 코드를 자동으로 구현하려고 했는데 다음과 같은 에러가 발생했다. 더보기 MemberMapperImpl.java:46: error: constructor MemberResponseDto in class MemberResponseDto cannot be applied to given types; MemberResponseDto memberResponseDto = new MemberResponseDto(); ^ required: long,String,String,String found: no arguments reason: actual and formal argument lists differ in length 📋 코드 더보기 // build.gradl..

    코드스테이츠 백엔드 부트캠프 Section 2 회고

    📝 회고 Section 2를 진행하던 중 코드스테이츠 커뮤니티에 2022 토스 NEXT 개발자 챌린지 글이 올라왔다. 코드스테이츠 졸업생을 위한 글이었지만, 코딩 테스트 경험은 취업 등 장래에 도움이 될 것이라 생각했다. 테스트를 완료한 사람 중에 추첨을 통해 100만 원을 준다는 소식까지 있어서 재빨리 Server 분야로 지원했다. 아쉽게도 당첨은 되지 않았다..😅 그렇지만 생각보다도 많은 것을 느끼고 배울 수 있는 시간이었다. 코딩 테스트는 90분 7문제, 서술형 30분 5문제였다. 시간이 넉넉하지 않았지만 검색도 가능했고, 외부 IDE도 사용할 수 있었다. 코딩 테스트 문제는 쉬운 편이어서 6문제를 통과했다. 생각보다 많은 문제를 맞혀서 여태 공부했던 기간을 보상받는 것 같고 기분이 너무 좋았다. ..

    데이터베이스 스키마 설계 예시

    데이터베이스 스키마 설계 예시

    create table user ( id int not null primary key auto_increment, name varchar(255) not null, email varchar(255) not null, ); create table follow ( id int not null primary key auto_increment, followerId int not null, followingId int not null, foreign key (followerId) references user (id), foreign key (followingId) references user (id) ); create table content ( id int not null primary key auto_incr..

    웹 애플리케이션, 쿠키, 세션

    웹 애플리케이션, 쿠키, 세션

    📄 웹 애플리케이션 요청 흐름 브라우저에 https://google.com을 입력한다. 이미 방문한 기록이 캐시 메모리에 있다면 IP 주소를 캐시 메모리에서 가져온다. 캐시: 브라우저 캐시 → hosts 파일 → DNS Cache (OS, router, ISP) 캐시 메모리에서 찾지 못했다면 DNS 서버에 요청을 보낸다. Root → Top-level(.com) → Second(google.com) → Third(maps.google.com) 한 DNS 서버에서 다른 DNS 서버로 재귀적으로 질의한다. IP 주소를 찾으면 해당 주소에 HTTPS 요청을 보낸다. 웹서버에 요청이 도착한다. 웹서버는 저장소에 요청을 보내 페이지 관련 데이터들을 가져온다. 데이터들을 가져오는 중에 비지니스 로직이 작동한다. 로..

    TCP/UDP, Port, URL, Domain

    TCP/UDP, Port, URL, Domain

    📚 TCP/UDP 📄 TCP/IP 4계층 모델 TCP/IP 4계층 모델 주요 프로토콜 역할 4계층 응용 계층 HTTP, DNS, *FTP 애플리케이션에 맞추어 통신한다. 3계층 전송 계층 TCP, UDP, ... IP와 애플리케이션을 중개한다. 2계층 인터넷 계층 IP, *ICMP, *ARP, *RARP 네트워크 주소를 기반으로 데이터를 전송한다. 1계층 네트워크 접근 계층 Ethernet. wifi, ... 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송이 가능하게 한다. *FTP: File Transfer Protocol *ICMP: Internet Control Message Protocol *ARP: Adress Resoultion Protocol *RARP: Reserve Adress R..

    코드스테이츠 백엔드 부트캠프 Section 1 회고

    📝 회고 Section 1에서 배운 내용들은 모두 이전에 독학으로 공부했던 부분이다. 처음에는 복습을 한다는 생각을 가지고 공부를 시작했다. 공부하다 보니 몰랐던 내용들도 꽤 많았고 잊어버린 내용들도 많았다. 공부했던 내용을 자꾸 잊어버리는 것에서 "밑 빠진 독에 물 붓기"라는 말이 떠올랐다. 모든 내용을 잊어버리지는 않지만 잊어버리기 쉬운 내용들은 블로그에 정리를 해주었다. 블로그가 두꺼비 역할을 해주어 미래에 큰 도움이 될 것 같다. 언젠가 두꺼비가 막아주는 항아리에서 밑이 빠지지 않은 완전한 항아리가 되도록 더욱 노력해야겠다. 코드스테이츠에서 한 사람은 드라이버, 한 사람은 네비게이터 역할을 하는 페어 프로그래밍있다. 여기서 코딩 경험이 많은 사람도 만났고 반대로 코딩을 아예 처음 접하게 된 사람도..

    부트캠프를 시작하기 전 내가 걸어온 길

    📝 컴퓨터에 관심을 가지게 된 계기 고등학생 때 컴퓨터 동아리를 하면서 C언어와, 자바를 접할 수 있었다. 원래부터 컴퓨터를 좋아했는데 코딩을 접하고 컴퓨터가 더 좋아졌다. 그래서 열심히 하다 보니 변수, 배열, 조건문, 반복문, 함수를 배워서 계산 프로그램을 만드는 정도까지는 할 수 있었다. 인문계 고등학생이다 보니 시간이 많지는 않아서 더 깊게는 다루지는 못했었다. 그렇게 고등학교 2학년 때까지는 장래희망에 프로그래머를 적었었는데 3학년이 되고 좋은 선생님들을 많이 만나게 되면서 교사가 되고 싶다는 생각을 하게 되어서 수학교육을 전공하게 되었다. 중등교사를 목표로 수학과 교육학을 공부를 하게 되었다. 대학교 수학은 내가 원래 알던 문제 풀이 위주의 수학과는 달리 증명이 대부분이었다. 교육학을 공부할 ..