728x90
이번 주 목표 Weekly Plan
짧은 산책 기획
수업
오늘 목표 Daily Plan
수업 듣기
오늘 한 것 Done Today
수업 듣기
1. http.createServer()
const http = require("http"); // commonjs import 방식
// req : HTTPRequest 객체
// res : HTTPResponse 객체
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain"); // client에 제공해 줄 컨텐트 데이터 타입은 text
res.write("Hello World");
res.end();
});
// http 80, https 443일 경우에는 생략
server.listen(4500);
2. 서버 버전 보기
ver. 2.1.0
첫 번째 자리 : 메이저
두 번째 자리 : 마이너
세 번째 자리 : 패치
3. module.exports
const add = (a, b) => {
return a + b;
};
const substract = (a, b) => {
return a - b;
};
module.exports.substract = substract;
module.exports.add = add;
4. fs
const fs = require("fs");
fs.readFile("hello.txt", "utf-8", (err, data) => {
if (err) {
console.log(err);
}
console.log(`data : ${data}`);
});
5. readFileSync
const fs = require("fs");
fs.readFile("hello.txt", "utf-8", (err, data) => {
if (err) {
console.log(err);
}
console.log(`data : ${data}`);
});
// 가독성 때문에 readFileSync로 쓰면 좋다.
try {
const data = fs.readFileSync("hello.txt", "utf-8");
console.log(`readFileSync data : ${data}`);
} catch (err) {
} finally {
}
6. writeFileSync
const fs = require("fs");
const content = `안녕하세요
홍길동입니다. 오늘은 날씨가
참 좋아요 열두시 사십오분에
밥먹으러 가요
`;
// 1. 파일명 2. 내용 3. 에러 콜백 함수
fs.writeFile("out.txt", content, (err) => {
console.log(err);
});
try {
fs.writeFileSync("out2.txt", content);
} catch (err) {
console.log(err);
}
7. readDirSync
const fs = require("fs");
const dirName = "naver/daum/google";
// recursive : parent 폴더 생성 여부
fs.mkdirSync(dirName, { recursive: true });
const content = `안녕하세요 네이버
구글
다음 중에 하나에 입사하고 싶어용`;
// 문제
// naver/daum/google/out.txt 에 content를 넣어 주세요
try {
const isDirExist = fs.readdirSync(dirName);
if (isDirExist) {
console.log("디렉터리가 존재합니다.");
}
const fileName = "out.txt";
fs.readFile(dirName + "/" + fileName, (err, data) => {
if (err && err.message.includes("ENOENT")) {
console.log("파일이 존재하지 않습니다. 파일을 새로 씁니다.");
}
if (data) {
console.log("파일이 존재합니다. 파일을 덮어씁니다.");
}
});
fs.writeFile(dirName + "/" + fileName, content, (err) => {
if (!err) {
console.log("파일 작성이 완료되었습니다.");
}
});
} catch (err) {
console.log(`에러 발생 : ${err}`);
} finally {
}
8. child_process
const { exec } = require("child_process");
const cmd = "ls -la";
exec(cmd, (err, stdout, stderr) => {
if (err) {
console.log(`에러 발생 : ${err}`);
}
console.log(stdout);
});
9. path.parse()와 fs.existsSync
const fs = require("fs");
const path = require("path");
const newFilePath = path.join(__dirname, "a3", "b3", "c3", "d3.txt");
console.log(newFilePath);
console.log(path.parse(newFilePath).dir); // path를 파싱해서 dir까지만
console.log(path.parse(newFilePath).base); // full path
const makeFile = (filepath, content) => {
const fileName = path.parse(filepath).base;
const dirPath = path.parse(filepath).dir;
const isDirExist = fs.existsSync(dirPath);
if (!isDirExist) {
console.log("디렉터리가 존재하지 않습니다. 디렉터리를 생성합니다.");
fs.mkdirSync(dirPath, { recursive: true });
}
if (fileName.includes(".")) {
fs.writeFileSync(filepath, content);
}
};
makeFile(newFilePath, "새로운 파일이 생성되었습니다.");
10. os 모듈
const os = require("os");
console.log(`Platform : ${os.platform()}`);
console.log(`Architecture : ${os.arch()}`);
console.log(`CPU : ${os.cpus().length}`);
console.log(`Total Memory : ${os.totalmem() / 1024 / 1024 / 1024} GB`);
11. json
{
"data": [
{
"title": "첫 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "두 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "세 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "네 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "다섯 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "여섯 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "일곱 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "여덟 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "아홉 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
},
{
"title": "열 번째 제목",
"content": "내용입니다. 오늘 저녁은 뭐 먹을까요? ",
"author": "홍길동",
"createdAt": "2024-10-24"
}
]
}
12. JSON.parse()
const fs = require("fs");
const result = fs.readFileSync("test.json");
const { data } = JSON.parse(result);
data.forEach((post) => {
console.log(`제목 : ${post.title}`);
console.log(`내용 : ${post.content}`);
});
13. map의 특성
map은 빈 값은 iterate 하지 않는다.
14. 배열 순회하여 json 만들기
const { makeFile } = require("./ch03_07");
const count = 10;
let posts = Array.from({ length: count }, (v, index) => {
return {
title: `${index}번째 제목`,
content: `${index}번째 내용입니다.`,
author: `${index}번째 저자`,
};
});
console.log(posts);
const data = { data: posts };
const result = JSON.stringify(data);
makeFile("test2.json", result);
15. json 게시판 만들기
const http = require("http");
const url = require("url");
const fs = require("fs");
http
.createServer((req, res) => {
const path = url.parse(req.url, true).pathname;
if (path == "/json") {
res.setHeader("Content-Type", "application/json;charset=UTF-8");
const data = {
name: "lee",
age: 40,
address: "서울시 양천구 신림동",
};
const result = JSON.stringify(data);
res.end(result);
} else if (path == "/test") {
res.setHeader("Content-Type", "application/json;charset=UTF-8");
const fileName = "test2.json";
const fileData = fs.readFileSync(fileName, "utf-8");
res.end(fileData);
}
})
.listen(4500);
KPT
Keep
착실히 수업을 듣고 있다
Problem
수업 외에 다른 것을 못하고 있다
Try
더 열심히 하기
소감 Diary
예전보다 몰입도가 떨어진 것 같다
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20241031 (1) | 2024.10.31 |
---|---|
TIL 20241025 (0) | 2024.10.31 |
TIL 20241023 (5) | 2024.10.23 |
TIL 20241022 (1) | 2024.10.22 |
TIL 20241021 (0) | 2024.10.21 |