반응형
반응형
Introduction 매주 금요일 09시에 회사 팀 내에서 기술 세미나라는 것을 진행한다. 사용 해보지 못한 기술을 공유하거나, 컴퓨터 CS 등을 공유하는 시간을 갖는다. 이번에 내 차례이기도 했고, 대부분을 Spring + RDBMS 로만 개발 해왔는데 좋은 기회다 싶어서 Express(Node.js) + MongoDB(NoSQL)로 간단한 RestAPI를 만들어보고자 한다. ㅁ Node.Js 란 ? 구글 V8 엔진을 활용한 단일 스레드 + 이벤트루프 기반 고성능 네트워크 서버다. 언어로는 자바스크립트를 사용한다. ㅁ NoSQL 란 ? Not Only SQL 의 약자로 SQL만을 사용하지 않는 다른 DBMS를 가르키는 용어이다. 관계형 데이터베이스를 사용하지 않는 것이 아닌 여러 유형의 데이터베이스를..
DNS (Domain Name System) 우리는 인터넷을 활용해 많은 자원을 획득하고 사용한다. 인터넷에 연결된 하나의 클라이언트를 host라고 부르며, 인터넷에서 자원을 획득하는 것은 하나의 host가 자원을 가진 다른 host에게 자원을 요청하고, 그에 맞는 응답으로 이루어진다. 이 경우 요청을 위한 주소가 필요한데 그러한 주소를 IP라고 부른다. IP는 종류도 다양하고(IPv4, IPv6), 일련의 숫자들과 영문의 조합으로 이루어져 있으며 사용자가 사용하기에 불편하고 직관적이지 못하다. 위의 문제와 같은 접근성의 불편함을 해소하기 위한 대표적인 예시로 핸드폰에 있는 전화번호부가 있다.계층 구조로 이루어진 전화번호를 쉽게 활용하고 사용할 수 있도록 우리는 전화번호부에 이름을 등록해 그 이름을..
HTTP HYPER TEXT TRANSFER PROTOCOL HTTP(HyperText Transfer Protocol 은 W3(World Wide Web)에서 정보를 주고 받을 수 있는 프로토콜이다. 모든 웹 어플리케이션의 기초이며, 상호간의 정의된 규칙으로 클라이언트와 서버 사이에 이루어지는 요청/응답으로써 서버는 클라이언트의 요청에 따라 필요한 정보를 사용자에게 응답 해준다. HTTP 구조 HTTP 통신의 구조는 크게 요청라인(startlien, statusline), header, body 3계층으로 구성되어 있다. equest HTTP 의 startline 은 요청 url, method, 프로토콜 버전이 담겨져 있고, Response HTTP 의 statsuline은 응답 코드, 응답 코드에 대..
1. Cookie 란 ? 클라이언트의 상태 및 정보들을 저장할 수 있는 공간. HTTP 프로토콜 통신은 기본적으로 stateless하게 이루어진다. 요청을 보낸 클라이언트의 정보나 상태 등을 저장하지 않는다. 하지만 예외적으로 값들을 저장하고, 사용해야 하는 경우를 위해 Session과 Cookie가 존재한다. Session은 정보를 서버에 Cookie는 사용자 리소스(클라이언트 컴퓨터)에 저장한다. 2. 문제점 정보를 저장하고 사용하기 때문에 해킹 공격에 취약하다. 개인 컴퓨터의 보안상태나 활동반경이 다 다르기 때문에 저장되어 사용되는 값들은 해킹의 위험이 존재한다. 3. 대표적인 해킹 공격 2가지(xss, sniffing) 3-1 xss (Cross Site Script) xss는 자바스크립트가 사..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { int n; int k; int[][] dp; public void solution() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.n..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { int n; int[] dp; int[] t; int[] p; int max = 0; public void solution() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n = Integer.parseInt(br.readLine()); t = new int[n]; p = new int[n]; dp = new int[n+1..