전체 글(94)
-
클린 코드가 모호한 개념인 이유, 선언적 프로그래밍과 추상화
클린 코드 (Clean code) 클린 코드는 가독성, 단순성 및 유지 관리 용이성을 강조하는 프로그래밍 스타일이다. 클린 코드의 원칙은 널리 받아들여지고 있지만 클린 코드의 개념은 다소 모호하고 해석의 여지가 있다. 프로그래머마다 무엇이 클린 코드를 구성하는지에 대해 서로 다른 의견을 가질 수 있으며 한 컨텍스트에서 클린 코드로 간주되는 것이 다른 컨텍스트에서는 클린 코드로 간주되지 않을 수 있다. 종종 논의되는 클린 코드의 한 측면으로 주석 사용이 있다. 어떤 프로그래머는 클린 코드가 자명해야 하고 최소한의 주석이 필요하다고 믿는 반면, 다른 프로그래머는 주석이 코드를 문서화하고 다른 프로그래머가 더 쉽게 이해할 수 있도록 만드는 중요한 부분이라고 주장한다. 논쟁의 또 다른 영역은 약어와 두문자어의 ..
2023.01.07 -
[JS] 값(value)에 의한 전달과 참조(reference)에 의한 전달
JavaScript의 자료형에는 기본(Primitive) 자료형과 기본이 아닌(Non-primitive) 자료형으로 두 가지 유형의 자료형이 있다. 기본 자료형 JavaScript 언어에서 제공하는 미리 정의된 데이터 유형을 기본 자료형이라고 한다. JavaScript는 Number, String, Boolean, Undefined, Symbol 및 BigInt를 포함하는 여섯 가지 유형의 기본 자료형을 제공한다. 기본 자료형의 크기는 고정되어 있으므로 JavaScript는 콜 스택(실행 컨텍스트)에 기본 자료형을 저장한다. 기본 자료형에 액세스하면 해당 변수에 저장된 실제 값을 조작한다. 따라서 기본 변수는 값에 의해 액세스됩니다. 기본 값을 저장하는 변수를 다른 변수에 할당하면 변수에 저장된 값이 생..
2023.01.03 -
[JS] 자바스크립트의 깊은 복사와 얕은 복사
컴퓨터 프로그래밍에서 깊은 복사는 새 메모리 주소로 새 객체를 만들고 원래 객체의 속성 값을 새 객체에 복사하는 객체의 복사본이다. 반면 얕은 복사는 새 메모리 주소로 새 객체를 생성하지만 해당 속성에 대해 원본 객체와 동일한 객체(주소)를 참조하는 객체의 복사본이다. 다음은 자바스크립트를 사용하여 깊은 복사와 얕은 복사를 구현한 예제다. const original = { a: 1, b: { c: 2 } }; // original 객체의 얕은 복사본 const shallowCopy = { ...original }; // original 객체의 깊은 복사본 const deepCopy = JSON.parse(JSON.stringify(original)); // original 객체의 속성 수정 origina..
2023.01.02 -
프로세스(Process)와 스레드(Thread)의 차이 및 개념 정리
컴퓨터 과학에서 프로세스는 실행 중인 프로그램의 인스턴스이고 스레드는 프로세스 내의 별도 실행 경로이다. 프로세스와 스레드는 모두 코드를 실행하고 작업을 수행하는 데 사용되지만 몇 가지 중요한 차이점이 있다. 리소스 소유권 (Resource ownership) 각 프로세스에는 프로세스가 소유하고 관리하는 메모리, 파일 핸들 및 열린 소켓과 같은 고유한 리소스 세트가 있다. 반면 스레드는 상위 프로세스의 리소스를 공유하는 경량 실행 경로이다. 메모리 관리 (Memory management) 프로세스에는 다른 프로세스로부터 보호되는 별도의 메모리 공간이 있다. 이는 각 프로세스가 실행 중인 데이터 및 코드의 별도 사본을 가지고 있음을 의미한다. 반면 스레드는 상위 프로세스의 메모리 공간을 공유하므로 상위 프..
2022.12.31 -
Base64 인코딩이란?
Base64 인코딩은 ASCII(정보 교환을 위한 미국 표준 코드) 형식으로 이미지 또는 기타 파일 유형과 같은 이진 데이터를 나타내는 방법이다. ASCII 데이터는 많은 시스템에서 쉽게 전송하거나 저장할 수 있으므로 인터넷을 통해 바이너리 데이터를 전송하거나 텍스트 파일에 저장하는 데 일반적으로 사용된다. Base64 인코딩에서 이진 데이터는 먼저 6비트 블록으로 분할되고 각 블록은 고유한 ASCII 문자로 표시된다. 이 표현에 사용할 수 있는 문자는 64개이며, 이것이 인코딩을 "Base64"라고 하는 이유이다. Base64 인코딩에 사용되는 문자에는 대문자와 소문자, 숫자 및 일부 특수 문자가 포함된다. 다음은 Base64 인코딩 작동 방식의 예다. 다음과 같은 이진 데이터가 있다고 가정하자면 01..
2022.12.30 -
TCP vs UDP & TCP 3-way handshake
TCP vs UDP TCP(Transmission Control Protocol: 전송 제어 프로토콜) 및 UDP(User Datagram Protocol: 사용자 데이터그램 프로토콜)는 네트워크를 통해 데이터를 전송하는 데 사용되는 두 가지 일반적인 프로토콜이다. 둘 다 인터넷 프로토콜 스택의 전송 계층에 속하며 장치 간의 종단 간 통신 설정을 담당한다. 그러나 다음과 같은 몇 가지 주요 차이점이 있다. 연결 지향 vs 비연결 (Connection-oriented vs Connectionless) TCP는 연결 지향 프로토콜이다. 즉, 데이터를 전송하기 전에 두 장치 간에 안정적인 연결을 설정한다. 여기에는 연결을 설정하기 위한 3방향 핸드셰이크(3-way handshake) 프로세스와 신뢰할 수 있는..
2022.12.29