MIME미디어 타입 (Multipurpose Internet Mail Extensions 또는 MIME type로도 알려져 있음)이란 문서, 파일 또는 바이트 집합의 성격과 형식을 나타낸다. MIME 타입은 IETF의 RFC 6838에 정의 및 표준화되어 있다.브라우저는 '파일 확장자가 아닌' MIME 타입을 사용하여 URL 처리 방법을 결정한다. 따라서, 웹 서버가 응답의 Content-Type 헤더에 올바른 MIME 타입을 보내는 것이 중요하다. 올바르게 구성하지 않으면, 브라우저가 파일 내용을 잘못 해석할 가능성이 높고, 사이트가 제대로 작동하지 않고 다운로드한 파일이 잘못 처리될 수 있다. MIME의 구조type/subtype;parameter=value일반적으로 /으로 구분된 type과 subt..
개발
MySQL 날짜 데이터 타입MySQL에서 지원하는 주요 날짜 및 시간 데이터 타입은 아래와 같다.DATE: 날짜 (연-월-일)TIME: 시간 (시:분:초)DATETIME: 날짜와 시간TIMESTAMP: 날짜와 시간 (자동 초기화 및 갱신 기능 있음)YEAR: 연도 (4자리 또는 2자리)2자리 연도의 경우 아래와 같은 규칙으로 처리된다.70~99: 1970~199900~69: 2000~2069SQL 모드에 따른 유효성 제어ALLOW_INVALID_DATES: 잘못된 날짜도 허용 (예: 11월 31일)NO_ZERO_IN_DATE: 월 또는 일이 0인 날짜 거부 (예: 2024-00-12)NO_ZERO_DATE: '0000-00-00' 같은 “zero” 날짜 거부SUM(), AVG() 같은 집계 함수는 시간 ..
레디스를 캐시로 활용할 때 모든 키에 대해 만료 시간을 설정하는 것은 권장되지만, 대규모 트래픽 환경에서 만료 시간을 어떻게 설정하느냐에 따라 캐시 스탬피드와 같은 예상치 못한 문제 상황이 발생할 수 있다. 레디스에서 특정 키가 만료되는 시점을 생각해 보자. 만약 여러 개의 애플리케이션에서 바라보던 키가 레디스에서 만료돼 삭제된다면 이 서버들은 한꺼번에 데이터 베이스에 가서 데이터를 읽어오는 과정을 거친다. 이를 중복 읽기라고 한다. 이후 각 애플리케이션에서 읽어온 데이터를 레디스에 쓰게 되는데, 이 또한 여러 번 반복되기 때문에 중복 쓰기가 발생한다. 일반적으로 정렬이나 카운팅처럼 데이터베이스에서 쿼리하는 데 오랜 시간이 걸리는 작업을 미리 계산해서 캐시에 저장해 두기 때문에, 캐시에 데이터가 없는 경..
브라우저가 서버에 파일을 요청할 때 웹서버와 아래와 같이 대화한다.브라우저가 요청을 보낸다. (1KB)웹 서버가 요청에 대한 파일을 찾는다.서버가 파일을 읽고 응답한다. (100KB)브라우저가 페이지를 보여준다.100KB 텍스트는 너무 많고 HTML에는 , , 와 같은 동일한 클로징 태그가 문서 전체에 걸쳐 반복된다. 이렇게 파일이 너무 큰 경우에 사용할 수 있는 방법이 압축이다. 일반적인 파일 대신 .zip 파일을 브라우저에 보낼 수 있다면 대역폭과 다운로드 시간을 절약할 수 있다. 브라우저는 압축된 파일을 다운로드하고 압축을 푼 다음 사용자에게 표시할 수 있으며, 사용자는 페이지가 빠르게 로드되는 경험을 할 수 있다.압축을 진행하는 경우 브라우저와 웹서는 아래와 같이 요청을 처리한다.브라우저가 요청을..
다대다(M:N) 관계란 두 개의 엔티티 A와 B 사이의 관계를 의미하며, A의 하나의 인스턴스가 B의 여러 인스턴스와 관계될 수 있고, 반대로 B의 하나의 인스턴스도 A의 여러 인스턴스와 관련될 수 있는 관계를 말한다.RDBMS에서는 이런한 관계를 구현할 때 보통 연관 테이블을 사용한다. 이 테이블은 아래와 같은 이름으로 불리기도 한다.조인 테이블연결 테이블교차 테이블 예를 들어 AB라는 연관 테이블을 만든다면 A -> AB, B -> AB 이렇게 두 개의 일대다(1:N) 관계로 다대다 관계를 풀어낸다. 이 경우 AB 테이블의 논리적 기본 키는 A와 B의 외래 키 두 개로 구성된다. 다대다 관계 문제중복 데이터와 정합성다대다 관계를 중간 테이블 없이 직접 모델링하면, 동일한 정보가 여러 테이블 또는 행에..
선언형 프로그래밍선언적 프로그래밍은 흔히 명령형이 아닌 모든 프로그래밍 스타일로 정의된다. 다른 많은 일반적인 정의는 명령형 프로그래밍과 단순히 대조하여 선언형 프로그래밍을 정의하려고 시도한다. 예를 들어계산이 수행해야 하는 작업을 설명하는 고수준 프로그램이다부작용이 없는(또는 더 구체적으로 말하면 참조적으로 투명한) 모든 프로그래밍 언어수학적 논리에 명확하게 대응하는 언어 선언적 프로그래밍은 프로그램이 수행해야 하는 명령이나 단계(How do)를 명시적으로 나열하지 않고 원하는 결과(What do)를 설명하는 비명령형 프로그래밍 스타일이다. 함수형 및 논리 프로그래밍 언어는 선언적 프로그래밍 스타일이 특징이다. 논리 프로그래밍에서 프로그램은 논리적 형식으로 표현된 문장으로 구성되며, 계산은 이러한 문장..