#defensive-programming

10개의 게시물

intervalMeters 가드 추가 + 컴포넌트 테스트 11건 기반 구축
commitsMidWayDer · 69e6d1d

intervalMeters 가드 추가 + 컴포넌트 테스트 11건 기반 구축

🤖 1552 in / 791 out / 2343 total tokens 비정상 입력에 대한 방어 코드와 리액트 컴포넌트 테스트 기반을 한 번에 다졌다. polyline-sampler에 intervalMeters가 0, 음수, NaN일 때 원본 경로를 반환하는 가드를 추가했다. 무한루프 방지 목적이다. 동시에 calculator의 toWaypointD

이더2026.03.041 min read
testvitestreact-testing-library
Circuit Breaker 부분 결과 보존과 방어적 코딩
commitsMidWayDer · 960d738

Circuit Breaker 부분 결과 보존과 방어적 코딩

🤖 917 in / 821 out / 1738 total tokens 서킷 브레이커가 과반 실패를 감지했을 때, 기존엔 빈 배열을 반환해서 성공한 요청들의 결과까지 모두 날렸다. 이제는 allPlaces에 쌓인 부분 결과를 살려서 반환한다. 실패한 건 실패한 대로 로그를 남기고, 성공한 건 사용자에게 돌려주는 게 맞다. haversineDistanc

이더2026.03.042 min read
circuit-breakerdefensive-programmingtest-coverage
v5.12.0 — NaN/Infinity 방어 7건, 테스트 9건 추가
commitsradar_fun_meter · 36bc4e8

v5.12.0 — NaN/Infinity 방어 7건, 테스트 9건 추가

🤖 2937 in / 692 out / 3629 total tokens 수치 계산 중 발생하던 NaN/Infinity 누출 문제를 7곳에서 수정했다. 439개 테스트 전부 통과. FunMeter는 이제 result.levels에 cleanLevels를 반환한다. 기존엔 times, scores만 정제했는데 levels도 누출되고 있었다. SmartB

이더2026.03.022 min read
bugfixnan-handlingdefensive-programming
v5.11.0 — 버그 4종 소탕 + 타입 정리
commitsradar_fun_meter · eced294

v5.11.0 — 버그 4종 소탕 + 타입 정리

🤖 1931 in / 822 out / 2753 total tokens 이번 버전은 꼼꼼한 디버깅 세션이었다. 총 4개의 버그를 잡았고, TypeScript 타입 정리까지 마무리했다. 테스트 6개 추가로 총 430개 전부 통과. SmartBot에서 getScore()가 NaN이나 Infinity를 뱉을 때 _scoreHistory에 그대로 들어가던

이더2026.03.022 min read
bugfixtypescriptdefensive-programming
v5.7.0: NaN 하나가 Q-테이블 전체를 망가뜨린다
commitsradar_fun_meter · b12397d

v5.7.0: NaN 하나가 Q-테이블 전체를 망가뜨린다

🤖 1258 in / 1878 out / 3136 total tokens MLBot과 Worker 전반에 NaN 방어 로직을 싹 추가했다. 빈 actions 배열은 생성 단계에서 바로 에러를 던져 차단했고, train()에서 reward가 NaN이나 Infinity면 0으로 대체해 Q-value 오염을 막았다. 사용자가 이상한 게임 로직을 넣어도 봇이

이더2026.03.022 min read
NaN-defenseQ-LearningMLBot
v5.6.0 — NaN/Infinity 방어로 분석 로직 강화
commitsradar_fun_meter · 535a338

v5.6.0 — NaN/Infinity 방어로 분석 로직 강화

🤖 1534 in / 751 out / 2285 total tokens scores와 levels 배열에 NaN/Infinity가 섞여 들어가면 통계값이 망가지는 문제를 수정했다. times 배열에는 이미 필터링이 있었는데, scores와 levels는 누락되어 있어 동일 패턴으로 방어코드를 추가했다. FunMeter.js의 _analyze 메서드에

이더2026.03.012 min read
bugfixdefensive-programmingtest-coverage
NaN/Infinity 방어 강화로 CLI 커버리지 100% 달성
commitsradar_fun_meter · 526293f

NaN/Infinity 방어 강화로 CLI 커버리지 100% 달성

🤖 1246 in / 788 out / 2034 total tokens v5.5.0에서 수치 데이터의 안정성을 크게 강화했다. percentile.js와 FunMeter._analyze() 양쪽에서 NaN/Infinity 값을 사전에 필터링하도록 처리했고, 유효한 값이 없으면 NaN을 반환해 상위에서 문제를 탐지할 수 있게 했다. percentile

이더2026.03.012 min read
defensive-programmingtest-coveragenan-handling
v5.4.0 — maxSeconds 버그 수정과 타입 정리
commitsradar_fun_meter · 2c21486

v5.4.0 — maxSeconds 버그 수정과 타입 정리

🤖 1592 in / 595 out / 2187 total tokens CLI runner에서 --maxSeconds 옵션이 무시되던 버그를 잡았다. ML/serve/일반 모드 세 곳 모두 하드코딩된 60이 변수를 참조하도록 수정했다. 이제 사용자가 지정한 시간 제한이 실제로 FunMeter에 전달된다. HumanLikeBot에서도 커스텀 게임 사용

이더2026.03.011 min read
bugfixtypescriptcli
v4.9.0: JSON 파싱 방어 + CSS Selector 화이트리스트로 보안 강화
commitsradar_fun_meter · 08759bc

v4.9.0: JSON 파싱 방어 + CSS Selector 화이트리스트로 보안 강화

🤖 1624 in / 835 out / 2459 total tokens 사용자 입력과 외부 API 응답을 더 이상 맹신하지 않기로 했다. gistReporter.js의 uploadGist/viewGist에서 JSON.parse 3곳에 try-catch를 감싸고, 파싱 실패 시 GistFormatError로 명확히 알린다. MLBot.js load()

이더2026.03.012 min read
defensive-programmingjson-parsingcss-selector
FunMeter 방어 코드 추가, 브랜치 커버리지 90% 달성
commitsradar_fun_meter · 017a446

FunMeter 방어 코드 추가, 브랜치 커버리지 90% 달성

🤖 2286 in / 869 out / 3155 total tokens v4.5.0에서는 FunMeter 핵심 메서드에 방어 코드를 추가하고, 테스트 케이스를 45개 보강해 브랜치 커버리지를 90% 이상으로 끌어올렸다. FunMeter.run()에선 runs 매개변수가 1 미만일 경우 RangeError를 던지도록 했다. 음수나 0이 들어오면 의미

이더2026.03.012 min read
testingdefensive-programmingcode-coverage