__dirname, __filename
const path = require("path");
console.log(__dirname); // 이프로그램이잇는디렉토리
// C:\Workspace\03.BackEnd\01.NodeJS
console.log(__filename); //이프로그램의파일이름
// C:\Workspace\03.BackEnd\01.NodeJS\01.전역변수.js
//상대경로 relative path
const relPath = "tmp/textfile.txt"
절대경로 absolute path 처음부터끝까지
const absPath = path.join(__dirname, "tmp", "textfile.txt")
console.log(absPath)
위아래둘다가능
const absPath = path.join(__dirname, relPath)
console.log(absPath)
console.log(process.env); // 환경 설정
console.log(process.env.COMPUTERNAME); //컴퓨터네임 // CSH
console.log('process.version:', process.version); // NodeJS version // process.version: v16.17.0
console.log('process.arch:', process.arch);
console.log('process.platform:', process.platform);
console.log('process.argv:', process.argv);
process.exit(0); // 정상 종료, 코드값이 -1은 비정상 종료
console.log('프로세스'); // unreachable
// Hoisting - 함수와 변수 선언을 프로그램의 제일 위로 올리는 것
function aa() {
let a = 2;
return a;
let b = 3; // unreachable
}
process.on('exit', code => {
console.log('프로그램 종료'); // 종료시점에 발동
console.log('exit code:', code);
});
process.on('uncaughtException', error => {
console.log('예외 발생'); // 에러 발생시 발동
console.log('예외 명:', error.name);
console.log('예외 내용:', error.message);
});
// 예외 발생
error.error.error(); // 에러 유발
process.exit(-1); // 종료
에러를 발생시킨다
// cmd 실행
const readline = require('readline');
const r1 = readline.createInterface({
input: process.stdin, // standard input, terminal(keyboard)
output: process.stdout // standard output, terminal(monitor)
});
r1.setPrompt('숫자를 입력하세요.> '); //인풋받을 때 문구를 추가
r1.prompt(); // 인풋 받는 코드
// I/O(input, 파일 읽기/쓰기, 데이터 통신 등) 작업은 콜백 함수에서 처리함
r1.on('line', buf => { // 숫자를 입력하고 엔터 키를 쳤을때
// buf 는 인풋받은 것
let num = parseInt(buf);
let evenOdd = (num % 2 == 0) ? '짝수' : '홀수';
console.log(`입력한 숫자는 ${num}이고 ${evenOdd}입니다.`);
r1.close() // 끝낼 때 반드시 처리해야 함
});
const os = require("os");
console.log(os.cpus()); //cpu정보
console.log(os.cpus().length); //시피유 수
console.log(Math.round(os.totalmem()/Math.pow(2,30), 4)+'GB', os.freemem());
토탈메모리 기가바이트변환 , 프리메모리
console.log("토탈메모리",os.totalmem()); // 아래서 기가바이트 단위로 변환
console.log("토탈메모리 "+os.totalmem()/Math.pow(2,30)+" GB");
console.log("프리메모리",os.freemem()); // 아래서 기가바이트 단위로 변환
console.log("프리메모리 "+os.freemem()/Math.pow(2,30)+" GB");
console.log(os.networkInterfaces()); //네트워크정보
URL 모듈은 parse(), format(), resolve() 총 3가지 메소드를 가지고 있다.
이 중 사용자로부터 문자열 형식으로 받은 URL 요청을 처리하기 위해 'parse()'가 가장 많이 활용된다.
parse() : URL 문자열을 입력하면 URL 객체를 만든다. 'format()'의 반대
format() : URL 객체를 입력하면 URL 문자열을 반환한다. 'parse()'의 반대
resolve() : 상대 URL을 절대 URL로 변경한다.
//url 모듈
const url = require("url"); // url 변수가 아닌 모듈
const urlSample = "https://www.hanbit.co.kr/academy/books/book_view.html?p_code=B8613955880"
const parseObject = url.parse(urlSample);
console.log(parseObject); // 각종 정보
console.log(parseObject.href); //"https://www.hanbit.co.kr/academy/books/book_view.html?p_code=B8613955880"
console.log(parseObject.query); //p_code=B8613955880