드디어 자동화를 위한 무언가가 생성되었습니다.
콘솔로그를 한줄만 써도 된다니 이전과 비교하면 아주 효율적인 코드가 되었습니다.
그렇지만 뭔가 좀 밋밋한게 보기좋게 바꿔보면 좋을것 같네요.
자바스크립트의 쌈@뽕한 기능중 하나인 백틱을 사용한 템플릿 리터럴을 사용해서 변수와 스트링이 모두 합쳐지게끔 콜라보를 해서 이제는 진짜 구구단이 나오는것처럼 그럴듯해 졌습니다.
하지만 여전히 좀 더 개선의 여지가 보입니다. 생각해보니 우리는 함수로 만들어놓고 그걸 제대로 사용하지 않았네요. 그부분을 개선해 보겠습니다.
우선 인자값을 기존에는 단수를 뜻하는 num 만 받았지만 이번에 몇단을 할것인지를 의미하는 곱해지는 수까지 받아보겠습니다.
저는 기억력이 안좋아서 대략 100일 후에 이 코드를 봤을때,
이 변수명이 어떤걸 의미하는지 직관적으로 하고자 이렇게 적었지만,
실제로는 이렇게 적으면 같이 일하는 사람들에게 욕을 먹을 확률이 매우 높으니 변수명은 항상 신중하게 적어줍시다.
어쨋든 함수로 받는 인자값을 2개로 변경해준 덕분에 이제 원하는 숫자에 원하는 단수까지 나오도록 세팅이 된 구구단 함수 입니다.
nodejs 입력받기 라고 구글에 검색해보면 위와 같은 코드를 사용해 자바스크립트가 콘솔창(터미널) 에서 입력을 받을 수 있는것을 확인할 수 있습니다
무튼 여기를 참고해 드디어 숫자와 단수까지 입력받는 구구단 함수가 완성되었습니다.
- 매번 vscode 를 켠다음 이걸 실행할면 너무 불편할것 같고,
그렇다고 만들어놓은 계산기 안쓰자니 아까우니깐 이걸 버튼만 딸깍 누르면 실행되는 exe 파일로 만들면 그래도 좀 사용할 것 같습니다.
- 사실 이분야는 파이썬이 훨씬 쉽지만, 오늘은 자바스크립트로 시작하기도했고 찾아보면 자바스크립트도 할수 있을것 같으니 한번 try 해보겠습니다.
우선 빠르게 구글링을 해줍시다. 구글에 자바스크팁트 exe 파일로 만들기
라고 치면 여러개 나옵니다.
전 제일 단순하게 잘 설명된 요기를 참고했습니다. https://breadrich.tistory.com/18
우선 node 는 당연히 기본으로 설치되어야 하고, 필수적으로 pkg 라는 라이브러리를 추가로 설치해야 우리가 원하는걸 실행할 수 있는걸 확인했으니, 간단한 세팅을 좀 해보겠습니다.
npm init -y
package.json을 빠르게 기본 설정으로 생성해주는 명령어입니다.
-y 안 붙이면 하나하나 질문 나옴 (프로젝트 이름, 설명, author 등)
npm install 전에 npm init을 꼭 해야 하는 이유는,
npm이 뭘 설치해야 할지를 적어둘 곳(package.json)이 필요하기 때문이에요.
라고 친절히 지피티가 알려주네요.
역시나 흔하게 발생할 수 있는 휴먼 에러로 시작합니다.
npm 파일이 생성할때 디렉토리 이름이 package.json의 "name" 필드로 자동 들어가는데, npm은 패키지 이름에 한글이나 특수문자가 들어가는 걸 금지하고 있습니다.
우회하는 방법도 있지만, 귀찮으니 그냥 디렉토리 이름 빠르게 변경해줍시다.
npm install pkg
npx pkg exe로만들파일이름.js
보통은 exe 파일을 실행해야 나오는게 맞지만, 맥은 exe 파일이 아니라 macos 라는 이름으로 끝나느 파일을 실행해주면 됩니다.
패키지가 실행되면서 생성될때 자동으로 OS 별로 실행할수 있는 파일들을 모두 생성해 준다고 하네요. 역시 패키지같은거 아무나 만드는게 아닌가 봅니다. 참 똘똘하네요.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function guguadnStart() {
rl.question("구구단을 진행할 숫자: ", (num1) => {
rl.question("단수: ", (num2) => {
gugudan(num1, num2);
rl.question("구구단을 이어서 하시겠습니까? (멈춰 를 입력하세요): ", (answer) => {
if (answer.toLowerCase() === '멈춰') {
console.log("구구단 프로그램을 종료합니다.");
rl.close();
} else {
guguadnStart(); // 재시작
}
});
});
});
}
function gugudan(gugudanNumber, multiplyNumber) {
for (let i = 1; i <= multiplyNumber; i++) {
console.log(`${gugudanNumber} * ${i} = ${gugudanNumber * i}`);
}
}
guguadnStart(); // 처음 실행
이젠 구구단 실행이라는 함수를 한개 더 추가하고 rl.question 도 추가해주고 조건문도 추가해줘서 완벽하게 내가 제어할 수 있는 듯한 환경을 세팅해줍니다.
이제 한국인이라면 누구나 알고있는 멈춰
를 입력하기 전까진 이 구구단은 멈추지 않습니다.
하는김에 파일명도 좀 변경해줍니다.
분명히 과제에서 말한 구구단은 이정도가 아닌것 같지만, 그래도 하나 배워가니 그러려니 합니다.
생각보다 만드는게 오래걸려서 역시 왠만하면 이런 프로그램은 역시 파이썬이 짱인것 같습니다