목록분류 전체보기 (160)
개발자공부일기
MongoDB를 연결해서 Insomnia로 API들을 테스트 하던 중 req.body의 특정 요소가 undefined라 구조분해할당을 할 수 없다는 오류가 나왔다. 근데 코드는 다 강의를 잘 따라했고 Insomnia에서도 스키마에 맞게 데이터를 잘 집어넣고 있었고그 오류난 특정 요소도 다 들어있었다. 코드도 req.body도 문제가 없었는데 뭐가 문제였을지 알아봤다. 결론부터 말하자면 파싱하는 미들웨어가 필요했다. bodyParser.urlencoded({ extended: true })와 bodyParser.json()을 동시에 사용하면, 클라이언트가 보낸 Content-Type 헤더에 따라 적절한 미들웨어가 요청 본문을 처리합니다. 각각의 처리 과정을 설명드리겠습니다.1. bodyParser.urle..
Node.js Node.js는 서버 사이드에서 JavaScript를 실행하기 위한 오픈소스 런타임 환경입니다. Chrome의 V8 JavaScript 엔진 위에서 작동하며, 비동기 I/O와 이벤트 기반 모델을 통해 높은 성능과 확장성을 제공합니다. 아래에 Node.js에 대한 자세한 설명을 제공합니다.1. Node.js의 특징(1) 비동기 및 이벤트 기반Node.js는 논 블로킹(non-blocking) I/O를 지원하여, 파일 읽기/쓰기, 데이터베이스 요청, 네트워크 요청 등을 동시에 처리합니다.이를 위해 이벤트 루프(Event Loop)를 사용하며, 이를 통해 단일 스레드에서 여러 작업을 처리할 수 있습니다.(2) 단일 스레드 구조Node.js는 단일 스레드에서 실행되지만, libuv라는 C++ 라..
드디어 개인과제를 마무리 했다. 갖가지 트러블슈팅을 하면서 내가 꼼꼼하지 못한 부분이 어딘지 알게 되었다. 특히 함수를 작성하거나 변경할때 변수를 같이 안바꾸는 점을 주의해야겠다.정렬 알고리즘들을 다시 배우기 시작했다. 예전에 정처기랑 전공하면서 배웠던건데 코드 직접 작성하는게 생각보다 어려웠다. 자료 다시 훑어보면서 더 익숙해져야겠다.
정렬 알고리즘은 주어진 데이터를 특정한 순서대로 정렬하는 방법입니다. 여러 가지 정렬 알고리즘 중에서 버블 정렬(Bubble Sort), 삽입 정렬(Insertion Sort), 선택 정렬(Selection Sort)은 기본적인 비교 기반 정렬 알고리즘으로 자주 사용됩니다. 이들은 모두 시간 복잡도가 O(n²)로 비효율적이지만, 간단하게 구현할 수 있습니다.1. 버블 정렬 (Bubble Sort)버블 정렬은 인접한 두 요소를 비교하여 교환하는 방식으로 정렬을 수행하는 알고리즘입니다. 가장 큰 값이 매번 마지막으로 "버블처럼" 올라가므로 버블 정렬이라는 이름이 붙었습니다.작동 원리배열의 처음부터 끝까지 인접한 두 값을 비교하고, 그 순서가 잘못되었으면 값을 교환합니다.첫 번째 반복이 끝나면 가장 큰 값이 ..
게임속 어느 수치가 일정부분 이상 넘으면 업적을 달성하는 시스템을 만들었다. 저장은 잘 되는거 같은데 1번째 플레이어의 업적이 다음 플레이어들에게 상속된다. 업적을 저장하고 업적수치를 저장하는 변수들을 초기화하지 않았다. 변수를 다시 0으로 초기화 시켜주니 정상작동 =============================================아 갑자기 잘 되던 기록저장이 말썽이다. 분명 undefined가 아닌걸 디버깅으로 확인했는데 localeCompare함수가 undefined라며 오류가 난다. 또 변수명이 문제였다. localeCompare을 할때 a.name.localeCompare(b.name)으로 하고 있었다. 기록에 저장될때 이름부분의 key는 playerName이었다. 어디서 많이 보던..
어제 플레이 기록을 불러올때 undefined가 자꾸 나오던 버그를 수정했다. 이름만 안되고 스테이지만 정상적으로 불려오는게 입출력에 문제가 있는거 같지는 않았고 저장할때 뭔가 잘못하고 있는거 같았다. 디버그 하는법도 유튜브랑 vscode공홈에서 찾아서 디버그를 해보니까 역시 변수명이 틀렸었다. playerName이란 변수로 집어 넣어서 Key값이 playerName으로 되어있더라 난 지금까지 record.name으로 불렀었다. record.playerName으로 가져오니 정상작동함. 나머지 스테이지별로 정렬하기같은 기능들도 정상적으로 작동한다. 만세! 이게 버그를 찾다보면 드는 생각인데 세상 별거 아닌게 자꾸 괴롭힌다. 사실 큰 버그면 잘보이니까 찾기도 쉬운거지만..암튼 오늘은 좀 잘풀렸다.진작에 디..
강화시스템을 만들던 도중 갑자기 도망기능이 고장났다. 거긴 건드리지도 않았는데 왜 그런지 모르겠다. 이전 스테이지에서 도망을 성공한 후 스킬을 사용하면 갑자기 도망에 성공하는 문구가 나오며 스테이지가 끝난다. 알고보니 도망의 성공을 판단하는 변수가 true에서 false로 초기화되는 문구가 없었다. 이전에 테스트할때 도망을 성공하고 바로 종료해서 이번 케이스같은 경우가 없었다.이제 테스트할때 몇 번씩 더 해봐야겠다. ============================================= 로비에서 지금까지 플레이 기록을 볼 수 있게 만들고 있는데 자꾸 이름이 undefined로 저장된다. 그래서 당연히 정렬관련 함수도 싹 오류난다. 아니 뒤에 ~의 ~기록이 저장되었다는 문구를 띄울때는 플레이어이..
게임이 종료되는 조건이 실행되지 않아서 플레이어가 첫 스테이지에서 패배했음에도 게임이 종료되지 않음. chat gpt와 구글 검색으로 열심히 원인을 찾아봤지만 찾을 수 없었다. 계속 생각하며 코드를 돌려보던 중 10스테이지 이후에만 실행되는걸 발견 battle의 루프안에 조건을 추가해서 해결 그리고 패배시 break문이 없어서 계속 진행됐던것. break추가하니 정상 작동======================================몬스터의 스킬 함수를 만들던 도중 몬스터내의 메서드임에도 monster.name을 찾을 수 없다고 나옴. 그래서 상위함수의 this가 monster를 가리키고 있으니 this로 변경. 변경하니 정상 작동. ===================================..
