목록2024/04 (7)
hmk run dev
몽고 DB의 기본 개념MongoDB는 고성능, 고가용성 및 쉬운 확장성을 제공하는 NoSQL, Document 지향 데이터베이스입니다.데이터를 배열 및 중첩 Document와 같은 복잡한 데이터 유형을 효율적으로 저장할 수 있는 유연한 JSON과 유사한 형식인 BSON(Binary JSON)으로 저장합니다. JSON BSON 직렬화, 역직렬화 과정에서 CPU 리소스가 많이 사용될 수 있으나,이를 내부 최적화 알고리즘으로 개선했고, 텍스트 보다 적은 용량을 사용해 저장공간의 용이성도 가져온다.일반적으로 데이터베이스 I/O 연산이 더 큰 병목 현상을 일으키 때문에 효율적인 방법 같다. 몽고 DB의 유연과 확장몽고 DB의 장점을 두 개의 키워드로 뽑으면 유연과 확장이라고 말할 수 있을 것..
리액트 성능 측정하기 - 효율적인 테이블 컴포넌트 구현 사내에서 테이블 컴포넌트를 만들어야 하는 일이 생겼습니다. 그러나 특정 조건들로 인해 성능이슈가 생겼는데요 1. 페이징 처리가 없는 테이블의 형태 2. 옵션값 개수의 모든 경우의 수를 고려한 옵션생성(수십 ~ 수백 개의 테이블 row UI가 생김) 3. 판매 마켓별로 옵션들의 값을 수정할 수 있는 UI 4. 테이블 데이터(옵션)들을 일괄변경 할 수 있는 기능(자주 사용할 것으로 판단) 페이징 처리가 없는 테이블과 자주 사용되는 데이터 일괄 변경 기능은 리액트에서 성능 문제를 초래할 수 있습니다. 특히 수백 개의 테이블 row가 재렌더링 되는 경우, 애플리케이션의 성능 저하가 발생할 수 있습니다. 성능 측정과 개선 성능 측정은 React DevTool..
웹 브라우저의 보안 클라이언트 힌트 (Sec-CH-UA) 이해하기 웹 브라우저는 서버에게 어떻게 동작하고 어떤 환경에서 실행되고 있는지에 대한 정보를 전송하기 위해 다양한 헤더를 사용합니다. 이 중에서도 "Sec-CH-UA" 헤더는 보안 클라이언트 힌트의 사용자 에이전트 정보를 제공하는 중요한 역할을 합니다. 이번 글에서는 "Sec-CH-UA" 헤더의 각 필드에 대해 자세히 알아보겠습니다. "Sec-CH-UA"와 관련된 헤더는 주로 웹 브라우저에 의해 자동으로 생성되며, 클라이언트 측에서 서버에 전송됩니다. 이 헤더는 브라우저의 사용자 에이전트 정보와 함께 웹 페이지 요청에 포함됩니다. 유저가 어떤 환경에서 우리 서비스를 사용하는지에 대한 정보를 수집할 수도 있으며 웹사이트 크롤링을 방어할 때 Sec-C..
마이크로 프런트엔드란? 마이크로 프런트엔드는 소규모 프런트엔드 서비스를 독립적으로 개발, 배포, 운영할 수 있게 하는 아키텍처 패턴. 전통적인 단일 프론트엔드 애플리케이션 대신 여러 개의 작은 프런트엔드 애플리케이션으로 애플리케이션을 분리합니다. 마이크로 프런트엔드의 주요 목표와 문제 해결 포인트는 다음과 같습니다. 독립적인 개발 및 배포: 각 마이크로 프런트엔드는 독립적으로 개발, 테스트, 배포할 수 있어 더 빠르게 애플리케이션을 개선하고 배포할 수 있습니다. 기술 스택의 유연성: 마이크로 프론트엔드 아키텍처는 다양한 프런트엔드 기술 스택을 사용할 수 있어 팀이 선호하는 기술을 선택하여 개발할 수 있습니다. (React, Vue, Svelte 등등) 재사용성 및 확장성: 기능이나 컴포넌트를 재사용하거나..
마이크로프로세서(CPU) 일단 V8엔진에 대해서 설명하기 전에 우리가 작성한 javscsript 코드가 어떻게 실행되는지 아주 간단하게 훑어보자 컴퓨터의 모든 시스템은 마이크로프로세서(CPU)를 포함하고 있다. 지금 블로그 글을 보고 있는 것도 그 덕분이다. 마이크로프로세서는 전자적인 신호로 동작하는 기계이다. 우리는 마이크로프로세서에게 지시(instruction)를 주고 마이크로프로세서는 job을 수행한다. 여기서 지시란 것은 마이크로프로세서가 해석할 수 있는 언어로 되어있다. 일반적으로 IA-32, x86-64, MIPS 그리고 ARM이 있다. 이러한 언어들은 직접 하드웨어와 소통하며 기계어라고 불린다. 우리가 컴퓨터에 코딩한 고수준 언어들은 컴파일되어 기계어 되어 마이크로프로세서가 실행할 수 있는..
Agile 애자일은 사전적 의미론 '날렵한', '민첩한' 을 뜻한다. 소프트웨어 개발 방법론의 하나인 애자일 프로세스는 처음부터 끝까지 계획을 수립하고 개발하는 폭포수(waterfall) 방법론과는 달리 개발과 함께 즉시 피드백을 받아 유동적으로 개발하는 사상이다. -> 방법론이라고 소개한곳도 있으나, 애자일 자체가 의미하는 것은 사상 혹은 철학일뿐이고 이러한 사상을 계승하여 나온 방법론이 칸반, 스크럼 같은 방법론이라고 한다. - 고객 만족을 최우선으로 하는 개발(고객의 지속적인 피드백을 통해 개선) - 짧은주기의 개발단위를 반복(ex. sprint)하여 하나의 큰 프로젝트를 나가는 방식 - 핵심은 유연성과 의사소통 그리고 동료와의 협업 애자일을 계승한 방법론 스크럼(scrum) 애자일 방법론에는 스크..
운영체제가 프로세스 스케줄링을 위해 사용하는 실질적인 방법이다. 대표적인 CPU 할당을 위한 프로세스 스케줄링 알고리즘의 종류는 아래와 같다. 1. 선입 선처리 스케줄링(FIFO) 준비 큐에 삽입된 순서대로 CPU를 할당해주는 방식이다. 먼저 실행되는 프로세스들의 실행 시간이 길다면, 대기 중인 프로세스들이 기다리는 시간이 매우 길어질 수 있다. 2. 최단 작업 우선 스케줄링(Shortest Job First) 실행 시간이 가장 짧은 프로세스부터 CPU를 할당해주는 방식이다. 3. 라운드 로빈 스케줄링(Round Robin) 준비 큐에 삽입된 순서대로 CPU를 할당하지만, 정해진 시간(타임 슬라이스)만큼만 할당해주는 방식이다. 정해진 시간동안 전부 실행되지 못했다면, 맨 마지막 순서로 돌아가서 다시 기다..