항해 99
-
항해 99 5기 TIL_82항해 99 2022. 4. 2. 16:11
▶ Today I Learned [다른 방의 사람에게 채팅이 보이거나 알람 발생] 문제 상황 a와 b가 방을 만든 후 c가 a의 방에 들어간 다음 나와서 b의 방으로 들어감, 여기서 a가 채팅을 치면 c는 b의 방에 있는데도 그 채팅이 보이고, a가 방을 나가면 그 방을 나갔단 알람이 c에게는 보임 => c가 이전에 들어갔던 모든 참가자의 정보와 연결된 채 그대로 넘어옴, c가 이전에 들어갔던 방에서 제대로 빠져나오지 못한 것 같음 => 우리가 짰던 코드 에서 특정 유저가 방을 나가면 방목록에서 그 유저의 소켓아이디를 제거하긴 함, but 이것과 별개로 socket에는 io.sockets라는 곳에 별도로 소켓 아이디와 방 목록 같은 게 있었던 것이 기억남 => 그 socket 서버 자체의 방목록에서 특정..
-
항해 99 5기 TIL_81항해 99 2022. 4. 1. 17:16
▶ Today I Learned [방에 사람이 있는지 없는지 일정 주기로 체크하기] setInterval()라는 함수를 이용하면 가능하다 function checkLeftUser (id) { console.log("socket id socket id socket id",socket.id); console.log("users[roomId] users[roomId] users[roomId]", users[roomId]); console.log("users[roomId].includes(id) 다ㅏㅏㅏㅏㅏㅏ",users[roomId].includes(id)) } setInterval(checkLeftUser, 5000, socket.id) socket.js 코드 socket.on("disconnecting",..
-
항해 99 5기 TIL_80항해 99 2022. 3. 31. 15:01
▶ Today I Learned [새로운 뱃지 지급 알람] 새로운 뱃지가 생기면 생기고 나서 최초 1번만 마이페이지에 들어가면 새로운 뱃지가 열렸다는 알람이 뜨도록 했다. 처음 짰던 코드는 다음과 같다. let newBadge = 0; // UserController에 전달될 newBadge 전역변수 저장 module.exports = { create: { local: asyncWrapper(async (req, res) => { @@ -165,13 +167,14 @@ module.exports = { await user.addMyBadges( firstComeBadge.id ); newBadge = firstComeBadge.id res.status(200).json({ isSuccess: true, ..
-
항해 99 5기 TIL_79항해 99 2022. 3. 30. 04:17
▶ Today I Learned [테스트 시 CORS 에러] 프론트 측의 사이트나 백 측의 서버가 배포되지 않은 경우 CORS문제로 접근이 불가능 할 수 있다. 이때는 자신의 브라우저에서 설정에 들어가 해당 옵션을 임의로 지정해줄 수 있다. 내가 쓰는 brave의 경우 brave://flags/ 라는 주소를 입력하면 브라우저의 여러가지를 설정할 수 있는 곳이 나온다. 거기서 아래의 문구가 있는 곳을 Enabled해준 다음 빈 칸에 자신이 접속하고자 하는 브라우저의 url을 넣고 브라우저를 relaunch하면 된다. 그러면 해당 브라우저의 uri를 안전한 origin으로 인식해준다. (물론 서버 코드 내에서도 cors를 설정해주어야 하니 참고하자.) Insecure origins treated as sec..
-
항해 99 5기 TIL_78항해 99 2022. 3. 29. 02:38
▶ Today I Learned [주가 바뀔 때 시간 초기화] 아래와 같은 코드를 짰다. let oneDay = 86400000 let lastUpdateDate = new Date(2021,2,20,0) let checkingDate = new Date(2021,2,27,1) // 확인 날짜 console.log(checkingDate.getDay(), "checkingDate.getDay()") console.log(lastUpdateDate.getDay(),"lastUpdateDate.getDay()") let lastUpdatedZeroHour = new Date(lastUpdateDate.getFullYear(), lastUpdateDate.getMonth(), lastUpdateDate.get..
-
항해 99 5기 TIL_73항해 99 2022. 3. 25. 04:43
▶ Today I Learned [MySQL Join된 테이블 사용] 현재 우리는 sequelize라는 ORM 프레임워크로 MySQL을 조작하고 있다. 아래는 User테이블의 join 부분 User.associate = (db) => { db.User.belongsToMany(db.Badge, { through: "UserBadge", as: "MyBadges", onDelete: "CASCADE" }); db.User.belongsTo(db.Badge, { as: "MasterBadge", foreignKey: "masterBadgeId" }); }; User와 Join된 Badge 테이블의 join 부분 Badge.associate = (db) => { db.Badge.belongsToMany(db...
-
항해 99 5기 TIL_72항해 99 2022. 3. 25. 04:43
▶ Today I Learned Mongo DB도 한 3주 사용하지 않다가 사용하게 되니 은근히 낯선 느낌이 들었다. 손에 익으려면 좀 더 연습이 필요한 것 같다. 관련된 링크들을 참조해가며 필요한 작업을 했다. 링크는 하단 참조 [정수삼각형] 소요 시간: 53분 + 30분 해결 여부: 미해결 https://www.acmicpc.net/problem/1932 다이나믹 프로그래밍 const N = 5 const input =[[7],[3, 8],[8, 1, 0],[2, 7, 4, 4],[4, 5, 2, 6, 5]] const sum = Array.from(new Array(N), () => new Array()); // Array.from(arrayLike, mapFn) 기본적으로 이런 형태다. // 즉,..
-
항해 99 5기 TIL_71항해 99 2022. 3. 22. 04:18
▶ Today I Learned [Mysql 사용하면서 Mongo DB에 일부 데이터 옮겨 둘을 동시에 사용] 현재 DB는 MySQL을 사용하고 있지만 여기서 시간기록과 관련된 데이터를는 Mongo DB 넣는 식으로 진행해보려한다. 조금 과거의 글이기는 하지만 스택오버플로우를 찾아보니 둘의 공존은 가능하다. MongoDB and MySQL are completely separate applications. They have no way to communicate with each other except through your application. That means if a request needs data from both sources, it needs to query both separately...