[Project 나만의 무기] - 회고 02.18~20 D-22~20 (2주차 끝)

novxerim·2022년 2월 26일
0

SW-Jungle

목록 보기
56/59
post-thumbnail

📖 02.18 금요일

1. 공부 진행 상황

  1. 공부 진행 상황

    • Login에 대해서 이론을 공부할 때
      • 단순히 구현을 해보며 책에 나와있는 코드에 대한 설명을 읽으면 될 거라 생각했는데, 코치님의 조언은 다르셨다. Keyword를 중심으로 공부 해나가는 걸 추천해주셨다.
      • passport모듈을 사용해 로그인을 구현한다고 했을 때, 해당 모듈에서 지원하는 프로토콜은 OAtuh 2.0(RFC6749)인데
        • OAuth 2.0이 뭔지?
        • OAuth Protocol 0(제로)?
        • 이 프로토콜을 통해 구글이 하는 역할이 뭔지?
        • 이 프로토콜에서 활동하는 entity(개체)가 뭔지?
        • 브라우저 / auth 프로바이더...
        • 결국 얻는게 access Token인데, 이걸 언제 확인하고 언제 넣어주는건지?
        • 어떻게 확인하는건지? 어떻게 유지하는지? → redirect 참고해보기! https://velog.io/@undefcat/OAuth-2.0-간단정리
    • Algorithm X

2. 기술적 고민

  1. 기술적 고민

    [백엔드 팀 공부 계획 - 진행 상황]

    • 금-저녁) 로그인/회원가입 (+미들웨어, postman) https://kdinner.tistory.com/100
      • 완료. 데모용 임시방편으로 구글로그인만 가능한 상태였기 때문에 일반 로그인/회원가입 코드를 json형식으로 주고받도록 구현하였다.

      • 이미 메타버스가 구현되어있는 우리 코드에 새로운 로그인 코드를 껴넣는게 생각만큼쉽지 않았다. 로그인이면 기본 중의 기본이니 간단할거라 생각해 책에 나와있는 로그인 코드를 보며 해당 내용만 잘 집어넣으면 될 줄 알았는데.. 역시 실무는 마냥 쉽지 않다는 걸 느꼈다 😅

      • 프론트로 데이터만 넘겨주면 됐기 때문에 json으로 전달하는 코드를 작성했고, 직접 웹화면에서 테스트하는 롤이 아니었기에 로그인, 회원가입 등 기능 하나 하나마다 포스트맨 사이트에서 직접 request를 만들어 send해보면서 우리 DB에 email, nickname, password, accessToken, refreshToken이 잘 들어가는지 테스트해가며 구현을 완료했다!

      • 책으로 공부 → bcrypt, JWT사용 (+참고 블로그)

        https://velog.io/@chy0428/Node-JS-Bcrypt를-이용하여-로그인-정보-암호화하기

        javascript - JWT 로그인 및 세션 유지

    • 토-낮) API서버, AWS서버 배포 (HTTP~HTTPS)
      • 팀장님 낼 약속 있다고 밤에 후루룩 간결하게 얘기해줌. 다시 들을 예정
    • WebRTC-Mesh → SFU로 변경할 예정
      • 서버비용이 부담되어 Mesh 그대로 가자는 의견이 나왔다..!

    [추가할 것]

    • 카메라 디바이스 선택
    • 말풍선, 유저 닉네임 노출

3. 성찰

  1. 성찰
    • 잠 너무 줄이지 말 것! 잠이 보약이다..! 아프면 내 손해다.
    • 알고리즘 공부도 해야하는데 시간 분배를 어떻게 해야할까?

📖 02.19 토요일

1. 공부 진행 상황

  1. 공부 진행 상황
    • 미들웨어 만들어져있는 것 다시 한 번 더 볼 것!
    • 닉네임, 카메라 디바이스 추가, 마이크/카메라 on/off 기능
    • UseEffect
      export const user = {
        saveUserInfo: (nickname, character) =>
          axios.post("/users/update/profile", { nickname, character }),
        getUserInfo: () => axios.get("/users/get/userinfo"),
      };
      // BACK users.js
      
      /* GET users listing. */
      router.get("/get/userinfo", authUser, async function (req, res) {
        try {
          //여기의 버튼은 회원가입이 안되어있으면 못들어오는 페이지 => email check 안해도 될 듯함
          if (req.user) {
            res.json({ result: req.user });
          } else {
            res.json({ msg: "토큰이 만료되었습니다." });
          }
        } catch (e) {
          console.log(e);
        }
      });
    • Algorithm 완전탐색(진행중)

2. 기술적 고민

  1. 기술적 고민

3. 성찰

  1. 성찰
    • AWS EC2, S3 등 서버관리 페이지와 더 친해질 필요가 있다

📖 02.20 일요일

1. 공부 진행 상황

  1. 공부 진행 상황
    • 휴식 (몸상태가 안좋아서 3주만의 휴식) <- 코로나 옮은거였다.. ㅠㅠ 하하하하
    • Algorithm

2. 기술적 고민

  1. 기술적 고민
    • 화상채팅 버그 픽스 완료!!!
      • 화상채팅 그룹끼리 인접했을 경우, 한쪽 그룹으로 join_group 우선순위를 몰아주게 변경.
        그룹넘버가 겹치지않게 1씩 올리고, 그룹넘버가 높은쪽으로 joingroup
      • user_call 이벤트 함수 안에 guest_gN, host_gN 나눠서 그룹 생성 후 들어가게 만든 코드쪽을 수정해서 처리
      • 코드
        // app.js
        
        socket.on("user_call", async ({ caller, callee }) => {
            const user_caller = charMap[caller];
            const user_callee = charMap[callee];
            console.log("이것이 caller의 닉네임이다", user_caller.nickname);
        
            let guest_gN = user_callee.groupNumber;
            let host_gN = user_caller.groupNumber;
        
            console.log(guest_gN, host_gN);
        
            if (guest_gN) { // 둘 중 한 명 Group 있을 때
              if (!host_gN) {
                await joinGroup(guest_gN, user_caller.socket, user_callee.nickname);
                user_caller.groupNumber = guest_gN;
                console.log(user_caller.groupNumber, user_callee.groupNumber);
              } else { // guest_gN과 host_gN이 다를 경우를 추가
                if (guest_gN != host_gN) {
                  console.log("host, guest의 그룹 번호가 다릅니다.");
                  if (guest_gN > host_gN) {
                    await removeUser(caller);
                    joinGroup(guest_gN, user_caller.socket, user_callee.nickname);
                    user_caller.groupName = guest_gN;
                  } else {
                    await removeUser(callee);
                    joinGroup(host_gN, user_callee.socket, user.caller.nickname);
                    user_callee.groupName = host_gN;
                  }
                } else {
                  console.log("host, guest의 그룹 번호가 같습니다.");
                }
              }
            } else if (!host_gN) { // 둘 다 Group 없을 때 (guest X && host X)
              user_caller.groupNumber = await makeGroup(user_caller.socket);
              console.log("Caller가 만든 그룹 번호 :", user_caller.groupNumber);
            } else {
              // guest X && host O
              console.log("else일 때 host_gN: ", host_gN, "guest_gN: ", guest_gN);
            }
          });

3. 성찰

  1. 성찰
    • 아파도 울면서 하자 ㅠㅠ

profile
블로그 이전했습니다. https://yerimi11.tistory.com/

0개의 댓글