관계형 데이터베이스와 서버(with JS) 관계형 데이터베이스란? 관계형 데이터베이스란 key와 value의 간단한 관계를 테이블 형식으로 나타낸 데이터베이스이다. 하나의 데이터베이스 안에는 여러 개의 테이블이 존재한다. 이때의 데이터와 데이터, 혹은 테이블 간의 관계를 표현해주는 것이 관계형 데이터베이스의 특징이다. 관계형 데이터베이스의 구조 tuple(혹은 record라고도 함): 테이블의 행, 데이터 한 건 cardinality: tuple의 개수 attribute: 속성 degree: attribute의 개수 domain: 해당 attribute가 가질 수 있는 값의 집합 Schema(스키마) 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다. 간단하게 말하면 데이터베이스 설계도..
웹에서 클라이언트와 서버가 통신할 때에 가장 중요한 것이 보안이라 해도 지나치지 않다. 보안을 위해 웹에서 거치는 인증 절차와 방식을 이번 시간에 알아보도록 하겠다. HTTP의 약점 지난 시간에 다뤘던 HTTP의 특징을 다시 살펴보자. Connectless와 Stateless 가 대표적인 큰 특징인데, 이러한 특징들로 인해 서버는 클라이언트의 이전 상태를 알 수 없다. 이 말은 곧, 데이터가 유지되지 않는다는 것이다. 데이터가 유지되지 않는다는 것은, 우리가 웹사이트에 로그인을 해도 페이지를 새로고침하면 로그인 상태가 유지되지 않고, 쇼핑몰 사이트에서 장바구니에 상품을 담아도 유지되지 않는다는 것이다. 이렇게 우리는 데이터가 유지되어야 하는 상황들이 몹시 많기 때문에, Cookie와 Session을 이용..
저번 시간에 우리는 HTTP에 대해서 살펴보았다.그런데, 우리가 자주 쓰는 웹사이트들의 URL들을 살펴보면 궁금증이 생길 것이다.다음은 네이버 메인 URL인데, 자세히 보면 'http'가 아니라 'https'라고 되어있다. 이번 시간에는 https에 대해 알아보고, 그것에 따른 암호화과정에 대해 살펴보겠다.HTTPS란?HTTPS의 정의는 다음과 같다.**HyperText Trnsfer Protocol over Secure Socket Layer,HTTP over TLS, HTTP over SSL, HTTP Secure**간단히 말하자면 HTTPS는 HTTP의 보안이 강화된 버전이라는 것이다.HTTP는 일반 텍스트 프로토콜로 설계 되었고, 전송되는 정보들이 암호화되지 않기 때문에 도청을 비롯한 중간 공격에..
HTTP(Hypertext Transfer Protocol) HTTP는 인터넷 상에서 (웹 브라우저와 서버 간에) 데이터를 주고 받기 위해 따르는 프로토콜(규약)이다. Hypertext(링크) 기반으로 데이터를 전송하고, 데이터에 접속한다는 것이다. HTTP는 웹에서 자주 볼 수 있는 HTML 문서 뿐만 아니라 이미지, 동영상, 텍스트 문서와 같은 다른 종류의 데이터들을 전송할 수 있다. HTTP 특징 클라이언트(Client)와 서버(Server)는 상대적인 개념이다. 클라이언트는 요청을 보내는 쪽, 서버는 요청을 받는 쪽을 의미한다. 크롬브라우저에서 네이버 메인 화면에 접속하는 상황을 예시로 들자면, 클라이언트는 크롬 브라우저, 서버는 네이버 메인 화면을 보내주는 네이버 서버가 된다. 이러한 클라이언트..
AWS EC2 사용하기 AWS EC2란, Amazon Web Services에서 제공하는 Elastic Compute Cloud 서비스를 뜻한다. 이 서비스를 쉽게 설명해보자면, 아마존에서 (가상에 존재하는) 컴퓨터를 임대해 주는 것이다. 그래서 이것에 내가 원하는 OS를 선택할 수 있고, 필요한 프로그램들을 설치할 수 있다. EC2를 이용하면 간단하게 필요한 용량을 확장하거나 축소할 수도 있고, 여러개의 서버 인스턴스들을 동시에 다룰수 있게 된다. 간단한 웹 배포는 무료로 가능하고, 비교적 저렴하게 서비스를 이용할 수 있다는 것이 그 장점이다. EC2를 이용해 서버에 웹 올리기 1. 인스턴스 생성 여기서의 인스턴스는 앞서 말했던 컴퓨터를 뜻한다. 먼저, 위치하는 도시를 설정한 다음, 솔루션 구축에서 '..
JS로 게임을 만들다가 파일과 코드 분리에 어려움이 생겨 class 도입에 대한 필요성을 느꼈다. 공부한 것을 바탕으로 JS식 객체지향 프로그래밍에 대한 정리를 해보려고 한다. 정리의 끝에는 'JS의 class는 프로토타입을 베이스로 한다' 라는 말을 조금이나마 와닿게 하려 한다. 생성자 생성자는 객체를 생성하는 함수이며, 'new'를 사용해 호출한다. 다른 함수와 구분하기 위해 대문자로 시작하는 것이 규칙이다. function Person(name, age, gender){ this.name = name; this.age = age; this.gender = gender; this.sayHi = () =>{ console.log('Hi!'); } } let a = new Person('A','20','..
Git이란? Git은 간단하게 말하자면 버전 관리 시스템이다. 개발자들은 필연적으로 버전 관리를 계속해야 하는 데, 하고 있는 프로젝트의 크기가 커질수록 더 복잡해진다. 그런 관리를 도와주는 것이 이 시스템이다. 실제로 학교 프로젝트를 Git을 사용하지 않고 해 본 적이 있다. 그때 매번 폴더명을 [날짜, 작성자]로 작성해 압축파일로 주고받았는데, 동시에 병렬로 작업하고 직접 파일들을 합칠 때 빠트린 부분들이 나오기에 번거로운 부분들이 한두 개가 아니었다. Git을 활용하면 이런 문제들이 해결된다! Git의 장점 Git 시스템은 중앙 서버가 존재하고, 그 시스템을 이용하는 클라이언트들의 컴퓨터 저장소에서 중앙 서버의 사본을 가지고 작업하는 방식이다. 몇가지 장점을 설명해보자면, -속도가 비교적 빠름 (이..
프로젝트 시작시작은 단순했다. 어떤 것이든 프로젝트 하나를 잘 완성해보고 싶었다. 코로나로 모든 모임이 어려워져 난감하던 때에,학교에서 비교과 활동으로 '전공 융합 창의공동학습체'라는 프로그램을 진행한다는 것을 알게 되었다.그때의 순간적인 결단으로, (이게 된다고?) 접점 하나 없는 팀원들을 모으게 되었다.네명의 팀원 중 한 명을 제외하고 모두 협업 경험이 없었기 때문에 걱정되기도 했지만, 다들 나와 같이 플젝을 통해서 배우고자 하는 목표가 분명했기 때문에 파이팅 넘치게 시작하게 되었다.프로젝트 진행 (2020.10.11~2021.1.19)우리의 목표는 모두가 필요하다고 느껴지고, 재미있어하는 서비스를 만드는 것이었다.결과물을 낼 때까지 고된 시간들을 거치게 될텐데, 하고 있는 것에 흥미와 관심이 없다면..