본문 바로가기

전체 글303

[Dead lock]이 발생했다!!!!!! 개발 서버에서 갑자기 deadlock 메시지가 날라와 확인해 보았다. [에러 메시지]Error: ER_LOCK_DEADLOCK: Deadlock found when trying to get lock; try restarting transaction... 에러 내용을 자세히 적을 수는 없지만 데드락이 발생하였고, 무슨 내용인지 자세하게 확인하기 위해 mysql에 아래의 쿼리를 날려 내용을 확인 해봤다. [상태 확인 쿼리]SHOW ENGINE INNODB STATUS;위의 쿼리를 적으면 어디서 데드락이 발생했는지, 어떤 트랜잭션이 문제가 됐는지 설명이 쭈욱 나온다.  *** (1) TRANSACTION:  TRANSACTION 60930153, ACTIVE 0 sec inserting   mysql tabl.. 2024. 5. 2.
winston 로거 만들기 'use strict'const winston = require('winston');/*const winstonDaily = require('winston-daily-rotate-file');*/ // 데일리 로그 사용시const fs = require('fs');const path = require('path');/** * 게임 패킷 로거 * @type {gamePacketLogger} */const gamePacketLogger = class { constructor(_serverName, _seq) { // 로그 남길 서버 이름 this.servername = _serverName; // 경로 설정 this.dir = path.. 2024. 4. 30.
자바 스크립트 async promise promise async/await function asyncFunction(item, callback) { setTimeout(function() { console.log(`${item} 처리 완료`); callback(null, `${item} 결과`); }, Math.random() * 1000); } function processArray(array, finalCallback) { const results = []; let count = 0; function iterate(index) { if (index === array.length) { finalCallback(null, results); return; } asyncFunction(array[index], function(error, resu.. 2024. 3. 15.
[DB] 인덱스가 왜 중요한가!! 최근에 회사에서 프로그래밍 로직상 이렇게 오래 걸릴리가 없는데 대체 왜 db에 접근해서 처리하는데 시간이 몇시간이나 걸리지?? 라는 이슈가 있었다. 그래서 해당 함수의 최초 시작 지점부터, sp 내용까지 다 훑어 보았고 의심스러운 부분을 찾았다. UPDATE USER_RANKING SET nextStartScore = 점수 WHERE userNumber = 유저고유번호 AND seasonNumber = 시즌 번호; // 아래 테이블은 다 없는 테이블입니다, 설명을 위해 비슷하게 추가했어요 간단히 설명하면 유저고유번호, 시즌 번호를 조건을 걸어서 데이터를 찾아 점수를 업데이트 하는 쿼리이다. 우리 게임상 한 시즌이 지날수록 데이터양이 점점 늘어나는 구조였고, 이미 해당 데이터에 20만건이 들어있는 상황이긴.. 2024. 3. 7.
[자바스크립트] 객체A에서 객체B를 복사 후 객체 B의 특정 프로퍼티 삭제 객제A의 값을 객체B에 전체 복사해서 사용하되 특정 변수는 빼고 사용 하고 싶을때가 있다. 그럴때 단순히 = 대입연산자를 사용하여 처리하면 서로 다른 객체 A와 B가 같은 곳을 참조 하고 있기 때문에 둘 중 하나의 객체 값만 변경되도 둘 다 영향을 받는다. [ 1. 영향 받는 코드 ] let objA = { id:"testID", pw:"testPW1234!" }; let objB = objA; console.log("objA:"+JSONbig.stringify(objA)); console.log("objB:"+JSONbig.stringify(objB)); // delete 연산자를 사용하여 프로퍼티 삭제 delete objB.pw; // 둘다 삭제됨! console.log("objA:"+JSONbig... 2024. 3. 4.
[크라임씬] 코가사 살인사건 아주 머언 옛날 "코가 학원 살인사건"을 플레이하면서 언젠가 꼭 5명을 모아서 코가사 살인사건을 하리라! 마음 먹었었는데, 드디어 5명이 되어서 친구들과 함께 다녀왔다.  스토리 요약 >>  인적이 드문 코가사, 어느날 코가사의 주지 스님인 김주지 스님이 실족사 되어 발견되었는데현장을 살펴본 탐정 이은호는 주지스님이 살해 됐다고 생각이 들어 코가사에 모인 사람들을 대상으로 범인을 찾기로 한다!!  과연 범인은 누구일까? ◈ ep1인 코가학원 살인 사건을 하지 않아도 충분히 플레이가 가능하니까 꼭 순서를 지켜서 할 필요는 없고, 예약 가능한 테마를 예약하면된다. ◈ 내친구들 얼굴은 소중하니까 ㅋㅋ 가렸고, 재밌는 점은 절을 테마로 한 크라임씬이라 스님역을 받으면 대머리 가발을써야한다.....ㅎㅎ  ◈ 다음.. 2024. 3. 4.