전체 글 119

JPA

JPA - 자바 표준 ORM * ORM(Object Relational Mapping, 객체 관계 매핑) : 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것 객체를 관계형 데이터베이스에서 관리하는 것이 무엇보다 중요한다. 1. 그런 과정에서 SQL문이 계속 반복될 수 있는데 반복되는 문제가 있다. 2. 관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임이 서로 다른데, 객체를 데이터베이스에 저장하려고 하니 발생하는 문제가 패러다임 불일치이다. JPA는 이런 문제점들을 해결하기 위해 등장했는데 객체지향 프로그래밍 언어와 관계형 데이터베이스를 중간에서 패러다임 일치를 시켜주기 위한 기술이다. 즉, 개발자가 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 S..

스프링 기초

Spring : Java 언어를 바탕으로 서버를 담당, 요청에 따라서 눈에 보이는 것들 or 데이터를 제공해준다. - 자바의 클래스 중 private 정보 가져오려면 -> getter 사용 - 데이터로 응답하려면 RestController 사용 - Rest : 서버의 응답이 JSON 형식임을 나타냄 - Controller : 클라이언트의 요청을 전달 받는 예 - RestController : JSON만을 돌려주는 것 - Controller 클래스를 만들고 위의 역할을 하는 것을 Spring에게 알려주기 위해 @RestController라고 어노테이션(주석)해준다. - @GetMapping('주소') : 해당 주소일 경우 GET 메소드가 실행된다고 보면 된다. - Gradle : 다른 사람들이 만든 도구들..

테스트 코드

최근 추세는 대부분의 서비스 회사가 테스트 코드에 관해 요구한다. 흔히 채용 정보 우대사항을 보면 빌드/테스트/배포 자동화 경험이 있는 사람을 뽑는다. 먼저 TDD와 단위 테스트는 다른 내용인데 TDD는 테스트가 주도하는 개발이고 테스트 코드를 먼저 작성하는 것부터 시작한다. 반면, 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 말한다. TDD와 달리 테스트 코드를 꼭 먼저 작성해야 하는 것도 아니고, 리팩토링도 포함되지 않는 순수하게 테스트 코드만 작성하는 것을 말한다. 테스트코드는 왜 작성해야 하는가? - 단위 테스트는 개발단계 초기에 문제를 발견하게 도와준다. - 단위 테스트는 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지..

CORS

- Cross Origin Resource Sharing의 약자 - 현재 도메인과 다른 도메인으로 리소스가 요청될 경우 ex) http://a.com에서 읽어온 html 페이지지에서 다른 도메인 http://b.com/image.png를 요청하는 경우 - 이런 경우 해당 리소스는 cross-origin HTTP 요청에 의해 요청, 보안 상의 이유로 브라우저는 CORS를 제한 - 하지만 SPA의 경우 RESTful API를 기반으로 비동기 네트워크 통신을 하기 때문에 API 서버와 웹 페이지 서버가 다를 수 있다. 이런 경우에 API 서버로 요청을 할 시에 CORS 제한이 걸린다. Access-Control-Allow-Origin - 이를 해결하기 위한 간단한 방법은 서버의 응답 헤더를 변경해주는 것 - ..

REST API

REST - 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미 - 웹에서 통신을 위해 사용되는 구조 - 전송 관련 상태를 표현하는 구조 - 구성 1) 자원 - URI 2) 행위 - HTTP 메서드 3) 표현 API(Application Programming Interface) - 사용자가 원하는 것에 도달할 수 있도록 한 인터페이스 - 애플리케이션 소프트웨어의 구현 방식을 몰라도 사용자가 API를 통해 사용 가능 - 정보 제공자와 정보 사용자 간 소통하기 위한 하나의 인터페이스 장치 REST API - REST를 기반으로 서비스 API를 구현한 것 - RESTful하다 : REST 구조 스타일로 API가 이루어진 서비스 URI 기본 설계 규칙 - /는 계층 관계를 나타낼 때 사용 -..

Postman

Postman - 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 도구 - Front 개발자와 협업시 문제점 찾기 위해 사용 Collection 및 Request - 프로젝트 단위로 Collection을 생성 - Collection 내부에 폴더를 만들어 기능별 분류도 한다. - Request를 추가하여 get/post/delete/put 등 지정하여 사용 환경 설정 - 동그라미 친곳에서 만든 환경 설정 - 밑줄같이 중괄호를 사용해 변수 사용 쿼리스트링 - start_date는 쿼리스트링 - params는 :item 같이 사용 multipart-form data 설정 1) 파일+각각 data : 여러 json data를 하나씩 보내는 방법 2) 파일+json data :..

Javascript/Node.js 2021.04.16

Express

NodeJS - JavaScript를 실행시키는 런타임 환경 - 프로그래밍 언어(프레임워크 X) - Single-Thread 기반 - 비동기 방식 - 이벤트 기반 - Back-end에서만 사용 X(ex-Babel(즉, 프론트에서도 사용) Express - NodeJS 기반의 MVC(Model View Controller) 웹 애플리케이션 프레임워크 - 서버 구축하기 쉽게 틀을 제공 1) HTTP 요청 본문 파싱(bodyParser 처리) 2) 쿠키 파싱(cookieParser 알아서 app.use) 3) 세션 관리 4) 데이터 타입 토대로 한 적절한 응답 헤더 결정 Express 시작하기 1) 직접 설정 - NodeJS, npm 설치 - npm init or yarn init -> package.json..

Javascript/Node.js 2021.04.16

DFS와 BFS

DFS는 스택 자료구조를 이용하며 구체적인 동작 과정은 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다 3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. BFS는 선입선출 방식인 큐 자료구조를 이용하는 것이 정석이며 구체적인 동작 방식은 1. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 2. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다. 3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다.

CS/알고리즘 2021.02.26

5. 주요 라이브러리와 문법

1. itertools itertools는 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리이다. 코딩 테스트에서 가장 유용하게 사용할 수 있는 클래스는 permutations, combinations이다 순열을 사용하려면 from itertools import permutations data = ['A','B','C'] result = list(permutations(data, 3)) 조합을 사용하려면 from itertools import combinations data = ['A','B','C'] result = list(combinations(data, 2)) 처럼 작성하면 된다. 2. heapq heapq는 다익스트라 최단 경로 알고리즘을 포함해 다양한 알고리즘에서 우선순위 ..

4. 입출력

(1) 입력 파이썬에서 입력의 개수 많은 경우에는 import sys sys.stdin.raedline().rstrip() 사용하는데 sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip() 함수를 호출해야 한다. readline()으로 입력하면 입력 후 엔터가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하려면 rstrip() 함수를 사용해야 한다. (2) 출력 + 연산자를 이용하여 문자열과 수를 더하면 오류가 발생한다. answer = 7 print('정답은 ' + answer + '입니다.') //-> 이렇게 출력 시 TypeError 발생 # 변수를 문자열로 바꾸어 출력하면 print('정답은 ' + str(answer) + '입니다.') //-> 정상 출력