개발 & IT/백엔드 (48) 썸네일형 리스트형 MySQL 타임존 SYSTEM 설정과 UTC 저장 문제 해결하기 MySQL 쓰다 보면 SELECT @@global.time_zone, @@session.time_zone; 결과가 SYSTEM으로 나오는데, 막상 DB에 저장된 TIMESTAMP 값을 보면 UTC 기준으로 들어가 있는 당황스러운 상황, 겪어보셨나요?오늘은 이 문제의 원인과 해결 방법을 차근차근 정리해볼게요!먼저 알아야 할 것: TIMESTAMP vs DATETIMEMySQL의 TIMESTAMP는 좀 특별해요.내부적으로 UTC로 저장조회할 때 세션의 time_zone 기준으로 변환되어 표시됨반면 DATETIME은?변환 없이 입력한 값 그대로 저장단순하게 "보이는 시간"만 맞추고 싶다면 DATETIME도 방법!-- TIMESTAMP는 UTC로 저장 후 세션 타임존으로 변환CREATE TABLE test ( .. Sequelize vs Prisma: Node.js ORM 비교 분석 Node.js 생태계에서 가장 많이 사용되는 두 ORM인 Sequelize와 Prisma를 비교합니다. 두 도구는 근본적으로 다른 철학과 접근 방식을 가지고 있습니다.핵심 요약Sequelize: 모델 클래스를 직접 작성 (Active Record 패턴)Prisma: Schema 파일만 작성 → 코드 자동 생성 (Schema-first 접근)Trade-off: - Prisma: 자동화, 타입 안전성 우선- Sequelize: 유연성, 레거시 지원, 큰 커뮤니티Sequelize의 모델 정의 방식Sequelize는 Laravel의 Eloquent처럼 모델 클래스를 직접 작성하는 방식입니다.파일 구조project/├── models/│ ├── User.js│ ├── Post.js│ └── Catego.. Prisma로 Next.js 블로그 만들기: 데이터베이스 설정부터 마이그레이션까지 PostgreSQL과 Next.js로 블로그를 만들면서 Prisma ORM을 처음 도입하게 되었습니다. MySQL을 주로 사용하던 입장에서 새로운 도구를 배우는 과정에서 겪은 시행착오와 해결 방법을 공유합니다.Prisma가 뭔가요?Prisma는 Node.js와 TypeScript를 위한 차세대 ORM(Object-Relational Mapping) 도구입니다. 기존의 SQL 쿼리를 직접 작성하는 방식에서 벗어나, 타입 안전성을 보장하면서도 직관적인 방식으로 데이터베이스를 다룰 수 있게 해줍니다.왜 Prisma를 선택했나?기존에 Laravel의 Eloquent ORM과 비슷하지만, TypeScript 지원이 훨씬 뛰어납니다:타입 안전성: 데이터베이스 스키마에서 자동으로 TypeScript 타입 생성직관적인.. Let's Encrypt 인증서 자동 갱신 완벽 가이드 들어가며Let's Encrypt 인증서는 90일마다 만료되기 때문에 자동 갱신 설정이 필수입니다. 다행히 Ubuntu/Debian에서 certbot을 apt로 설치하면 자동 갱신이 패키지에 포함되어 있습니다.certbot 패키지에 포함된 자동 갱신 기능sudo apt install certbot python3-certbot-nginx이 명령어 하나로 다음이 자동으로 설치되고 활성화됩니다:1. systemd timer (스케줄러)# 자동 갱신 타이머 확인sudo systemctl status certbot.timer● certbot.timer - Run certbot twice daily Loaded: loaded (/usr/lib/systemd/system/certbot.timer; enabled.. nginx SSL 설정 중 만난 DNS 캐시 트러블슈팅 문제 상황여러 도메인(example.com, example.kr, example.net)을 운영하는 nginx 서버에 SSL을 적용하던 중, 한 가지 이상한 현상을 발견했습니다.# 각 도메인 테스트 결과curl -I http://example.com# HTTP/1.1 200 OK# Server: nginx/1.24.0 (Ubuntu)curl -I http://example.kr# HTTP/1.1 200 OK# Server: nginx/1.24.0 (Ubuntu)curl -I http://example.net# HTTP/1.1 200 OK# Server: Apache ← 🚨 왜 Apache?example.net만 유독 Apache 서버를 반환하고 있었습니다. 브라우저에서는 about:blank#bloc.. apt autoremove란? 리눅스 패키지 관리의 숨은 조력자 apt remove vs apt autoremove리눅스에서 패키지를 제거할 때 이런 명령어를 본 적 있으신가요?sudo apt remove [패키지명]sudo apt autoremove왜 remove 다음에 autoremove를 또 실행할까요? 이 두 명령어의 차이를 알아보겠습니다.의존성 패키지란?리눅스에서 프로그램을 설치할 때는 그 프로그램 하나만 설치되는 게 아닙니다. 프로그램이 동작하는 데 필요한 다른 패키지들도 함께 설치됩니다. 이것을 "의존성 패키지(dependency packages)"라고 부릅니다.예시Node.js를 설치한다고 가정해볼까요?nodejs 설치 시 함께 설치되는 것들:├── libuv1├── libnode72├── libssl└── 기타 라이브러리들이런 의존성 패키지들은 Nod.. MySQL vs PostgreSQL, 뭘 선택해야 할까? 완벽 비교 가이드 프로젝트를 시작할 때 가장 먼저 고민하게 되는 것 중 하나가 바로 데이터베이스 선택입니다. 특히 관계형 데이터베이스(RDB)를 사용하기로 했다면 MySQL과 PostgreSQL 사이에서 고민하게 되는데요.오늘은 두 데이터베이스의 차이점을 실제 사용 경험을 바탕으로 상세히 비교해보겠습니다!🎯 한눈에 보는 비교특징 MySQL PostgreSQL철학빠르고 간단하게정확하고 표준대로속도단순 읽기 빠름 ⚡복잡한 쿼리 빠름 💪학습 난이도쉬움 📚보통 📖확장성제한적매우 유연적합한 프로젝트간단한 웹사이트, 블로그복잡한 비즈니스 로직대표 사용 기업Facebook, YouTubeInstagram, Netflix🔍 주요 차이점 상세 비교1. 데이터 타입의 다양성MySQL - 기본에 충실MySQL은 일반적으로 필요한 데.. Laravel Queue Worker 완벽 가이드: 비동기 작업 처리의 핵심 웹 애플리케이션을 개발하다 보면 시간이 오래 걸리는 작업들을 만나게 됩니다. 이메일 발송, 이미지 처리, 데이터 분석, 외부 API 호출 등이 대표적인 예시죠. 이런 작업들을 동기적으로 처리하면 사용자는 오랫동안 기다려야 하고, 최악의 경우 브라우저 타임아웃이 발생할 수도 있습니다.Laravel Queue Worker는 이러한 문제를 해결하는 강력한 도구입니다. 오늘은 Laravel Queue Worker의 개념부터 설정, 작동 방식까지 자세히 알아보겠습니다.Queue Worker란 무엇인가?Queue Worker는 큐에 쌓인 작업(Job)들을 백그라운드에서 순차적으로 처리하는 프로세스입니다. 마치 은행의 번호표 시스템과 같다고 생각하면 됩니다. 고객(사용자 요청)이 번호표(Job)를 뽑고, 창구 직원(.. 이전 1 2 3 4 ··· 6 다음