이번에는 타입스크립트의 클래스와 인터페이스에 대해 공부한 내용을 정리해 보고자 한다. 객체지향 프로그래밍과 클래스 기초 객체지향 프로그래밍(Object Oriented Programming, OOP)은 커다란 문제를 클래스 단위로 나누고 클래스 간의 관계를 추가하면서 코드 중복을 최소화 하는 개발방식이다. 클래스 간의 관계를 추가할 때는 상속이나 포함 관계를 고려하여 추가한다. OOP를 통해 어플리케이션을 개발하면 코드 중복을 상당히 줄일 수 있다. 타입스크립트는 자바스크립트(ES6)에 비해서 OOP를 지원하는 부분이 훨씬 더 많다. 타입스크립트에서는 클래스 선언을 다음과 같이 할 수 있다. 더불어 Rectangle 클래스 타입은 그 아래의 인터페이스 타입과 정확하게 일치한다. class Rectangl..
오랜만에 운영체제 공부를 다시 시작하게 되었다. 이번에는 CPU 스케줄링에 대해 정리해 보려고 한다. CPU 스케줄링이란? CPU 스케줄링은 프로세스가 작업을 수행할 때, 언제 어떤 프로세스에 CPU를 할당할지를 결정하는 작업이다. 기본적으로 멀티프로그래밍과 시분할에 기반한다. 메모리 내에 실행 준비된 프로세스 중 하나를 선택하여 CPU를 할당한다. 한정된 CPU 및 I/O장치 등의 시스템 자원을 가지고 최고의 성능을 내야 하고, 따라서 자원을 언제 어떻게 할당할지를 결정하는 문제는 정말 중요하다. CPU 스케줄링의 목표는 CPU를 최대로 활용하는 것, 즉 idle을 최소화 하는 것이다. 참고로 이 때 time quantum은 커널이 CPU를 쓰는 시간에 포함하지 않는다. CPU 스케줄링의 결정은 다음 ..
Vue.js란 무엇인가? Vue.js는 사용자 인터페이스를 만들기 위한 프로그레시브 프레임워크이다. Vue.js의 핵심 라이브러리는 뷰 레이어만 초점을 맞추어 다른 라이브러리나 기존 프로젝트와의 통합이 매우 쉽다. Vue.js는 현대적 도구 및 지원하는 라이브러리와 함께 사용한다면 정교한 단일 페이지 응용프로그램을 완벽하게 지원한다. Vue.js 의 주요 특징을 정리해 보면 다음과 같다. 1. 가상 DOM(Virtual DOM): Vue.js에서는 React.js, Ember.js 프레임워크와 유사하게 가상 DOM을 사용한다. 가상 DOM은 원본 HTML DOM을 표현하는 메모리 상의 가벼운 DOM 트리로, 원본 DOM에 영향을 미치지 않고 업데이트를 할 수 있다. 2. 컴포넌트(Components): ..
나는 지난 12월부터 약 3개월 정도 역삼역 근처 크로스핏 박스에서 운동을 하고 있다. 최근에 퇴직을 해서 시간이 많아졌고 지난 한 주동안 했던 운동을 정리해 보려고 한다. 크로스핏은 바벨, 덤벨, 풀업바, 로프, 로잉, 박스 등을 이용해서 하는 종합적인 운동이다. 매일매일 WOD(Workout Of Day)가 바뀌며 하는 운동 종목도 달라진다. 시간을 정해놓고 최대한 많은 양의 운동을 하거나, 같은 운동량을 최대한 빠른 시간안에 끝내는 것을 목표로 하는 경우가 많다. 그래서 운동 시간만 놓고 보면 짧다고 생각할 수도 있는데 운동 강도는 전혀 만만하지 않다. 왜 크로스핏을 하냐고 물어보면 나는 "재밌어서" 라고 대답을 한다. 그냥 헬스장도 오랫동안 다녀보았지만 루틴이 지루하고 혼자 하다 보면 중간에 나태..
대한민국에서 ‘비판’ 이라는 단어는 낯설다. 때로는 금기시 되기도 한다. 학창시절 내신과 수능의 경쟁에서 옆에 있는 친구를 이기기 위해서 누군가의 의견을 ‘비판’할 시간과 여유가 없었다는 건 백번 양보해서 그렇다고 쳐도, 성인이 된 이후도 우리는 다른 사람과 비교는 참 잘하면서, 나와 다른 생각에 대한 건강한 비판의 목소리를 내는 사람들을 찾아보기는 어렵다. 여기서 한 가지 짚고 넘어갈 부분이 나는 불평불만과 비판은 다르다고 생각하는데, 전자는 구체적인 해결 방향이나 방법에 대한 고민 없이 단순한 현재 상황에 대한 불만족을 표현하는 것에 그치는 것이고, 후자는 그 불만족스러운 상황에서 문제점이 무엇이며 그것에 대해서 어떤 방법으로 해결할 수 있을 것인지에 대한 충분한 고민 후 의견을 내놓거나 행동으로 이..
오늘은 타입스크립트의 제어문, 연산자, 함수에 대해서 공부한 내용을 정리해 보려고 한다. 참고로 자바스크립트에 나오는 문법과 겹치는 부분은 생략을 하고 타입스크립트에서 새롭게 추가되거나 변경된 문법들에 대해서만 다루려고 한다. 제어문 타입스크립트에서는 자바스크립트에서 사용하는 if문 및 switch문을 사용할 수 있다. if문에서 조금 헷갈릴 수 있는 부분 하나만 짚고 넘어간다. 타입스크립트에서 숫자 타입인데 숫자가 0이면 false를 나타내고, 0이 아닌 나머지 값은 true를 나타낸다. 문자열의 경우 빈 값은 false이고 값이 있으면 true이다. 아래의 예제를 참고하자. let text: string = ""; let statusActive: number = 0; let isEnabled: boo..
타입스크립트의 변수 선언 타입스크립트에서 변수 선언 방식은 var, const, let 이렇게 세 가지가 있다. 1. var 전역 공간이나 함수 내에서 변수를 선언할 때 var 선언자를 사용한다. var 로 선언된 변수는 다음과 같은 두 가지 특성이 있다. 첫 번째는 호이스팅(Hoisting)이다. 호이스팅은 선언한 변수가 스코프의 최상위로 끌어올림 되는 현상이다. 두 번째는 함수 레벨 스코프(function level scope)를 지원한다는 점이다. 이는 함수 내에서 선언한 변수는 함수 내에서만 유효하고 함수 외부에서는 참조할 수 없음을 의미한다. // var는 함수 레벨 스코프를 지원 var myName = "sad"; function functionLevel() { var myName = "hap..
타입스크립트란? 타입스크립트는 MS에서 개발하고 관리하는 오픈소스 프로그래밍 언어로 어떤 브라우저나 호스트, 운영체제에서도 동작한다. 타입스크립트는 자바스크립트의 상위 집합으로서 ECMA의 최신 표준을 충분히 지원한다. 타입이라는 특징을 가지고 ES7이하의 표준을 포함하고 있다. 타입스크립트는 ES5를 포함하는 집합이기 때문에 기존의 ES5 자바스크립트 문법을 그대로 사용할 수 있다. 또한, ES6의 새로운 기능들을 사용하기 위해 Babel과 같은 별도 트랜스파일러를 사용하지 않아도 ES6의 새로운 기능을 기존의 자바스크립트 엔진에서 사용할 수 있다. 타입스크립트의 장점은 정적 타입 언어(static type language)이기 때문에 컴파일 시 시간이 조금 걸리더라도 안정성을 보장한다는 점이다. 자바..