개발 중에 아래와 같은 메시지가 나오면서 서버가 시작되지 않는 문제가 발생했다. java.net.BindException: 주소가 이미 사용 중입니다 개발 중이었기에 서버가 정상적으로 종료되지 않았다고 생각하고 아래 명령어로 PID를 찾는다. sudo netstat -p | grep 9000 net-tools가 설치되어 있지 않으면 아래와 같은 메시지가 나오는데 sudo: netstat: 명령이 없습니다 이럴 때는 아래 명령어로 net-tools를 설치한다. sudo apt install net-tools net-tools가 설치되어 있고 9000 포트가 사용되고 있으면 아래와 같이 나온다. tcp6 0 0 ip6-localhost:9000 ip6-localhost:53440 CLOSE_WAIT 3025..
ensuring은 조건에 맞으면 값을 반환하고 틀리면 java.lang.AssertionError: assertion failed 에러가 발생한다. 위의 에러가 발생하는 이유는 ensuring 내부적으로 assert 메서드를 사용하고 있기 때문이다. 사용 방법은 ( 조건 식이 참일 때 반환될 값 ) ensuring ( 조건 식 )와 같이 사용한다고 생각하면 된다. ex) 홀수 일 때 에러를 발생시키고 짝수면 해당 숫자를 반환하는 메서드 def test1(num: Int): Int = num ensuring (num % 2 == 0) 또는 def test2(num: Int): Int = num ensuring (_ % 2 == 0) ex) 홀수 일 때 에러를 발생시키고 짝수면 해당 숫자에 1을 더해 반환하..
Virtual Scroll은 직역한 것과 같이 가상의 스크롤을 뜻한다. 이러한 Virtual Scroll이 필요한 이유는 브라우저 상에 랜더링된 DOM의 개수가 많아지면 스크롤할 때 느려지는 등의 사용성 문제가 발생하는 것을 방지하기 위한 방법이다. 위와 같은 문제가 발생하게 되는 이유는 스크롤을 내릴 때마다 새로운 아이템을 불러오고 불러온 아이템을 브라우저에 모두 랜더링하게 되면서 랜더링된 DOM의 개수가 계속해서 쌓이기 때문이다. 이때 Virtual Scroll은 브라우저에서 스크롤할 때 보일 정도로만 DOM의 수를 유지하여 위에서 발생하는 느려지는 등의 문제가 발생하지 않도록 한다. DOM의 개수를 유지하는 기본적인 원리는 스크롤된 위치와 DOM이 보여야 하는 공간의 높이 그리고 DOM 각각의 높이..