C# 변수와 기본 타입
목차 기본형 변수 정의 클래스에서 변수 선언 메서드에서 변수 선언 기본형 (Type) 기본 자료형(Built-in Types) : 개발자가 별도로 코드를 만들지 않아도 C# 언어에서 자체적으로 제공하는 데이터 형식을 의미 정수형, 실수형, 문자, 불린형 정수형...
목차 기본형 변수 정의 클래스에서 변수 선언 메서드에서 변수 선언 기본형 (Type) 기본 자료형(Built-in Types) : 개발자가 별도로 코드를 만들지 않아도 C# 언어에서 자체적으로 제공하는 데이터 형식을 의미 정수형, 실수형, 문자, 불린형 정수형...
배경 국비지원 학원을 수료하고, 연락만 하고 지냈던 팀원들과 6개월 만에 만났다. 서로 그동안 어떻게 지냈는지, 취업 준비는 잘 되어 가는지 얘기하는 시간을 가졌다. 팀원들 모두 나름의 방식으로 열심히 준비중이였지만, 개발자 취업난에 부딪히고있는 현실이였다. 그래서 우리만큼 팀워크가 좋았던 팀은 없었다 생각했던 우리였고, 다시 한번 그 팀워크를 발휘하...
목차 프로젝트 만들기 클래스의 정의 메서드의 정의 Main() 메서드의 역할 프로젝트 만들기 VisualStudio2019 새 프로젝트 만들기 콘솔 앱(.NET Framework)을 선택하고 다음을 눌러준다. 프로젝트 이름을 입력한 후, 프로젝트를 만들어준다. 아래와 같이 프로젝트...
C# 프로그래밍 언어 C#은 Microsoft에서 개발한 닷넷(.NET) 프레임워크 기반 범용 목적의 다중 패러다임 프로그래밍 언어이다. 닷넷(.NET) 프레임워크 : C#이 동작하는 환경, 기계어로 변환되는 과정을 담당한다. 범용 목적 : 다양한 목적으로 C#프로그래밍 언어를 사용한다. 다중 패러다임 : 한 가지 스타일의 프로그래밍 스...
REST API 보안 적용 우리가 지금까지 구현한 API는 전혀 완벽하지 않다. 가장 큰 이유중 하나가 인증이 없다는 것이다. 예를 들어, 이벤트를 만들으려면 적어도 이 시스템에서 인증이 된 사용자가 만들 수 있어야한다. 하지만, 지금의 API는 아무나 이벤트를 만들 수 있다. 또, 이벤트를 수정함에 있어서도 이벤트를 만든 사람만 수정할 수 있어야하나...
구현 Package 및 Class Event 목록 조회 API 구현 Event 목록을 조회하는 API를 구현해 보겠다. 테스트 해야할 것들은 다음과 같다. 이벤트를 30개를 만들고, 10개 사이즈로 두번째 페이지 조회, pageable 확인 Page 링크 정보 추가 각각의 Event로 가는 링크(self) 및 pr...
구현 Package 및 Class API 인덱스 만들기 우리는 웹을 이용할 때, 처음 접근 시에는 Url로 접근해도 그 이후의 행위들은 따로 또 Url을 직접 입력 하는 것 없이, 모두 클릭이나, 값을 입력하는 것을 통해 일어난다. 이와 같이 우리는 이벤트를 조회, 생성, 수정 등을 하기 위해서는 API의 진입점이 필요하다. 이번에는 그 진입점...
테스트용 DB(H2) / 애플리케이션용 DB(PostgreSQL) 테스트 할 때는 계속 H2를 사용해도 좋지만 애플리케이션 서버를 실행할 때 PostgreSQL을 사용하도록 변경하자. 구현 Package 및 Class Docker 설치 우선 Docker를 설치해 주었다. PostgreSQL 컨테이너 실행 도커로 PostgreSQL ...
Spring REST Docs 소개 Spring REST Docs 프로젝트는 Spring MVC Test를 사용해서 문서의 snippet(REST API의 문서 조각)들을 생성할 때 유용한 기능을 제공해주는 기능이다. Test를 실행할 때 사용한 요청(Request)와 응답(Response), 응답에 실려있는 헤더(Header) 등의 정보를 사용해 s...
Spring HATEOAS 소개 Spring HATEOAS 란 HATEOAS 를 만족하는 REST representation을 제공하는 API를 만들 때 편리하게 사용할 수 있는 툴을 제공해 주는 라이브러리이다. HATEOAS를 사용하면 클라이언트는 애플리케이션 서버가 하이퍼미디어(Link)를 통해 동적으로 정보를 제공하는 네트워크 애플리케이션과 상호...
구현 Package 및 Class 비즈니스 로직 적용 Event 도메인에 비즈니스 로직을 적용할 것이다. 비즈니스 로직의 예를 들면, Event에서 basePrice와 maxPrice가 존재한다면, 그 이벤트는 free가 true일 수 없다. 또, location이 존재하면, 그 이번트는 offline이 true이여야 한다. 비즈니스 로직이란? ...
구현 Package 및 Class 입력 값이 없을 때, Bad Request 처리하기 요청 입력값이 없을 때에 대한 Bad Request를 처리하겠다. EventControllerTests // import 생략 @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc publi...
구현 Package 및 Class 입력값 제한하기 우리는 이벤트를 등록하기에 앞서, Id 값은 자동으로 이벤트 등록시 자동으로 등록이 되야하고, free 무료인지 아닌지 여부, offline 오프라인인지 아닌지에 대한 여부 또한, 직접 등록이 아닌 입력받은 데이터로 계산해서 등록이 되어야 하는 요소이다. 이러한 입력값을 제한하기 위해, 우리는 ...
구현 Package 및 Class Event Repository event 객체를 실제 DB에 저장할 수 있도록 EventRepository를 구현해 보자. Event package me.hantomas.restapi.events; import lombok.*; import javax.persistence.*; import java.time....
구현 Package 및 Class EventControllerTests 클래스 생성 우선 테스트 클래스를 생성하면 @RunWith(SpringRunnder.class) 어노테이션을 붙여주어야 한다. package me.hantomas.restapi.events; import org.junit.Test; import org.junit.runne...
구현 Package 및 Class Event 도메인 Event 생성 API를 구현하기에 앞서, Event domain을 구현해보자 events 패키지(package)를 만들어 주고 Event 클래스(class)를 생성한다. package me.hantomas.restapi.events; import lombok.*; import java.t...
공부 배경 이전에 REST API란 무엇인가?에 대한 글을 적으면서 직접 REST API를 만들어 보고 싶었다. Inflearn에 있는 백기선 개발자님의 스프링 기반 REST API 개발강의를 보면서, 직접 만들어 보면서 다시한번 개념을 정리해 보겠다. Spring Initializr start.spring.io를 통해 프로젝트를 만들고 의존성을...
공부 배경 Java를 공부하면서 JVM,JRE,JDK에 관해서 들어봤을 것이다. 특히, 자바가 플랫폼에 독립적이라고 설명하며, 위 세 단어가 자주 언급되었을 것이다. 이 개념들을 정리하면서 자바가 왜 플랫폼에 독립적이라고 하는지 알아보자. Compile vs Interpret 우리는 C언어와 Java 같은 우리가 읽고 작성할 수 있는 프로그래밍 ...
공부 배경 IP/TCP 4계층에 관하여 공부한 바가 있다. Transport Layer(통신 계층)에 대해서 설명할 때, TCP프로토콜과 UDP프로토콜에 대한 개념이 나왔는데 이를 비교하여 설명하고자 한다. Transport Layer 우선, Transport Layer에 대해 간단하게 정리하고 가자. 간단히 설명하면, EndPoint간 신...
공부 배경 컴퓨터 공학 박사 과정을 진행하고있는 친구를 만나 얘기하면서, 개발자로서 요즘에 어떤걸 공부하면 좋을지 물어봤다. 그에 대한 친구의 대답은 바로 보안이였다. 안그래도 요즘 디도스며 뭐며 인터넷 보안 문제를 듣곤했는데, 이참에 조금씩 이에 대한 공부를 해보면 좋을 것 같았다. 그래서 우선 자주 접한 https://에 대해서 공부해 보려고 한다...
공부 배경 ‘프로그램… 프로세스… 스레드…‘ ‘멀티 프로세스, 멀티 스레드 모두 멀티 태스킹과 관련된 것 같은데 맞는 걸까? 개발 공부를 하며 정말 많이 들어봤지만 정확한 개념이 정리되어있지 않은것 같았다. 이번기회에 개념을 확실하게 정리하고 공부해 보겠다. 프로그램(Program) 과 프로세스(Process) 프로그램: 코드가 구현되어 있는 파...
공부 배경 본격적으로 알고리즘 정리하기에 앞서, 그동안 알고리즘을 공부하면서 늘 시간 복잡도에 대해 들었지만, 이게 정확히 뭔지 찾아보지는 않았다. 하지만 문제를 풀면서 ‘시간초과’라는 오류를 많이 접하게 되었고, 이를 해결하기 위해 시간 복잡도가 뭔지에 대한 정리가 필요했다. 시간 복잡도 시간 복잡도는 알고리즘과 굉장히 밀접한 관계에 있다. 알...
공부 배경 얼마 전, 좋은 기회를 통해 백엔드 개발자로 실무에서 일하고 있는 선배님을 만나뵙게 되었다. 여러 질문을 하던 중, 어떤걸 공부하면 좋을지 또 알아야할지를 여쭈어 보았다. 여러개가 있었지만 그 중 백엔드 개발자라면 인터넷 프로토콜에 대해 공부해볼 필요가 있다고 하셨고, 그래서 이를 바로 실천해보았다. 인터넷 전세계에 걸쳐 파일 전송 등의 ...
공부 배경 최근 유튜브 알고리즘으로 백기선님의 스프링 제대로 공부했는지 5분안에 확인 하는 방법 영상을 보게 되었고, 말 그대로 5분안에 내 실태를 확인하게 됐다…😅 그리고 이어서 이어진 영상들로 내가 만약에 스프링을 처음 공부한다면 저는 이걸 목표로 스프링을 공부할 겁니다. 스프링 인강 들으...
공부 배경 “자바는 객체 지향 프로그래밍 언어다.” 내가 알고 있는 자바의 대표적인 설명이다. ‘객체를 지향해 프로그래밍 한다.’ 이렇게 단순하게 알고 있지, 그 특징에 대해서는 잘 몰랐다. 검색해서 찾아보니 설명 글 들만 읽어서는 이해하기가 어려웠다. ‘초등학생? 적어도 내 동생 또래인 중학생 정도의 학생들이 봐도 이해할 수 있는 설명이 있...
공부 배경 웹 개발자, 그 중에서도 백엔드 개발자로서 공부를 하고 있지만, 근본적으로 ‘Web Server가 뭐냐?’ 했을 때, 확실하게 아니, 모호하게도 답을 못하는 것 같다. 하고 싶은 일은데 적어도 기본은 알아야 하지 않겠냐 스스로 생각하며, 이에 대한 지식을 찾던 도중, Web Server vs WAS에 대한 자료를 찾았고 이를 정리해보면 ...
공부 배경 백엔드 개발자로서 REST API를 개발하는 것은 기본 소양이라고 생각했다. 또 많은 기업들이 핵심 역량으로 요구하는 능력이기도 하다. 그럼에도 불구하고, 나는 ‘Controller, RestController정도를 사용하며 프로젝트를 만들 수 있으면 그게 REST API를 만들 수 있는거 아닌가?’하며 대수롭지 않게 여겼었다. 그러다가 관...
공부 배경 나는 그동안 Spring으로 프로젝트들을 진행해왔다. 그러나 개인적으로 공부를 하기위해 여러 인터넷 게시물들과 영상들을 찾아봤을때 예전의 자료들은 Spring, 최근의 것들은 대부분 Spring Boot를 이용하여 프로젝트를 진행하고 있었다. 또 취업을 위해 기업들의 자격요건을 보면, 어떤곳은 Spring, 어떤곳은 Spring Bo...
공부 배경 국비지원 학원을 다니면서 프로젝트를 진행했을 때, DB 테이블의 데이터를 사용할 때든, 그 데이터를 가공할 때든 객체를 VO로 선언하여 사용하였다. 하지만, 수료 이후 개인적으로 공부를 진행하다 보니 데이터를 VO, DTO, ENTITY 이렇게 세가지 객체로 분류하여 관리하는 것을 알게 되었다. 이에 대한 개념정리가 필요하였다. ...
마크다운(Markdown) 이란? Markdown은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌으며 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능하다. 특수기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 보다 빠르게 컨텐츠를 작성하고 보다 직관적으로 인식할 수 있다. 마크다운이 최근 각광받기 시작한 이유는 깃...