it 6

깊은 복사(deep copy) vs 얕은 복사(shallow copy)

최근에 깊은 복사와 얕은 복사에 대해 질문을 받았는데 생각보다 잘 알고있지 못해서 어버버 거렸던게 신경쓰여서 찾아보게 되었다 ㅎ 원래 알고있던 내용이라 "아 ~ 맞아맞아" 하는 내용도 있었고 "오 ~" 하는 새로운 내용도 있었다. 얕은 복사 (Shallow Copy) 얕은 복사는 원본 데이터의 최상위 레벨만을 복사한다. 중첩된 객체나 배열이 있다면, 해당 객체나 배열은 원본과 동일한 참조를 유지한다. Ex : 스프레드 연산자(...), 배열의 slice() 등 얕은 복사 (Shallow Copy): 최상위 레벨의 객체나 배열은 새로운 객체나 배열로 복사되지만, 됩니다. 깊은 복사 (Deep Copy): 깊은 복사는 원본 데이터의 모든 중첩된 객체와 배열을 재귀적으로 복사한다. 새로운 객체나 배열이 생성되..

IT 2024.02.21

[IT] Web 페이지 로딩 하는 과정

Web 개발을 하는데, Web 이 어떻게 로딩되는지 정도는 알고 개발해야 Web 개발한다고 어디가서 말할 수 있지 않을까 하는 취지에서 작성하게 되었다. 물론 모르는건 아닌데 체계적으로 설명하기 위해서 & 기록하기 위해서 .. 제일많이 사용되는 Google 을 가지고 간단하게 작성해보자면 DNS 조회 (Domain Name System) 사용자가 브라우저에 www.google.com을 입력하면, 해당 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버에 요청 DNS 서버는 www.google.com에 대한 IP 주소를 반환 TCP 연결 (Three-Way Handshake) 브라우저는 얻은 IP 주소를 사용하여 Google 서버에 TCP 연결을 시도 HTTP 요청 TCP 연결이 설정되면, 브라우저는 H..

IT 2023.12.19

[IT] 객체지향 개발의 5원칙 (SOLID 원칙)

SOLID 는 객제치향 프로그래밍(OOP) 에서 디자인 원칙을 나타내는 다섯가지 원칙의 약자이다. 단일 책임 원칙 (Single Responsibility Principle - SRP): 클래스는 하나의 책임만 가져야 한다. → 클래스가 변경되어야 하는 이유는 단 하나여야 한다. 개방/폐쇄 원칙 (Open/Closed Principle - OCP): 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 새로운 기능이 추가되거나 변경이 필요할 때 코드를 수정하지 말고, 기존 코드를 확장하여 새로운 기능을 추가할 수 있어야 한다. 리스코프 치환 원칙 (Liskov Substitution Principle - LSP): 하위 타입은 상위 타입으로 치..

IT 2023.12.19

Chrome 주요 단축키 모음 ( Windows, MAC )

옛날 IT 업종에서 일하신 분들이나 업계에서 높은 위치에 있으신 분들은 마우스 쓰시는 걸 불편해하시는 것 같다 .. 나는 게임을 많이해서 그런가 마우스 쓰는게 불편하지 않지만 IT 업계에 있으면서 마우스로 딸깍 딸깍 거리는걸 보는게 불편한 듯 하다 .. 나에게 자주 해주시는 두 가지의 말씀이 있는데 야근을 하는 이유는 일이 정말 많거나 일을 비효율적으로 하고 있거나이다. 마우스 움직이는 시간 1초를 모으면 1분이 되고 그 1분이 1시간이 되고 그 1시간이 하루가 돼서 하루를 절약해 업무를 효율적으로 할 수 있게 되는거다. 캬 .. 나는 정말 공감할 수 없는 말이었지만 .. 손에 익지도 않는 단축키를 쓰려고 노력하고 좀 익숙해 지니까 틀린말 하나 없더라 ㅎ 단축키가 너무 많아서 다 외우고 사용하지는 못하지..

IT 2023.12.01

[IT] Tree Shaking ? webPack ?

이번에 20년 가까이 프론트앤드 개발자님과 같이 밥먹으러 걸어가면서 이런저런 이야기를 하는데 나보고 Tree Shaking 을 아냐고 물어봤다. 너무 생소한 단어인데다가 처음 들어봐서 "잘 모르겠다. 처음들어본다." 라고 했는데 이게 생각보다 엄청 오래된 기술이더라 ... 근데 내가 어떤 언어로, 어떤 툴에서 개발을 하던 웹 개발을 하는 이상 알아둬야 한다는 것 같다. 어쨋든 먼저 webPack 을 살펴보면 webPack은 현대 JavaScript 애플리케이션을 위한 모듈 번들러 ( Module Bundler )이다. 주로 웹에서 사용되는 여러 자원들(JavaScript, 스타일, 이미지, 폰트 등)을 최적화하고 모듈 형태로 조합하여 하나 또는 몇 개의 번들 파일로 만드는 역할 로더 ( Loader )..

IT 2023.10.26

[IT] UDP • TCP • IP 는 무엇이고 차이점은 무엇일까 ?

클라우드 • 네트워크 쪽에서 일하는 친구가 나보고 갑자기 UDP 와 TCP 차이를 물어봤다. 그래서 전에 정보처리기사 공부했던 기억으로 UDP 가 빠른대신 보안이 약하고 TCP 가 보안이 강하지 않냐고 했더니 이번엔 TCP 랑 IP 차이를 물어봤다. 각각이 뭔지는 알겠는데 ... 차이를 모르겠더라 . 그래서 찾아봤다. TCP ( Transmission Control Protocol ) 컴퓨터가 다른 컴퓨터와 데이터를 통신하기 위한 규약 ( 프로토콜 ) 의 일종이다. 직역하면 전송 통제 규약 이란다 . ( 파파고 👍 ) 연결지향적으로 데이터 통신을 시작하기 전에 연결 설정 과정을 거친다. 신뢰성 있는 데이터 전송을 보장하고 , 순서대로 도착하고 손실되지 않도록 확인 재전송을 수행 흐름제어 ( Flow Co..

IT 2023.08.08