본문 바로가기

프로그래밍185

-1을 uint에 넣어서 형변환을 하면 어떻게 될까? 아래와 같은 코드가 있다.  int testA = -1; var testB = (uint)testA; 이때 testB는 뭐가 될까?? uint니까 1이될까??  땡이다. 위의 코드에 로그를 달아 찍어보자.   int testA = -1; var testB = (uint)testA; Console.WriteLine("testA : " + testA); Console.WriteLine("testB : " + testB + ", uint max =" + uint.MaxValue +", if(testB == uint.maxValue)" + (testB == uint.MaxValue)); 흥미롭게도 testB는 예상외의 숫자가 되었다.  4294967295가 의미하는건 뭘까? 바로 uint.maxvalue 값이다.. 2024. 5. 7.
node version 업그레이드 하기! 어느날 aws sdk를 사용하려면 노드 버전 16으로 업그레이드 하라는 메시지를 보았다. 로그 메시지The AWS SDK for JavaScript (v3) versions released without Node.js 14.x support on or after May 1, 2024 may continue to work on Node.js 14.x. This does not imply a continuation of support. You can continue to use older versions of the AWS SDK for JavaScript (v3) released before May 1, 2024 with Node.js 14.x. " 14 버전을 쓸수는 있는데, 업그레이드나 지원은 없을꺼니.. 2024. 5. 7.
[DB] Transaction Isolation Levels과 확인 하기 Transaction Isolation Levels   Transaction Isolation Levels 란 무엇인가? - 동시에 여러 트랜잭션이 처리될 때 각 트랜잭션이 얼마나 서로 고립되어 있는가를 나타내는 수준이다. - 표의 아래로 내려갈수록 고립 정도가 높아지고, 성능저하가 야기 된다. READ UNCOMMITTED (level 0)READ COMMITTEDREPEATABLE READSERIALIZABLE※ mysql innodb의 기본은  REPEATABLE READ 이다. ( The default isolation level for InnoDB is REPEATABLE READ.)ISOLATION LEVEL 확인  쿼리SELECT @@global.tx_isolation;결과  이제 각 레벨에.. 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.
[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.
[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.
반응형