분류 전체보기
-
문제 상황Laravel에서 SMTP로 메일 발송 시 다음 오류가 발생했다.Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed원인 분석먼저 메일 서버 인증서 상태를 확인했다.openssl s_client -starttls smtp -connect office.example.co.kr:25 -servername office.example.co.kr 2>&1 | grep -E "(Verify return code|verify error)"결과:ver..
Laravel - Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed 에러 해결문제 상황Laravel에서 SMTP로 메일 발송 시 다음 오류가 발생했다.Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed원인 분석먼저 메일 서버 인증서 상태를 확인했다.openssl s_client -starttls smtp -connect office.example.co.kr:25 -servername office.example.co.kr 2>&1 | grep -E "(Verify return code|verify error)"결과:ver..
2026.02.05 -
기본 명령어# 특정 호스트의 주요 포트 스캔 (1000개 포트)nmap 192.168.1.1# 특정 포트만 스캔nmap -p 80,443,3306 192.168.1.1# 포트 범위 스캔nmap -p 1-65535 192.168.1.1# 서비스 버전 확인nmap -sV -p 80,443 192.168.1.1옵션 설명# === 포트 지정 ===-p 80 # 80번 포트만 검사 (nginx/apache 확인할 때)-p 80,443,3306 # 여러 포트 동시 검사 (웹+DB 서버 확인)-p 1-1000 # 1번부터 1000번까지 순서대로 검사-p- # 1~65535번 전부 검사 (시간 오래 걸림)-p U:53,T:80 # UD..
Linux - nmap 포트 스캔기본 명령어# 특정 호스트의 주요 포트 스캔 (1000개 포트)nmap 192.168.1.1# 특정 포트만 스캔nmap -p 80,443,3306 192.168.1.1# 포트 범위 스캔nmap -p 1-65535 192.168.1.1# 서비스 버전 확인nmap -sV -p 80,443 192.168.1.1옵션 설명# === 포트 지정 ===-p 80 # 80번 포트만 검사 (nginx/apache 확인할 때)-p 80,443,3306 # 여러 포트 동시 검사 (웹+DB 서버 확인)-p 1-1000 # 1번부터 1000번까지 순서대로 검사-p- # 1~65535번 전부 검사 (시간 오래 걸림)-p U:53,T:80 # UD..
2026.01.22 -
개요서버 작업을 하다 보면 DB 덤프를 떠야 하는 상황이 자주 생긴다.로컬 서버, 원격 서버, 도커 컨테이너 등 환경에 따라 명령어가 달라서 헷갈릴 때가 많아 환경별 덤프 명령어를 정리해보았다.1. 로컬 MariaDB 서버에서 DB 덤프기본 명령어mariadb-dump -u root -p database_name > backup.sql사용 예시# 특정 데이터베이스 덤프mariadb-dump -u root -p my_laravel_db > ~/Desktop/laravel_backup_20250117.sql# 모든 데이터베이스 덤프mariadb-dump -u root -p --all-databases > ~/Desktop/all_databases.sql# 특정 테이블만 덤프mariadb-dump -u roo..
Database - mariadb, mysql dump(로컬, 원격, docker)개요서버 작업을 하다 보면 DB 덤프를 떠야 하는 상황이 자주 생긴다.로컬 서버, 원격 서버, 도커 컨테이너 등 환경에 따라 명령어가 달라서 헷갈릴 때가 많아 환경별 덤프 명령어를 정리해보았다.1. 로컬 MariaDB 서버에서 DB 덤프기본 명령어mariadb-dump -u root -p database_name > backup.sql사용 예시# 특정 데이터베이스 덤프mariadb-dump -u root -p my_laravel_db > ~/Desktop/laravel_backup_20250117.sql# 모든 데이터베이스 덤프mariadb-dump -u root -p --all-databases > ~/Desktop/all_databases.sql# 특정 테이블만 덤프mariadb-dump -u roo..
2026.01.17 -
Docker 설치# 필수 패키지 설치sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-common# Docker GPG key 추가curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# Docker 저장소 추가echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https..
Docker - Ubuntu 서버에 docker, docker compose 설치하기Docker 설치# 필수 패키지 설치sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-common# Docker GPG key 추가curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# Docker 저장소 추가echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https..
2026.01.15 -
2021. 12. 07 기준 전기통신번호관리세칙 기반 국내 전화번호 형식 종류구분번호형식세칙 근거설명시내전화0202-XXX(X)-XXXX제7조③, 별표1서울031031-XXX(X)-XXXX제7조③, 별표1경기032032-XXX(X)-XXXX제7조③, 별표1인천033033-XXX(X)-XXXX제7조③, 별표1강원041041-XXX(X)-XXXX제7조③, 별표1충남042042-XXX(X)-XXXX제7조③, 별표1대전043043-XXX(X)-XXXX제7조③, 별표1충북044044-XXX(X)-XXXX제7조③, 별표1세종051051-XXX(X)-XXXX제7조③, 별표1부산052052-XXX(X)-XXXX제7조③, 별표1울산053053-XXX(X)-XXXX제7조③, 별표1대구054054-XXX(X)-XXXX제7조..
Js - 국내 전화번호 정규식2021. 12. 07 기준 전기통신번호관리세칙 기반 국내 전화번호 형식 종류구분번호형식세칙 근거설명시내전화0202-XXX(X)-XXXX제7조③, 별표1서울031031-XXX(X)-XXXX제7조③, 별표1경기032032-XXX(X)-XXXX제7조③, 별표1인천033033-XXX(X)-XXXX제7조③, 별표1강원041041-XXX(X)-XXXX제7조③, 별표1충남042042-XXX(X)-XXXX제7조③, 별표1대전043043-XXX(X)-XXXX제7조③, 별표1충북044044-XXX(X)-XXXX제7조③, 별표1세종051051-XXX(X)-XXXX제7조③, 별표1부산052052-XXX(X)-XXXX제7조③, 별표1울산053053-XXX(X)-XXXX제7조③, 별표1대구054054-XXX(X)-XXXX제7조..
2026.01.06 -
ACID란?ACID는 데이터베이스 트랜잭션이 안전하게 처리되기 위해 반드시 지켜야 하는 4가지 속성이다.Atomicity (원자성)트랜잭션 내 모든 작업이 완전히 성공하거나 완전히 실패해야 한다.예시: 계좌이체 시 A계좌 출금과 B계좌 입금이 모두 성공하거나 모두 취소된다. 출금만 되고 입금 실패는 불가능하다.Consistency (일관성)트랜잭션 전후로 데이터베이스가 일관된 상태를 유지해야 한다.예시: 쇼핑몰에서 주문 시 "재고수량 ≥ 주문수량" 규칙이 있다면, 재고 10개인 상품을 15개 주문하려고 하면 트랜잭션 자체가 거부된다. 트랜잭션이 완료되면 반드시 재고가 충분히 남아있는 상태가 보장된다.Isolation (격리성)동시 실행되는 트랜잭션들이 서로 영향 없이 독립적으로 실행되어야 한다.예시: 콘..
DB - ACIDACID란?ACID는 데이터베이스 트랜잭션이 안전하게 처리되기 위해 반드시 지켜야 하는 4가지 속성이다.Atomicity (원자성)트랜잭션 내 모든 작업이 완전히 성공하거나 완전히 실패해야 한다.예시: 계좌이체 시 A계좌 출금과 B계좌 입금이 모두 성공하거나 모두 취소된다. 출금만 되고 입금 실패는 불가능하다.Consistency (일관성)트랜잭션 전후로 데이터베이스가 일관된 상태를 유지해야 한다.예시: 쇼핑몰에서 주문 시 "재고수량 ≥ 주문수량" 규칙이 있다면, 재고 10개인 상품을 15개 주문하려고 하면 트랜잭션 자체가 거부된다. 트랜잭션이 완료되면 반드시 재고가 충분히 남아있는 상태가 보장된다.Isolation (격리성)동시 실행되는 트랜잭션들이 서로 영향 없이 독립적으로 실행되어야 한다.예시: 콘..
2025.12.10 -
개요락(Lock)에 대해 찾아보다 Mysql이 "자동으로 비관적 락을 건다"는 말을 발견했는데 '그럼 내가 따로 코드를 짤 필요가 없는 건가?' 싶은 마음에 헷갈려서 정리해보았다.Mysql 자동 락의 역할Mysql(InnoDB)은 UPDATE나 DELETE 실행 시 자동으로 해당 행에 락을 건다.예시: 동시 수정 방지재고를 10으로 변경하는 A 요청과 20으로 변경하는 B 요청이 동시에 실행되는 상황이다.// A 요청UPDATE products SET stock = 10 WHERE id = 1;// B 요청 (거의 동시)UPDATE products SET stock = 20 WHERE id = 1;자동 락 덕분에:A의 UPDATE 실행 중 → B는 대기A 완료 → B 실행결과: stock = 20자동 락..
Mysql - 비관적 락(Pessimistic Lock)개요락(Lock)에 대해 찾아보다 Mysql이 "자동으로 비관적 락을 건다"는 말을 발견했는데 '그럼 내가 따로 코드를 짤 필요가 없는 건가?' 싶은 마음에 헷갈려서 정리해보았다.Mysql 자동 락의 역할Mysql(InnoDB)은 UPDATE나 DELETE 실행 시 자동으로 해당 행에 락을 건다.예시: 동시 수정 방지재고를 10으로 변경하는 A 요청과 20으로 변경하는 B 요청이 동시에 실행되는 상황이다.// A 요청UPDATE products SET stock = 10 WHERE id = 1;// B 요청 (거의 동시)UPDATE products SET stock = 20 WHERE id = 1;자동 락 덕분에:A의 UPDATE 실행 중 → B는 대기A 완료 → B 실행결과: stock = 20자동 락..
2025.12.10 -
개요개발을 하다보면 파티셔닝과 샤딩이라는 용어를 종종 듣게 된다. 찾아보니 둘 다 데이터를 분할한다는 공통점이 있지만, 작동 방식과 목적이 완전히 다르다는 것을 알게 되었다. 이에 대한 내용과 더불어 샤딩을 구현할 때 Laravel ORM에서 어떻게 특정 샤드를 찾아가는지에 대한 내용까지 정리해보았다.파티셔닝 (Partitioning)하나의 데이터베이스 서버 내에서 대용량 테이블을 물리적으로 여러 조각으로 분할하는 기술주요 특징:단일 서버, 단일 DB 인스턴스에서 동작쿼리 성능 향상 (필요한 파티션만 스캔)유지보수 용이 (파티션 단위 삭제/아카이빙)MariaDB는 RANGE, LIST, HASH, KEY 네 가지 파티셔닝을 지원한다.-- RANGE 파티셔닝 예시CREATE TABLE orders ( ..
DB - 파티셔닝과 샤딩개요개발을 하다보면 파티셔닝과 샤딩이라는 용어를 종종 듣게 된다. 찾아보니 둘 다 데이터를 분할한다는 공통점이 있지만, 작동 방식과 목적이 완전히 다르다는 것을 알게 되었다. 이에 대한 내용과 더불어 샤딩을 구현할 때 Laravel ORM에서 어떻게 특정 샤드를 찾아가는지에 대한 내용까지 정리해보았다.파티셔닝 (Partitioning)하나의 데이터베이스 서버 내에서 대용량 테이블을 물리적으로 여러 조각으로 분할하는 기술주요 특징:단일 서버, 단일 DB 인스턴스에서 동작쿼리 성능 향상 (필요한 파티션만 스캔)유지보수 용이 (파티션 단위 삭제/아카이빙)MariaDB는 RANGE, LIST, HASH, KEY 네 가지 파티셔닝을 지원한다.-- RANGE 파티셔닝 예시CREATE TABLE orders ( ..
2025.12.08