분류 전체보기 158

CORS 개요 및 동작 방식

CORS(교차 출처 리소스 공유, Cross-Origin Resource Sharing)는 웹 애플리케이션이 다른 출처의 리소스에 접근할 때 보안을 유지하면서 이를 허용할 수 있도록 해주는 중요한 웹 표준이다. 주로 동일 출처 정책(SOP, Same-Origin Policy)과 함께 설명된다.  동일 출처 정책(SOP, Same-Origin Policy)동일 출처 정책은 웹 보안 모델로 웹 페이지가 자신과 동일한 출처(origin)의 리소스에만 접근할 수 있도록 제한하는 방식이다. "출처"는 URL의 프로토콜, 도메인, 그리고 포트 번호로 정의되며 이 세 가지가 모두 동일해야만 "동일 출처"로 간주된다. SOP는 악의적인 사이트가 다른 출처의 중요한 데이터를 무단으로 가져가지 못하도록 하는 강력한 보안 ..

개발이론/Web 2024.10.16

JVM Stack & Heap

자바와 C/C++의 차이점C/C++은 네이티브 코드로 컴파일되며, 운영체제(OS)와 CPU 아키텍처에 맞게 컴파일된 코드만 특정 플랫폼에서 실행된다. 예를 들어 리눅스에서 컴파일된 C/C++ 프로그램은 윈도우에서 바로 실행되지 않는다. 따라서 각 플랫폼에 맞는 컴파일 과정이 필요하며 이를 "타겟 플랫폼 컴파일"이라고 한다.반면, 자바는 자바 소스 코드를 자바 컴파일러(javac)로 컴파일하면 운영체제에 의존하지 않는 바이트코드(Bytecode)가 생성된다. 이 바이트코드는 다양한 운영체제에서 실행될 수 있다. 이처럼 자바는 JVM(Java Virtual Machine)을 통해 플랫폼 독립성을 갖추게 된다.  JVM(Java Virtual Machine)의 역할자바 바이트코드는 JVM이라는 가상 머신에서 ..

개발이론/JAVA 2024.10.14

언젠가 우리가 같은 별을 바라본다면

언젠가 우리가 같은 별을 바라본다면차인표 지음 최근 딱딱한 프로그래밍 개발서적이나 자기계발서만 읽다보니 잠깐 한 권 정도는 편하게 읽을 만한 책을 고민하게 되었다.마침 베스트셀러로 계속 눈에 띄어 궁금했었고 저자가 "차인표" 배우라는 부분에서 흥미가 생겨 읽어 보게 되었다. 소설이라 천천히 여유있게 읽어볼 생각이었는데 읽기도 쉽고 몰입이 되어 거의 3시간만에 다 읽게 되었다.처음에는 잔잔하고 여유로운 배경과 등장인물의 묘사가 이루어졌고중간부터는 사건이 진행되면서 긴장감이 느껴졌고 마지막에는 안타까움으로 마무리 되었다. 이 책은 역사적 사실을 바탕으로 한 아름답고 안타까운 영화 같은 소설이다.결코 잊지 말아야할 역사에 대해 다시 되새기게 해주었고 용서라는 의미에 대해 다시 생각하게 해주었다. "용서를 빌지..

2024.10.12

원씽 (The One Thing)

"원씽" 은 우리가 삶과 일에서 진정으로 중요한 '한 가지'에 집중할 때 최고의 성과를 낼 수 있다는 메시지를 전달하고 있다. 시간 관리와 생산성에 대해 기존의 접근 방식에서 근본적인 변화가 필요함을 이야기하고 있으며 우리의 주의가 분산되는 현대 사회에서 무엇에 집중해야 할지를 고민하게 만드는 책이다. 핵심 메시지책에서 가장 중요한 주제는 '목적의식'과 '우선순위' 이다. 많은 일들을 조금씩 하는 것이 아니라 가장 중요한 한 가지에 집중해서 그 일에 아주 큰 성과, 결과를 얻는 것이 성공하는 방법이라고 표현하고 있다. 이 과정에서 도미노 효과 라는 개념을 소개하면서 집중해서 만든 하나의 성과가 다른 일들을 수월하고 또는 필요하지 않게 만들 것이며 이런 것들이 쌓여 결국 큰 목표를 이룰 수 있다는 점을 설..

2024.10.06

요즘 우아한 개발

요즘 우아한 개발 이란 책은 우아한형제들(배달의민족)의 실무 경험을 바탕으로 한 인사이트를 담은 책이다. 이 책은 주니어 및 중급까지 폭넓은 범위의 개발자들을 대상으로 하고 있으며 실제 업무에서 겪는 다양한 문제 상황과 이를 해결하기 위한 경험 등을 상세하게 이야기 하고 있다. 주요 포인트실무 중심의 내용 : 단순한 이론서가 아닌 실무에서 겪을 수 있는 다양한 경험을 기반으로 한 내용이라 실제 프로젝트에서 적용할 수 있는 팁과 노하우가 많이 작성되어 있고 그동안 우아한형제들에서 있었던 경험을 생생하게 엿볼 수 있었다.개발 문화와 협업 관련 내용 : 기술적인 내용뿐만 아니라 개발자 간의 협업, 코드리뷰, 테스트 작성 등 개발 문화에 대한 이야기도 깊이 다루고 있다. 다양한 개발 문화를 이해하고 싶은 사람들..

2024.10.01

육각형 개발자

최범균 저자의 육각형 개발자 라는 책은 소프트웨어 개발자가 어떻게 지속적으로 성장하고 자기계발을 할 수 있을지 고민에 대한 해답, 힌트를 얻을 수 있는 책이다.이 책에서 개발자는 기술적 역량뿐만 아니라 비기술적 역량, 인간관계, 커뮤니케이션 능력, 문제 해결 능력 등 다양한 측면에서 갖춰야할 역량을 육각형 이라는 도형으로 비유하여 설명하고 있다. 이 책에서 다루는 내용효율적으로 기술을 학습하고 적용하는 방법소프트웨어 가치를 이해하고 유지보수 비용을 낮추는 방법이해하기 좋은 코드를 작성하는 법높은 응집도와 낮은 결합도 원칙으로 설계하는 방법변경 비용을 낮추는 기본적인 리펙터링 기법테스트 코드의 중요성과 자동화된 테스트, TDD의 필요성아키텍처의 중요성과 패턴의 유용함업무 전반을 관리하기 위해 필요한 내용협..

2024.10.01

JVM의 Garbage Collector 정리

JVM과 Garbage Collector (GC) 개요JVM (Java Virtual Machine)자바 애플리케이션이 실행되는 가상 머신 환경메모리 관리와 GC를 통해 프로그램의 효율적 메모리 사용을 보장Garbage Collector (GC):힙(Heap) 메모리에서 더 이상 참조되지 않는 객체(가비지)를 자동으로 식별하고 제거하여 메모리 누수를 방지하고 메모리 자원을 재사용 가능하게 함GC는 수동 메모리 관리의 번거로움과 오류 가능성을 줄여줌   JVM 메모리 구조Heap 메모리 : 프로그램에서 생성된 객체가 저장되는 영역으로 크게 Young Generation과 Old Generation으로 나뉨Young GenerationEden 영역 : 새로운 객체가 최초로 생성되는 영역Survivor 영역 ..

개발이론/JAVA 2024.09.24

Latency와 Bandwidth의 정의 및 관계

Latency(지연 시간)와 Bandwidth(대역폭)는 네트워크 성능을 측정하는 데 중요한 두 가지 요소이다. 이 둘은 서로 밀접하게 관련되어 있지만 각각 다른 측면을 나타낸다.Latency (지연 시간)정의 : 데이터가 한 지점에서 다른 지점으로 전송되는 데 걸리는 시간이다. 단위는 일반적으로 밀리초(ms)로 표현된다.예시 : 웹사이트에서 버튼을 클릭했을 때 화면이 변화하거나 정보가 표시되기까지 걸리는 시간영향 요소 : 물리적인 거리, 네트워크 장비의 성능, 데이터 처리량, 네트워크 혼잡 등이 지연 시간에 영향을 미친다.Bandwidth (대역폭)정의 : 네트워크에서 일정 시간 동안 전송할 수 있는 최대 데이터 양을 의미한다. 보통 초당 메가비트(Mbps)나 기가비트(Gbps)로 표현된다.예시 : 가..

개발이론/CS 2024.09.20

TLS(Transport Layer Security)

TLS의 도입 배경네트워크 통신에서 TLS가 도입된 이유는 기존의 네트워크 프로토콜들이 다음과 같은 여러 가지 보안 문제를 가지고 있기 때문이다. 데이터 도청 (Eavesdropping)네트워크 상의 데이터를 전송하는 동안 그 데이터는 중간에 있는 라우터, 스위치, 네트워크 장비들을 거쳐간다. 이러한 장비들에서 데이터를 쉽게 볼 수 있으며 누구나 데이터를 훔쳐볼 수 있다예를 들어, 패킷을 중간에서 감청하여 사용자의 로그인 정보나 개인 정보를 얻을 수 있다위장 공격 (Man-in-the-Middle Attack)공격자가 중간에 위치하여 사용자와 서버 간의 통신을 가로채고 사용자가 원하는 대상 서버인 척하면서 데이터를 주고받는 공격이다이로 인해 사용자는 자신이 신뢰하는 서버와 통신한다고 생각하지만 실제로는 ..

개발이론/Web 2024.09.19

Forward Proxy와 Reverse Proxy의 차이

프록시(Proxy) 서버의 기본 개념프록시 서버는 클라이언트와 서버 사이에서 중계기 역할을 하며, 클라이언트의 요청을 받아 서버에 전달하고 서버의 응답을 다시 클라이언트에게 전달하는 역할을 한다.프록시 서버는 캐시를 통해 자원을 관리하고 클라이언트의 요청과 응답을 확인하여 데이터 조작이 가능하다.프록시 서버는 네트워크 트래픽을 줄이고 응답 속도를 향상시키며 보안성과 익명성을 제공한다.  포워드 프록시 (Forward Proxy)포워드 프록시는 클라이언트가 서버에 직접 연결하지 않고 프록시 서버를 통해 요청을 전달하는 방식주요 기능 및 특징클라이언트의 대리자 : 클라이언트의 요청을 대신 서버로 전달하고 서버의 응답을 받아 클라이언트에게 전달합니다. 클라이언트의 IP 주소를 숨기기 때문에 익명성이 보장된다캐..

개발이론/Web 2024.09.19

MVC(Model-View-Controller) 패턴

MVC 패턴의 개념Model (모델)애플리케이션의 핵심 데이터와 비즈니스 로직을 담당한다. 데이터베이스와 상호작용하며 데이터를 가져오고 수정하는 기능을 수행한다. 이를 통해 애플리케이션의 상태를 관리한다.스프링에서 @ModelAttribute나 Entity 클래스를 사용해 모델을 정의한다.View (뷰)사용자가 볼 수 있는 화면이다. HTML, JSP, Thymeleaf 같은 템플릿 엔진을 사용하여 데이터를 사용자에게 시각적으로 제공하는 역할을 한다.모델에서 전달된 데이터를 기반으로 사용자 인터페이스를 렌더링한다. Controller (컨트롤러)사용자의 입력을 받아 적절한 비즈니스 로직을 호출하고 결과를 모델에 반영하며 그 결과를 뷰로 전달하는 역할을 한다.스프링에서는 @Controller나 @RestC..

개발이론/Spring 2024.09.13

HTTP 요청-응답 흐름의 개요

웹에서 브라우저와 서버 간의 통신은 HTTP(하이퍼텍스트 전송 프로토콜)를 통해 이루어진다. 이 과정에서 클라이언트(주로 브라우저)가 서버에 특정 요청(Request)을 보내고 서버는 해당 요청을 처리한 후 응답(Response)을 클라이언트에게 반환하는 방식으로 동작한다. 이 흐름은 웹 애플리케이션의 기본 작동 원리로 사용자가 URL을 입력하거나 버튼을 클릭할 때마다 발생한다.   요청(Request) 과정URL 해석 : 브라우저는 사용자가 입력한 URL(Uniform Resource Locator)을 해석하여 요청할 자원의 위치를 파악한다. URL은 다음과 같은 요소들로 구성되어 있다.프로토콜(예: http, https) : 통신 규칙을 정의도메인(예: www.example.com) : 서버의 위치를..

개발이론/Web 2024.09.12

Process와 Thread

프로세스와 프로그램의 차이프로그램은 디스크에 저장된 명령어 집합프로세스는 프로그램이 실행되어 메모리에 올라간 상태운영체제는 PCB(Process Control Block)를 통해 프로세스를 관리하며, PCB에는 프로세스 ID, 상태, 스케줄링 정보 등이 담겨 있다.  스레드(Thread)스레드는 프로세스 내에서 실행 흐름의 최소 단위하나의 프로세스는 여러 개의 쓰레드를 가질 수 있고, 이를 멀티스레드라고 한다쓰레드는 같은 메모리 공간(코드, 데이터, 힙)을 공유하지만 스택은 각 쓰레드마다 독립적으로 사용한다 멀티스레드 vs 멀티프로세스멀티스레드 : 하나의 프로세스에서 여러 쓰레드가 자원을 공유하면서 동시에 작업을 수행한다. 성능은 빠르지만 자원 공유로 인해 동기화 문제가 발생할 수 있습니다. 이를 해결하..

개발이론/CS 2024.09.11

Hash Function

자료 구조의 필요성프로그래밍에서는 데이터를 효율적으로 저장하고 검색하는 것이 매우 중요하다. 데이터를 저장할 때 적절한 자료 구조를 선택해야만 검색 및 처리 속도를 향상시킬 수 있다.배열과 리스트는 직관적인 자료 구조이지만 데이터의 크기가 커지면 특정 데이터를 찾는 데 걸리는 시간이 데이터 양에 비례해서 증가하는 단점이 있다. 이때 대안으로 트리(Tree)나 해시 테이블(Hash Table) 같은 자료 구조가 필요하다. 트리(Tree) 구조트리 자료 구조, 특히 레드-블랙 트리와 같은 균형 이진 트리는 검색과 삽입 작업에서 O(log n)의 시간 복잡도를 가진다. 이는 배열의 선형 탐색 O(n)보다 효율적이다.트리를 사용하면 많은 데이터에도 불구하고 성능이 어느 정도 보장되지만 데이터의 양에 따라 성능 ..

API vs Library vs Framework

API, 라이브러리, 프레임워크는 소프트웨어 개발에서 자주 사용되는 용어이지만, 각 개념은 서로 다른 역할과 특징을 가지고 있다. 이 세 가지를 이해하는 것은 개발자에게 매우 중요한데, 각 개념을 일반적인 지식과 함께 쉽게 살펴보겠다. API (Application Programming Interface)API는 두 프로그램이 서로 소통할 수 있도록 해주는 인터페이스이다. 쉽게 말해, 프로그램들이 특정 기능을 요청하고 그에 대한 응답을 받는 방식으로 동작하는 '다리'라고 볼 수 있다.예시지도를 활용한 서비스를 만들고 싶다면, 직접 지도를 개발하는 대신, 구글 맵 API와 같은 서비스를 통해 지도를 불러올 수 있다. API를 통해 다른 프로그램의 기능을 사용할 수 있기 때문에 개발자는 시간을 절약하고 보다..

개발이론/Web 2024.09.09
반응형