πŸ‘©β€πŸŽ¨ UI 버그 - μƒν•œμ„  μ„€μ •

κΉ€μˆ˜μ§„Β·2025λ…„ 5μ›” 18일

졜근 ν•œν™”μ˜ 투수 폰세 μ„ μˆ˜κ°€ λ₯˜ν˜„진을 λ„˜μ–΄ μ΅œλ‹€ νƒˆμ‚Όμ§„ 18개λ₯Ό μž‘μ•˜λ‹€.πŸŽ‰πŸ₯³πŸŽŠπŸ‘πŸ†

λ°”λ‘œ ν™•μΈν•˜λŸ¬ 넀이버에 λ“€μ–΄κ°”λŠ”λ°...

UI 버그λ₯Ό λ°œκ²¬ν–ˆλ‹€. νŒ€ ν•˜λ£¨ μ‚Όμ§„ 갯수 20개λ₯Ό κΈ°λ‘ν•˜μž κ·Έλž˜ν”„κ°€ κΉ¨μ§€λ©° λ·°κ°€ μ΄μƒν•˜κ²Œ 좜λ ₯λ˜λŠ” ν˜„μƒμ΄ λ‚˜νƒ€λ‚¬λ‹€. 넀이버가 μ‚Όμ§„μ˜ κ°œμˆ˜κ°€ 20개 이상에 λŒ€ν•œ 였λ₯˜λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•Šμ€ 것이닀. (λˆ„κ°€ μ‚Όμ§„ 20개 λ‚˜μ˜¬ 쀄 μ•Œμ•˜κ² μ–΄!!!!^^)

πŸ›  원인: μ΅œλŒ€κ°’ μ œν•œ 없이 무쑰건 그리면 μƒκΈ°λŠ” 일

이 λ¬Έμ œλŠ” "μ˜λ„ν•˜μ§€ μ•Šμ€ 데이터 λ²”μœ„"에 λŒ€ν•œ μ˜ˆμ™Έμ²˜λ¦¬ λ―Έν‘μ—μ„œ μ‹œμž‘λœλ‹€.

λ§‰λŒ€ κ·Έλž˜ν”„λ₯Ό 그릴 λ•Œ, λŒ€μ²΄λ‘œ λ‹€μŒκ³Ό 같은 식을 μ“°κ²Œ λœλ‹€:

const width = (value / maxValue) * 100 + '%';

λ¬Έμ œλŠ” maxValueλ₯Ό κ³ μ •κ°’μœΌλ‘œ ν•˜κ±°λ‚˜, ν˜Ήμ€ maxValue 없이 직접 λΉ„μœ¨μ„ μž‘μ„ κ²½μš°μ΄λ‹€.
κ³ μ •κ°’μœΌλ‘œ 작게 되면 μ‚Όμ§„ μˆ˜κ°€ λ§Žμ•„μ§ˆ 것에 λŒ€λΉ„ν•œ μƒν•œμ„  μ œμ–΄, λΉ„μœ¨ 쑰정이 λΆˆκ°€λŠ₯ν•˜λ‹€.

βœ… ν•΄κ²° 방법: μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν†΅ν•œ λ²”μœ„ μΊ‘ν•‘(Capping) 및 UI 보호

μ΄λŸ¬ν•œ μ˜ˆμ™Έλ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” 방법 3κ°€μ§€λ₯Ό μ†Œκ°œν•˜μžλ©΄,

1. μƒν•œμ„  μ„€μ •

const cappedValue = Math.min(value, MAX_LIMIT);
const width = (cappedValue / MAX_LIMIT) * 100 + '%';

Math.min(a, b)λŠ” a와 b μ€‘μ—μ„œ 더 μž‘μ€ 값을 λ°˜ν™˜ν•œλ‹€.

즉, valueκ°€ MAX_LIMIT을 μ΄ˆκ³Όν•  κ²½μš°μ—λ„ MAX_LIMITκΉŒμ§€λ§Œ μ‚¬μš©λ˜λ„λ‘ μƒν•œμ„ (capping)을 μ„€μ •ν•œ 것이닀.

2. log μŠ€μΌ€μΌ 적용 (값이 κΈ‰κ²©νžˆ μ»€μ§€λŠ” 경우 유용)

const width = (Math.log(value + 1) / Math.log(maxValue + 1)) * 100 + '%';

일반적인 μ„ ν˜• μŠ€μΌ€μΌμ—μ„œλŠ” valueκ°€ 컀질수둝 width도 λΉ„λ‘€ν•΄μ„œ 컀지기 λ•Œλ¬Έμ—, 값이 ν•œμͺ½μœΌλ‘œ λͺ°λ¦° λ°μ΄ν„°μ—μ„œλŠ” UIκ°€ κΉ¨μ§€κΈ° 쉽닀.

logλ₯Ό μ“°λ©΄ μž‘μ€ 값은 μ’€ 더 ν‚€μš°κ³ , 큰 값은 μ™„λ§Œν•˜κ²Œ μ€„μ—¬μ„œ κ· ν˜• μžˆλŠ” μ‹œκ°ν™”κ°€ κ°€λŠ₯ν•˜λ‹€.

3. 비정상 κ°’ μ•ˆλ‚΄ λ©”μ‹œμ§€ ν‘œμ‹œ

if (value > MAX_REASONABLE) {
  showWarning("이 ν•­λͺ©μ˜ 값이 정상 λ²”μœ„λ₯Ό μ΄ˆκ³Όν–ˆμŠ΅λ‹ˆλ‹€.");
}

μ‚¬μš©μž μž…μž₯μ—μ„œ β€œκ·Έλž˜ν”„κ°€ μ™œ μ΄μƒν•˜κ²Œ λ‚˜μ™”μ§€?” β†’ β€œμ•„! 값이 λ„ˆλ¬΄ μ»Έκ΅¬λ‚˜.”
μ΄λ ‡κ²Œ 납득 κ°€λŠ₯ν•œ ν”Όλ“œλ°±μ„ μ œκ³΅ν•  수 μžˆλŠ” 방법이닀.

✍️ 마무리 & 느끼점

해결방법을 κ³΅λΆ€ν•˜λ©΄μ„œ, μ•žμ„œ μ†Œκ°œν•œ 였λ₯˜λŠ” 1번 μƒν•œμ„  μ„€μ •μ˜ ν•΄κ²°λ°©λ²•μœΌλ‘œ ν•΄κ²°ν•˜λŠ” 것이 κ°€μž₯ μ ν•©ν•˜λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 이번 μ‚Όμ§„ 수 UI 였λ₯˜ μ‚¬λ‘€μ²˜λŸΌ, ν‰μ†Œμ—” 잘 되던 μ½”λ“œλ„ 극단적인 μž…λ ₯값에 μ˜ν•΄ μ‰½κ²Œ 깨질 수 있기 λ•Œλ¬Έμ— ν”„λ‘ νŠΈμ—”λ“œλŠ” "λͺ¨λ“  λ°μ΄ν„°λŠ” μ–Έμ  κ°€ 우리λ₯Ό λ°°μ‹ ν•œλ‹€"λŠ” λ§ˆμŒκ°€μ§μœΌλ‘œ μ„€κ³„λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것을 κΉ¨λ‹«κ²Œ λ˜μ—ˆλ‹€.

5개의 λŒ“κΈ€

comment-user-thumbnail
2025λ…„ 5μ›” 19일

μ €κ±Έ 보자마자 개발 λΈ”λ‘œκ·Έλ₯Ό μ¨μ•Όκ² λ‹€λŠ” 생각을 ν–ˆλ‹€λ‹ˆ 정말 μ „κ³΅μƒλ‹€μ›Œμš” μ‹€μƒν™œκ³Ό λ°€μ ‘λ˜μ–΄μžˆλŠ” 주제 μ„ μ • λ„˜ μ’‹μ•—μ„œμš” πŸ‘πŸ‘πŸ‘

λ‹΅κΈ€ 달기
comment-user-thumbnail
2025λ…„ 5μ›” 23일

μ΅œκ°• ν•œν™” 덕뢄에 많이 λ°°μ›λ‹ˆλ‹€.

λ‹΅κΈ€ 달기
comment-user-thumbnail
2025λ…„ 5μ›” 23일

λ§Žμ€ κ°€λ₯΄μΉ¨μ„ μ£ΌλŠ” ν•œν™”... 문제λ₯Ό λ°œκ²¬ν•˜κ³  μ—¬λŸ¬ 해결방법을 κ³ λ―Όν•œ λͺ¨μŠ΅μ΄ μ’‹μ•˜μŠ΅λ‹ˆλ‹€.

20[+β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– ]

μƒν•œμ„  λ„˜μœΌλ©΄ μ΄λ ‡κ²Œ ν‘œμ‹œλΌλ„ 쒋을 것 κ°™μ•„μš”

λ‹΅κΈ€ 달기
comment-user-thumbnail
2025λ…„ 5μ›” 26일

μ €λŸ° 였λ₯˜λ₯Ό 보고 κΆκΈˆν•΄ ν•˜κ³  해결책을 μ°Ύμ•„λ³΄λŠ”κ²Œ ꡉμž₯히 μ‹ κΈ°ν•˜λ„€μš”..!! 저라면 κ·Έλƒ₯ λ„˜μ–΄κ°”μ„ν…λ°...γ…Žγ…Žν•΄κ²° 방법도 μ–΄λ ΅μ§€ μ•Šμ•„ λ‚˜μ€‘μ— ν”„λ‘œμ νŠΈ ν•˜λ©΄μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  것 κ°™μ•„μš”!

λ‹΅κΈ€ 달기
comment-user-thumbnail
2025λ…„ 6μ›” 28일

μ·¨λ―Έκ°€ 전곡에 곡뢀가 λ˜κΈ°λ„ ν•˜λŠ”κ΅°μš”.. 경기도 이기고 곡뢀도 ν•˜κ³  μ’‹λ„€μš”

λ‹΅κΈ€ 달기