CS 42

javascript - hoisting

javascript의 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트 등 모든 선언문을 해당 범위의 맨 위로 끌어올리는 것처럼 보이는 현상을 말한다.  javascript의 parser는 코드가 실행되기 전에 범위 안에 있는 모든 변수들을 모아서 범위의 최상단에 선언한다. 그 대상은 말 그대로 모든 선언이다. 함수, 변수, 클래스 그리고 임포트가 포함된다. 변수의 호이스팅 변수는 var, let, const 중 어느 방식으로 선언되었든, 항상 호이스팅된다.console.log(v1, v2, v3);var v1 = 0;let v2 = 0;const v3 = 0; 이러한 코드가 있었다면, javascript Parser는 다음과 같이 호이스팅한다.var v1;let v2;con..

CS 2025.02.05

javascript - var, let, const

Var, Let, Const의 차이점은? Var, Let, Const의 차이점은?ES2015(ES6)에서 반짝이는 새로운 기능들이 많이 등장했습니다. 2020년이 된 지금, 많은 JavaScript 개발자들이 그 기능들을 사용하기 시작했을 것이며 또 익숙해졌을텐데요. 여전히 그 중 몇몇은 일부www.freecodecamp.org  var, let, const의 차이에 대해 잘 설명된 글이 있어서 가져와봤다.  javascript에서 변수를 선언하는 방법은 세가지가 있다. var, let, const인데, 원래 javascript에는 var밖에 없었다고 한다. ES2015(ES6)에서 let과 const가 도입되었다. var, let, const에는 각각 어떤 특징이 있고 어떤 차이점이 있는지 알아보자. ..

CS 2025.02.04

운영체제

운영체제는 컴퓨터의 하드웨어와 소프트웨어를 관리하는 소프트웨어다. 운영체제는 다양한 어플리케이션 간의 컴퓨터 리소스 공유와 모든 활동을 관리 및 제어하고, 프로세서 관리, 메모리 관리, 파일 관리 등 모든 기본 기능을 포함한다. 운영체제의 목적은 사용자가 편리하고 효율적으로 프로그램을 실행할 수 있는 환경을 제공하는 것이다. 운영체제는 컴퓨터 하드웨어와 소프트웨어를 관리하는 소프트웨어로, 하드웨어는 컴퓨터 시스템의 올바른 작동을 보장하고 사용자 프로그램이 시스템의 적절한 작동을 방해하지 못하도록 하는 적절한 메커니즘을 제공해야한다. 운영체제는 컴퓨터에서 항상 실행되는 프로그램(커널)이며, 나머지는 모두 응용 프로그램이다. 운영 체제는 다음과 같은 일을 한다.모든 컴퓨터 리소스를 제어한다.응용 프로그램을 ..

CS 2025.01.23

컴퓨터 메모리

컴퓨터 메모리는 인간의 뇌와 같다. 메모리는 데이터와 프로그램을 저장한다. 컴퓨터 메모리에는 세가지 종류가 있다.주기억장치보조기억장치캐시 메모리 프로그램을 열면 보조메모리에서 주메모리로 로드된다. 컴퓨터는 보조메모리보다 주메모리에 더 빨리 액세스할 수 있다. 주메모리는 휘발성이므로 데이터가 일시적으로만 보관된다. 휘발성 메모리에 저장된 데이터는 컴퓨팅 장치가 꺼지면 자동으로 사라진다. 파일을 저장하려면 보조메모리로 전송해야한다. 주기억장치 컴퓨터 작업 중에 데이터와 프로그램 또는 명령어를 저장하는데 사용된다. 반도체 기술을 사용하기 때문에 일반적으로 반도체 메모리라고 한다. 주메모리에는 두 가지 유형이 있다. RAM(Random Access Memory): 휘발성 메모리. 휘발성 메모리는 전원 공급에 따..

CS 2025.01.21

분산 시스템 아키텍쳐

중앙 집중형 시스템에서는 모든 데이터와 리소스가 단일 서버에서 보관되고 제어된다. 사용자는 이 허브에 연결하여 데이터를 액세스하고 처리한다. 이 구성은 유지 관리와 보안이 쉽지만 너무 많은 사용자가 동시에 액세스하거나 중앙 서버가 오작동하는 경우 병목 현상이 발생할 수 있다. 반면 분산 시스템은 데이터와 리소스를 여러 서버 또는 위치, 종종 다양한 물리적 장소에 분산한다. 이 구성을 통해 구성 요소 오류가 발생하더라도 시스템이 작동할 수 있으므로 더 나은 확장성과 안정성이 확보된다. 그러나 상호작용 지점이 많기 때문에 분산 시스템은 보안 및 관리가 어려울 수 있다. 분산 시스템 아키텍쳐 일반적으로 분산 시스템 아키텍처는 다음과 같다. 클라이언트-서버 아키텍쳐 이 설정에서 서버는 리소스나 서비스를 제공하고..

CS 2025.01.20

CPU

CPU(Central Proccessing Unit, 중앙 처리 장치)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩이다. CPU는 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 한다. 따라서 CPU는 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어하는 장치로, 모든 컴퓨터의 작동과정이 CPU의 제어를 받기 때문에 컴퓨터의 두뇌에 해당한다고 할 수 있다. 실제 CPU 칩엔 실행 부분뿐만 아니라 캐시 등의 부가 장치가 통합된 경우가 많다.  CPU는 3가지 주요 장치로 구성된다.저장 장치제어 장치ALU(산술 논리 장치)저장 장치 이름에서 알 수 있듯이 이 장치..

CS 2025.01.15

삼각함수

삼각비와 삼각함수 삼각비는 직각삼각형의 세 변의 길이의 비를 나타낸 것이다. 삼각형은 이름 그대로 세 개의 각으로 이루어진 도형이고, 당연히 세 개의 변을 가지게 된다. 유클리드 공간에서 삼각형의 세 각의 합은 반드시 180도이며, 이 중 가장 큰 각이 90도보다 작으면 예각 삼각형, 90도보다 크면 둔각 삼각형이라 하고, 특히 90도, 즉 직각인 삼각형을 직각 삼각형이라고 한다. 삼각함수는 직각 삼각형에서 밑변과 빗변이 이루는 각을 A라고 했을 때, 각 A에 대해 세 변의 길이의 비를 나타낸 함수이다. 대표적인 삼각함수는 사인(sine), 코사인(cosine), 탄젠트(tangent)가 있다. 사인 함수는 sin(A)으로 나타내며,  빗변 / 밑변를 뜻한다. 코사인 함수는 cos(A)으로 나타내며, 빗..

CS 2025.01.14

로드 밸런싱

로드 밸런싱은 어플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 분배하는 방법이다. 최신 어플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비디오, 이미지 및 기타 데이터를 빠르고 안정적인 방식으로 각 사용자에게 반환해야 한다. 이렇게 많은 양의 트래픽을 처리하기 위해 대부분의 어플리케이션에는 데이터가 중복되는 리소스 서버가 많이 있다. 로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스이다. 로드 밸런싱의 장점 로드 밸런싱은 어플리케이션 서버와 방문자 또는 클라이언트 간의 인터넷 트래픽을 지시하고 제어한다. 결과적으로 어플리케이션의 가용성, 확장성, 보안 및 성능이 향상된다. 서버에 ..

CS 2025.01.14

대칭키 암호화와 공개키 암호화

대칭키 암호화  대칭키 암호화(Symmetric-key cryptography)는 암호화와 복호화에 동일한 키를 사용하는 암호화 알고리즘에 사용되는 용어이다. 키는 일반적으로 "대칭 키" 또는 "비밀 키"라고 한다.  일반적으로 키가 쌍으로 생성되고 한 키에 의한 변환이 다른 키를 통해서만 되돌릴 수 있는 공개 키 암호화와 비교된다.  대칭키 알고리즘은 올바르게 사용하면 안전하고 효율성이 높아 성능에 부정적인 영향을 주지 않으면서, 대량의 데이터를 암호화하는 데 사용할 수 있다. 단점으로는 보안 문제가 있다. 암호화와 복호화에 같은 키를 사용하기 때문에 키가 유출되었을 경우 보안에 문제가 생길 수 있다. 따라서 키를 상대방에게 안전하게 전달해야 한다. 공개키 암호화  공개키 암호화 방식은 대칭키 암호화 ..

CS 2025.01.14

protobufjs

Protocol Buffers가 구글에서 만든 언어 중립적, 플랫폼 중립적 직렬화 도구라는 것을 알았다. 하지만 잘 살펴보면 protocol buffers가 지원하는 언어중에 JavaScript는 없다는 것을 알 수 있다. Protocol Buffers의 공식 문서를 보면 구글이 직접 지원하지 않는 언어라도 서드파티 프로젝트로 지원되는 언어가 있을 수 있다고 한다. protobufjs는 JavaScript에서 Protocol Buffers를 사용할 수 있도록 지원하는 라이브러리이다. 오늘은 protobufjs를 알아보자.https://www.npmjs.com/package/protobufjs protobufjsProtocol Buffers for JavaScript (& TypeScript).. Late..

CS 2025.01.08