JavaScript 이벤트 위임으로 동적 목록 처리하기 — 직접 바인딩과 비교 검증
도입 페이지가 처음 열릴 때 모든 버튼에 클릭 리스너를 연결했는데, 이후 추가한 버튼만 반응하지 않는 경우가 있다. 원인은 새 요소가 초기 querySelectorAll() 결과에 포함되지 않았기 때문이다. ...
테스트 검색 결과: 36개
도입 페이지가 처음 열릴 때 모든 버튼에 클릭 리스너를 연결했는데, 이후 추가한 버튼만 반응하지 않는 경우가 있다. 원인은 새 요소가 초기 querySelectorAll() 결과에 포함되지 않았기 때문이다. ...
도입 최소 권한은 GRANT 문장을 작성하는 것으로 끝나지 않는다. 애플리케이션이 필요한 작업은 성공하고, 스키마 변경·계정 관리·시스템 테이블 조회는 실패하는지 실제 계정으로 확인해야 한다. 아래 SQL은 M...
도입 composer install이 성공했다고 안전한 배포가 보장되지는 않는다. composer.json과 lock 파일이 어긋날 수 있고, 잠긴 패키지에 보안 권고가 생길 수 있으며, Composer 플러그...
도입 ALTER TABLE이 끝나지 않을 때 테이블 크기만 의심하면 원인을 놓칠 수 있다. Waiting for table metadata lock 상태라면 다른 세션의 열린 트랜잭션 때문에 DDL이 시작되지 ...
도입 웹 서비스를 직접 운영하려면 애플리케이션이 실행될 컴퓨터가 필요하다. 물리 서버를 구매하면 초기 비용과 설치 시간이 발생하고, 트래픽 변화에 맞춰 용량을 조정하기도 어렵다. Amazon Elasti...
도입 외부 API나 다른 서비스가 느려지면 내 서비스까지 같이 느려지는 경우가 많다. 문제는 실패 자체보다 장애가 연쇄적으로 퍼지는 상황이다. 이걸 막기 위한 대표 패턴이 Circuit Breake...
AWS Well-Architected Framework의 여섯 원칙을 정의하는 것만으로 시스템은 바뀌지 않는다. 목적은 현재 구성의 위험과 의사결정 근거를 찾아 우선순위가 있는 개선 작업으로 만드는 것이다. 이 글은...
트래픽이 증가한다고 Redis, 로드 밸런서, 복제 DB와 큐를 한꺼번에 추가하면 운영 지점만 늘어날 수 있다. 확장은 현재 병목과 실패 조건을 측정한 뒤 가장 작은 변화부터 적용해야 한다. 1. 먼저 서비스 ...
PHP 서비스에서 외부 AI API를 사용할 때 모델의 학습 방식을 넓게 설명하는 것보다 중요한 것은 현재 기능이 요구사항을 만족하는지 반복해서 평가하는 일이다. 모델과 프롬프트가 바뀌면 같은 입력의 결과도 달라질 ...
S3를 “그냥 파일 저장소”처럼 쓰기 시작하면 권한 설정에서 사고가 난다. S3는 기본적으로 퍼블릭 차단을 전제로 설계하고, 접근은 IAM 권한으로 통제하는 방식이 안전하다. S3와 IAM을 함께 쓴다는 것은...