본문 바로가기

분류 전체보기305

자바 스크립트 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.
[mysql] INFORMATION_SCHEMA 관련 정리 INFORMATION_SCHEMA 는 각 mysql 인스턴스안에 있는 '데이터베이스'이다. 해당 MySQL 서버가 유지하는 다른 모든 데이터베이스에 대한 정보를 저장하는 곳입니다. The Information_schema 데이터베이스는 몇몇의 읽기전용 테이블을 포함합니다. 사실 그것들은 View이고, 테이블은 아닙니다. 그래서 그것들과 관련된 파일들은 없습니다. 그리고 트리거 셋팅도 불가능합니다. 또한 데이터베이스 파일구조도 존재 하지 않습니다. 당신은 INFORMATION_SCHEMA 를 SELECT(조회)만 가능하고 삽입, 삭제 , 변경은 불가합니다. 요약) INFORMATION_SCHEMA 는 DATABASE의 정보를 저장하는 VIEW이며 오직 SELECT만 가능하고, INSERT, DELETE, .. 2024. 2. 26.
[mysql] 현재 시간, 현재시간 unixtime, 특정시간, 특정시간 unixTime 쿼리 SELECT NOW(), UNIX_TIMESTAMP(), DATE_ADD(NOW(), INTERVAL 7 DAY), UNIX_TIMESTAMP( DATE_ADD(NOW(), INTERVAL 7 DAY)); - NOW() : 현재 시간 출력 함수 - UNIX_TIMESTAMP() : 현재 시간 unixTime으로 출력해주는 함수 - DATE_ADD () : 시간을 더해 주는 함수 : DATE_ADD(NOW(), INTERVAL 7 DAY) -> 현재 시간에 7일 더해서 출력 - UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL 7 DAY)) 현재 시간에 7일 더한시간을 UNIXTIME으로 변환해서 보여줌 ** UNIXTIME이란? - UNIX 시간(Unix time)은 협정 세계시(U.. 2024. 2. 16.
게임 클라이언트 프로그래머 ? 게임 서버 프로그래머 ? 개발자로 취업한지 얼마 안됐을때 친구들이 가끔 뭐하냐고 물어본적이 있었다. (지금은 아님) 나 : "나 게임 서버 프로그래밍해~" 친구들 : "그게 뭔데??" 그럴때마다 친구들한테 최대한 쉽게 설명하면서 나 : 너가 게임을 시작할때 로그인하지?? 그때 뺑뺑이 돌고 로그인 처리하지?? 그리고 너가 게임에서 획득하는 아이템같은거 저장하고 데이터 관리도 해주고 친구랑 연결도 해주고 그런거야" 대부분의 친구들 : "아 그래 신기한거하네" or 특이 케이스 친구 : " 그럼 게임 화면은?? 모바일 다운로드 그런거는?? " 나 : 그런거는 클라이언트 프로그래머가 하는건데 너가 하는 게임의 캐릭터 움직이기, 전투 등등 화면상 보이는걸 다 처리해 라며 설명해준적있었다. 아마 게임 잘 모르는 친구들한테는 이 설명이 쉬운.. 2024. 1. 8.
[mysql] 특정 시간을 특정 타임존으로 확인하는 쿼리 CONVERT_TZ(시간값, '기준 타임존', '변경할 타임존') - CONVERT_TZ 함수를 사용하면 시간 데이터를 원하는 타임존 값으로 볼 수 있다. - 시간값 자리에 변경할 시간을 넣으면, 해당 시간을 기준 타임존에서 변경할 타임존의 시간으로 보여준다. 쿼리 SELECT now() as KST, CONVERT_TZ(now(), 'Asia/Seoul', 'UTC') as `UTC`, CONVERT_TZ(now(), 'UTC', 'America/Santiago') as `SantiagoTime`; 결과 설명 - 현재 시간을 한국시간, UTC 시간, 미국/샌티아고 시간으로 조회하는 쿼리이다. - now() as KST : 현재 시간을 한국시간으로 - CONVERT_TZ(now(), 'Asia/Seoul.. 2023. 12. 29.
Swagger를 적용해보자! Swagger란? - 개발자가 REST API 문서화를 자동으로 하는데 도움을 주는 오픈 소스 소프트웨어 프레임워크이다. * 이전에는 google sheet나 excel로 명세서를 만들어 클라이언트와 공유했었는데, 이를 붙임으로써 소통하기가 더 편해졌다. * C# WCF를 사용해서 개발할때는 API 명세서를 제공해주는 HELP PAGE가 있어서 그걸로 클라이언트와 공유했는데 직접적으로 API를 쏴보거나 테스트 해볼수는 없는 점이 아쉬웠었다. 그래서 jmeta를 사용하여 보내거나 postman으로 호출해 보곤 했었다. 2023. 12. 21.
반응형