목록분류 전체보기 (185)
hmk run dev
지속 가능한 프런트엔드 컴포넌트를 개발하는 과정에서 중요한 측면 중 하나는 기획이 변경되었을 때 코드 수정이 필요한 상황에 대한 대비책을 마련하는 것입니다. 코드의 수정이 필요한 경우가 생겼을 때, 심지어 모든 코드가 필요 없어질 수도 있는 상황이 발생할 수 있습니다. 그러나 이는 제품이 변화하고 성장하는 과정에서 피할 수 없는 현상이며, 고객이 원하는 사용자 경험을 제공하기 위해는 빠르게 대응할 필요가 있습니다. 여기서 강조해야 할 중요한 이유 중 하나는 모든 사용자가 제품을 원활하게 사용하고 있는 경우에도 제품이 변경되어야 하는 이유가 있다는 점입니다. 제품은 사용자의 니즈와 시장 동향에 부응하기 위해 지속적으로 발전하고 있으며, 기획이나 디자인이 언제든지 변할 수 있습니다. 이러한 유연성은 사용자가..
이 글은 토스 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(리소스를 찾을 수 없음) 이러한 요청 및 응답 통신은 일반적으로 사용자에게 보이지 않..
프로세스 직접 확인하기 포그라운드 프로세스 - 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스 - 사용자가 볼 수 없는 공간에서 실행되는 프로세스 - 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 ex) 데몬, 서비스 MAC에서 현재 활성 중인 프로세스 살펴보기 프로세스 제어블록 모든 프로세스는 실행을 위해 CPU가 필요하다. But, CPU 자원을 한정되어있다. 프로세스들은 돌아가며 한정된 시간 만큼만 CPU 이용 - 자신의 차례에 정해진 시간만큼 CPU 이용 - 타이머(타임아웃) 인터럽트가 발생하면 차례 양보 빠르게 번갈아 수행되는 프로세스들을 관리해야 이를 위해 사용하는 자료구조가 프로세스 제어블록 (이하 PCB) - 프로세스 관련 정보를 저장하는 자료구조 - 마..
우리가 작성한 프로그램은 대부분 운영체제에 의해 관리되고 실행된다. 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나 (참고로, 리눅스 운영체제 소스코드 라인수만 해도 2700만줄 이라고 한다) 운영체제가 제공하는 기능은 다양하다. 그러나, 가장 많이 사용되는 가장 핵심적인 서비스는 존재한다. 컴퓨터 자원에 접근하고 조작하는, 프로그램이 올바르고 안전하게 실행하는 기능등등.. 커널 운영체제의 핵심 서비스를 담당하는 부분 운영체제가 방대한 크기의 프로그램일 지라도 커널은 대동소이하다. 대부분의 전공서는 운영체제에 대해 설명할때 커널에 대해 설명한다. 고로 이 글에서 커널 = 운영체제라고 봐도 무방하다. (UI는 운영체젠에는 속하지만 커널에는 속하지 않음) 시스템 콜과 이중 모드 사용자가 실..
클럭(clock) 1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. 2. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 일반적으로 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직이겠네요? 꼭 그런건 아니지만 일반적으로는 맞다. 클럭 속도 - 헤르츠(Hz) 단위로 측정 (초당 횟수) - 클럭이 '똑-딱-' 하고 1초에 한 번 반복되면 1Hz 클럭 신호를 무지성으로 높이면 CPU가 무지막지하게 빨라진다? 필요 이상으로 클럭을 높이면 발열이 심해짐 코어와 멀티 코어 - 클럭 속도를 늘리는 것 이외에 성능을 높이는 방법은? - 코어 수를 늘리는 방법 ex) 듀얼 코어, 멀티 코어... - 스레드 수를 늘리는 방법 ex) 멀티 ..