iamkanguk.dev

[회고] Node.js 교과서 개정2판에서 오류가 발생한 걸 찾아냈다! 본문

회고록

[회고] Node.js 교과서 개정2판에서 오류가 발생한 걸 찾아냈다!

iamkanguk 2024. 4. 18. 04:00

1.  개요

발견은 엊그제 한 것 같은데 오늘 쓰는 이유는... 곧 다가올 면접이 있어서 늦어졌다.

사실 대단한 내용은 아니어서 쓸까 말까 고민했는데,, 그래도 책 제작자와 실제로 얘기를 나눠보면서 문제를 해결한게 처음이어서 신기하기도 하고 면접때문에 마음이 싱숭생숭 해서 잠깐 쉴겸 적어보려고 한다.

 

제로초님의 Node.js 교과서 개정2판을 평소에 시간날 때 읽으면서 좀 깊게 공부를 해보고 있다. 공부를 하는 와중에 오류가 발생한 부분을 찾아내서 GitHub Issue를 통해 연락을 드려 수정 요청을 보냈다.

 

특별하게 내용이 관심이 없으신 분들을 위해 GitHub Issue 링크를 드리도록 하겠다.

https://github.com/ZeroCho/nodejs-book/issues/801

 

[개정2판 P.132-133] prime.js 코드에 대한 설명 오류 확인요청 · Issue #801 · ZeroCho/nodejs-book

안녕하세요 제로초님! 책을 읽는 도중 한 가지 궁금한 점이 생겨 Issue 남깁니다. prime.js 에서는 변수로 min을 2로, max로 1000만을 설정해주었습니다. 이후 generatePrimes에 파라미터로 start와 range를 받

github.com

 

2.  어떤 문제가 있었는지?

worker_thread 부분을 공부하던 와중에 A부터 B 사이에 소수가 몇 개 있는지 확인하는 코드를 가지고 설명하는 부분이 책에 담겨있었다.

하지만 코드와 코드를 설명하는 텍스트의 불일치가 보였다.

const min = 2;
const max = 10000000;
const primes = [];

function findPrimes(start, range) {
  let isPrime = true;
  const end = start + range;
  for (let i = start; i < end; i++) {
    for (let j = min; j < Math.sqrt(end); j++) {
      if (i !== j && i % j === 0) {
        isPrime = false;
        break;
      }
    }
    if (isPrime) {
      primes.push(i);
    }
    isPrime = true;
  }
}

console.time('prime');
findPrimes(min, max);
console.timeEnd('prime');
console.log(primes.length);

 

위의 코드를 설명하는 텍스트에는 "2부터 1,000만까지의 숫자 중에 소수가 모두 몇 개 있는지를 알아내는 코드입니다." 라고 적혀있습니다. 하지만 코드를 보면 end가 start와 range를 더한 값이기 때문에 정확하게는 "2부터 1000만1 까지의 숫자 중에 소수가 모두 몇개있는지~" 가 맞는 표현이라고 생각했다. (물론 아래 사진처럼 다른 표현으로도 바꿀 수 있다)

 

3.  해결 완료!

 

챙피하지만... 웃겨서 넣었다. 10000001을 계속 1001만이라고 해서 제로초님이 뻘쭘하시는 듯한 모습이 보였다.... 계속 필자가 1001만이라고 해서 제로초님이 "1001만은 10000001의 오타인거죠? 이번에도 그렇게 쓰셔가지고요" 라고 적어주셨는데 이 말도 필자는 이해를 못했다 ㅋㅋㅋㅋ (진짜 멍청.....)

 

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 제로초님께서 1000만1이라고 말씀해주셔서 그제서야 할게 되었다. 감사합니다 제로초님..!

결국은 코드 수정으로 결정을 하신 것 같았다.

 

4.  후기

 

이렇게 책의 내용 중에 잘못된 부분을 바로 잡고 책 제작자분에게 연락을 드려서 수정요청을 드려보았다.

이슈가 성공적으로 접수된 것을 보니까 뭔가 뿌듯했다. (오픈소스 기여는 아니지만 뭔가 기여를 했다 느낌?)

그냥 심심해서 블로그 한번 써봤다. 읽어주셔서 감사합니다~! (똥글...)