기술 블로그
웹과 앱을 만들며 남긴 기록 447편입니다.
M4 Mac mini구매 기념 MySQL 설치 가이드를 작성하게 됐습니다~ macOS 환경에서는 Homebrew를 이용해 MySQL과 MySQL Workbench를 설치하는 것이 가장 깔끔하고 효율적입니다. 터미널을 열고 명령어만 몇번 입력하면 설치 후 쉽게 사용할 수...
TypeScript 프로젝트에서 @typescript-eslint/no-explicit-any 린트 에러는 단순 규칙 비활성화로 해결할 문제가 아닙니다. 눈 앞 문제는 해결할 수 있지만, TypeScript를 사용하는 가장 중요한 이유를 위배하게 됩니다. any 타입은...
CorsFilter는 다른 출처(도메인, 프로토콜, 포트)의 프론트엔드 애플리케이션이 백엔드 API와 원활하게 통신할 수 있도록 보안 정책을 적용하는 핵심 구성요소입니다. 주요 기능 CORS 헤더 자동 적용 : 모든 HTTP 응답...
Redis는 영어랑 숫자만 취급해야할까요? 정답은 "아닙니다." 하지만 실무에서는 영어와 숫자만 사용하는 게 좋습니다. 코드를 작성할 때 영어로 작성하는 걸 보면 당연한 결과일 수 있지만 이유를 살펴보겠습니다. Redis는 키는 사실 다 됩니다. UTF-8 완벽 지원 ...
JPA Auditing은 Spring Data JPA에서 제공하는 기능으로, 엔티티가 생성되고 수정될 때 생성일, 수정일, 생성자, 수정자 와 같은 공통 필드를 자동으로 관리해줍니다. 주요 기능 및 이점 코드 간소화 : @PrePersist , @PreUpdate 어노...
jackson-datatype-jsr310은 JSON 데이터와 Java 객체 간 변환을 담당하는 Jackson 라이브러리 확장 모듈입니다. 날짜 및 시간 API (JSR-310)을 Jackson이 올바르게 처리할 수 있도록 지원하는 핵심 기능을 제공합니다. 무슨 기능이...
카테고리 구분을 모호하게 만들어, Docker와 직접적인 관련은 없지만 해당 글을 Docker 카테고리에 작성하게 되었습니다. Colima 인스턴스의 기본 리소스 설정(CPU, Ram, 디스크)를 설명하고, 사용자가 이 설정을 필요에 따라 커스터마이징 할 수 있습니다....
문제 발생 docker ps 또는 docker-compose ps 명령어를 입력했을 때 error during connect: ... EOR 메시지가 나온다면, 이는 Docker Client가 Colima에서 실행 중인 Docker(엔진)에 정상적으로 연결되지 못했음을...
Spring Boot에서 Redia를 쉽게 연동하고 활용할 수 있도록 돕는 spring-boot-starter-data-redis의존성에 대해 사용 방법을 작성해봤습니다. spring-boot-starter-data-redis란? Spring Boot 환경에서 Redi...
Enum은 사실 백엔드 개발에만 국한된 개념이 아닙니다. 프론트엔드에서도 TypeScript의 enum이나 JavaScript의 Object.freeze()를 활용한 상수 관리 등 비슷한 패턴을 많이 사용하죠. 하지만 이번 글은 Java 학습 과정에서 정리한 내용이라 ...
코드를 작성하다 보면 주석을 남기는 경우가 많습니다. 하지만 JSP 환경에서 어떤 주석을 사용하냐에 따라 보안 수준과 성능 이 크게 달라집니다. 표준 주석: 서버 사이드 주석 <%-- --%> JSP 페이지 내 개발 관련 주석은 <%-- --%> 를 사용하는게 좋습니다...
'302 에러'는 에러라기보다는 웹사이트의 특정 페이지가 다른 주소로 이동했음 을 알려주는 HTTP 상태 코드(Status Code)입니다. 정확한 명칭은 302 Found 또는 302 Moved Temporarily 입니다. 사용자가 특정 URL에 접속을 시도했을 때...
Linux 및 macOS 환경에서 .zip 압축 파일을 명령어 기반으로 해제하는 방법입니다. 요약 작업 명령어 기본 압축 해제 unzip file.zip 폴더 지정 unzip file.zip -d /some/path/ 강제 덮어쓰기 unzip -o file.zip 파일...
CI/CD가 없는 폐쇄망 환경에서 버전을 관리하거나, 간단한 백업 스크립트를 작성할 때 폴더 압축으로 관리하고 있습니다. 아래는 리눅스 기본 압축 명령어입니다. 가장 많이 쓰이는 tar.gz 와 zip 형식을 중심으로, 터미널에서 폴더를 쉽고 빠르게 압축하는 명령어를 ...
System.out.println 사용 금지 문제점: System.out 을 사용한 출력은 동기식(Synchronous)으로 작동하여, 트래픽이 집중될 경우 시스템 전반의 병목 현상을 유발하고 성능 저하의 직접적인 원인이 됩니다. 권장사항: 모든 서버 로그는 반드시 로...
두 개의 백엔드 서버(8080, 8090)를 운영하면서, 요청 경로에 따라 적절한 서버로 요청을 분기(route) 시키는 방법 예시) 사용 중인 api.test.com 도메인에서 /service1 요청은 8090 포트 로 전달 /service0 요청은 8080 포트 로...
웹 서비스 글로벌 진출이 보편화되면서, 국제화(i18n) 관련 라이브러리가 많이 출시됐습니다. 많이 사용되고, 커뮤니티에서 평가가 좋은 언어 번역 라이브러리를 정리했습니다. 인기 번역 라이브러리 1. react-i18next 설명 : React 프로젝트에서 가장 널리 ...
SSH와 SFTP 클라이언트는 원격 서버에 접속하고 파일을 전송하는 도구로, Git과 같은 버전 관리 시스템과는 기능적으로 다르지만 개발 및 배포 워크플로우에서 Git과 SSH/SFTP를 함께 사용하기 때문에 Git(버전 관리 시스템) 카테고리에 작성하였습니다. 서버에...
어떤 경우에 CORS 문제가 발생하나요? 프론트엔드: https://test.com (React, Next.js 등) 백엔드 API: https://api.test.com (Spring Boot) 서로 다른 서브도메인이라도 브라우저 기준에서는 cross-origin 으...
메뉴 및 정보 구조 설계 시, 사용자 경험(UX)를 고려한 적정 Depth(계층 구조)의 기준과 Depth가 깊어졌을 때 문제점과 해결 방안에 대해서 생각한 방법입니다. 특히 정보량이 많은 웹앱에 적합한 기준과 설계 방향에 대해서 생각했습니다. Depth란 무엇인가? ...