전체 글 126

[JavaScript 스터디] 생성자 함수로 객체 생성

Object 생성자 함수 new와 함께 호출하면 빈 객체 생성 생성자 함수에 의해 생성된 객체 --> 인스턴스 생성자 함수 객체 리터럴 객체 생성 --> 하나의 객체만 생성함 --> 다수의 객체 생성 불가능 생성자 함수로 객체를 생성하면 구조가 동일한 객체를 여러개 생성할 수 있음 new 연산자와 함께 사용하지 않으면 일반함수로 취급됨 --> 내부적으로 [[constructor]]가 아닌 [[call]]이 호출 인스턴스 생성은 필수, 인스턴스 초기화는 옵션 생성자 함수의 객체 생성 : 인스턴스 생성, this 바인딩 --> 인스턴스 초기화 --> 인스턴스 반환 모든 함수 객체가 [[constructor]]를 갖지는 않음 Constructor : 함수 선언문, 함수 표현식, 클래스 Non-construct..

[JavaScript 스터디] Property Attribute

프로퍼티의 상태를 나타내는 속성, 자바스크립트 엔진이 프로퍼티를 생성할 때 기본적으로 정의함 값(value), 갱신 가능 여부(writable), 일치 가능 여부(enumerable), 재정의 가능 여부(configurable) 내부 슬롯, 내부 메서드 ECMA Script에서 정의된 의사 프로퍼티(Pseudo property), 의사 메서드(Pseudo method) 자바스크립트 엔진의 내부로직 --> 개발자가 직접 접근 불가능 일부 내부 슬롯/메서드에 한해서 간접 참조 제공 Ex) 모든 객체는 [[prototype]]을 내부 슬롯으로 가짐 --> __proto__를 통해서 참조 가능 Property Descriptor Property attribute 정보를 제공해주는 객체 Object.getOwnP..

[컴퓨터 네트워크] 링크 계층

노드 간 경로 프로토콜 노드 : 호스트, 라우터, 스위치, WIFI AP ... 링크 : 노드 간 통신 채널 링크 계층의 서비스 프레임화 : 전송 전 데이터그램을 링크 계층 프레임으로 캡슐화함 링크 접속 : 매체 접속 제어 프로토콜로 링크 상 프레임 전송 규칙 명시 신뢰적 전달 : 링크 계층 프로토콜이 신뢰성 있는 전달을 제공할 경우 데이터그램은 링크 상에서 오류없이 전송됨 오류 검출과 오류 정정 : 전송할 필요가 없는 비트 오류가 있는 데이터그램을 검출하고 정정함 링크 계층 구현 위치 네트워크 인터페이스 카드(Network Interface Card, NIC) == 네트워크 어댑터 오류 검출, 오류 정정 비트 수준의 오류 검출과 오류 정정 제공 패리티 검사 체크섬 순환중복검사 --> 오늘날에 주로 사용..

[컴퓨터 네트워크] 네트워크 계층

송신 호스트 --> 수신 호스트로 패킷 전송 주요 기능 포워딩(전달) 라우터에서 적절한 출력 링크로 패킷 이동 매우 짧은 시간동안 이뤄짐 --> 하드웨어에서 실행 라우팅 패킷의 경로를 결정 경로 계산 알고리즘 --> 라우팅 알고리즘 네트워크 전반에 걸쳐서 출발지 - 목적지까지 데이터그램의 경로 결정 상대적으로 긴 시간 --> 대개 소프트웨어에서 실행 포워딩 테이블 : 라우터는 도착하는 패킷 헤더의 필드값을 조사해서 패킷을 포워딩함 네트워크 서비스 모델 호스트 간 패킷 전송 특성을 정의 보장된 전달 지연 제한시간 이내 보장된 전달 순서화 패킷 전달 최소 대역폭 보장 보안 최선형 서비스 제공 패킷 스위치 링크 계층 스위치 : 링크 계층 프레임 필드값에 근거해서 포워딩 결정 라우터 : 네트워크 계층 필드값에 ..

[컴퓨터 네트워크] 트랜스포트 계층

트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 프로세스 간 논리적 통신 제공 네트워크 라우터 X, 종단 시스템에서 구축됨 데이터가 segment라는 트랜스포트 계층 패킷으로 캡슐화됨 UDP, TCP ... 트랜스포트 계층과 네트워크 계층 트랜스포트 계층 --> 프로세스 간 논리적 통신 제공 네트워크 계층 --> 호스트 간 논리적 통신 제공 트랜스포트 계층은 네트워크 프로토콜이 비신뢰적이어도 신뢰적인 통신 제공 + 보안 제공 네트워크 계층의 IP : 비신뢰적인 서비스 최선형 전달 서비스 제공 세그먼트의 순서 보장 X 데이터의 무결성 보장 X 트랜스포트 계층은 호스트 간 전달 --> 프로세스 간 전달로 확장하는 트랜스포트 다중화와 역다중화 제공 다중화와 역다중화 애플리케이션은 소켓을 통해서 트랜스..

[JavaScript 스터디] let, const

var 변수의 문제점 변수 중복 선언 가능 함수 레벨 스코프 변수 호이스팅 let 변수 중복 선언 불가능 블록 레벨 스코프 변수 호이스팅 let 변수는 선언 단계와 초기화 단계가 분리되어 일어남 스코프 시작 지점 ~ 초기화 시작 지점까지 일시적 사각지대 존재 --> 이때에는 변수를 참조할 수 없음 모든 선언은 호이스팅 되지만, ES6의 let, const, class는 호이스팅이 안되는 것처럼 작동함 let 변수는 전역 객체에 없음 --> 실행 컨텍스트에 존재 const const 변수는 반드시 선언과 초기화를 같이 해야함 재할당 불가능 상수 == 재할당이 금지된 변수 재할당이 불가능하기에 원시값이 있는 변수는 값을 교체할 수 없음 객체 변수는 객체 내부를 변경할 수 있음 --> 재할당과 불변은 다름 결..

[JavaScript 스터디] 전역 변수

변수의 생명주기 var 지역 변수의 생명주기는 함수의 생명주기와 일치함 변수의 생명주기는 메모리 공간 확보시점 ~ 가용 메모리 풀로 반환되는 시점 호이스팅은 스코프 단위로 작동함 전역 변수의 생명주기는 코드의 마지막 문이 끝날 때까지 var 전역 변수의 생명주기는 전역 객체의 생명주기와 동일함 전역 변수의 문제점 암묵적 결합 긴 생명주기 소코프 체인에서 제일 마지막에 탐색 --> 상대적으로 검색 속도가 느림 네임스페이스 오염 --> 파일이 분리되어 있어도 전역 스코프를 공유함 전역 변수 사용 억제하기 모든 코드를 즉시 실행 함수로 감싸기 네임스페이스로 사용할 객체 활용 모듈 패턴 ES6 모듈 사용 --> 파일 자체 독자적인 모듈 스코프 제공 학습 도서 '모던 자바스크립트 Deep Dive', 이웅모 저,..

[JavaScript 스터디] 스코프

식별자가 유효한 범위 식별자를 검색할 때 사용하는 규칙 네임스페이스 종류 전역 스코프 : 코드의 가장 바깥 영역 지역 스코프 : 함수 몸체 영역 전역 변수는 어디서든 참조 가능 지역변수는 자신의 지역 스코프와 하위 스코프에서만 참조 가능 스코프 체인 스코프는 함수 중첩에 의해서 계층적인 구조를 띰 자바스크립트 엔진은 변수를 참조할 때 변수 참조 코드의 스코프에서부터 바깥 스코프 방향으로 변수를 탐색함 상위 스코프의 변수는 하위 스코프에서 참조 가능 하위 스코프의 변수는 상위 스코프에서 참조 불가능 함수 레벨 스코프 함수에 의한 지역 스코프 var 키워드로 선언한 변수는 함수의 코드 블록(몸체)만을 지역 스코프로 함 렉시컬 스코프 함수를 어디서 정의했는지에 따라 상위 스코프 결정 함수를 정의한 위치를 기준..

[JavaScript 스터디] 함수

일련의 과정을 문으로 구현하고 코드블록으로 감싸서 하나의 실행단위로 정의한 것 자바스크립트에서 함수는 값 함수이름, 매개변수, 인수, 반환값, 함수 몸체 함수를 정의해서 생성하고 호출을 통해 사용함 함수 사용 이유 코드의 재사용, 유지보수의 편리성, 코드의 신뢰성, 코드의 가독성 함수 리터럴 리터럴은 값을 생성 자바스크립트에서 함수는 객체 타입의 값 함수이름 생략 가능 함수 리터럴은 function, 함수이름, 매개변수, 몸체로 구성됨 함수이름 : 함수 몸체 내부에서만 참조할 수 있는 식별자 일반 객체는 호출 불가능, 함수는 호출 가능 함수 생성 방식 함수 선언문 함수이름을 생략할 수 없음 표현식이 아닌 문 --> 변수에 할당 불가능 함수 이름은 함수 몸체에서만 참조하기에 함수 이름으로 외부에서 호출하는..

[컴퓨터 네트워크] 애플리케이션 계층

네트워크 애플리케이션 종단 시스템에서 통신하는 프로그램 네트워크 애플리케이션 구조 클라이언트-서버 클라이언트 : 서버에 요청을 발신하는 호스트 서버 : 항상 켜져있음, 고정 IP, 데이터센터를 구축해서 가상 서버 생성함 P2P 서버에 거의 의존하지 않음 애플리케이션은 peer라는 연결된 호스트 쌍이 통신함 peer는 데스크톱, 랩톱 등 자가 확장성이 있음 프로세스 간 통신 운영체제 관점에서 실제로 통신하는 것은 프로그램이 아닌, 프로세스 프로세스는 메시지를 교환함으로써 종단 시스템간 통신함 클라이언트-서버 클라이언트 : 통신 세션에서 통신을 초기화하는 프로세스 서버 : 세션을 시작하기 위해 접속을 기다리는 프로세스 프로세스는 소켓을 통해 네트워크로 메시지를 송수신함 프로세스 --> 집, 소켓 --> 출입..