til

프로그래머스 데브코스

프로그래머스 데브코스 5일차

오늘은 공부한 내용에 대한 정리보다 오늘 있었던 뿌듯한 일을 정리하고자 한다. 자바를 공부하면서 어려운 부분 중 하나는 스트림과 람다에 대한 이해였다. 스트림과 람다는 다루어도 실력이 크게 늘지가 않았다. 이러한 어려움을 겪은 경험을 토대로 같이 데브코스를 진행하고 있는 동기들이 조금이나마 도움이 되었으면 하는 마음으로 스트림 학습 테스트를 만들게 되었다. 스트림에서 사용되는 생성 및 중간 연산자, 최종 연산자들에 대해서 정리를 해두었고, 실제 데이터를 몇 개 두어 직접 새로운 것도 만들어보고 테스트 할 수 있도록 환경을 구성하였다. 이러한 부분은 공부를 할 때 항상 큰 도움을 받는 망나니개발자 블로그 에서 많은 감명을 받았다. 해당 내용에 대해서 슬랙에 공유를 하였고, 많은 분들이 좋아해주셨다! 이러한..

프로그래머스 데브코스

프로그래머스 데브코스 4일차 - 인터페이스

인터페이스에 대해서 개념적으로 알고 있던 내용들이 몇 가지 있었다. 항상 무엇인가 기능에 대해서 생겼을 때 이게 왜 생긴걸까? 에 대해서 고민을 하는 편인데, 단순히 책에서 나온 내용만을 가지고 아 그냥 단순히 이러한 이유 때문에 나온거구나 하고 말았다. 하지만 실제로 인터페이스에 존재가 어떻게 생기게 되었는지에 대해서 많은 부분을 알 수 있었다. Interface의 특징 인터페이스는 여러가지 기능을 가지고 있다. 1. 구현의 강제력 - 자바 8 이전에는 무조건적인 구현의 강제력이 있었다. 즉, 인터페이스에 선언된 추상 메서드를 구현하는 구성 클래스는 해당 메서드를 무조건적으로 구현을 해야하는 것이다. 2. 다형성을 제공 - 다형성을 제공해준다는 특징이 있다. 하지만 이 다형성이라는 특성은 단순히 인터페..

프로그래머스 데브코스

프로그래머스 데브코스 3일차 - OOP 이야기

오늘의 커리큘럼에서는 객체지향은 어떻게 해서 생겨나게 되었는지, 그리고 객체지향의 특징은 무엇인지 객체의 연관관계를 표현하는 UML과 객체지향의 설계를 잘하는 방법에 대해서 배우게 되었다. 객체지향 프로그래밍 객체지향 프로그래밍은 객체의 행동을 기반으로 책임과 역할을 분배하여 객체간의 협력으로써 프로그램을 구현하는 방식이다. 객체지향이 등장하게 된 배경은 다음과 같다. 초기에 프로그램들은 크기가 크지 않았기에 문제가 없었지만 시간이 지남에 따라 하드웨어의 성능도 좋아지고 고객들의 요구사항은 점점 더 늘어나게 되면서 기존의 절차지향 방법대로 유지보수를 하는데에는 큰 무리가 있었다. 개발자들은 이러한 유지보수 하기 힘든 매커니즘에서 벗어나 새로운 방식으로 유지보수를 하기 쉬운 방향으로 큰 프로그램을 만드는 ..

프로그래머스 데브코스

프로그래머스 데브코스 2일차 - 프레임워크를 위한 JAVA

JAVA의 개발 환경 자바는 C, C++ 과 달리 JVM(Java Virtual Machine) 이라는 가상머신이 존재하고, 이를 실행하기 위한 환경이 JRE(Java Runtime Environment) 이다. 그리고 우리는 JDK(Java Development Kit) 라는 것도 들어본 적이 있다. 도대체 이 3개의 차이는 무엇일까? JRE(Java Runtime Environment) 가장 먼저 JRE에 대해서 살펴보자. JRE는 Java Runtime Environment의 약자로 자바로 만들어진 프로그램을 실행시키는데 필요한 라이브러리들과 각종 API, JVM(Java Virtual Machine)이 포함되어 있는 자바로 만들어진 프로그램을 실행시키기 위한 도구이다. JVM(Java Virtua..

프로그래머스 데브코스

프로그래머스 데브코스 1일차!

드디어 고대하던 6월 1일 목요일이 찾아왔고, 프로그래머스 데브코스 백엔드 과정 1회차가 시작되었다. 간단하게 행정 관련된 설명이 먼저 이어지고, 이후에는 학습이 어떻게 이루어지는지 데브코스 기간동안 사용될 학습 도구 및 개발 도구들에 대한 설명이 이루어졌다. 간단하게 정리하자면, 문서 관리를 위한 노션, 소통을 위한 슬랙, 코드 리뷰 및 프로젝트 관리를 위한 깃허브, 세션 미팅을 위한 줌(Zoom) 을 사용한다고 한다! 이어진 학습 규칙과 아무래도 많은 기간이 리모트 형태로 이루어지다보니 커뮤니케이션 방식에 대한 설명은 굉장히 유익한 시간이었다. 프로그래머스 데브코스에서 권장하는 커뮤니케이션 방식은 다음과 같다! 리모트 환경에서 올바른 커뮤니케이션 방식 1. 슬랙에서의 메시지는 구어체로 할 것! - 그..

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

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를 이해하기..

Bombo_
'til' 태그의 글 목록 (2 Page)