→ Web server = Files + HTTP server
브라우저가 웹 서버에서 불려진 파일을 필요로 할 때, 브라우저는 HTTP 프로토콜을 통해 파일을 요청한다.
웹 서버(하드웨어)에 도달했을 때, HTTP 서버(소프트웨어)는 요청된 문서를 HTTP를 이용하여 보낸다(응답).
속도가 빠르고 비용이 적게 든다
서비스가 한정적이고 페이지 수정, 추가, 삭제 작업이 모두 수동(관리가 어려움)
서비스가 다양해질 수 있다, 웹 사이트 구조에 따라 추가, 수정, 삭제가 쉬워서 관리가 쉽다
"상대적으로" 느린 속도(솔직히 이젠 단점 아님 웬만하면 다 걍 빠름), 웹 서버 외의 어플리케이션 서버가 필요하기 때문에 추가 비용 발생
웹페이지를 기술하기 위한 마크업 언어
➡️ 웹페이지의 내용(content)과 구조(structure)를 담당하는 언어 (태그를 통해 정보를 구조화)
= 그냥 화면을 보여주기 위한 언어라는 거임
마크업 언어
✔️ <!DOCTYPE html>
- HTML 문서임을 선언!
✔️ <html> ~ </html>
- 태그 안에 기술
✔️ <head>~</head>
= title, 외부 파일 참조, 메타데이터 설정 등 (웹 브라우저에 표시 x)
✔️ <body>~</body>
= 실제 웹 브라우저에 표시되는 부분
✔️ 주석을 얼마나 깔끔하게 잘 다는지가 개발자의 중요한 능력이다~! (개발자에게 코드를 설명하기 위해 사용!! 그 개발자가... 2주 뒤의 내가 될 수도 있음 그러니까 잘 써야 함)
➡️ 협업과 내가 짠 코드를 망각하지 않기 위해서... 꼭 달아야 한다... 코드 설명을 잘 합시다!
title Tag
style Tag
link Tag
script Tag
Headings Tag
(제목 태그)h1
~ h6
Text Tag
(글자 태그)<p>
단락을 지정하는 태그 (본문) <b>
, style
속성, <strong>
<br> Tag
link
(고리)라고 줄여 말하기도 한다
→ 누르면 웹 사이트나 프로그램 등으로 이동하는 것
(하이퍼텍스트는 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트)
href 속성
c:\
- 파일 시스템 계층 최상위 c:\Users\{계정명}
- 시스템의 사용자에게 할당된 ㅐ별 디렉토리./
- 작업 중인 파일의 위치한 디렉토리 ../
- 작업 디렉토리의 부모 디렉토리 ✔️ 절대 경로 - 특정 파일의 절대적인 위치 지정
c:\
✔️ 상대 경로 - 현재 작업 디렉토리를 기준으로 특정 파일의 상대적인 위치 지정
./
, ../
➡️ 상대경로가 있으면 루트 디렉토리와 상관 없이 파일 찾기가 쉽다~ 절대경로만 있으면 환경이 바뀌었을 때 바꿔주기 개빡쎄니깐,,,
href
속성에서 사용 가능한 값Table
<table>
- 표를 감싸는 태그 , <tr>
- 행, <th>
- 열의 제목, <td>
- 열form
유저가 입력한 데이터를 수집하기 위하여 사용 (값을 서버에게 넘겨주기 위한!)
→ input, testarea, button, select, checkbox, radio button, submit button
✔️ 속성
action - 주소! 어디에 보내줄 것인가 (데이터가 전송될 URL 지정)
method - 어떤 방식으로 보내줄 것인가! 데이터를 보내는 형태 (get/post)
전송 url에 입력 데이터를 쿼리스트링 형식으로 보내는 방식
url에 전송 데이터 노출 → 보안 문제 있을 수도,,, 그리고 데이터의 한계 존재 (255자)
전송 url 바로 뒤에 ?
를 통하여 데이터의 시작을 알리고 'key=value' 형태의 데이터를 추가
request body에 데이터를 담아 보내는 방식
url에 전송 데이터 노출 x → 보안 굿 (get에 비해서 속도가 느릴 수 있음)
input type
그냥 링크에서 보자
http://jun.hansung.ac.kr/CWP/htmls/HTML%20Input%20Types.html
select
정적인 HTML을 동적으로 표현하기 위한 프로그래밍 언어를 도입하기로 결정하면서 개발된 언어
초창기에는 화면을 동적으로 꾸며주는데만 사용되었다!(보조적인 역할)
→ 점점 화면 구성에 적절하게 발전 + node.js를 통해서 웹 서버를 구축하는 것도 편해짐
웹 전용 언어 (웹 브라우저에서 동작하는 유일한 프로그래밍 언어)
데이터를 담기 위한 메모리 공간 (데이터를 담는 통에 이름을 붙이는 것!)
→ 라벨링을 해두면 데이터를 찾기 더 쉬우니깐!
→ 주소값을 알면 존재하는 데이터를 더 찾기 쉬워용~~ (변수 선언을 안 해도 데이터는 저장되어 있음)
= 공간에 이름을 부여하는 것이 변수를 생성하는 것
✔️ 자바스크립트는 선언과 동시에 값을 할당할 수 있다
✔️ 요즘은 선언 시 const
, let
키워드로 생성함 (var
잘 안 씀)
→ const
데이터 할당 시 변경 불가 let
안에 있는 데이터 변경 가능
number
string
''
, " "
boolean
null
undefined
✔️ while과 do~while의 차이점
→ do~while은 최초의 한 번은 무조건 실행됨
Package.json
파일 생성노드 어플리케이션/모듈의 경로에 위치
패키지의 속성 정의
노드와 NPM에 설치한 후 원하는 위치의 폴더에서
npm init
하면 생성
package.json
생성 후에 의존성 모듈을 설치하면 된다NPM
(Node Package Manager
)주요 기능두 가지
1. node.js의 패키지/모듈 저장소
2. node.js 패키지 설치 및 버전/호환성 관리를 할 수 있는 커맨드라인 유틸리티
npm을 사용하여 모듈 설치!
npm install <모듈이름>
uninstall
- 제거, update
- 업데이트, search
- 검색
브라우저에서 Request가 왔을 때 서버에서 어떤 작업을 할 지 Router를 통해 설정
통합하여 관리되는 데이터의 집합체 (데이터를 모아놓는 공간)
→ 중복된 데이터 없애고, 자료를 구조화하고, 효율적인 처리를 할 수 있도록 관리해주니깐
여러 업무에 여러 사용자가 데이터 베이스를 사용할 수 있다 = DB
별도의 미들웨어에 의해서 관리된다 = DBMS (데이터베이스 관리 시스템)
데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
테이블 생성, 삭제하거나 구조 변경
저장된 데이터를 처리하거나 조회, 검색
저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어
새로운 데이터베이스 생성, 새로운 데이터베이스 선택, 테이블 생성
CREATE DATABASE 데이터베이스이름;
USE 데이터베이스 이름;
CREATE 테이블이름 ();
→ 메모리 낭비를 막기 위해서!
→ 더 많은 데이터를 관리하기 위해서!
데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙
NOT NULL
→ 빈 값 X
UNIQUE
→ 중복된 데이터 X
PRIMARY KEY
→ NOT NULL + UNIQUE
→ 왜 쓸까?! 데이터를 하나하나씩 선택하기 위해서!
FOREIGN KEY
→ 하나의 테이블을 다른 테이블에 의존
DEFAULT
→ 기본값 설정
AUTO_INCREMENT
자동으로 데이터 증가
→ 해당하는 테이블에 PRIMARY KEY가 없을 때 많이 사용합니다
Ex. 게시판의 게시글 번호
데이터 베이스 수정, 테이블 수정
ALTER DATABASE 데이터베이스 이름 CHARACTER = 문자집합이름
ALTER TABLE 테이블이름 OPTION
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;
데이터 베이스나 테이블 삭제
DROP DATABASE 데이터베이스이름
, DROP TABLE 테이블 이름
테이블에 새로운 값 추가
INSERT INTO 테이블 이름 (필드이름 1, 2, ...) VALUES (데이터값 1, 2, ...)
VALUES
→ 두 개 이상의 값일 때 VALUE
를 쓰면 에러가 난다. 그래서 일반적으로 2개 이상의 값을 넣을 수 있는 VALUES
를 사용한다.
테이블 내용 수정
UPDATE 테이블이름 SET 필드이름1 = 데이터값 1, ... WHERE 필드이름 = 데이터값;
인서트보다 주의해서 사용해야 한다,,,
✔️ WHERE절의 조건에 맞는 테이블의 값을 수정한다
✔️ WHERE절이 없다면 테이블의 모든 값을 수정한다
테이블의 데이터 값 삭제
DELETE FROM 테이블이름 WHERE 필드이름=데이터값;
✔️ 얘도 WHERE 절 없으면 테이블의 모든 데이터 삭제되니 주의
✔️ DROP문은 테이블을 삭제, DELETE는 테이블 내의 데이터만 삭제한다는 차이가 있다
테이블의 데이터 선택 (조회)
SELECT 필드이름 FROM 테이블이름 [WHERE 조건식];
SELECT $$*$$ FROM 테이블이름
✔️ *
→ 모든 필드 값의 데이터 선택
✔️ SQL에도 IF같은 조건문이 존재한다!
WHERE {COLUMN} = {VALUE};
✔️ =
위치에 비교연산자 사용
✔️ WHERE {COLUMN} IN (VALUE_LIST)
➡️IN
연산자 → 해당하는 컬럼의 값들이 LIST 안에 포함되어 있는지
✔️ NOT IN
➡️ 리스트에 없는 값 선택