CSS 쌓임 맥락의 모든 것: Z-Index가 작동하지 않는 이유
·
Frontend Development
웹 개발을 하다 보면 z-index: 9999를 설정했는데도 요소가 원하는 위치에 쌓이지 않아 당황한 경험이 있을 것입니다. 이는 대부분 쌓임 맥락(Stacking Context)을 제대로 이해하지 못해서 발생하는 문제입니다. 오늘은 CSS에서 가장 헷갈리는 개념 중 하나인 쌓임 맥락을 완전히 정복해보겠습니다.쌓임 맥락이란? 3차원 공간의 이해기본 개념쌓임 맥락(Stacking Context)은 HTML 요소들이 가상의 Z축 상에서 어떻게 배치되는지를 결정하는 3차원 렌더링 개념입니다. 마치 투명한 유리판 여러 개를 겹쳐 놓은 것처럼, 각 요소가 어느 층에 위치할지를 정하는 규칙이라고 생각하면 됩니다.현실 세계 비유쌓임 맥락을 이해하기 위해 책상 위의 서류 더미를 생각해보세요:📄 최상위 서류 (Z-in..
JavaScript 매개변수 전달의 비밀: Call by Value와 참조의 모든 것
·
Frontend Development
JavaScript를 학습하다 보면 함수에서 매개변수가 어떻게 전달되는지에 대해 혼란을 겪는 경우가 많습니다. 특히 객체를 다룰 때 예상과 다른 결과가 나와서 당황하게 됩니다. 오늘은 JavaScript의 매개변수 전달 방식을 완전히 이해하고, 실무에서 활용할 수 있는 지식을 얻어보겠습니다.시작하기 전에: 문제 상황 분석먼저 다음 코드를 살펴보겠습니다.function change(a, b, c) { a = 'a changed' b = { b: 'changed' }; c.c = 'changed';}let a = 'a unchanged';let b = { b: 'unchanged' };let c = { c: 'unchanged' };change(a, b, c);console.log(a, b,..
Next.js Server Action: 서버와 클라이언트를 연결하는 새로운 방식
·
Frontend Development
Next.js의 App Router와 함께 등장한 Server Action은 풀스택 개발의 패러다임을 바꾸고 있습니다. 기존의 API Route를 거치지 않고도 서버 로직을 클라이언트에서 직접 호출할 수 있는 이 혁신적인 기능에 대해 자세히 알아보겠습니다.Server Action이란?기본 개념Server Action은 Next.js 13.4 버전부터 도입된 기능으로, 서버에서 실행되지만 클라이언트에서 직접 호출할 수 있는 비동기 함수입니다. 마치 클라이언트 함수를 호출하는 것처럼 간단하게 서버 로직을 실행할 수 있어, 개발자 경험을 크게 향상시킵니다.기존 방식과의 차이점기존 방식: API Route 사용// pages/api/create-review.ts (기존 방식)export default async..
의존성 주입(Dependency Injection): 유연하고 테스트 가능한 코드 만들기
·
Backend Development
소프트웨어 개발에서 코드의 유연성과 테스트 가능성을 높이는 핵심 개념 중 하나가 바로 의존성 주입(Dependency Injection)입니다. 객체지향 프로그래밍의 SOLID 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)을 실현하는 이 패턴에 대해 자세히 알아보겠습니다.의존성 주입이란?기본 개념의존성 주입(Dependency Injection, DI)은 한 객체가 다른 객체를 직접 생성하지 않고, 외부에서 필요한 객체를 주입받아 사용하는 디자인 패턴입니다. 마치 요리사가 직접 재료를 구매하러 가지 않고, 누군가가 미리 준비한 재료를 받아서 요리하는 것과 같습니다.의존성이란?코드에서 의존성(Dependency)은 한 클래스가 다른 클래스를 사용하는 관계를 의미..
네트워크 IP 할당의 모든 것: 정적 IP vs 동적 IP, 무엇을 선택해야 할까?
·
Backend Development
네트워크 관리를 하다 보면 호스트에게 IP 주소를 어떻게 할당할지 결정해야 합니다. 정적 IP와 동적 IP, 두 방식 모두 장단점이 있어 상황에 따라 적절한 선택이 필요합니다. 오늘은 두 방식의 차이점과 DHCP 동작 원리까지 자세히 알아보겠습니다.IP 주소 할당 방식의 기본 개념정적 IP 할당 (Static IP Assignment)정적 IP 할당은 관리자가 수동으로 각 호스트에 고정된 IP 주소를 설정하는 방식입니다. 한 번 설정하면 호스트를 재시작하거나 네트워크에 재연결해도 동일한 IP 주소를 유지합니다.정적 IP 설정에 필요한 정보# Linux에서 정적 IP 설정 예시sudo ip addr add 192.168.1.100/24 dev eth0 # IP 주소와 서브넷 마스크sudo ip rou..
CSS 위치 조정: Transform vs Position, 언제 무엇을 써야 할까?
·
Frontend Development
프론트엔드 개발을 하다 보면 요소의 위치를 동적으로 변경해야 하는 경우가 자주 있습니다. 이때 CSS의 transform과 position 속성 중 어떤 것을 선택해야 할지 고민하게 됩니다. 오늘은 두 방식의 차이점과 각각의 적절한 사용 시나리오에 대해 알아보겠습니다.핵심 차이점: 성능과 문서 흐름Transform: 시각적 변환에 최적화transform 속성은 브라우저의 컴포지팅(Composite) 단계에서 처리됩니다. 이는 GPU 가속을 활용하여 처리되기 때문에 다음과 같은 장점이 있습니다:Reflow 없음: 문서의 레이아웃을 다시 계산하지 않음Repaint 최소화: 다른 요소들의 재그리기가 발생하지 않음GPU 가속: 하드웨어 가속을 통한 부드러운 애니메이션Position: 문서 흐름에 영향positi..
CORS 없이 SOP 우회하기: 프록시 서버를 활용한 스마트한 해결책
·
Frontend Development
문제 상황: CORS와 SOP의 딜레마웹 개발을 하다 보면 CORS(Cross-Origin Resource Sharing) 에러를 마주하게 됩니다. 이는 브라우저의 SOP(Same-Origin Policy) 보안 정책 때문인데, 서로 다른 도메인 간의 통신을 제한하는 중요한 보안 메커니즘입니다.SOP란?Same-Origin Policy는 웹 브라우저에서 실행되는 스크립트가 다른 출처(origin)의 리소스에 접근하는 것을 제한하는 보안 정책입니다. 여기서 출처(origin)는 다음 세 요소로 구성됩니다:프로토콜 (http, https)도메인 (example.com) 포트 (80, 443, 3000 등)// 같은 출처 예시https://example.com/page1https://example.com/p..
[백준 / 11728 / Python] 배열 합치기 최적화: 시간복잡도 O(N log N)에서 O(N)으로 개선하기
·
Algorithm/백준
알고리즘 문제를 풀다 보면 "동작은 하지만 더 효율적으로 할 수 있지 않을까?" 라는 생각이 들 때가 있습니다. 오늘은 백준 11728번 '배열 합치기' 문제를 통해 단순한 접근법에서 최적화된 해결책으로 발전하는 과정을 살펴보겠습니다.문제 분석문제 설명백준 11728번: 배열 합치기시간 제한: 1.5초메모리 제한: 256MB정답 비율: 46.789%문제 내용: 이미 정렬되어 있는 두 배열 A와 B가 주어질 때, 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성해야 합니다.입력 조건첫째 줄: 배열 A의 크기 N, 배열 B의 크기 M (1 ≤ N, M ≤ 1,000,000)둘째 줄: 배열 A의 내용 (정렬된 상태)셋째 줄: 배열 B의 내용 (정렬된 상태)배열 원소: 절댓값이 10⁹보다 작거나 같은 정수..
CSRF 공격과 방어 전략: 웹 보안의 핵심 이해하기
·
Backend Development
웹 개발을 하다 보면 반드시 마주치게 되는 보안 이슈 중 하나가 바로 CSRF(Cross-Site Request Forgery) 공격입니다. 특히 백엔드 개발자라면 이 공격 방식과 방어 전략을 정확히 이해하고 있어야 안전한 웹 애플리케이션을 만들 수 있습니다.CSRF 공격이란 무엇인가?사이트 간 요청 위조(Cross-Site Request Forgery, CSRF) 공격은 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하도록 하는 공격 방식입니다.쉽게 말해, 마치 은행에서 본인인척 하면서 다른 사람이 여러분의 계좌에서 돈을 인출하는 것과 같은 원리입니다. 사용자는 자신이 로그인한 상태를 악용당하게 되는 것이죠.CSRF 공격의 동작 원리1단계: 정상적인 로그인 과정사용자 → [..
JavaScript 프로토타입 상속: 객체 간 상속의 핵심 메커니즘 완전 정복
·
Frontend Development
자바스크립트를 공부하다 보면 프로토타입(Prototype)이라는 개념을 마주하게 됩니다. 클래스 기반 언어에 익숙한 개발자들에게는 다소 생소할 수 있지만, 프로토타입은 자바스크립트의 객체지향 프로그래밍을 이해하는 핵심 요소입니다. 오늘은 프로토타입 상속이 어떻게 동작하는지 자세히 알아보겠습니다.프로토타입이란 무엇인가?프로토타입은 자바스크립트에서 객체 간의 상속을 구현하는 메커니즘입니다. 마치 가족의 유전자처럼, 부모 객체의 특성을 자식 객체가 물려받을 수 있게 해주는 시스템이라고 생각하면 됩니다.자바스크립트의 모든 객체는 [[Prototype]]이라는 숨김 프로퍼티를 가지고 있습니다. 이 프로퍼티는 다른 객체를 참조하거나 null 값을 가질 수 있습니다.주요 특징모든 객체는 프로토타입을 가집니다프로토타입..