목록2024/03 (28)
hmk run dev
프로세스가 실행이 되려면 자원이 필요합니다 두 개 이상의 프로세스가 각자 갖고 있는 자원들을 그저 기다리기만 한다면, 그 어떤 프로세스도 실행되지 못하고 이를 교착상태라고 합니다. 식사하는 철학자 문제로 엿보는 교착상태 보이는 것처럼 원형 식탁에 다섯 명의 철학자가 앉아 있고 철학자 앞에는 음식과 포크가 있습니다. 음식을 먹으려면 꼭 2개의 포크가 필요합니다. 모든 철학자들이 동시에 위와 같은 순서로 식사를 한다면, 모든 철학자들이 식사를 하지 못하게 된다. 이런 식으로 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 "교착상태"라고 합니다. 여기서 철학자는 프로세스고 포크는 실행에 꼭 필요한 자원 식사는 자원을 이용함 => 실행에 빗댈 수 있습니다. 서로가 점거하고 있는 자원을 서로가 기다리면..
자바스크립트에서 함수 호출 방식인 Call by Value와 Call by Reference에 대해 알아보겠습니다. 먼저, 각각의 개념을 살펴보고, 이것이 리액트에서 상태값을 업데이트 할 때 어떻게 작용할 수 있는지 살펴볼 것입니다. 자바스크립트에서 함수를 호출할때 매개변수를 할당 받을 수 있습니다. 매개변수는 여러개가 될수도있고 단일값일수도있고 객체나 또 다른 함수가 될 수도 있습니다. 매개변수를 전달하는 방식에 따라서 Call by value , Call by reference 로 나눌 수 있습니다. Call by Value (값에 의한 호출) Call by Value는 함수에 인자를 전달할 때, 해당 값의 복사본이 함수로 전달되는 방식을 말합니다. 이는 원시 데이터 타입(숫자, 문자열, 불리언 등)..
가비지 콜렉션이란? 가비지 콜렉션은 자바스크립트 엔진이 자동으로 더 이상 사용되지 않는 메모리를 찾아내고 해제하는 프로세스를 의미합니다. 개발자가 명시적으로 메모리를 해제할 필요가 없어져 코드 작성이 간편해지는 장점이 있습니다. 메모리 관리의 중요성 메모리 관리는 프로그램의 성능과 안정성에 직접적인 영향을 미칩니다. 메모리 누수가 발생하면 시스템이 불안정해지고, 성능이 저하될 수 있습니다. 가비지 콜렉션은 이러한 문제를 해결하여 개발자가 메모리를 효율적으로 사용할 수 있도록 도와줍니다. 가비지 콜렉션의 작동 원리 자바스크립트 엔진은 주기적으로 가비지 콜렉션을 수행합니다. 이때, 더 이상 사용되지 않는 객체를 찾아내고, 해당 객체가 참조하는 메모리를 해제합니다. 이는 프로그램이 실행 중에 동적으로 생성되는..
지속 가능한 프런트엔드 컴포넌트를 개발하는 과정에서 중요한 측면 중 하나는 기획이 변경되었을 때 코드 수정이 필요한 상황에 대한 대비책을 마련하는 것입니다. 코드의 수정이 필요한 경우가 생겼을 때, 심지어 모든 코드가 필요 없어질 수도 있는 상황이 발생할 수 있습니다. 그러나 이는 제품이 변화하고 성장하는 과정에서 피할 수 없는 현상이며, 고객이 원하는 사용자 경험을 제공하기 위해는 빠르게 대응할 필요가 있습니다. 여기서 강조해야 할 중요한 이유 중 하나는 모든 사용자가 제품을 원활하게 사용하고 있는 경우에도 제품이 변경되어야 하는 이유가 있다는 점입니다. 제품은 사용자의 니즈와 시장 동향에 부응하기 위해 지속적으로 발전하고 있으며, 기획이나 디자인이 언제든지 변할 수 있습니다. 이러한 유연성은 사용자가..
이 글은 토스 SLASH21의 실무에서 바로 쓰는 Frontend Clean Code를 바탕으로 작성된 글이며 클린코드에 대한 관점은 개인마다 다를 수 있습니다. 클린코드를 해야 하는 이유 실무에서 클린 코드 = 유지보수 시간의 단축 시간 = 자원 = 돈 처음엔 클린 했다. => 요구사항에 맞는 적절한 클린 코드였다. 하지만, 기존 코드에 기능을 추가하는 상황이라면? 실무의 대부분은 새로운 기능을 만드는 경우도 있겠지만, 기존의 코드에 새로운 기능을 추가하는 경우가 더 많다. 간단한 코드를 통해 실무관점으로 클린 하게 리팩토링 해보자 요구사항은 아래와 같습니다. - 보험에 대한 질문은 입력하는 페이지가 있다. - 설계사가 있는 경우엔 설계사 사진이 들어간 팝업을 먼저 띄워달라는 추가 기능을 요청받음 fu..
CPU 스케줄링이란? 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 컴퓨터 전체 성능과 직결되는 중요한 과정 가장 공정한 CPU 스케줄링? CPU를 사용하고 싶어 하는 프로세스들이 차례로 돌아가면 사용? 빨리 처리해야 하는 프로세스가 있기 때문에, 즉 프로세스마다 우선순위가 다르기 때문에 그리 좋은 방법이 아니다. 입출력 작업이 많은 프로세스(입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스(CPU 집중 프로세스)의 우선순위보다 높다. 대부분의 프로세스는 CPU와 입출력장치를 둘다 사용하는 경우가 많다. ex) CPU를 썼다 키보드를 쓰고, 보조기억 장치를 쓰고, 모니터를 쓰고 등등 비교적 입출력 작업을 덜쓰는 CPU 집중 프로세스들은 컴파일, 수학연산, 그래픽 계..
스레드란? 스레드는 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 최소 하나 이상의 스레드를 가지고 있다. 단일 스레드 프로세스 실행 흐름이 하나인 프로세스 멀티 스레드 프로세스 실행 흐름이 여러 개인 프로세스 => 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보를 가지고 있고, 스레드는 프로세스 내에 같은 자원을 공유한다. 프로세스와 스레드의 경계는 모호하다? 멀티 프로세스와 멀티 스레드 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 vs 하나의 프로세스를 여러 스레드로 실행 프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드는 같은 프로세스 내에서 자원을 공유할 수 있..
네트워크를 배우려는 사람들이 가장 먼저 배우려고 하는 OSI 7 계층 OSI 7 계층이라는 것은 너무 개념적이다. 내가 실질적으로 알고 싶은 것은 TCP/IP 네트워크 혹은 HTTP를 이해하고 인터넷의 작동을 알고 싶다. 그러나 OSI 7 계층은 그 외에 구체적인 개념적인 것들이 많다. OSI 7계층은 데이터 통신의 과정을 7개의 계층으로 분류한 모델이고, TCP/IP 4계층은 실제로 사용되는 프로토콜 스택 그래서 네트워크를 배워보고자 하는 사람들에겐 TCP/IP 4 계층을 먼저 숙지하는 것을 권유한다. OSI 7 계층 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽..
웹 보안은 프론트엔드 개발자가 종종 간과하는 주제다. 보통 웹사이트를 평가할때 lighthose 같은 툴을 이용해 SEO, LCP 같은 지표를 살표보는 반면 악의적인 공격을 견딜 수 있는 웹사이트 용량은 감시 대상에 포함되지 않는 경우가 많다. 민감한 사용자 데이터가 서버 측에 저장되고 백엔드 개발자가 서버를 보호하기 위해 상당한 조치를 취해야 하더라도 결국 데이터 보안에 대한 책임은 FE와 BE 모두 공유 되야한다. 중요한 데이터는 백엔드에 저장되어 있겠지만 프론트엔드는 이러한 데이터에 접근하는 key를 가지고 있는 현관문이 될 수 있으며 이를 훔치는 것이 액세스 권한을 얻는 가장 쉬운 방법이 되는 경우가 있을 수 있습니다. 악의적인 사용자가 Front-end 애플리케이션을 망가뜨리기 위해 할 수 있는..
HTTP 프로토콜은 어떻게 작동하나요? HTTP는 OSI(Open Systems Interconnection) 네트워크 통신 모델의 애플리케이션 계층 프로토콜입니다. HTTP는 여러 유형의 요청과 응답을 정의합니다. 예를 들어, 웹 사이트의 일부 데이터를 보려는 경우 HTTP GET 요청을 전송합니다. 연락처 양식 작성과 같은 일부 정보를 전송하려는 경우 HTTP PUT 요청을 전송합니다. 마찬가지로, 서버는 숫자 코드 및 데이터 양식으로 다양한 유형의 HTTP 응답을 전송합니다. 다음은 몇 가지 예입니다. 200 - OK(정상) 400 - Bad request(잘못된 요청) 404 - Resource not found(리소스를 찾을 수 없음) 이러한 요청 및 응답 통신은 일반적으로 사용자에게 보이지 않..