웹 애플리케이션에서 버튼 클릭 한 번으로 텍스트를 복사하는 기능을 구현할 때 과거 사용하던 document.execCommand('copy')가 동작하지 않거나 콘솔에 경고 메시지가 출력되는 현상을 경험해봤을 것이다. 다만 대부분의 개발자들은 대체 기술인 Clipboard API의 비동기 특성이나 보안 권한 조건을 제대로 모른 채 기존 구형 코드를 그대로 ···
출장이나 주말 지방 방문으로 KTX나 SRT를 탈 때마다 비싼 요금 때문에 망설인 적이 있었을 것이다. 서울과 부산을 왕복만 해도 10만 원이 훌쩍 넘어가다 보니 가계부에 적지 않은 부담이 된다. 다만 정가를 그대로 다 내고 타는 사람이 많은 이유는 철도공사에서 운영하는 다양한 할인 제도를 잘 모르거나 등록 과정이 귀찮다고 지나치기 때문이다. 이번에는 KT···
매달 읽고 싶은 책을 사보거나 유료 전자책 구독 서비스를 이용하다 보면 고정지출이 만만치 않게 나간다. 다만 정부와 전국 지자체 공공도서관에서 국민을 위해 무료로 제공하는 전자책 및 오디오북 서비스를 몰라서 내 돈 주고 읽는 경우가 많다. 이번에는 집이나 출퇴근길에서 스마트폰 하나로 무료 전자책을 대출받아 읽는 방법과 대상, 실전 활용 팁을 한눈에 정리해서···
서버에서 불시에 발생한 Fatal Error나 DB 연결 장애로 웹 서비스가 마비되었을 때, 고객 제보가 오기 전까지 까맣게 잊고 있던 경험이 한번쯤 있을 것이다.로그 파일에는 지속적으로 에러 기록이 쌓이지만, 실시간 알림 로직을 제대로 갖추지 못해 장애 초기 대응 타이밍을 놓치는 경우가 많다.이번에는 Discord Webhook API가 정확히 무엇인지,···
운전을 하다 보면 자신도 모르게 속도위반이나 신호위반, 주정차 위반 단속에 걸려 과태료 통지서를 받는 경험을 하곤 한다. 고지서를 받으면 기분이 얹히고 당황스러워서 일단 치워두었다가 납부 기한을 넘기는 경우가 많다. 다만 제때 확인하지 않으면 20% 할인받을 수 있는 기회를 날리고, 심지어 가산금까지 얹어서 내야 하는 상황이 벌어진다. 이번에는 교통위반 과···
대용량 파일 업로드 기능을 구현하고 서버에 테스트 파일인 10MB짜리 이미지를 전송했을 때 브라우저 화면에 '413 Request Entity Too Large' 에러가 발생하는 경험을 해봤을 것이다. 단순한 프론트엔드 유효성 검사 누락이나 파일 파싱 문제라고 생각하기 쉽다.다만 Nginx 웹 서버와 PHP-FPM 애플리케이션 간의 업로드 용량 제한 설정 ···
겨울마다 치솟는 도시가스 요금 청구서를 받고 한숨 쉬어본 적이 있을 것이다. 다만 정부와 한국가스공사에서 지원하는 '도시가스 절약 캐시백' 제도를 잘 몰라서 혜택을 놓치는 가구가 많다. 이번에는 도시가스 절약 캐시백이 무엇인지, 누가 신청 대상이며, 실생활에서 어떻게 활용해 현금으로 돌려받는지 핵심만 정리해서 소개하겠다. 왜 도시가스 절약 캐시백에 주목해야···
웹 서비스에서 데이터를 연속으로 불러오는 무한 스크롤(Infinite Scroll)이나 이미지 지연 로딩(Lazy Loading)을 구현할 때, 스크롤 이벤트를 등록했다가 브라우저가 버벅거리는 현상을 경험해봤을 것이다.다만 스크롤 이벤트가 발생할 때마다 실행되는 콜백 함수가 브라우저 메인 스레드를 얼마나 점유하는지, 그리고 왜 이 문제가 발생하는지 정확한 ···
실수로 남의 휴대폰을 떨어뜨려 액정을 깨뜨리거나 집 누수로 아랫집에 수리비를 물어줘야 했던 적이 있을까?다만 이미 가입한 운전자보험이나 실비보험에 월 1,000원 안팎의 '일상생활배상책임 특약'이 들어있는지 몰라서 생돈을 내는 경우가 많다.이번에는 일상생활배상책임보험이 무엇이고, 어떤 손해를 보상받을 수 있으며, 어떻게 조회해서 청구하는지 정리해서 소개하겠···
MySQL 5.7에서 8.0으로 버전을 올려서 최신 DB 환경을 구축했거나 Docker로 MySQL 인스턴스를 새로 띄운 뒤 PHP로 접속을 시도하다가 SQLSTATE[HY000] [2054] 에러를 마주친 적이 있을 것이다. DB 서버는 올바르게 동작하고 접속 정보도 분명 정확한데 PHP 스크립트를 실행하는 즉시 커넥션이 튕겨나간다.다만 정확한 원인이나 ···
이사할 때나 집안 대청소를 할 때 오랫동안 쓰던 냉장고나 세탁기, TV 같은 대형 가전을 어떻게 버려야 할지 막막했던 경험이 있을 거다. 그냥 무단으로 집 앞에 내놓으면 과태료가 부과되고, 주민센터나 편의점에서 폐기물 스티커를 사서 붙이자니 크기에 따라 수천 원에서 수만 원의 수수료가 나간다. 다만 수거 비용을 단 1원도 내지 않고 무상으로 집 안까지 찾아···
사용자가 로그인한 상태에서 나도 모르게 비밀번호가 변경되거나 결제 요청이 승인되는 아찔한 보안 사고를 경험해봤을 것이다. 웹 서비스를 개발하다 보면 인증된 사용자의 권한을 악용하는 CSRF(Cross-Site Request Forgery) 공격을 쉽게 지나치는 경우가 많다. 다만 대부분의 개발자들은 CSRF 공격이 정확히 어떤 원리로 동작하는지 모르거나 단···
Google Firebase가 오랜 기간 사용되어 온 FCM Legacy HTTP API 지원을 중단하면서 기존 서버 키(Server Key) 기반의 푸시 알림 발송 방식이 작동하지 않는 문제를 겪어봤을 것이다. 웹 문서나 기존 블로그 글을 찾아보아도 예전 서버 키 방식을 안내하는 경우가 많아 대체 어떻게 전환해야 할지 막막할 수 있다.이번 글에서는 FCM···
날씨가 좋아지면서 자전거로 출퇴근하거나 주말마다 라이딩을 즐기는 사람들이 늘고 있다. 하지만 자전거를 타다가 예상치 못한 사고가 났을 때 병원비나 상대방과의 합의금 부담으로 난감했던 경험이 한두 번쯤 있을 것이다. 다만 지자체에서 해당 지역 주민 전체를 대상으로 무료 자전거 보험에 자동 가입해 두고 있다는 사실을 몰라서 혜택을 놓치는 경우가 많다. 이번에는···
자동차세나 재산세, 지방소득세를 내면서 생각지도 못하게 세금을 과다 납부했거나 소득세 정산으로 환급금이 발생한 경험이 있을 것이다.다만 국세 환급금은 연말정산이나 종합소득세 신고 시 자동으로 계좌에 들어오는 경우가 많지만, 지자체에서 담당하는 지방세 환급금은 몰라서 찾아가지 않는 경우가 많다.이번에는 미환급 지방세가 왜 발생하는지, 누가 대상인지, 그리고 ···
웹 애플리케이션을 개발하다 보면 사이드바, 모달, 메인 콘텐츠 영역 등 다양한 위치에서 재사용되는 카드 컴포넌트의 레이아웃이 지저분하게 깨지는 현상을 경험해봤을 것이다. 다만 대부분의 개발자들은 뷰포트 기준 미디어 쿼리의 한계 때문이라는 정확한 원인이나 해결책을 모르는 경우가 많다.이번에는 CSS Container Queries가 정확히 뭔지, 왜 필요한지···
자격증 취득을 위해 매달 수만 원에서 수십만 원의 응시료를 지출하며 부담을 느껴본 적이 있을 것이다.다만 이러한 응시료를 국가나 지자체에서 지원해주는 제도가 있다는 사실을 잘 몰라서 제값 다 내고 시험을 치르는 경우가 많다.이번에는 자격증 시험 응시료 지원제도의 핵심 대상과 지원 범위, 그리고 100% 활용하는 신청법까지 깔끔하게 정리해서 소개하겠다. 1.···
신규 기능을 오픈하거나 대규모 이벤트를 앞두고 내 백엔드 API가 과연 몇 명의 동시 접속자를 견딜 수 있는지 궁금했던 적이 있을 것이다. 다만 정확한 한계 수치나 성능 병목 지점을 모른 채 서비스부터 오픈했다가, 트래픽이 몰려 서버가 다운되고 피를 보는 경우가 많다.이번에는 가벼우면서도 강력한 부하 테스트 도구인 k6가 정확히 무엇이고, 왜 필요한지, 그···