분류 전체보기 82

[TypeScript] Promise / async & await

TypeScript compiling 참고 code.visualstudio.com/docs/typescript/typescript-compiling File 을 로컬에서 읽어들이기 기본적으로 fs 패키지의 readFile 함수를 사용/ 동기로 처리하고 싶은 경우 readFileSync 함수를 사용하면 된다. import {readFileSync, readFile} from 'fs'; const buffer : Buffer = readFileSync('../package.json'); //promise 를 사용한 예시 const readFilePromise = (filename : string) : Promise => new Promise( (resolve, reject) => { readFile(file..

일과 공부와 휴식

하루는 참 짧다. 세워둔 계획들은 미루어지기 십상이고, 늘 모자른 듯 잠에 든다. 갑자기 이렇게 살게 된 것이 아니라 정말 어릴 적 부터 계속 그래왔다. 나는 참 욕심이 많은 사람인가보다. 여러가지를 동시에 할 수 없음에도 불구하고 그 사실을 부정하며 꾸역꾸역 일상에 스케줄을 채워넣어왔다.이제는 좀 고칠때가 된 듯 하다. 되는 일이 하나도 없다는 기분에 사로잡혀 일주일이라는 시간을 날린게 이번이 처음이 아니다. 월요일부터 아주 기분나쁜 일이 생겨버렸고 그 사건으로 인해서 도미노처럼 나의 한 주는 망가졌다. 해야 할 일이 산더미인데도 집중하지 못하고 다른 곳에 한눈을 팔다가 제대로 마친 일이 하나도 없다. 감정에 휩싸이면 안되는데, 하면서도 내 감정에 내가 충실하겠다는데 그게 뭐? 라는 생각이 스멀스멀 올..

Daily Thoughts 2020.11.06

[Network Layer] IP, Routers, NAT ...

[네트워크 레이어 1번째 수업] * 네트워크 레이어 : 트랜스포트 레이어에서 전달받은 패킷을 IP패킷으로 감싸서 목적지까지의 경로에 있는 다른 라우터들로 전달하는 레이어이다. 라우터의 역할 1. Forwarding : 어떠한 목적지까지 갈 때 가는 그 행위 자체를 의미한다. router-local 한 것이며, 보통 하드웨어로 구현한다. 2. Routing : 어떠한 목적지까지 갈 때 가기 위한 경로를 정하는 행위이다. network-wide 한 것이며 소프트웨어로 구현된다. IP주소 : 아이피 주소의 정확한 정의는 머신이 갖고 있는 "네트워크 인터페이스"이다. 머신 자체를 지징하는 것이 아니다. 즉, 호스트 하나가 여러개의 IP주소를 가족 있을 수 있는 것. 대표적으로 라우터가 있다. 라우터는 인풋 인터..

Computer Network 2020.10.13

[LFS 201] Package Managements (2)

리눅스에서 가장 흔히 사용되는 패키지 관리 시스템은 1. RPM (Red Hat Package Manager) 2. APT (Debian Package) 이렇게 두 개가 있다. 이 외에는 portage / emerge 라는, Gentoo 에서 사용되는 것이 있고, Arch 에서 사용되는 pacman, 그리고 임베디드 리눅스 시스템 혹은 안드로이드에서 사용되는 특별한 패키지 매니저들이 있다. 패키징 툴 에는 다음과 같이 두 가지 레벨이 있다. 1. Low Level Utilities : 단순히 하나의 패키지만 인스톨하거나, package 들의 리스트를 인스톨한다. 디펜던시는 완전히 책임지지 않는다. 만약 다른 패키지에 의존성이 결여되어 있으면 인스톨이 실패한다. 그리고 마찬가지로 해당 패키지를 제거하는 것..

[LFS201] Package Management (1) : Introduction

패키지 관리 시스템이란 ? * 사용자가 패키지들을 일관된 방식으로 설치, 삭제, 업그레이드 할 수 있도록 도와주는 시스템. * 패키지들간의 의존성을 관리하는 역할도 한다. 패키지를 이루고 있는 것들 : 실행 바이너리, 데이터 파일, 인스트럭션 파일, 설정 파일, 설치 스크립트, 그리고 버전 등과 같은 메타데이터를 담고 있는 파일들로 이루어져 있다. 패키지가 설치되면 이 모든 파일들이 내부 DB에 저장이 되고, 손쉽게 DB에 퀴리를 날려서 패키지와 관련된 정보들을 조회할 수 있다. 패키지 관리 시스템을 통해서 아무리 큰 패키지라 하더라도 손쉽게 설치를 할 수 있고, 모든 과정들을 자동화 할 수 있다. 뿐만 아니라 보안적으로도 훨씬 더 안전하게 패키지를 관리할 수 있다. 패키지의 두 종류 : Binary P..

[JavaScript] Asynchronous JavaScript : Promises, Async/Await and AJAX

* Callback hell 을 피하기 위해서 도입된 Promises * Promise 란? 객체의 일종으로, 특정한 이벤트가 일어났는지, 않았는지에 대해서 keep track 한다. 이벤트가 일어난 후에 어떤 것들이 실행되는지 결정한다. * Promise 의 상태 Pending -> event happens -> settled / resolved -> fulfilled OR rejected const getIds = new Promise( (resolve, reject) => { //callback function setTimeout(() => { // 성공한 경우 resolve([12,312, 123, 111]); }, 1500); } ); //결과가 성공적이라면 출력한다. //then 은 fulfi..

[JavaScript] Next Generation JavaScript : ES6

* ES6-8 까지는 대부분의 모던 브라우저에서 지원하지만, 오래된 브라우저에서는 ES5 로 변환해야 함. `let` and `const` - const : 불변값 - let : 가변값 var name = 'jane'; var age = 23; name = 'jane miller'; console.log(name); //jane miller 가 출력된다. //ES6 const name1 = 'jane smith'; let age1 = 24; //something that can mutate name1 = 'jane doe'; // Type Error !!! * const 와 let 은 block scoped 이지만, var 은 function scoped 이다. var 은 함수 안에서 if문 안에서 선언..

[JavaScript] 자바스크립트는 어떻게 돌아가는가?

거시적인 관점 프로그래머가 코드를 작성하고 실행하면 자바스크립트 언어를 해석할 수 있는 엔진이 이를 해석해서 기계어로 번역한다. 흔히 알고 있는 브라우저들도 엔진이 있고, 여러 다른 엔진들이 존재한다. 엔진 안에서는 Parser 가 실행되어서 코드들을 갖고 Abstract Syntax Tree 를 만들어내고, 이를 기계어로 변환한다. 변환된 후 컴퓨터에서 코드가 실행된다. 엔진의 구체적인 작동 방식은 엔진마다 차이가 있다. 좀 더 자세히 알아보자. Execution Context, Execution Stack 자바스크립트 코드는 항상 어떤 특정한 환경 안에서 돌아간다. 이 환경을 Execution Context 라 부른다. 기본적인 환경은 Global Execution Context 이다. 함수들에 대한..

TCP 혼잡제어 (Congestion Control)

*원래는 TCP의 전반적인 특성들과 함께 정리하려 했으나, 양이 많을 것 같아서 별도의 포스트로 분리함. TCP 의 혼잡 제어 (Congestion Control) 네트워크 상황은 쉽게 예측할 수 없다. 모두의 행동 양상에 따라서 동적으로 결정되기 때문이다. 따라서 네트워크 상황을 미리 어느정도 예측하고, 이에 기반하여 송신측에서 데이터를 보내는 양을 조절해야 한다. 혼잡제어가 발생하는 세 가지 시나리오를 살펴보자. 시나리오 1 : 두 개의 송신자와 무한 버퍼를 갖는 하나의 라우터. 두 송신자는 단일 홉을 공유하는 연결을 가진다. 이 때 TCP 계층이 오류 복구, 흐름 제어, 혼잡 제어를 전혀 수행하지 않으며 헤더에 의한 오버헤드는 전혀 발생하지 않는다고 가정하자. 이러한 상황에서 유일한 제약은 (버퍼의..

Computer Network 2020.07.27