디바운스(Debounce)와 쓰로틀링(Throttling)은 자바스크립트에서 이벤트 핸들링과 함수 실행을 제어하는 데 사용되는 두 가지 기술입니다.프론트엔드 개발자라면 다들 개념을 알고 있을 것이지만 비전공자 입장에서는 이조차 낮선 개념입니다. 오늘은 쓰로틀링과 디바운스에 대해서 알아보도록 합시다.디바운스이라는 용어는 전자 회로에서 스위치를 눌렀다 떼는 과정에서 스위치가 통통 튀며 전압이 불규칙적으로 들어가 전류의 흐름이 비정상적으로 일어나는 현상을 바운싱 현상이라하는데 이를 정상적으로 해주는 의미에서 사용되기 시작했다고합니다.쓰로틀링이라는 용어는 비행기 또는 자동차 등에서 연료량을 조절하는 레버가 있는데 이를 당기거나 밀어서 연료량을 조절하는 것입니다. 이러한 동작과 유사한 방식으로 동작시키기 때문에 ..
시작하기에 앞서 사용자의 프로필 사진 데이터를 아마존 S3에 이미지를 업로드 하여 사용하고 있었는데 이미지 업로드 시에 별도의 제한 없이 업로드할 수 있도록 생각했지만 서버에서 1MB 이상은 업로드할 수 없는 문제가 있었습니다. 업로드 가능한 용량을 프론트에서 제한하거나 서버에서 제한을 수정하는 것으로 문제를 해결할 수도 있겠지만 프로필 사진의 경우 항상 같은 크기로 사용자들에게 노출되며 그다지 큰 해상도가 필요하지 않았습니다. 따라서 큰 이미지를 굳이 서버에 저장하고 커다란 이미지를 내려 받는 것을 비효율적이라고 생각했습니다. 그러므로 이미지를 업로드하기 전 압축해서 서버에 업로드하도록 합시다! 이미지를 압축하는 방법은 여러가지 있습니다. 브라우저에서 이미지를 압축하는 방법과 서버에서 압축하는 방법에 ..
마치 텍스트 에디터에서처럼 커서가 깜빡이고 글자가 타이핑하여 입력하는 것처럼 보이도록 애니메이션을 만들어 보고자 했다. 개인적인 편의를 위해서 styled-components를 이용했으나 기본적인 CSS를 이해하고 있다면 쉽게 구현할 수 있다. 커서가 깜빡이는 것은 CSS를 이용하면 간단하다. 우선 keyframes을 선언하고, 이를 blink라는 id를 가진 태그에 적용해준다. 1초에 한번씩 무한히 순환되도록 하면 된다. const blinkAnimation = keyframes` 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } `; // 투명도를 세단계로 나눠서 순환시키는 것으로 깜빡이는 듯한 애니메이션을 연출할 수 있다. const StNa..
문제 숫자를 넣었을 때, 3자리 수마다 콤마 ','가 찍히는 input을 구현하는 중에 느닷없는 도전과제가 발생했다. 일반적으로 사용하는 수는 16자리 이내이기 때문에 아래의 코드로도 충분히 동작하지만 아래 코드는 치명적인 문제가 하나 있었다. 입력된 숫자의 길이가 16을 넘어가면 값이 뭉개지는 문제가 있다. 지수형 값으로 변환되어 발생하는 것으로 예를 들어 “1234567890123456789” 라는 숫자를 입력한 경우 “1,234,567,890,123,457,000”로 출력된다. // 값이 변경되면 저장하는 함수, 천단위마다 ','를 입력함 const priceChangeHandler = function (event) { let inputPrice = event.target.value.replace(..