본문 바로가기

verdantjuly/Today I Learned

TIL 20230704

728x90

 

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 ] 오늘을 평가하였을 때 주니어 개발자가 될 수 있겠는가?

시간 내에 집중해서 많은 날 동안 노력하다보면 될 수 있을 것 같다.

다만 이제 될 수 있을 때까지의 시간을 줄여나가는 것이 관건일 것 같다. 

소감

오늘은 새로운 조에 배정받았다. 반가운 얼굴들이 많았는데, 너무 좋았다.

서로 성향을 알기도 하고 익숙하기도 해서 앞으로 잘할 수 있을 것 같다. 

조 이름은 산삼인데, 이름을 지어주신 팀장님께서 발견하면 기쁘니까라고 하셨다.

이름처럼 산삼같은 팀원들이다!

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20230706  (0) 2023.07.06
TIL 20230705  (0) 2023.07.05
TIL 20230703  (0) 2023.07.03
TIL 20230702  (0) 2023.07.02
TIL 20230701  (0) 2023.07.01