묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결초보자를 위한 IT 인프라의 이해
VLAN과 L3 스위치
안녕하세요. 강의 잘 듣고 있습니다.VLAN은 이더넷이라서 서로 다른 이더넷 네트워크, 서로 다른 브로드캐스트 이더넷 네트워크와의 트래픽을 넘기기 위해서 L3 스위치가 필요하다. 라고 말씀하셨는데 이더넷은 L2 계층인데 L3 스위치가 필요하다는 말씀이 이해가 안되서요.어떻게 이해하는게 좋을까요??
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
TSharedPtr<Wraight>의 스레드 안정성있는 삭제 방법
이전 질문들과 겹치는 것을 알고 있으나, 코드 테스트 이후에도 아래와 같은 의문이 풀리지 않아 글을 쓰게 되었습니다. 의문: 전역변수로 지정된 TSharedPtr<RefCountable변수형> "몬스터"가 있습니다. 이를 타 스레드에서 는 복제하여 사용하는 도중, 메인 스레드에서 "몬스터"를 이제 제거하고 싶어 nullptr을 대입합니다. 이때 아래와 같은 문제가 발생합니다.int32 ReleaseRef() { int32 refCount = --_refCount; // 타 스레드에서 이 타이밍에 "몬스터" 복제하는 문제 if (refCount == 0) { delete this; } return refCount; } 실제 테스트:class Wraight : public RefCountable { public: int testValue = 0; }; using WraightRef = TSharedPtr<Wraight>; class Missile : public RefCountable { public: void SetTarget(WraightRef target) { _target = target; // GWraight가 이미 완전히 삭제된 이후 생성된 경우, nullptr 오류 방지 if (!_target.IsNull()) _target->testValue = 5; } private: WraightRef _target; }; using MissileRef = TSharedPtr<Missile>; // 스레드들 접근가능한 전역변수 WraightRef GWraight; int main() { // 10번 실험 for (int i = 0; i < 10; i++) { // 타겟 소환 GWraight = (new Wraight); GWraight->ReleaseRef(); // 100'000개의 수많은 미사일 생성 및 타겟 지정 thread t1([]() { for (int i = 0; i < 100'000; i++) { MissileRef missile(new Missile()); missile->ReleaseRef(); missile->SetTarget(GWraight); } }); // 타겟 1ms 뒤에 소멸 thread t2([]() { this_thread::sleep_for(1ms); GWraight = nullptr; }); t1.join(); t2.join(); this_thread::sleep_for(3000ms); } }해당 코드 실행 이후, 아래와 같은 문제점이 생겼습니다. 케이스A미사일 발사 후, 제거되는 ~MissileRef()의 ReleaseRef() 내부 delete에서 오류가 발생 합니다. 예상되는 원인:int32 ReleaseRef() { int32 refCount = --_refCount; if (refCount == 0) { // 1. 타 스레드에서 복제 delete this; // 2. 복제된 객체는 이미 삭제된 _ptr을 들고있음 // 3. 복제에 따라 _refCount = 1 } return refCount; } // 4. 이후에 복제된 객체 삭제되면서 refCount = 0 // 5. 이중 delete 실행 -> 오류 케이스B타겟인 GWraight가 TSharedPtr<Wraight>(nullptr)를 복사할 때, ReleaseRef() 내부 delete에서 오류가 발생 합니다. 예상되는 원인:int32 ReleaseRef() { int32 refCount = --_refCount; if (refCount == 0) { // 1. 타 스레드에서 복제 // 2. 복제에 따라 _refCount = 1 // 3. 이후에 복제된 객체 삭제되면서 refCount = 0 // 4. delete 실행 delete this; // 5. 이중 delete 실행 -> 오류 } return refCount; } 다른 질문에서 refCount가 0이 될 때, 참조 객체가 남아있는 것은 TSharedPtr로 구현되었을 경우 발생하지 않는 문제라고 하셨습니다. 하지만, 어떤 구조로 객체를 삭제해야 위와 같은 문제가 발생하지 않는지 감이 오지 않습니다...
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
unique_ptr 질문
unique_ptr의 경우 왕관 뺏기 게임을 만든다고 할 때 사용할 수 있을까요?
-
미해결실습으로 배우는 핵심 네트워크 기술
standby 그룹을 수정하고 싶다면 어떻게 해야하나요?
FHRP 강의를 듣고 있던 중입니다. HSRP 그룹 설정시 다른 그룹으로 설정했을 때 수정하려면 어떻게 해야하나요? 원래는 standby 20 ip 10.1.20.224 이렇게 설정해야하는데standby 10 ip 10.1.20.224 이렇게 그룹 10으로 묶어버렸어요..ㅠ수정 명령어를 찾는 데 검색해도 잘 안나오더라구요.궁금합니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 부탁드립니다 !
강의를 다 못 봤습니다... 연장 부탁드립니다 ㅜ감사합니다 !
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
컴퓨터 사양
데스크탑 컴퓨터 사려고 하는데 게임개발자는 어느정도 사양의 컴퓨터를 구매하는게 좋을까요? 추천해주시는게 있을까요?
-
미해결CloudNet@와 함께하는 Amazon EKS 기본 강의
EKS말고 쿠버에서도 실습문제 없을까요?
안녕하세요.EKS로 해당 강의 학습했습니다.헬름으로 배포하는 프로메테우스 스택을 가져오는 만큼ec2혹은 vm으로 구성한 쿠버네티스에서도 문제가 없을것이라 예상되지만 여쭤봅니다. 쿠버네티스나 K3S등의 경량 쿠버로 마스터노드와 클러스터를 구성하고 나서 해당 강의의 프로메테우스 스택 그리고 그 이후 오토스캐일링까지 실습이 가능할까 궁금함니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 연장 요청 드립니다.
지난 번에 수강 연장해주셨는데 9월 내에 수강 완료하도록 추가 연장해주시면 감사하겠습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
첫 번째 요청에 ETag가 들어가는데 클라이언트도 제어 로직에 관여하는거 아닌가요?
ETag 해시값을 보내는 것은 캐시 제어 로직에 포함되지 않는 별개의 작업인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
만료된 캐시도 캐시 저장 공간을 점유하고 있는 상태인가요?
캐시 컨트롤 시간이 만료되면 캐시 데이터가 사라진다고 생각했는데 검증 헤더를 통해서 다시 살려서 쓰는 것 같아서요만료된 캐시를 다시 살려서 쓴다는 건 만료 이후에도 캐시 데이터를 점유하고 있다는 것을 의미하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
JobQueue의 Push함수 관련 질문 있습니다.
안녕하세요. 강의 정말 잘 보고 있습니다. JobQueue의 Push 함수를 호출하는 스레드가 Action까지 처리하게 되는데, 이는 Push를 호출하는 시점부터 해당 Queue에 모든 Job이 비워질 때까지 Caller가 Blocked 됩니다. 이를 JobQueue의 Pop과 Action.Invoke를 담당하는 스레드를 하나 만들고, 백그라운드에서 폴링하는 방식으로 만들려 합니다. 즉, Push를 호출한 스레드를 사용할 지, 미리 스레드를 만들어두고 폴링하는 방식으로 사용할 지의 차이인 것 같습니다. 두 방식 중 어느 방식이 나을지 알고 싶습니다. 감사합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
DHCP에 대해서 질문드립니다.
제가 이해를 잘 한건지 아래의 대한 질문을 드리고싶습니다.1.dhcp server는 isp쪽에서 구축되어있다고 판단하면될까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Rider vs Visual Studio
강의 로드맵 전체 수강중입니다.Visual Studio 로 진행하셨는데 Rider 구매하려고 해서, Rider로 진행해도 따라가는데 문제 없을까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WriteUnlock을 잘 못 호출하는 경우에 대해서
일반 Lock을 쓸 때 Unlock을 한번 더 호출해버리는 실수는 크래시가 뜨기에, 디버깅으로 알아채기 쉬운 부분이라고 생각합니다. void Lock::WriteUnlock() { if ((_lockFlag.load() & READ_COUNT_MASK) != 0) // Thread id를 체크하지 않음. Read가 없는 상황에서 WriteUnlock()이 통과할 수 있음. CRASH("INVALID_UNLOCK_ORDER"); const int32 lockCount = --_writerCount; if (lockCount == 0) _lockFlag.store(EMPTY_FLAG); }하지만, WriteUnLock() 에서는 아래와 같은 경우에 문제가 있을 수 있다고 생각합니다. // 실수로 호출 WriteUnlock(); // _writerCount = -1 // 크래시 없이 작업 진행 WriteLock(); // _writerCount = 0, 스레드 id 등록 WriteLock(); // _writerCount = 1 WriteUnlock(); // _writerCount = 0, 스레드 id 해제 WriteUnlock(); // _writerCount = -1 /***** 오랜 작업 뒤 ******/ WriteLock(); // _writerCount = 0, 스레드 id 등록 WriteUnlock(); // _writerCount = -1 // 타 스레드 접근 ReadLock(); /*or*/ WriteLock(); // 틱 시간 초과로 CRASH의 드문 경우에 한해서 수많은 코드 작업이 이뤄진 뒤라, 어디서 실수가 발생했는지 디버깅이 어려워질 것 같습니다.크게 신경 쓰지 않아도 되는 건지, 아니면 놓치고 있는 부분이 있는 것인지 궁굼합니다.
-
해결됨[2024 리뉴얼] 스스로 구축하는 AWS 클라우드 네트워크 - 기본편
targetgroup
로드밸런스 타겟그룹을 만들때 이런 에러가 뜨는데 레퍼런스를 찾아봐도 잘 없네요.. 시간이 안맞는거 같은데이건 어느 부분을 봐야할까요??
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
강의 섹션2 이후부터 강의화면 안보이는 이슈있습니다.
안녕하세요.해당 강의 섹션2 이후부터 강의화면이 검은색으로 보여지며강의화면이 안보이는 이슈가 있습니다. 빠른 확인 부탁드립니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
클라우드 서비스 구축 - AWS 회원가입 및 리눅스 서버 구축 강의화면 안보이는 이슈
안녕하세요. 현재 whale, chrome에서 클라우드 서비스 구축 - AWS 회원가입 및 리눅스 서버 구축 강의화면 안보이는 이슈가 있습니다. 확인 부탁드립니다.
-
해결됨[2024 리뉴얼] 스스로 구축하는 AWS 클라우드 네트워크 - 기본편
sg
안녕하세요 강의 잘 보고 있습니다 선생님이 실습하신것 처럼 sg 인바운드 80열고 아웃바운드는 디폴트 nacl도 디폴트 그대로 사용하고 있는데(all port range)웹으로 public ip를 접속하면 접속이 되지 않는데.. 체크해야될 부분이 또 있을까요??
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
언리얼 엔진 5.4.3 Notify 두번 호출
리슨 서버(호스트)의 액터가 공격하면 Notify는 정상적으로 한번 호출되는데 클라이언트의 액터가 공격요청을하면 서버에서 Notify로그가 두 번 호출됩니다. (두번 공격 되는 현상) 5.4.3에서만 일어나는 문제일까요? 프로젝트를 다운 받아서 버전이랑 헤더 수정만 하고 실행해도 똑같은 현상이 발생하네요. 리슨 서버 액터에서 공격시 출력 로그클라에서 공격시 출력 로그
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장부탁드립니다.
강의를 보기도 전에 시험이 다가와 연기했네요...강의 수강기간 연장부탁드립니다. ㅠㅠ