반응형

분류 전체보기 1418

Part 5-2-6. SQL 입문 : CASE

💅 SQL 입문 지난 시간에는 DATETIME을 이용하여 시간, 시간 연산, 시간 범위 등 시간과 관련된 다양한 내용에 대해서 알아보았다. 오늘은 CASE문에 대해서 학습해 볼 것이다. 🧑‍⚖️ 첫 번째 방법 C#에서 사용하는 switch-case문과 같은 방법이다. SELECT birthMonth, CASE birthMonth -- 여기서부터 WHEN 1 THEN N'겨울' WHEN 2 THEN N'겨울' WHEN 3 THEN N'봄' WHEN 4 THEN N'봄' WHEN 5 THEN N'봄' WHEN 6 THEN N'여름' WHEN 7 THEN N'여름' WHEN 8 THEN N'여름' WHEN 9 THEN N'가을' WHEN 10 THEN N'가을' WHEN 11 THEN N'가을' WHEN 12..

Part 5-2-5. SQL 입문 : DATETIME

💅 SQL 입문 지난 시간에는 수치(사칙연산)와 문자열에 대해서 알아보았다. 오늘은 수치를 날짜에 대해서 학습해 볼 것이다. 현재 시간, 시간 연산, 시간 범위 등 시간과 관련된 다양한 자료를 학습하고 알아보도록 한다. 📅 날짜 데이터 타입 시간은 '2024년 02월 05일'와 같이 문자열 타입으로 데이터를 관리할 수 있지만, 문자열 타입으로 데이터를 관리한다면 시간끼리의 연산이 필요할 경우 이를 계산하기가 까다로울 것이다. 따라서 SQL에서는 날짜에 관련된 전용 데이터 타입을 지원하니 이를 사용하도록 하자. 날짜 및 시간과 관련된 데이터 타입 1️⃣ date (연/월/일) 2️⃣ time (시/분/초) 3️⃣ datetime (연/월/일/시/분/초) 📅 시간 출력 SELECT CAST('20210418..

Part 5-2-4. SQL 입문 : 수치와 문자열

💅 SQL 입문 지난 시간에는 ORDER BY와 TOP, OFFSET에 대해서 알아보았다. 오늘은 수치를 표현하는 방법과 문자열에 학습하고, 문자열 관련 함수등을 알아보도록 한다. 🛺 수치 단순 특정 열들을 가진 행을 조회하는 것이 아닌, 연산된 결과를 SELECT하면 해당 값이 ‘열 없이’ 출력할 수 있다. 대신 여기서도 AS를 사용하면 열의 이름을 붙여줄 수 있다. SELECT 2021 - birthYear + 1 AS koreanAge FROM players WHERE deathYear IS NULL AND birthYear IS NOT NULL AND koreanAge

Part 5-2-3. SQL 입문 : ORDER BY, TOP, OFFSET

💅 SQL 입문 지난 시간에는 SELECT와 FROM, WHERE에 대해서 알아보았다. 오늘은 추가적으로 오름차순, 내림차순, 상위 N개 등 다양한 정렬에 대해서 알아보도록 한다. 🤳 ORDER BY : 정렬 ✝️ ASC : 오름차순 정렬 SELECT nameFirst, birthYear FROM players WHERE birthYear IS NOT NULL ORDER BY birthYear; SELECT nameFirst, birthYear FROM players WHERE birthYear IS NOT NULL ORDER BY birthYear ASC; ORDER BY의 순서는 WHERE 다음에 작성되며. 오름차순 ASC의 값이 디폴트 값을 가진다. 또한 생략할 경우 자동으로 오름차순 정렬로 진행된..

Part 5-2-2. SQL 입문 : SELECT FROM WHERE

💅 SQL 입문 지난 시간에는 SSMS 프로그램의 형태와 필수 명령어, 테이블 추가, 주석 등의 사용법을 간략하게 알아보았다. 오늘은 SSMS를 통해 실질적으로 데이터베이스에 질의를 남기고, 결과를 살펴보는 시간을 가져본다. 🤶 SQL 쿼리 (= SQL문) * 쿼리를 작성한 후 실행 버튼을 누르면 된다. (F5) * SQL문은 소문자로 써도 상관없다. 즉 대소문자 상관이 없다. → 그렇지만, 예약어를 대문자로 쓰고 나머지를 소문자로 쓰는게 가독성이 좋다! * SQL 문장 하나가 끝나면 세미콜론을 붙여준다. → SQL문이 한 문장 밖에 없으면 세미콜론 생략해도 됨 * 전체 쿼리문의 일부분인 특정 SQL 문을 드래그 하고 실행하면 전체 쿼리문이 아닌, 드래그한 해당 쿼리문만 실행된다! 🐑 SELECT : 조..

Part 5-2-1. SQL 입문 : SSMS 입문

💪 SQL 입문 지난 시간에는 학습 자료 OT와 환경설정을 위한 설치를 진행했다. 오늘은 간략하게 SSMS를 입문하는 시간을 가지어 어떻게 동작하고, 어떠한 프로그램인지 간략하게 알아보는 시간을 가져본다. 🦧 SSMS 입문 SSMS는 위 사진과 같이 크게 쿼리, DB 테이블로 나뉘어져있다. 이 때 쿼리에서는 SQL문을 입력하는데, SQL은 DBMS를 조작하기 위한 명령어와 같다. * 새 쿼리를 누르면 SQL 문을 작성할 수 있다. * 왼쪽에 나열되어 있는 하나 하나가 모두 테이블이다. (엑셀 Sheet와 같다) * 원하는 폴더 우클릭 - 테이블 - 추가할 경우, 테이블을 새롭게 생성할 수 있다. * Ctrl + S로 테이블을 저장한다. * Refresh(=새로고침)을 해주어야 개체 탐색기에서 새 테이블 ..

Part 5-1-1. 개론 : OT 및 환경 설정

👻 OT 데이터베이스는 크게 RDBMS와 NOSQL로 나뉜다. RDBMS는 관계형 데이터베이스(Relational DataBase Management System)의 약자로 MMORPG 게임 제작에 적합한 데이터베이스이다. → 정보들이 제각각 따로 있는 것이 아닌, 관계있는 것 끼리 서로 묶어 저장하기 때문에 RDBMS가 적합하다. NOSQL은 비관계형 데이터베이스(Non-Relational Operational DataBase)의 약자로 빅 데이터에 적합한 데이터베이스이다. ⛳ 환경설정 설치하기. 1. Microsoft SQL Server 2022 2. SSMS 🦧 SSMS 입문 SSMS는 위 사진과 같이 크게 쿼리, DB 테이블로 나뉘어져있다. 이 때 쿼리에서는 SQL문을 입력하는데, SQL은 DBM..

객체, 클래스, 인스턴스 헷갈리지 않게 정리해드림!

댓글을 보니 나와 같은 생각으로 의견을 작성해주신 분이 있어 영상의 내용은 다음과 같이 정리한다. 좋은 영상 감사드립니다. 2023년도 고생 많으셨습니다. 제 의견을 하나 덧붙여도 될까요? class, object, instance는 모두 미국에서 만들어진 영어 표현입니다. 영어와 한국어는 서로 다른 언어이며, 서로 다른 문화 및 세계관에 기반하고 있습니다. 따라서 일반적으로 1:1 매칭은 어렵지 않겠습니까? 영어를 무리하게 한국어로 설명하려고 (혹은 한 단어로 간단히 번역하려고) 하다보니 발생하는 문제점도 있는듯 합니다. 제가 권유하고 싶은것은 다양한 영문 학술 서적, 혹은 논문 (컴퓨터 과학 이외에도) 을 읽는 것입니다. 그러면 어느새 자연스럽게 영어식 세계관에 익숙해지면서 본건과 같은 어려움은 줄어..

공부/자기계발 2024.01.11

개발자 될놈과 안될놈의 특징 개발자 적성

영상 내용을 요약해서 본문 게시글로 작성하려고 했는데, 이미 댓글로 정리되어 있어 이를 참조한다. 1. 지금 할 수 있는 일에 집중하기 (시간 낭비하지 않고 본질에 집중하기) 2. 꾸준히 질문하며 커뮤니케이션하기 (맥락을 파악하며 거시적으로 보기) + 만들 대상이 있다면 공부 범위가 확 줄어든다. 3. 알고 있다고 착각하지 말기 (메타인지 : 내가 무엇을 알고 무엇을 모르는지 아는 것) 설명할 수 있거나 아웃풋 할 수 있어야 아는 것이다. 4. 성장 마인드셋 탑재하기 능력과 한계는 고정적이지 않고 노력으로 향상시킬 수 있다. 절대로 모든 것을 다 알 수 없다. 그렇기에 모르는 것이 나올 때 좌절하기보다 성장할 수 있는 기회로 삼자. 모든 문제는 성장의 밑거름이다. 5. 일을 시간별로 쪼개고 우선 순위 리..

공부/자기계발 2024.01.11

Part 4-6-4. 유니티 연동 : 유니티 연동 #4

유니티 연동 지난 시간에는 단순 채팅이 아니라, 실제로 플레이어가 움직이는 것과 같이 이동하는 메서드를 콘솔에서 구현하였다. 이 때에 이동하는 패킷을 만들기 위해 PDL 파일을 수정하고, 그에따라 클라이언트/서버에서 추가적으로 로직을 수정해 주었다. 이 떄 Enter, Leave, Move, Player List 등 다양한 메서드들 또한 같이 구현하는 시간을 가져보았다. 오늘은 유니티 연동의 마지막 강의로 콘솔을 이용해 구현하는 것이 아닌 실제로 유니티를 이용해 구현하는 시간을 가진다. 🐛 유니티 버그 잡기 유니티를 구동해서 실행하면, 아래 이미지와 같이 콘솔창에 여러 에러가 우리를 반겨줄 것이다. 하나씩 에러 메시지를 클릭해보며, 이를 수정해보자. 😥 📜 ClientPacketManager.cs Cli..

프리팹 Original Prefab, Prefab Variant 차이

이미 프리팹으로 만들어진 오브젝트를 가지고 다시 프리팹으로 만드려고 한다면 위와 같은 다이얼로그가 뜬다. Original Prefab 지금 자기 자신의 모습 그대로를 바탕으로 별개의 새로운 프리팹을 만든다. Prefab Variant 자기 자신을 찍어냈던 그 프리팹을 상속받는 새로운 프리팹으로서 만든다. 추후 오버라이드도 할 수 있고 새로운 기능도 덧붙일 수 있되, 기존의 프리팹 성질은 다 물려 받는 새로운 자식 프리팹을 생성하는 것과 마찬가지다.

개발/유니티 2024.01.10

Part 4-6-3. 유니티 연동 : 유니티 연동 #3

유니티 연동 지난 시간에는 지금까지 구축해왔던 클라이언트-서버간 연결 프로젝트를 유니티에 연동하여, 유니티 내에 3D Obejct 실린더로 만든 임시 객체 Player를 3초마다 찾는 실습을 진행해보았다. 이 때 서브 쓰레드의 작동으로 인해 Player를 정상적으로 찾지 못하였다. 따라서 메인 쓰레드에서 함수가 실행되어 플레이어를 찾을 수 있도록 설정해주었다. 또한 과거 Command 패턴 학습방법을 이용해 큐를 생성하여 일감을 던져주는 형태로 마찬가지로 변경하여 정상적으로 Player를 메인 쓰레드에서 찾을 수 있도록 설정하였다. 🦀 채팅을 넘어, 움직임까지 이전 유니티 연동 시간에서는 단순히 게임을 실행하면, Player를 찾았다는 로그만 덜렁나타나서 이것만 가지고서는 MMO의 개념을 명확하게 보여줄..

Part 4-6-2. 유니티 연동 : 유니티 연동 #2

유니티 연동 지난 시간에는 유니티 연동 실습을 위해 프로젝트를 하나 새롭게 생성하고, 기존에 사용했던 스크립트들와 새롭게 생성한 NetworkManager를 통해 유니티에서 실제로 연동이 되는지 확인하는 시간을 가져 보았다. 오늘도 이어서 추가적으로 연동하는 법을 배워보도록 하자. 👢 비동기 처리로 인한 문제 📜 PacketHandler.cs 이전 시간에는 PacketHandler 스크립트 내부에 채팅 핸들러로 들어왔을 때 로그만 찍어줬다면 오늘은 이 부분을 수정하여 실질적인 액션을 취할 수 있도록 수정해보자. 따라서 유니티 내부에서 실린더 오브젝트를 새롭게 만들어주고 이름을 "Player"로 설정하도록 하자. using DummyClient; using ServerCore; using System; u..

Part 4-6-1. 유니티 연동 : 유니티 연동 #1

유니티 연동 지난 시간에는 우선 순위 큐를 이용하여 JobTimer Class를 새로 만들어 주었다. 이 후, Push와 Flush 메서드를 통해 일감들을 등록하고 관리하는 시간을 가졌다. 오늘은 여태까지 만든 이 모든 것들을 유니티를 통해 실제로 연동이 정상적으로 잘 되는지 확인해보며 학습하는 시간을 가져본다. 🙎‍♂️ 실습에 들어가기 앞서 먼저 좋은 소식과 나쁜 소식이 하나 있다. 좋은 소식은 네트워크 통신을 구현하기 위해 사용했던 스크립트들을 재 사용할 수 있다는 것이고, 나쁜 소식은 유니티의 정책상 C#에서도 허용되는 문법과 그렇지 않은 문법이 있어 GenPacket 스크립트에서 사용한 ReadOnlySpan, TryWriteBytes와 같은 것들을 사용하지 못한다는 것이다. 그러나 24.01.0..

빠르게 학습하는 개발자가 되는 방법

본문은 요즘IT와 번역가 Chase가 함께 조쉬 코모(Josh Comeau)의 글 을 번역한 글입니다. 필자인 조쉬 코모는 언스플래쉬, 칸 아카데미 등에서 일했고 현재는 웹사이트 Joshwcomeau.com를 운영하며 리액트, CSS, 애니메이션 등에 대한 다양한 아티클과 강의를 제공하고 있습니다. 이 글은 개발자로서 새로운 기술을 빠르게 습득하는 방법을 다루고 있습니다. 필자에게 허락을 받고 번역했으며, 글에 포함된 각주(*표시)는 ‘번역자주’입니다. 글에 포함된 링크는 원문에 따라 표시했습니다. 더 읽어보기 및 출처 : 요즘 IT의 번역글 https://yozm.wishket.com/magazine/detail/2334/?utm_source=stibee&utm_medium=email&utm_campa..

공부/자기계발 2023.12.29

좋은 개발 리더가 되기 위해 고민해 본 것들

들어가며 이번 글에서는 지난 3년간 개인 기여자(Individual Contributor, IC)가 아닌 한 명의 리더로서 좋은 리더란 무엇인지, 또 좋은 리더가 되려면 어떤 역량이 필요한지에 스스로 고민해 봤던 내용에 관해 적어보려고 한다. 아무리 기여자로서 일을 잘했던 사람이라고 해도 이 경험이 좋은 리더로서의 역량으로 이어지리란 법은 없기 때문에 자연스럽게 이런 고민을 시작하게 되었다. 많은 개발자들이 리더나 매니저 역할을 맡게 되면, 어렵다고 느끼는 부분이 컴퓨터와 다르게 인간은 생각보다 논리적으로 행동하지 않는다는 점에서 기인한다. A라는 명령을 내리면 그대로 A라고 알아듣고 수행하는 컴퓨터와 다르게 인간은 A라고 이야기했을 때 곧이곧대로 A라고 이해하는 경우가 거의 없다. 인간은 각자 자라온 ..

공부/자기계발 2023.12.29

Part 4-5-7. Job Queue : JobTimer

Job Queue 지난 시간에는 GameRoom 스크립트에서 BroadCast 메서드가 foreach문을 통해 Send를 계속했을 때 나타나는 문제점을패킷 모아보내기라는 기법을 활용하여 처리하는 시간을 가졌다. 그렇지만 GameRoom과 같이 무슨무슨 룸들이 점차 많아지고, 각각의 룸들이 서로 다른 대기시간을 가지며 실행이 된다고 하면 지금과 같은 방법으로는 처리할 수 없기 때문에 일감 관리를 도와주는 Timer를 통해 이를 해결해보는 시간을 가진다. 🏃 틱을 사용한 처리 현재 시간과 roomTick이라는 변수를 통해 두 변수의 시간을 비교하며 실행할지, 말지 결정하는 방법이다. 위와 같은 방법으로 코드를 구성한다면 각 룸에 따라 메인 루프에서 틱에 맞춰서 동작하도록 구성할 수 있다. 다만 메인 메서드의..

Part 4-5-6. Job Queue : 패킷 모아보내기

Job Queue 지난 시간에는 GameRoom 스크립트에서 BroadCast 메서드가 foreach문을 통해 Send를 계속했을 때 나타나는 문제점에 대해서 알아보았다. 따라서 오늘은 이를 해결하기 위해서 패킷 모아보내기 라는 개념을 학습하여 코드를 보완하는 시간을 가져본다. 😁 🌼 모아보내기를 하기 위해 패킷을 저장할 위치 선정 그렇다면 패킷 모아보내기를 어디에서 처리해야할까? 이는 크게 엔진 영역과, 컨텐츠 영역으로 나뉘어져 있는데, 여기에서는 컨텐츠 영역에서 이를 진행하도록 한다. 만약 엔진 영엑에서 이를 하고자 한다면, ServerCore 프로젝트 내 Session - Send 메서드에서 할 수 있다. 기존 Send 메서드에서는 Enqueue()를 통해 바로 넣고, RegisterSend를 하는..

반응형