분류 전체보기 67

[SQL] ORDER BY, TOP, PERCENT

ORDER BY검색한 결과를 정렬해서 출력해주는 명령어SELECT nameFirst, birthYearFROM playersWHERE birthYear IS NOT NULLORDER BY birthYear;ASC = 오름차순(기본값, 생략 가능), DESC = 내림차순SELECT nameFirst, birthYearFROM playersWHERE birthYear IS NOT NULLORDER BY birthYear DESC;여러 조건에 대한 정렬을 하고 싶다면?동점일 경우 다음 조건으로 넘어가는 방식SELECT nameFirst, birthYear, birthMonth, birthDayFROM playersWHERE birthYear IS NOT NULLORDER BY birthYear DESC, bi..

MS SQL 2024.06.24

[SQL] SELECT FROM WHERE

SELECT FROM가장 기본적인 형태의 DB 쿼리문이다.SELECT 다음에 Column 이름AS를 사용하면, Column이름을 바꿔서 출력할 수 있다.FROM 다음에 테이블 이름을 넣어 사용한다SELECT nameFirst AS name, nameLast, birthYearFROM players;-- SELECT에 *를 넣으면 모든 것을 검색하라는 뜻-- AS 를 사용하면, 원래 행 이름이 아닌, AS 뒤에 있는 이름으로 바뀌어 출력된다-- 세미콜론은 없어도 되지만, 가독성을 위해 넣는 습관을 들이자WHERESELECT FROM에 조건을 추가하는 것SELECT nameFirst AS name, nameLast, birthYearFROM playersWHERE birthYear = 1966; -- (=,..

MS SQL 2024.06.24

[Unity][서버] 서버 - Unity 연동 (1)

연동지금까지 만들어둔 서버를 활용유니티 프로젝트를 클라이언트로서 사용그러나 모든 c# 메소드들이 유니티에서 그대로 동작한다는 보장은 없음우선 프로젝트를 만들어서 ServerCore와 DummyClient를 옮긴다그리고 PacketHandler를 수정해보자using ServerCore;using UnityEngine;using DummyClient;class PacketHandler{ public static void S_ChatHandler(PacketSession session, IPacket packet) { S_Chat chatPacket = packet as S_Chat; ServerSession serverSession = session as ServerSes..

Unity 2024.06.17

[c#][서버] Command 패턴 / JobQueue

Command 패턴 개념지금까지는클라이언트 세션이 요청패킷 핸들러에서 함수를 호출해 작업 수행게임 룸에 접근하여 브로드캐스팅주방에 직접 들어가 주문을 하는 것과 비슷직원이 서빙, 요리 다함 -> 그런데 엄청 많은 직원주문하려는 손님이 몰리고, 직원도 좁은 주방에 들어가 있는 상태일이 밀리면, 직원만 더 늘어남직원의 업무를 분담시켜서 직원 수를 가장 최적화시켜야 한다서빙 담당이 주문서를 만들어 주방에 전달하게 하자한 명의 주방장만 주문을 처리하게 하자Command 패턴은, 캡슐화(주문서 만들기) 하는 작업을 하는 것주문을 받는것과 처리하는 것을 분리하는 것이 가능손님이 주문을 바꾸는 경우에도, 쉽게 처리 가능(UNDO) Command 패턴 구현(JobQueue)namespace ServerCore{ ..

C#/네트워크 2024.06.14

[c#][서버] PacketGenerator (3)

파일 참조 자동화지금까지는 파일이나 xml을 만들고 수동으로 반영을 했어야 했다.이제 경로를 설정하여 생성된 파일을 자동으로 참조하도록 해보자.bat 파일 작성.bat파일을 생성하고 각자 경로에 맞게 다음과 같이 수정START ../../PacketGenerator/bin/Debug/PacketGenerator.exe ../../PacketGenerator/PDL.xmlXCOPY /Y GenPackets.cs "../../DummyClient/Packet"XCOPY /Y GenPackets.cs "../../Server/Packet"뒤쪽에 있는 인자가 main의 args에 들어가서 실행되게 된다.XCOPY는 파일을 복사해서 넣는다는 것이고/Y 옵션을 넣으면 동일 파일 존재할 시 덮어쓰기 이다생성 bat파..

C#/네트워크 2024.06.12

[c#][서버] Packet Generator - 코드 작성 자동화

자동화지금까지 string, list 등 자료형의 처리에 대한 함수를 짜두었다.이를 자동화 하도록 하나로 합쳐보는 작업을 한다무언가 멤버가 하나 더 생길때마다 클래스에 찾아가서 한줄씩 추가하는 작업을 없애보자Packet 정의Packet이 어떻게 이뤄져 있는지 정의가 필요하다.Xml로 해보자/*class PlayerInfoReq{ public long playerId; public string name; public struct SkillInfo { public int id; public short level; public float duration; } public List skills = new List();} //이거를 아래처럼 x..

C#/네트워크 2024.06.09

[c#][서버] Serialization (2)

string이나 list같은 가변크기의 패킷을 어떻게 처리하나?1. string 처리앞에 2바이트를 이 문자열의 크기로 정하고뒤에를 내용으로 채우면 된다.//string -> len[2b], byte[내용] 로 보내면 되지 않을까Span s = new Span(segment.Array, segment.Offset, segment.Count);ushort nameLen = (ushort)Encoding.Unicode.GetBytes(this.name, 0, name.Length, segment.Array, segment.Offset + count + sizeof(ushort));success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), ..

C#/네트워크 2024.06.09