TIL 20230704
Event
9:00 노드 심화 주차 발제
19:30 후발대 강의
생활 계획표
AM 6:00 체조, 아침식사, 산책, 샤워, 설거지, 세탁
AM 7:00 입실, 알고리즘 공부
AM 9:00 본 공부 시작
PM 1:00 ~ 2:00 점심 식사
PM 6:00 ~ 7:00 저녁식사
PM 7:00 TIL, WIL 제출
PM 9:00 퇴실 (카톡 확인)
PM 11:00 취침
이번 주 목표
월요일 : 노드 심화 강의 듣기 (1-12까지), 프로그래머스 1문제, 알고리즘 1주차 숙제1
화요일 : 노드 심화 강의 듣기 (1-23까지), 프로그래머스 1문제, 알고리즘 1주차 숙제2
수요일 : 노드 심화 강의 듣기 (테스트 코드?), 프로그래머스 1문제, 알고리즘 2-2까지
목요일 : 노드 심화 과제 Lv.3 리팩토링 (피드백 반영), 프로그래머스 1문제, 알고리즘 2-3까지
금요일 : 노드 심화 과제 Lv.4 댓글, 프로그래머스 1문제, 알고리즘 2-6까지
토요일 : 노드 심화 과제 Lv.4 좋아요, 프로그래머스 1문제, 알고리즘 2-10까지,
일요일 : 노드 심화 과제 Lv.4 좋아요 게시글 조회, 검토, 제출, 프로그래머스 1문제, 알고리즘 2주차 숙제
오늘 목표
노드 심화 강의 듣기 (1-12까지)
프로그래머스 1문제
알고리즘 1주차 숙제1
TIL 작성
TIL 리뷰
오늘 한 것
TIL 작성
TIL 리뷰
알고리즘 1주차 숙제1
프로그래머스 1문제
문자열 정렬하기(1) : https://verdantjuly.tistory.com/277
노드 심화 강의 듣기 (1-12까지)
1. 버블 정렬
참고 자료 : https://im-developer.tistory.com/133
function bubbleSort (array) {
for (let i = 0; i < array.length; i++) {
let swap;
for (let j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap = array[j];
array[j] = array[j + 1];
array[j + 1] = swap;
}
}
console.log(`${i}회전: ${array}`);
if (!swap) {
break;
}
}
return array;
}
console.log(bubbleSort([5, 4, 3, 2, 1]));
2. socket 사용
const express = require("express"); // 1. Express 모델을 불러오기
const { Server } = require("http"); // 1. http 모듈 불러오기
const socketIo = require("socket.io"); // 1. Socket 모듈 불러오기
const cookieParser = require("cookie-parser");
const goodsRouter = require("./routes/goods.js");
const usersRouter = require("./routes/users.js");
const authRouter = require("./routes/auth.js");
const connect = require("./schemas");
const app = express();
const http = Server(app); // Express를 http 로 감싸도록 구성
const io = socketIo(http);
const port = 3000;
connect(); // mongoose를 연결합니다.
// Socket 이 접속했을 때, 해당하는 콜백 함수가 실행된다.
io.on("connection", (sock) => {
console.log("새로운 소켓이 연결되었습니다."); // 1. 소켓 사용자가 접속합니다.
// 현재 접속한 Socket 클라이언트가 종료하였을 때, 실행됩니다.
sock.on("disconnect", () => {
console.log(`${sock.id}에 해당하는 사용자가 연결을 종료하였습니다.`);
});
// 클라이언트가 상품을 구매했을 때 발생하는 이벤트
sock.on("BUY", (data) => {
const { nickname, goodsId, goodsName } = data;
const emitData = {
// 2.emit 데이터 만들기
nickname: nickname,
goodsId: goodsId,
goodsName: goodsName,
date: new Date().toISOString(),
};
// 3. 클라이언트가 구매한 정보를 바탕으로 BUY_GOODS 메시지 전달해 줘야 합니다. (소켓에 접속한 모든 사용자)
// sock.emit
io.emit("BUY_GOODS", emitData);
});
});
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static("assets"));
app.use("/api", [goodsRouter, usersRouter, authRouter]);
app.get("/", (req, res) => {
res.send("Hello World!");
});
http.listen(port, () => {
console.log(port, "포트로 서버가 열렸어요!");
});
정리
버블 정렬
function bubbleSort (array) {
for (let i = 0; i < array.length; i++) {
let swap;
for (let j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap = array[j];
array[j] = array[j + 1];
array[j + 1] = swap;
}
}
console.log(`${i}회전: ${array}`);
if (!swap) {
break;
}
}
return array;
}
console.log(bubbleSort([5, 4, 3, 2, 1]));
소켓 사용
const express = require("express"); // 1. Express 모델을 불러오기
const { Server } = require("http"); // 1. http 모듈 불러오기
const socketIo = require("socket.io"); // 1. Socket 모듈 불러오기
const cookieParser = require("cookie-parser");
const goodsRouter = require("./routes/goods.js");
const usersRouter = require("./routes/users.js");
const authRouter = require("./routes/auth.js");
const connect = require("./schemas");
const app = express();
const http = Server(app); // Express를 http 로 감싸도록 구성
const io = socketIo(http);
const port = 3000;
connect(); // mongoose를 연결합니다.
// Socket 이 접속했을 때, 해당하는 콜백 함수가 실행된다.
io.on("connection", (sock) => {
console.log("새로운 소켓이 연결되었습니다."); // 1. 소켓 사용자가 접속합니다.
// 현재 접속한 Socket 클라이언트가 종료하였을 때, 실행됩니다.
sock.on("disconnect", () => {
console.log(`${sock.id}에 해당하는 사용자가 연결을 종료하였습니다.`);
});
// 클라이언트가 상품을 구매했을 때 발생하는 이벤트
sock.on("BUY", (data) => {
const { nickname, goodsId, goodsName } = data;
const emitData = {
// 2.emit 데이터 만들기
nickname: nickname,
goodsId: goodsId,
goodsName: goodsName,
date: new Date().toISOString(),
};
// 3. 클라이언트가 구매한 정보를 바탕으로 BUY_GOODS 메시지 전달해 줘야 합니다. (소켓에 접속한 모든 사용자)
// sock.emit
io.emit("BUY_GOODS", emitData);
});
});
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static("assets"));
app.use("/api", [goodsRouter, usersRouter, authRouter]);
app.get("/", (req, res) => {
res.send("Hello World!");
});
http.listen(port, () => {
console.log(port, "포트로 서버가 열렸어요!");
});
체크리스트
[ O ] 예쁜 말로 협업하였는가?
[ O ] 12시간 동안 몰입하였는가?
[ O ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?
[ O ] 친절한 개발자였는가?
[ O ] 오늘을 평가하였을 때 주니어 개발자가 될 수 있겠는가?
시간 내에 집중해서 많은 날 동안 노력하다보면 될 수 있을 것 같다.
다만 이제 될 수 있을 때까지의 시간을 줄여나가는 것이 관건일 것 같다.
소감
오늘은 새로운 조에 배정받았다. 반가운 얼굴들이 많았는데, 너무 좋았다.
서로 성향을 알기도 하고 익숙하기도 해서 앞으로 잘할 수 있을 것 같다.
조 이름은 산삼인데, 이름을 지어주신 팀장님께서 발견하면 기쁘니까라고 하셨다.
이름처럼 산삼같은 팀원들이다!