오늘 안 읽은 글에 "N" 표시를 다는데, 글을 하나 읽고 다른 글로 넘어가면 방금 읽은 글에 N이 다시 생기는 문제가 있었습니다. 화면이 새로 그려질 때마다 "이 글을 읽었다"는 기억이 사라졌기 때문입니다. 그래서 읽은 글을 어딘가에 적어두고, 다음에 화면이 켜질 때 그 기록을 다시 꺼내 쓰기로 했습니다.
그때 사용한 것이 "localStorage"라는 기능입니다. localStorage는 브라우저(인터넷 화면) 안에 있는 작은 공책 같은 곳입니다. localStorage.setItem으로 값을 적어두면, 화면을 새로고침하거나 다른 곳으로 갔다 와도 사라지지 않고, localStorage.getItem으로 다시 꺼내 볼 수 있습니다.
오늘은 뱃지를 착용했는데도 화면 위쪽 헤더의 뱃지가 바로 바뀌지 않고, 새로고침을 해야만 바뀌는 문제를 함께 살펴보았습니다. 버튼을 누른 곳과 뱃지가 보이는 곳이 서로 떨어져 있어서 생긴 일이었습니다.
이때 "커스텀 이벤트"라는 기능을 알게 되었습니다. 이것은 화면의 한 곳에서 "이런 일이 생겼어요!" 하고 신호를 보내면(dispatchEvent), 멀리 있는 다른 부분이 그 신호를 듣고(addEventListener) 스스로 다시 그려지는 방법입니다.
오늘은 브라우저(인터넷을 볼 때 쓰는 프로그램)에서 실행되는 원소 수집 게임을 만들면서, 화면에 둥둥 떠다니는 원소 공이 너무 많아지자 게임이 심하게 느려지는 문제가 생겼습니다.
화면에 물체가 많을수록 컴퓨터가 매 순간 모든 물체의 위치를 계산해야 해서 느려집니다. 이를 해결하기 위해 한 번에 보여줄 수 있는 공의 개수를 최대 20개로 제한했습니다.
오늘 카카오 로그인 버튼이 갑자기 사라진 이유를 찾고 있었습니다. 알고 보니 두 사람이 각자 다른 브랜치(branch, 코드를 따로 저장해 두는 작업 공간)에서 작업한 뒤 하나로 합치는 과정에서, 한 쪽이 버튼 파일을 통째로 지운 채로 합쳐진 것이 원인이었습니다.
이처럼 두 사람이 같은 파일을 서로 다르게 고쳤을 때 한 쪽 내용이 사라지는 것을 '머지 충돌(merge conflict, 코드를 합칠 때 생기는 충돌)'이라고 합니다.