최신글

more
Angular SSR 메모리 누수 삽질기 — 범인은 `interval()`이었다

배포 2주 만에 서버 메모리가 45%를 넘겼다. 의심스러운 곳을 두 군데나 고쳤는데 아무 소용이 없었고, 진짜 원인은 전혀 다른 곳에 있었다.1. 증상: 우상향하는 메모리 그래프회사에서 Angular로 만든 홈페이지를 배포했다. SEO와 GEO(생성형 엔진 노출)를 신경 써야 하는 사이트라 CSR 대신 SSR(Angular Universal) 로 구성했다.배포하고 1~2주쯤 지났을 때, 웹서버 메모리 점유율이 45%를 넘고 있는 것을 발견했다. 트래픽이 폭증한 것도 아닌데 이상했다.시간 단위로 다시 확인해봤다.그래프가 계단식으로 꾸준히 우상향내려오는 구간이 단 한 번도 없음웹서버를 재시작하니 5%대로 뚝 떨어짐재시작으로 회수된다는 건, 누군가 메모리를 잡고 안 놓아주고 있다는 뜻이다. 전형적인 메모리 누..

실험과 해결 2026.08.12 0
오라클 클라우드 무료 서버(A1 Flex) 확보기

오라클 클라우드 무료 서버(A1 Flex) 확보기 — 5주간의 크론과 PAYG 전환개인 서버가 필요했다. 조건은 하나, 기간 제한 없는 진짜 무료.AWS·Azure·GCP는 대부분 12개월 프리 트라이얼이라 1년 뒤엔 결국 돈을 내야 한다. 영구 무료 티어를 제공하는 건 사실상 Oracle Cloud Infrastructure(OCI) 하나뿐이다. 그래서 OCI로 갔고, 그 뒤로 5주를 헤맸다.이 글은 그 5주의 기록이다. 결론부터 말하면 PAYG(유료 계정) 전환이 답이었다.1. 왜 OCI Always Free인가OCI Always Free가 주는 것:ARM 인스턴스(VM.Standard.A1.Flex) — 2 OCPU / 12GB RAMx86 Micro 인스턴스(E2.1.Micro) 2대블록 스토리지..

실험과 해결 2026.08.04 0
데이터베이스 구축기 – 요구사항 분석 편

데이터베이스 구축의 시작은 언제나 "요구사항 분석"입니다. 많은 개발자들이 바로 테이블부터 만들고 싶어 하지만, 실무에서는 이 단계를 대충 넘기면 잘못된 구조의 DB로 인한 재작업과 유지보수 지옥을 경험하게 됩니다. 이번 포스트에서는 제가 경험한 실제 사례를 바탕으로 요구사항 분석이 왜 중요한지, 어떻게 해야 하는지를 정리해보았습니다.1️⃣ 요구사항 분석이란 무엇인가?요구사항 분석은 말 그대로, 시스템이 어떤 기능을 해야 하는지를 정의하는 단계입니다. 단순히 어떤 데이터를 저장할지가 아니라, 비즈니스 흐름에서 어떤 데이터를 언제, 누가, 왜 사용하는지를 파악하는 작업입니다.이 분석이 제대로 되지 않으면 다음과 같은 문제가 생깁니다:테이블은 만들었는데 실제 화면에 안 쓰임데이터를 수집했는데 쿼리로 뽑아낼 ..

Archive 2025.06.02 0

인기글

오라클 클라우드 무료 서버(A1 Flex) 확보기

오라클 클라우드 무료 서버(A1 Flex) 확보기 — 5주간의 크론과 PAYG 전환개인 서버가 필요했다. 조건은 하나, 기간 제한 없는 진짜 무료.AWS·Azure·GCP는 대부분 12개월 프리 트라이얼이라 1년 뒤엔 결국 돈을 내야 한다. 영구 무료 티어를 제공하는 건 사실상 Oracle Cloud Infrastructure(OCI) 하나뿐이다. 그래서 OCI로 갔고, 그 뒤로 5주를 헤맸다.이 글은 그 5주의 기록이다. 결론부터 말하면 PAYG(유료 계정) 전환이 답이었다.1. 왜 OCI Always Free인가OCI Always Free가 주는 것:ARM 인스턴스(VM.Standard.A1.Flex) — 2 OCPU / 12GB RAMx86 Micro 인스턴스(E2.1.Micro) 2대블록 스토리지..

실험과 해결 2026.08.04 0
Javascript를 이용한 사이트 만들기! - 패럴랙스 효과사이트 만들기03

- 스크롤을 할 때마다 정해둔 위치에 오면 사진과 함께 흰색/ 주황색 효과가 나타났다 사라집니다. - 코드를 보시죠 - CSS와 스크립트 부분입니다. - 오늘은 특히 CSS부분이 많은데 천천히 보시죠 - 우선 스크립트 입니다. - reveal 이라는 클라스가 있는 p태그 안의 글자를 span태그로 감싸주었습니다. - 그리고 scroll이라는 함수를 만들고 requestAnimationFrame을 주어 첫 실행후 scroll이라는 함수가 초당60번 재생되게 만들어 주었습니다. - 그리고 reveals라는 선택자를 만들어 모든 reveals를 선택한 뒤 forEach를 통해 함수를 실행시켜주었습니다. - 먼저 reveal들 안에 있는 이미지 태그들의 높이 값을 구했습니다. - 그냥 오프셋값을 넣으면 부모태그..

Javascript 2023.05.17 5