본문 바로가기

분류 전체보기

왜 나는 객체지향의 세계에서 헤매고 있었을까? - [객체지향의 사실과 오해] 객체지향의 사실과 오해『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 널리 퍼져있는 오해는 클래스가 객체지향 프로그래밍의 중심이라는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 바라보는 것이다. 세 번째 걸음을 내디딜 수 있는지 여부는 협력에 참여하는 객체들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다. 객체지향의 마지막 걸음은 앞에서 설명한 개념들을 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼 .. 더보기
JavaScript의 원시 값과 참조 값, 얕은 복사와 깊은 복사 이해하기 JavaScript에서 데이터 관리는 프로그래밍의 핵심 중 하나입니다. 특히, 원시 값과 참조 값의 차이, 그리고 객체의 얕은 복사와 깊은 복사를 이해하는 것은 매우 중요합니다. 이 글에서는 이 개념들을 코드 예시를 통해 쉽고 명확하게 설명하겠습니다.원시 값과 참조 값원시 값(Primitive Values)원시 값(원시 타입의 값)은 변경 불가능한(immutable) 데이터 유형으로,변수에 값을 직접 저장합니다.JavaScript 원시 값의 종류는 다음과 같습니다.BooleanNumberStringnullundefinedSymbolBigInt참조 값(Reference Values)참조 값(객체 타입의 값)은 객체, 배열, 함수 등 원시 값을 제외한 모든 데이터 유형으로, 변경 가능한(mutable)한 값.. 더보기
유닉스 시간: 1970년 기준과 2038년 문제의 해결 유닉스 시간(Unix time)은 컴퓨터 시스템과 소프트웨어에서 시간을 표현하는 데 사용되는 중요한 기준으로, 1970년 1월 1일 00:00:00 UTC를 기준으로 초 단위로 측정됩니다. 이 기점이 선택된 이유와 1970년 이전 및 2038년 이후의 시간 문제를 어떻게 해결하는지 자세히 살펴보겠습니다.유닉스 시간의 기원: 왜 1970년일까?유닉스 시간은 1960년대 후반과 1970년대 초반에 개발된 유닉스 운영체제에서 처음 도입되었습니다. 이 시점의 선택에는 몇 가지 기술적 및 역사적 배경이 있습니다:기술적 제약과 효율성32비트 정수의 한계: 당시 컴퓨터는 메모리와 저장 공간이 매우 제한적이었습니다. 유닉스 시간은 32비트 정수를 사용하여 시간을 초 단위로 저장합니다. 32비트 정수는 최대 2,147,.. 더보기
HTML 어트리뷰트 방식 이벤트 핸들러에서 'event'를 반드시 사용해야 하는 이유 HTML에서 이벤트 핸들러를 어트리뷰트 방식으로 등록할 때, 반드시 호출문의 인자로 event를 넣어줘야 한다는 사실에 대해 들어보신 적이 있나요? 이번 글에서는 그 이유를 자세히 설명하겠습니다.이벤트 객체(event object)란?브라우저는 이벤트가 발생할 때마다 해당 이벤트와 관련된 다양한 정보를 담고 있는 이벤트 객체(event object)를 생성합니다. 이 객체는 이벤트가 발생한 요소, 이벤트 타입, 마우스 좌표, 키보드 입력 등 다양한 정보를 포함하고 있습니다.어트리뷰트 방식으로 이벤트 핸들러 등록하기어트리뷰트 방식으로 이벤트 핸들러를 등록하는 것은 HTML 요소의 속성(attribute)에 직접 이벤트 핸들러 코드를 작성하는 것을 의미합니다. 예를 들어, 다음과 같이 작성할 수 있습니다:C.. 더보기
JavaScript의 `Object`와 `object`의 차이 JavaScript에서 Object와 object는 서로 다른 의미를 가지며, 이는 대문자와 소문자의 차이로 인해 발생합니다.1. Object (대문자 O)Object는 자바스크립트의 내장 객체 중 하나로, 모든 객체의 프로토타입 체인의 최상위에 위치합니다. 이를 통해 객체를 생성하고 조작할 수 있는 다양한 메서드와 속성을 제공합니다. Object는 생성자 함수로 사용되어 객체를 생성할 수 있습니다.주요 메서드와 속성Object.create(proto[, propertiesObject]): 지정된 프로토타입 객체와 속성을 가지고 새로운 객체를 만듭니다.Object.assign(target, ...sources): 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사합니다.Object.keys(obj): .. 더보기
프레임워크와 라이브러리의 차이 소프트웨어 개발을 하다 보면 '프레임워크'와 '라이브러리'라는 용어를 자주 접하게 됩니다. 이 두 개념은 서로 다른 역할을 하지만, 많은 경우 함께 사용됩니다. 이번 글에서는 프레임워크와 라이브러리의 정확한 정의와 그 관계를 쉽게 설명해보겠습니다.프레임워크 (Framework)정의:프레임워크는 소프트웨어 애플리케이션을 개발하는 데 필요한 큰 틀과 구조를 제공하는 도구입니다. 프레임워크는 애플리케이션의 제어 흐름을 관리하며, 개발자가 작성한 코드를 호출하여 실행합니다.특징:제어의 역전(Inversion of Control): 프레임워크가 애플리케이션의 흐름을 주도하고, 개발자가 작성한 코드를 필요할 때 호출합니다.구조 제공: 애플리케이션의 기본적인 골조와 패턴을 제공하여 일관성 있는 개발을 지원합니다.통합.. 더보기
HTML의 진화: HTML 5.0까지의 변화와 그 배경 웹 기술의 빠른 발전과 HTML의 버전 변동웹이 처음 등장한 이래로 HTML은 빠르게 발전해왔습니다. 초기에는 단순한 텍스트 기반의 문서 구조를 제공하는 것에 집중했지만, 인터넷의 급격한 성장과 사용자 요구의 변화로 인해 HTML도 끊임없이 진화할 필요가 있었습니다.HTML 1.0에서 4.0까지의 주요 변동HTML 1.0 (1993): 최초의 HTML 버전, 기본적인 텍스트 포맷과 링크 기능만을 제공.HTML 2.0 (1995): 첫 표준화된 버전, 기본적인 폼 요소와 테이블을 지원.HTML 3.2 (1997): 더 많은 태그와 속성 추가, 스크립트와 스타일시트 지원.HTML 4.0 (1997): DOM(Document Object Model) 도입, 접근성 향상, 스타일시트와의 통합 강화.HTML 3... 더보기
인터넷과 웹의 차이 인터넷: 컴퓨터와 컴퓨터 사이를 연결하는 기반, 네트워크웹: 인터넷 위에서 동작하는 정보 공유 서비스웹을 제외한 인터넷 서비스(인터넷 서비스: 프로토콜)이메일: SMTP, POP3, IMAP원격 접속: SSH, RDP, VNC인터넷 전화: SIP, H.323, RTP인스턴트 메시지: MPP, IRC파일 전송: FTP, SFTP, SCP등인터넷 서비스에 대한 오해Q. 웹에서 이메일, 스트리밍, 파일 전송 등 다양한 서비스를 이미 제공하고 있지만, 왜 이렇게 따로 구분되는가?A. 웹에서 다양한 서비스를 제공하지만, 그것들이 직접적으로 웹에서 동작하지 않는다. 웹은 각 서비스를 제공하는 인터페이스 역할을 하며 각자의 프로토콜로 동작한다.출처MDN / Web 개발 학습하기 > 웹 작동방식 > 인터넷은 어떻게 동.. 더보기