본문 바로가기

분류 전체보기365

운영체제 #2 시스템 콜(System Call)정의: 응용 프로그램이 OS가 제공하는 서비스를 이용하기 위한 프로그래밍 인터페이스사용 방법: API를 통해 접근 (예: C 표준 라이브러리는 Unix/Linux 시스템 콜 인터페이스 제공)6대 기능 범주프로세스 제어(Process Control)파일 관리(File Management)장치 관리(Device Management)정보 유지 관리(Information Maintenance)통신(Communication)보호(Protection) 링커컴파일된 여러 개의 오브젝트 파일과 라이버리를 하나로 묶어 실행 파일을 만든다.심볼 결합 (Symbol Resolution)여러 소스 파일에서 정의 및 참조된 함수와 변수를 서로 연결예: main.c에서 print() 함수를 호출하.. 2025. 8. 15.
JSON.parse(JSON.stringify(obj)) 의미 개발하다 보면 아래와 같은 코드들이 보인다.const tmp: Channel[] = JSON.parse(JSON.stringify(channels)) 이 의미를 알 지 못한다면, 왜 불필요한 작업을 진행하는지 이해 할 수 없다.stringify와 parse는 연산 속도도 느린데... 이 패턴은 객체를 깊은 복사를 하기 위해 사용하는 방법이 과정을 거치면 원본 객체의 참조와 완전히 끊어진 새로운 객체가 만들어 진다. 얕은 복사(shallow copy)const copy = [...array] 나 const copy = {...obj} 처럼 spread나 Object.assigin을 쓰면 1단계 깊이까지 복사되고, 그 안에 있는 개체나 배열은 여전히 원본과 같은 참조를 가진다.const a = [{x: 1}.. 2025. 8. 15.
운영체제 #1 1. 운영체제의 개념과 역할운영체제(OS)는 하드웨어와 응용 프로그램 사이에서 자원(Resource) 관리자 역할을 한다.주요 자원:CPU (연산 자원)메모리 (휘발성 저장 자원)저장장치 (비휘발성 저장 자원)I/O 장치 (네트워크 카드, 디스크 컨트롤러, USB 등)개발자 관점에서 운영체제는 크게 두 층으로 나눌 수 있다.커널(Kernel): 하드웨어 직접 제어, 자원 관리 로직 포함 (리눅스: kernel/, 윈도우: NT Kernel)유저 공간(User Space): 응용 프로그램, 라이브러리, 셸 등이 실행되는 영역 2. 인터럽트와 커널 진입하드웨어는 CPU와 직접 대화할 수 없고, 대신 인터럽트(Interrupt) 라는 비동기 신호를 통해 이벤트를 알린다.예시: 네트워크 패킷 수신NIC(Netw.. 2025. 8. 14.
[typescript] generic extends 문법 type HandleData = { storageType: StorageType keys: readonly K[]} 위의 코드를 보고 generic을 어떻게 이해 해야할지 알아보았다. Generic 타입 파라미터 K를 선언이고, 두가지 조건을 동시에 설정 1. K extneds stringK는 문자열 타입이어야 한다.즉, K는 'foo' | 'bar' 같은 문자열 리터럴 타입이 될 수 있고 그냥 string일 수 있다.2. = string (기본 타입 설정)generic에 아무 값도 안 넣으면, K는 자동으로 string 타입이 된다.즉, HandleData를 쓸 때 K를 명시하지 않으면 keys는 readonly string[]이 됨정리K는 문자열 계열 타입이어야 하고, 지정하지 않으면 string.. 2025. 8. 14.
[react] CRA 버전 업그레이드 하기 상황react v16.xnode v16.x 최선버전으로 업그레이드npx npm-check-updates -u 저걸 실행하면 eslint가 9.x로 올라가는데 react-script와 충돌이 생겨서 eslint가 정상적으로 작동하지 않는다. eslint 버전 하양eslint 8.x대로 내리고, vscode cmd + p 로 들어가서 eslint server restart 실행 코드 마이그레이션createRoot, useNavigate 등등.. 2025. 8. 12.
declare module '*.json' 의미 declare module '*.json' { const json: any export default json} 핵심 의미TypeScript 컴파일러에게 .json 파일을 임포트할 때 어떤 타입으로 처리하라고 알려주는 ambient module 선언 자세히 풀어보면1. declare module '*.json' { … } 의 의미declare module "" { … } 은 TypeScript에 이런 이름의 모듈을 만났을 때, 아래에 정의된 타입 정보를 사용해라 라고 알려주는 구문입니다. 여기서 *.json 패턴은 확장자가 .json인 모든 파일을 가리킨다. 2. 내부 구조const json: any;export default json; 해당 모듈이 기본(default)으로 하나의 json 값을 갖는.. 2025. 8. 6.