- protocol: 정보를 주고받는 양식, 규칙 체계, http, https, ftp, ssh, smtp etc..
- 서버 호스팅(자체 관리, 비쌈) vs 웹 호스팅(저렴, 사용제약)
- 클라우드: 인터넷을 통한 접속 환경
- 클라우드 컴퓨팅: 서버, 네트워크 인프라 임대, 가상화 기술을 통한 서버 구축, 운영 ex) aws, microsoft azure, gcp, ncp
- 클라우드 서버: 가상화를 통해 물리적인 컴퓨터가 아니라 프로그램으로 서버 생성, 퍼블릭 클라우드, 프라이빗클라우드, 하이브리드 클라우드
- 웹 서버: 클라이언트의 http요청을 받아 처리, 정적파일 전달, apache, nginx, iis
1) 서버 생성
2) putty를 통해 ip주소로 오픈
3) root로 로그인, 비밀번호 입력하여 접근가능
1) 파일 전송을 위한 ftp 소프트웨어이다
2) 서버 연결 후 파일 업로드 하면
3) 호스트 주소 + 파일명을 통해 서버 접근 가능
집에서 서버가 안열리는데 왜 그러는걸까? 재시작도 해보았으나..
학원에서는 잘된다
- ip주소: ip는 인터넷 상으로 데이터를 주고 받기 위한 통신규약, ip주소는 ip통신에 필요한 고유 주소 IPv4, IPv6가 있다
- IPv4: 8비트4 32비트로 이루어진 주소 0~255사이의 10진수로 구분
- IPv6: 16비트8 128비트로 이루어진 주소, :콜론으로 구분, 16진수
- Domain: ip주소를 대신해서 사용하는 주소 ex) www.naver.com
- URL: domain, 포트 번호 등을 포함하는 웹주소 전체
- 서버 측 자바스크립트 런타임 환경
- javaScript언어 한가지로 프론트엔드, 백엔트를 모두 만들 수 있다
- single thread, call stack이 하나로 한번에 하나의 작업만 가능하고, 에러 처리를 못하면 멈추기 때문에 예외처리가 매우 중요하다
- non-blocking 방식으로 i/o(입출력)를 처리한다. 비동기 방식
- 이벤트기반 구조를 가진다
- 모듈: 재사용 가능한 코드조각, 코드 추상화, 코드 캡슐화, 코드 재사용의 장점을 가진다.
- npm: node package manager로 노드 패키지를 관리해주는 틀이다 node_modules에 모듈이 설치된다. 용량이 너무 커서 git에 매번 commit하지 않고 .gitignore 문서에 적어 commit을 막는다.
- 배열과 객체를 편하게 사용하기 위함
- 각각의 배열 요소를 변수 이름으로 접근 가능
- 배열 구조 분해 할당
const arr1 = ['red', 'green', 'yellow'];
const [red, green, yellow] = arr1;
//순서대로 변수에 부여된다
console.log(red); //arr1[0]인 red라는 값이 출력된다
//값 바꾸기
let x = 3;
let y = 6;
[x, y] = [y, x]
//y=3, x=6으로 변경됨
- 객체의 구조 분해 할당
//순서가 아니라 key이름을 기반으로 변수에 저장
const obj1 = {
name: 'juhee',
age: 24,
friend: null
}
const {name, age, friend} = obj1;
//const {name: id, age, friend} = obj1;
//:콜론뒤에 변수명을 적어 key와 다른 이름변수에 넣을 수도 있다
- 전개구문(spread)
- 객체의 요소에 접근하여 요소를 하나씩 분리해서 반환
- ex) 배열 합치기
const arr1 = [1,2,3];
const arr2 = [4,5,6];
const arr3 = [...arr1, ...arr2];
//arr3 출력하면 [1,2,3,4,5,6]이 출력된다
- rest파라미터
- 함수의 파라미터로 여러개의 값을 받아 배열로 저장할 수 있다
function addNum(...numbers) {
let result = 0;
for(let number of numbers) {
result += number;
}
}
//함수 호출 출력시 number로 들어간 값들의 합을 출력한다
//addNum(1,3), addNum(3,4,5,6,9) 여러 값을 넣을 수 있다
- 오브젝트(객체)를 만들 수 있는 틀(template)
- 변수에 new(키워드) 클래스명으로 객체 생성
- 생성자를 통해 내부 변수를 선언한다
- 메소드 내부 변수를 클래스로 만든 객체로 불러올 수 있다
- 상속을 통해 특정 클래스를 상속하여 부모 클래스의 변수를 사용하거나, 메소드를 사용, 재정의할 수 있다
- 자기 자신은 this, 부모는 super키워드로 접근가능(extends)
//부모 Car와 자식 Morning만들기
class Car {
constructor(name, year) {
this.name = name;
this.year = year
}
nameIs() {
console.log(`이 차의 이름은 ${this.name}입니다`);
}
}
//자식 클래스는 extends로 접근
class Morning extends Car {
constructor(name, year, person) {
//부모의 속성 상속
super(name, year);
this.person = person;
}
//overriding(재정의)
nameIs() {
console.log(`이 차의 이름은 ${this.name}이고 사용자는 ${this.person}입니다.`);
}
//새로운 메소드 생성
yearIs() {
console.log(`이 차의 사용기간은 ${2024 - this.year}년 입니다`);
}
}
//클래스 객체 생성, 사용하기
let cls1 = new Car('아우디', 2018);
let cls2 = new Car('현대', 2010); //같은 클래스로 다른 객체 생성
let cls3 = new Morning('모닝', 2023, 'juhee'); //자식 클래스로 생성
console.log(cls1.name); //아우디
console.log(cls2.nameIs()); //이 차의 이름은 현대입니다
console.log(cls3.nameIs()); //이 차의 ~ 모닝 + 사용자는 juhee입니다