반응형

분류 전체보기 1418

Part 4-4-1. 패킷 직렬화 : Serialization #1

패킷 직렬화 지난 시간까지 Session, Connector, RecvBuffer, SendBuffer, PacketSession 등 다양한 클래스를 만들어 패킷 통신에 대해서 진행해보았다. 또한 통신하는 과정에서의 개선, 최적화 등 다양한 방식의 작업 또한 추가적으로 진행해보았다. 이번 세션에서는 패킷 직렬화를 통해 String, List 등 다양한 타입을 가지는 자료형들에 대해서 어떻게 전송이 필요하고, 어떤 방식으로 압축해야 하는지 등 보다 자세하게 알아보자. 📌 직렬화 마이크로소프트 공식 홈페이지에 따르면 C#(.NET)에서의 직렬화란 '지속시키거나 전송할 수 있는 형태로 개체 상태를 변환하는 프로세스'를 뜻한다. 그렇다면 왜? 직렬화를 사용해야 하고 이용해야할까? 이는 간단하다. String, ..

게임회사 기획자, 모델러, 개발자 연봉 정보

게임 회사를 비롯한 AR/VR 등 다양한 형태를 띄고 있는 회사에서 기획자, 모델러, 개발자 등 여러 직군의 연봉 정보를 정리한 스프레드시트입니다. 😎 https://docs.google.com/spreadsheets/d/10G-cjVjR6R8LYn7g9sf1uOPZaZ4FU94-5UC2legeN0Q/edit#gid=0 개발자 연봉 설문조사 시트1 설문 참여 시간,직종 (=포지션),연차 (신입 : 0),세전 연봉 (단위 : 만),목표 연봉,이전 대비 연봉 상승률,연봉 협상은 어떻게 했는가?,임직원 인원 수,프로젝트 플랫폼,프로젝트 게임 장르,회 docs.google.com 해당 정보의 출처는 카카오톡 오픈 패팅방 '유니티 개발자 모임' 방에서 조사 되었음을 미리 밝힙니다. 링크 : https://open..

회사/면접 2023.11.12

Part 4-3-13. 네트워크 프로그래밍 : PacketSession

네트워크 프로그래밍 지난 시간에는 SendBuff 클래스를 만들었다. 클래스 내부에는 버퍼로 활용해 줄 recvBuffer, 사용한 영역을 표기하는 usedSize, 남은 공간의 크기를 나타내는 FreeSize를 선언해준다. 또한 메서드로는 Receive와 같이 Open, Close 함수를 만들어었지만, Receive와는 다르게 Clean 함수는 만들어주지 않았다. 🤔 이 후, TreadLocal을 이용한 SendBufferHelper를 만들어 SendBuff 클래스 내부를 건드리지 않고 사용하였다. 패킷 전송하기 📤 패킷을 전송하는 방법까지 알아보았지만, 정작 패킷만 보았을 때 패킷의 사이즈가 어느정도인지 아직은 알 수 없다. 따라서 보통 패킷의 첫 번째 인자로는 사이즈를 넣어주고, 두 번째 인자로는 ..

Part 4-3-12. 네트워크 프로그래밍 : SendBuffer

네트워크 프로그래밍 지난 시간에는 ReceiveBuff를 만들어서 Read, Write Pos(=Segment)를 생성하였다. 이러한 과정에서 byte를 받아오고, 또 받아온 byte를 처리하는 로직을 작성하였다. 또한 중간중간 R/W Pos를 초기화해주는 Clear 함수, 작업이 완료 된 이후 OnRead, OnWrite 처리를 하는 메서드 또한 만들었다. 기존 Send의 문제점 기존 Send는 Encoding을 진행한 후, byte 타입으로 전환하여 이를 넘겨주고, 넘겨준 Send Queue에 저장하여 처리하는 방식으로 진행하였다. 이번 시간에는 기존에 Encoding으로 처리하던 방법을 이번에는 실질적인 패킷 데이터로 가정하고 넘겨 받기 위해 Send Buffer를 만들어 줄 것이다. 😎 Recei..

Part 4-3-11. 네트워크 프로그래밍 : RecvBuffer

네트워크 프로그래밍 지난 시간에는 TCP와 UDP 각각의 개념들에 대해서 알아보고, 또 '차이점은 무엇이 있는가?'에 대해서 학습하였다. 오늘은 이전 시간에 학습한 것과 마찬가지로 TCP 특성 중 현재 처리 가능한 패킷만 받고, 나머지는 나중에 처리하는 흐름제어 및 혼잡제어 기능을 구현하여 어떻게 처리하는지 알아보며 구현한다. 기존 코드의 문제점 기존 코드는 시작 시 SetBuffer의 위치를 0으로 설정해놓았기 때문에 TCP 특성상 100byte를 보내어도, 80byte만 받았을 경우 문제가 발생한다. 왜냐하면 80byte의 위치부터 나머지 20byte을 다 받은 후에 처리를 해야하기 때문이다. 따라서 현재 얼마나 받았고, 받아왔는지를 처리하며 표시할 방법이 필요하다. RecvBuffer 클래스 제작 ..

Part 4-3-10. 네트워크 프로그래밍 : TCP/UDP

네트워크 프로그래밍 지난 시간에는 Connector를 이용하여 ServerCore 프로젝트를 라이브러리화 하는 작업을 진행했다. 이번 시간에는 실질 적으로 패킷을 전송하고, 수신하는 부분을 만들 것이다. 그렇지만 우리 프로젝트는 현재 string으로만 데이터를 전송하고 있는데, 현업에서는 string 형태로 패킷을 전송하지 않기 때문에 이를 수정해야한다. 하지만 어떻게? 무슨 방법으로? 등 패킷 통신처리에 대한 다양한 대한 궁금증이 생기게 되는데 이 때 사용할 수 있는 방법이 TCP/UDP가 있다. 따라서 오늘은 TCP와 UDP에 대해서 다시금 알아보는 시간을 가진다. 예제 😎 간단하게 예를 들어보자. 우리가 아무것도 모르지만 TCP를 이용해 서버를 구성한다고 하면, TCP의 특징 떄문에 우리가 클라이언..

비주얼 스튜디오 2022 탭 여러줄 표시하는 방법

개발을 하다보면 비주얼 스튜디오 탭이 자연스럽게 많이 키게 되는데, 그럴 때마다 탭들이 모니터 화면 가득 열리고 난 후 탭들이 화살표 밑으로 숨어버려서 화살표를 누르고 다시금 찾아봐야한다. 매우 불편하다. 😠 따라서 탭을 여러줄로 표시하는 방법을 찾아보다가, 검색하고 찾은 방법을 공유한다. 도구 - 옵션 - 환경 - 탭 및 창에 들어가 여러 행에 탭 표시 기능을 켜준다. 그렇게 될 경우 탭들이 ↓ 화살표 밑으로 숨는 것이 아니라 이제 여러 줄로 표시되어 더욱 보기 편해진다. 👍

개발/유틸리티 2023.10.31

Part 4-3-9. 네트워크 프로그래밍 : Connector

네트워크 프로그래밍 지난 시간에는 Session을 상속하는 과정과 총 4가지의 Event Handler(OnConnected, OnRecv, OnSend, OnDisconnected )를 이용하여 구현하는 시간을 가졌다. 이번 시간에는 Connector를 만드는 시간을 가진다. 👍 Connector를 만들기 전에, 왜 만들어야 할까? 클라이언트와 서버간의 통신은 당연히 필요하기 때문에 구현하는 것이 맞지만, 서버만 이용하고 있는 곳에 왜 Connecotr가 필요할까? 그 이유는 다음과 같다. 1. 현재 서버 코어 같은 경우에는 서버를 메인 용도로 만들고 있지만 커넥트, 샌드, 리시브 하는 부분은 사실 공용으로 사용하면 좋다. 2. 서버 또한 분산처리를 할 수 있기 때문에 서버끼리의 연결과 통신이 필요하다..

Part 4-3-8. 네트워크 프로그래밍 : Session #4 (Event Handler)

네트워크 프로그래밍 지난 시간에서 우리는 Session을 만들어 소켓 프로그래밍의 Receive 부분과 Send 부분을 분리하여 작업이 진행되도록 처리 했다. 오늘은 Recv 부분의 코드 로직을 서버 단과 컨텐츠 단을 나누어서 작업이 진행될 수 있도록 개선할 것이다. 이 작업은 이벤트 핸들러를 이용하는 방법과, 상속을 이용하는 방법이 있지만 루키스님은 상속이 보다 구현하기 쉽기 때문에 상속 방법을 통해 이를 구현한다. 😎 Session 클래스 내 상속 메서드 추가 먼저 우리가 무엇을 사용해야 되는지 다시 한번 생각해보아야 한다. 이를 곰곰이 생각해 나누어 보면 크게 4가지로 나뉘어 질 수 있는 것을 알 수 있다. 1. 어떤 클라이언트에서 접속을 했는지 알 수 있는 OnConnected 2. 클라이언트가 ..

나를 성장시켜준 자기 계발 방법 3가지

주니어 시절 가장 어려웠던 건 ‘어떻게 자기 계발해야 하는지’ 방법을 몰랐다는 것이었다. 주변에 물어볼 만한 선배나 동료가 많지 않았고, 요즘처럼 다양한 플랫폼에서 직무 관련 많은 정보를 얻기도 쉽지 않았기 때문이다. 그래서 무작정 검색도 해보고, 주변에 참고할 만한 기획안을 요청해 보기도 하고, 서점에 가서 책도 읽었다. 관련 온/오프라인 세미나도 꾸준히 다니며 다양한 노력을 했다. 그렇게 성장에 목말라하던 나도 이제는 IT업계에서 일한 지 벌써 10년이 넘었다. 지금은 주변에 선배, 동료, 후배들도 많고, 자연스럽게 알게 되는 업계 소식도 많아졌다. 그래서 주니어 때만큼 성장에 목말라하지 않지만, 배움엔 끝이 없으니 멈추지 않고 정진하고 있다. 하지만 주니어 시절, 누군가 나에게 성장하는 방법을 알려..

공부/자기계발 2023.10.26

당신이 성장하지 못하는 이유

나는 지난 몇 년간 개발자를 코칭하며 ‘프론트냐 백엔드냐’를 고민하는 당신에게, 개발자를 코칭하며 배운 7가지, 장애는 우리의 문제다 등의 글을 썼다. 코칭 과정에서 개발자들이 성장에 대해 관심이 많다는 것을 알 수 있었다. 관심이 많은 만큼이나 스스로 성장이 정체된다고 느꼈을 때 고민이 크다. 하지만 안타까운 점은 자신이 왜 정체되는지 원인을 잘 찾지 못한다는 것이다. 나는 연차가 많아도 실력은 3~4년 차 정도에 머무는 사람들을 자주 본다. 이런 사람들의 공통적인 특징은 학습하려 하지 않고 변화를 좋아하지 않는다는 것이다. 왜 그렇게 되었을까? 내 나름대로 추정해 보면 성장이 정체되었다고 느꼈을 때 원인을 찾지 못하고(않고), 성장이 멈춘 채 시간이 흘렀을 것이다. 성장하지 못했다는 불안감은 점점 익..

공부/자기계발 2023.10.26

게임회사 기술면접 질문 & 답변 83

분당구 정자동에 위치한 ‘ㅇㅍㅌㅌㅇ’ 회사 2023년 클라이언트 프로그래머 면접 목록입니다. 자기소개를 진행하며, 화상 면접으로 30분간 1:1 미팅을 진행합니다. * 기술 면접 1. 가비지 컬렉터란 무엇인가? 2. 프로젝트를 재 출시할 때 겪었던 문제는 무엇이 있는가? * 기타질문 1. 만약 프로젝트가 승승장구가 되어서 다른 사람들이 본인을 시기/질투 한다면 본인은 어떻게 느끼고 어ᄄᅠᇂ게 처리할 것인가? 2. 현재 즐겨하는 게임은 무엇이고 이유는 무엇인가? 3. 회사가 성장하거나 방향성을 잡아야할 때 무엇을 고려해야 한다고 생각하는가? 4. 종교는 어떻게 되는가? 5. 가족 관계는 어ᄄᅠᇂ게 되는가? 6. 건강에 이상이 있는가? 7. 집에서 사무실까지 출/퇴근 하는데에 문제는 없는가? 8. 희망 연봉..

회사/면접 2023.10.19

게임회사 기술면접 질문 & 답변 82

금천구에 위치한 ‘ㅇㅌㄹㅇ’ 회사 2023년 클라이언트 프로그래머 면접 목록입니다. 자기소개를 진행하며, 이사님과 개발팀 과장님과 함께 1시간 1:2 미팅 후 종료입니다. * 기술 면접 1. 데이터 저장/불러오기 시 암, 복호화는 어떻게 진행하였는가? 2. 광고 SDK는 어떠한 종류를 사용하였는가? 3. 광고는 무슨 종류를 사용하였는가? (전면, 배너, 리워드) 4. 코코스 엔진으로 앱을 출시한 것인가? 5. 게임 내 재화 구매/환불 담당 CS는 어떻게 처리하였는가? 6. 인 앱 결제 구현 시 영수증 검증은 어떻게 처리하였는가? 7. 게임 내 게임성을 위해 어떠한 것들을 개발하였는가? 8. 서버를 사용해보았는가? 9. 유니티를 이용하여 3D 게임 개발도 경험해보았는가? 10. 유저 성능 지표 관리는 어떻..

회사/면접 2023.10.19

게임회사 기술면접 질문 & 답변 81

금천구에 위치한 ‘ㄴㅋㄴㅋ’ 회사 2023년 클라이언트 프로그래머 면접 목록입니다. 자기소개를 진행하며, 기획 팀장님처럼 보이는 분과 1:1 미팅 후 종료입니다. * 기술 면접 & 기타질문 1. C와 C++의 차이점은 무엇인가? 2. 오버라이딩, 오버로딩의 차이점은 무엇인가? * 기타 질문 1. 코코스 엔진 경험이 있는가? 2. 다른 사람의 소스코드를 분석해 본 경험이 있는가? 3. 연봉은 얼마나 생각하시는가? 4. 서버 경험도 있으신가? 5. 건강문제는 없는가? 6. 취미는 무엇인가? 7. 성격은 무엇인가? 8. 즐겨하는 게임은 무엇인가? 9. 만약 가정한다면, 입사 후 2~3개월간 일하는데 퇴사를 하고싶다. 라고 생각이 든다면 그 이유는 무엇인가? * 역질문 1. 회사의 현재 인원이 얼마나 있는가? ..

회사/면접 2023.10.16

게임회사 기술면접 질문 & 답변 80

용산에 위치한 ‘ㅂㅇㅌㅇ’ 회사 2023년 클라이언트 프로그래머 면접 목록입니다. 자기소개는 없으며, 테크니컬 개발자와 1:1 면접 후 대표님과 1:1 미팅하며 종료합니다. * 기술 면접 1. 최적화 경험에 대해서 얼마나 알고 있는가? 2. 스파인 애니메이션에 대해서 아는가? 3. 광고 노출 서드파티 MAX 외에 다른 것을 아는 것이 있는가? 4. NGUI를 사용해본 경험이 있는가? 5. iOS 앱 빌드 경험이 있는가? 6. 파티클은 직접 제작해본 것인가? 7. 플립, 폴드류 핸드폰의 해상도 대응은 어떻게 진행했는가? * 기타 질문 1. 회사까지 오는 시간은 얼마나 걸렸는가? 2. 우리 게임 해보았는가? 3. 해보았으면 어떠한가? 4. 수습기간 동안 야근이 있을 수 있는데 괜찮은가? 검색키워드 더보기 #..

회사/면접 2023.10.15

KB 교통대금 확인 및 조회

❗ 23.10.07 기준 KB스타뱅킹 어플에서 출금내역이 'KB카드출금'이라고만 적혀있고, 해당 항목이 교통 대금인 것 같은 경우.. 1. kb pay 앱 실행 2. 앱 최상단 알림버튼 (종 모양) 클릭 3. KB Pay - 카드 - 자산 탭 중 카드 탭 클릭 4. 결제 - 이벤트 - 공지 - 공지/안내 탭 중 공지/안내 탭 클릭 5. 교통 대금 출금 예정 확인하기 😎 블로그에 검색해보니 죄다 과거 KB 국민카드 앱 기준으로 나와있길래 답답해서 내가 작성했다.

기타/기타 2023.10.07

[Novice Mid : 프로그래밍 연습] 시뮬레이션 : Notation - 2진수로 변환하기

★ "왜?" 라는 질문을 스스로에게 하면서 학습하자. 0. 문제 풀이 순서 논리적 순서 확정 관련 카테고리 혹은 문제 끌어오기 필요한 자료연산 리스트업 이에 제일 유리한 자료구조 선택 구현 1. 설명 문제 링크 : https://www.codetree.ai/missions/5/problems/convert-to-binary?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 사진 : 문제 설명 : 0이상 10만 이하 정수 N을 2진수로 변환하는 프로그램을 출력하는 문제이다. 나의 소..

[코드트리 챌린지] 9월 4주차 인증용 포스트 ❗

실력 진단 야호~ 점수를 다시 올렸다. 이번 주는 추석 연휴가 껴있어 부모님 댁에 내려가느라 문제를 풀지 못하였다. 오늘 다시 올라와서 부리나케 실력테스트를 하고 문제를 풀었다. 👍 학습 내용 이번 주 학습내용 본문은 아래의 링크로 대체한다. 1. https://shung2.tistory.com/1409 [Novice Mid : 프로그래밍 연습] 시뮬레이션 : Notation - 2진수로 변환하기 ★ "왜?" 라는 질문을 스스로에게 하면서 학습하자. 0. 문제 풀이 순서 논리적 순서 확정 관련 카테고리 혹은 문제 끌어오기 필요한 자료연산 리스트업 이에 제일 유리한 자료구조 선택 구현 1. 설 shung2.tistory.com P.S. 이제 수요일부터 새로운 회사에 출근하게 되는데, 코드트리 챌린지를 무사..

[Novice Mid : 프로그래밍 연습] 시뮬레이션 : 날짜와 시간 계산 - 요일 맞추기

★ "왜?" 라는 질문을 스스로에게 하면서 학습하자. 0. 문제 풀이 순서 논리적 순서 확정 관련 카테고리 혹은 문제 끌어오기 필요한 자료연산 리스트업 이에 제일 유리한 자료구조 선택 구현 1. 설명 문제 링크 : https://www.codetree.ai/missions/5/problems/guess-day-of-week?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 사진 : 문제 설명 : 11년 m1월 d1일이 월요일이면, m2월 d2일은 어떤 요일인가? 즉 요일을 구하는 ..

[Novice Mid : 프로그래밍 연습] 시뮬레이션 : 날짜와 시간 계산 - DateTime to DateTime

★ "왜?" 라는 질문을 스스로에게 하면서 학습하자. 0. 문제 풀이 순서 논리적 순서 확정 관련 카테고리 혹은 문제 끌어오기 필요한 자료연산 리스트업 이에 제일 유리한 자료구조 선택 구현 1. 설명 문제 링크 : https://www.codetree.ai/missions/5/problems/datetime-to-datetime?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 사진 : 문제 설명 : 11년 11월 11일 11시 11분에서 a일 b시 c분 까지 몇 분의 시간이 흘렀..

반응형