가상 머신(Virtual Machine)
·
Computer Science
가상 머신운영체제의 하위 개념인 가상 머신은 주 운영체제 위에 소프트웨어 형식으로 올라가는 또 하나의 컴퓨팅 시스템이다. 주 운영체제와 가상 운영체제 사이의 통신을 어떤 방식으로 하느냐에 따라서 Hypervisor 형식과 컨테이너로 나눠진다. HypervisorType 1 Hypervisor컴퓨터 하드웨어 바로 위에 올라가는 운영체제다. 하드웨어 위에 호스트 운영체제 없이 연결되기 때문에 Type 2보다 빠르고 보안에 강하다는 장점이 있다. 클라우드 서비스에 주로 이용한다. Type 2 Hypervisor컴퓨터 하드웨어 위에 호스트 운영체제가 있고 그 위로 올라가는 하이버바이저이다. 가상 머신에서 동작하는 게스트 OS의 명령을 호스트 OS로 전달해주는 역할을 한다. 다른 소프트웨어처럼 하이퍼바이저가 ..
비동기 프로그래밍
·
Computer Science
Selenium 사용할 때 발생했던 문제JavaScript로 대학교 공지사항 스크래퍼를 개발할 때 Selenium 공식문서를 참고해 코드를 작성하고 있었다. Selenium에서 설명하는 여러 메소드를 참고하던 중 'await' 라는 예약어가 공식문서에 있었지만 필요없다고 생각해 예약어를 지우고 코드를 작성했다. 그러자 코드에선 여러 알 수 없는 오류를 내뿜기 시작했다. 나중에 알고보니 async함수를 사용하고도 await가 필요한 코드 문장에 예약어를 넣지 않아 함수끼리 값이 섞여 프로그램이 다운되는게 원인이었다. 그래서 나는 await가 무슨 역할을 했는지 궁금해져 검색해보니 비동기 프로그래밍을 위해 사용되는 명령어라는 걸 알았다. 비동기 프로그래밍이 뭘까? 동기 프로그래밍코드를 작성하면 코드..
ANSI C grammar Lex Specification
·
Computer Science
프로그래밍 언어 시간에 배우는 '어휘 분석기(lexical analyzer)'의 한 종류로 표준 C의 토큰에 관한 문서이다. 1995년에 만들어진 표준으로 C언어에서 코드를 분석할 때 반환되는 모든 토큰을 모아 놓은 문서이다. 우리가 컴퓨터에 입력하는 코드는 사실 하나의 긴 문자열이다. 코드를 만드는 우리는 컴퓨터가 제공하는 편리한 에디터를 통해 코드를 작성하기 때문에 색깔, 띄어쓰기, 한 줄 띄우기 등 가독성을 높이는 조치를 취한 상태라 읽기 수월하다. (사실 읽기 불편한 코드를 애초에 만들지 않는다, 읽기 싫으면 만들기가 싫으니까.) 그러나 우리가 작성한 코드를 컴퓨터가 이해할 때는 한 줄의 긴 문자열로 인식한다. 컴퓨터 입장에선, 코드의 어느 부분이어떠한 의미를 나타내고 있는지 따로 분석할 필요가..