분류 전체보기

도서/오브젝트

1. 객체, 설계

해당 글은 객체지향의 사실과 오해에 이어서 코드로 살펴보는 오브젝트 책이다. 기본적인 내용에 대한 기반은 객체지향의 사실과 오해를 기반으로 설명을 하고 있기 때문에 혹시 어느 방향인지 잘 이해가 안된다면 객체지향의 사실과 오해라는 책을 먼저 읽는 것을 권장한다! 아니 본인이 객체지향언어를 사용하는 개발자라면 꼭 읽어봐야 한다고 생각한다. 개요 잘못된 방식의 애플리케이션 설계는 무엇인지, 객체지향적인 방식의 설계는 무엇인지, 객체지향적으로 설계를 하면서 사고해야하는 것은 무엇인지에 대해 알아보자. 티켓 판매 애플리케이션 구현 요구사항 관객은 티켓 판매점에서 초대장 보유 여부에 따라 구매 하거나 교환 할 수 있다. 관객은 가방을 가지고 있으며, 가방에는 현금, 초대권, 티켓이 들어있을 수 있다. 티켓 판매점..

Computer Science/DataBase

데이터베이스의 Key와 유일성과 최소성

데이터베이스의 Key에 대해서 이해하기 전에 먼저 중요한 용어인 유일성과 최소성에 대해서 확실히 이해하고 넘어가야 키에 대한 역할을 확실하게 구분 할 수 있다. 유일성과 최소성 유일성 먼저 유일성에 대해서 알아보자면 유일성은 이해하기가 간단하다. 다음과 같은 Member 테이블을 가정해보자. member_id name age Gender 1 김봄보 20 남 2 문봄보 20 남 3 박봄보 21 녀 4 문봄보 19 남 유일성이란, 여러 개의 튜플이 존재 할 때, 각각의 튜플을 유일하게 식별 할 수 있는 것을 의미한다. 위의 테이블을 봤을 때, member_id 말고 다른 값들은 중복 된 값이 존재해서 각각의 튜플들을 구분 할 수 없는 것으로 보여진다. 이럴 때 member_id는 유일성을 가졌다고 본다. 튜..

Backend/JPA

Spring Data JPA는 왜 @Repository를 사용하지 않아도 될까?

Spring Data 스프링 데이터 JPA를 알기전에 먼저 스프링 데이터부터 알아봐야 한다. 사실 스프링 데이터 JPA는 JPA에 특화 된 스프링 데이터 프로젝트의 하나이다. 실제로는 스프링 데이터 Redis, 스프링 데이터 Mongo 등등 다양한 스프링데이터들이 존재한다. 이러한 것들을 인터페이스화 하여, 공통 기능으로 간단한 쿼리를 생성해주는 것이 Spring Data이다. Spring Data JPA 스프링 데이터에는 여러가지 메서드들이 있고, JPA에 특화된 스프링 데이터 JPA 계층구조를 잠시 살펴보자. 다음과 같은 구조를 하고 있다. 그런데 이상한 점은 스프링 데이터 JPA를 만들게 되면 우리는 빈으로 등록하지 않았음에도 불구하고, 스프링 데이터 JPA의 인터페이스가 빈으로 등록되어 있고, 그..

Language

Lombok ToString 순환참조 방지하기

JPA에서 엔티티를 등록하고 ToString을 호출할 때 연관 관계가 적용되어있으면 순환 참조로 인해 StackOverFlow가 발생하게 된다. Lombok @ToString 동작 원리 다음과 같은 상황을 보자. @Entity @Getter @ToString public class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity @Getter @ToString public class Team { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "team") private List member..

Computer Science/Network

웹 서버와 WAS의 차이, 그리고 아파치와 NGINX 알아보기

우선 웹 서버(Web Server)와 WAS(Web Application Server)의 차이에 대해서 이해하기 전에 먼저 알아둬야 할 것이 있습니다. 바로 Static 페이지와 Dynamic 페이지입니다. Static 페이지, Dynamic 페이지 Static 페이지 동적인 작업없이 서버에서 별도의 처리가 없이, 사용자에게 바로 보여주어도 되는 페이지를 말합니다. 즉, static 페이지는 어떠한 사용자가 접근하던 간에 동일한 페이지를 보여주게 됩니다. EX) html, image, css Dynamic 페이지 서버에서 어떤 일련의 과정들을 거쳐서 데이터가 변할 수가 있는 페이지입니다. 주로 데이터베이스에서 데이터를 가지고 오는 페이지들이고, 이는 어떤 사용자인지에 따라서 다른 페이지가 보여줄 수 있게..

Computer Science/Network

CORS 작동 방식 시나리오와 해결법

CORS 작동 방식 3가지 시나리오 이전 포스팅에서 SOP 그리고 CORS의 동작 흐름에 대해서 포스팅하였다. 이번 포스팅에서는 CORS의 기본 동작 흐름말고 CORS가 동작하는 세 가지 시나리오와 그 해결법에 대해서 알아보고자 한다. 예비 요청(PreFlight Request) 우리가 흔히 접하게 되는 CORS 동작 방식이다. 웹 브라우저는 요청을 보낼 때 사실 한 번에 바로 보내지 않고, 먼저 예비 요청을 보내고 난 뒤 서버와 잘 통신되는지 확인을 한 후에 본 요청을 보낸다. 이 때, 예비 요청의 역할은 본 요청을 보내기 전에 브라우저 스스로 안전한 요청인지 미리 확인하는 것이다. 브라우저가 예비요청을 보내는 것을 PreFlight라고 부르고, 예비요청의 HTTP 메서드는 OPTIONS 메서드이다. ..

Computer Science/Network

CORS의 개념과 작동방식

스프링 & 리액트 프로젝트를 진행하면서 클라이언트에서 처음 서버로 api 통신을 할 때 마주쳤던 CORS(Cross-Origin-Resource-Sharing) 이다. 당시에는 CORS가 그저 허락한 리소스에 대해서만 통신을 할 수 있게 해주는 것이라고만 가볍게 알고 해결 법은 구글링해서 middleware 를 사용해서 통신이 가능하게 해줬다. 하지만 이런 얕게 알고 있던 지식 때문에 Access-Control-Allow-Origin 의 설정을 서버에서 * 로 해두어서 사실 상 모든 리소스에서 접근 권한이 가능하도록 설정을 했었다. 그럼 이 CORS가 무엇인지 왜 생겼는지 하나 하나 살펴보자.SOP(Same-Origin Policy)CORS를 얘기하다가 갑자기 이상한 SOP가 나왔다. CORS를 이해하기..

회고

5월 1주차 회고

어느덧 5월이다! 5월까지 정말 열심히 달려왔다. 2주동안 또 많은 일들이 있었다. 먼저 저번 회고 때 네이버 코테를 보면서 나 자신이 PS 부분에서 어느정도 성장함을 느꼈다고 포스팅했었다. 이후로 4월 29일 프로그래머스 데브코스 코딩 테스트와 자바와 객체지향언어, 기타 웹 지식, SQL 코딩테스트 등을 봤는데 합격할 수 있었다. 5월 16일 면접을 앞두게 되었다. 주로 경험과 지원 동기 위주의 대화 형식이라고 하니, 열심히 준비해서 좋은 성과를 거두었으면 좋겠다. 웹 지식 관련해서 정말 헷갈렸던 부분이 있었다. 유일성은 만족하지만 최소성은 만족하지 않는 것... 이 문제를 보고 작년에 봤던 정보처리기사 시험이 떠올랐다. 분명히 똑같은 문제였다. 하지만 또 똑같은 이유로 헷갈려하는 나 자신을 볼 수 있..

Bombo_
'분류 전체보기' 카테고리의 글 목록 (7 Page)