분류 전체보기 29

20241106 TCP 서버 팀 프로젝트

팀 프로젝트에서 몬스터 부분 패킷을 담당받았는데 아무래도 기존 개인 과제를 못했다 보니 패킷 보내는 방식이 익숙하지 않았는데. 팀원들이 코드 관리를 깔끔하게 해 줘서 그걸 바탕으로 패킷을 보내는 방법에 익숙해질 수 있었다.export const enemyMonsterDeathNotification = async (socket, payload) => { try { const { monsterId } = payload; const EnemyUserSocket = await getUserBySocket(socket); // 데이터에서 적의 socket 가져오기 EnemyUserSocket.write(createS2CEnemyMonsterDeathNotification(monsterId)..

카테고리 없음 2024.11.06

20241105 TCP 서버 팀 프로젝트

오늘 기존 TCP 서버 관련해서 이해가 좀 안되서 중간에 베이직 반 수업하는게 궁금해서 구경을 갔는데 class 객체를 통한 상속과 합성에 관한 이야기를 하고 있었다. class 상속은 class를 생성할 때 기존에 존재하는 class의 키 값을 포함하는 객체를 생성한다면class Vehicle { constructor(name, isRide) { this.name = name, this.isRide = Boolean }}class Car extends Vehicle { constructor(name, isRide, frame, engine, wheel) { super(name, isRide) this.frame = frame, ..

20241101 TCP 서버 제작

무슨 아침부터 TIL을 적나 싶지만 평소에 안적기도 했고  지금 과제가 도저히 마무리 할 수 없을거 같아서 그냥 배운점 적는다는 느낌으로  일단 이벤트 별 파일 구분이 굉장히 많은점이 이게 어려운듯 하면서 관리가 쉽게 된다라는 이유는 알거 같았다. 특정 파일이 에러가 나면 해당 파일을 살펴보는데 오랜 시간이 소요되지 않고, 어떤 파일이 에러가 났는지 파악 한 후 해당 파일만 고치면 빠른 시간 이내로 에러 처리가 가능해서 좋았다. 아무래도 파일이 많아지다 보니 원하는 파일이 어디있지 하는 느낌은 있지만, 용도와 기능에 따라 분리하고 관리하면 좋은 방식이라고 생각했다.

websocket 개인 과제 241014

풀이 영상을 보면서 코드를 짜고 있는데 아니 이게 분명 이해는 되는데.. 분명 어떤 원리로 작동하는지는 알겠는데 그 과정이랑 문제가 너무 난이도가 높다 라는 생각은 들었던 과제였다. 느낌을 말하면 그 동안 배워온거는 중학생 수준까지의 원리인데 그 원리를 가지고 수능문제를 만든거 같은 깊음 이라고 해야하나. 내가 물론 공부를 열심히 안하긴 했는데 솔직히 제대로 했어도 반의 반도 하기 힘들었을거 같다고 해야하나? 처음에 영상 안보고 과제를 보면서 느낀거는 어 이거 public 안쪽 파일 코드를 많이 건드려야 겠는데? 어떤 방식이지? 수준이었는데 풀이 영상을 보면서 테이블은 처음 예시를 볼 때 부터 아 이거 예시용이라고 너무 낚시성으로 하셨다 라는건 알았는데 그 뒤에 하는거는 음 알겠는데 이런 방식으로 하는걸..

카테고리 없음 2024.10.14

websocket 진행 241018

지난주부터 HTTP프로토콜 위에서 진행되는 양방향 통신인 websocket에 대해서 배우고 있다. 웹소켓은 이러한 특징을 가지고 있다.실시간 통신웹소켓은 연결이 활성화된 상태에서 빠르고 지속적인 메시지 교환을 허용합니다. 이로 인해 애플리케이션은 사용자에게 지연 없는 인터랙션을 제공할 수 있습니다.양방향 통신 (Full-Duplex)클라이언트와 서버가 동시에 서로에게 메시지를 보낼 수 있습니다. 이는 한 쪽이 다른 쪽의 메시지를 기다리지 않고도 독립적으로 메시지를 송수신할 수 있음을 의미합니다.지속적 연결일단 웹소켓 연결이 수립되면, 그 연결은 클라이언트나 서버가 명시적으로 종료할 때까지 유지됩니다. 이는 오버헤드를 줄이고 빠른 데이터 전송을 가능하게 합니다.낮은 오버헤드웹소켓은 데이터 패킷의 헤더가 매..

카테고리 없음 2024.10.08

CH3 - 거북하지 않은 코딩(18조) KPT

우리 조의 KPT keep- git 활용이 좋았다.- api 역할분담이 잘 되었다.- 아침 회의시간에 서로 할일을 말하고 토론했다.- 팀원 간 모르는거에 대한 질문 및 소통이 활발했다. problem- 코드 진행 도중 소통이 부족해서 시간이 부족했다.- 코드 리뷰 시간이 존재하지 않았다.- 별도의 마감 일정을 정하지 않아서 코드 완성시기가 늦어졌다.- 코드 리팩토링 시간이 부족했다. try- 저녁 식사 이후 7시부터 8시까지 코드 리뷰 시간을 가진다.

CH3 풋살 온라인 프로젝트 240923

회의 후 기존에 내가 맡았던 파트를 모두 완료해서 지금 남는 시간을 어떻게 써볼까 하다가 챌린지 요소인 강화를 한번 생각해보자는 마인드로 강화 라우터를 짜 보았다. 아무래도 기존 강화가 없던 기획에서 강화를 하다보니 강화 표현하는 부분에서 기존 코드와 충돌이 있었는데 그중 기존 코드와 가장 충돌이 없을만한 방향은 플레이어 테이블에 강화 수치를 추가해서, 최대 강화 수치만큼 넣는 거라고 생각했다.idnamespeedshootpowergoal_finishdefensestaminalevel1mesi707080507012mesi757585557523mesi808090608034mesi858595658545mesi909010070905 테이블을 이런식으로 제작하고, 강화가 성공하면 같은 명칭의 +된 레벨을 찾아서..

카테고리 없음 2024.09.23

CH3 풋살 온라인 프로젝트 240920

1. prisma method sql내부의 값을 범위를 지정해서 해당 범위의 row의 값 중 하나를 랜덤으로 값을 들고와야하는 상황이 생겼는데 기존 sql에서는 where구문과 부등호를 사용해서 범위를 지정하여 들고 올 수 있으니까 ORM에서도 특정 method를 사용하면 가능하지 않을까 하면서 prisma사이트를 뒤져보다가 lt와 gt를 발견했다. 각각 less then 과 greater then이라고 하는데 이걸 이용해서const Matchlevel = await userDataClient.rank.findMany({ where: { AND: [ { rankpoint: { lt: rankA.rankpoint + 100 } }, { rankpoint..

카테고리 없음 2024.09.20

CH3 풋살 온라인 프로젝트 240919

팀 프로젝트의 게임 플레이 부분을 맡게 되었는데 현재 우리 프로젝트의 게임 플레이 방식은 1. 랭크 점수를 도입하여 해당 점수와 비슷한 상대를 만나고2. 해당 플레이어와 자신의 팀의 선수 스텟을 비교하여 승패를 정한 뒤에3. 자신이 승리하면 랭크점수를+, 졌을 경우 -하기로 하였다. 이후 게임 플레이 api를 작성하기 위한 순서를 먼저 작성하고.// 게임 플레이 api// 0. 플레이어의 덱 정보 확인// 0-1. 플레이어의 덱이 완성되어 있는가// 1. 플레이어 끼리 매칭(랭크 점수)// 1-1. 매칭 레벨 안에 상대 가능한 플레이어가 있는가..?// 2. 매칭 후 플레이// 2-1 . 선수들의 정보 확인// 2-2 . 선수 포지션 별 스텟 가중치 적용// 2-3 . 적용된 가중치를 통한 플레이 진행/..