묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 선생님 코드 몇줄에 대해서 질문드립니다.
질문 SocketAsyncEventArgs _sendArgs = new SocketAsyncEventArgs(); SocketAsyncEventArgs _recvArgs = new SocketAsyncEventArgs(); 의 정확한 개념에 대해서 질문합니다. 세션 클래스 내부에서 SocketAsyncEventArgs _sendArgs = new SocketAsyncEventArgs(); SocketAsyncEventArgs _recvArgs = new SocketAsyncEventArgs(); public void Start(Socket socket) { _socket = socket; _recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted); _sendArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnSendCompleted); RegisterRecv(); } void RegisterRecv() { _recvBuffer.Clean(); ArraySegment<byte> segment = _recvBuffer.WriteSegment; _recvArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); bool pending = _socket.ReceiveAsync(_recvArgs); if (pending == false) OnRecvCompleted(null, _recvArgs); } 비동기의 개념을 가지고 해석을 해봤는데, 서버 의 메인 함수 쓰레드가 메인 함수를 실행을 하면서 리슨을 던져놓고 클라이언트의 커낵트 신호가 올때 쓰레드 풀에서 대기하고 있던 A쓰레드가 투입이됩니다. 이때 메인 쓰레드는 while()문을 계속해서 타고 있기에 프로그램이 종료가 되지 않고 있는 상황. A 쓰레드가 클라이언트를 Accept를 등록해주고 Accept를 완료 시킴으로써 클라와 서버 내부의 클라세션의 연결이 완료가 되고 SEND와 RECEIVE를 하면서 서로 통신을 하게 되는데 세션 클래스 내부에서 SocketAsyncEventArgs _sendArgs = new SocketAsyncEventArgs(); SocketAsyncEventArgs _recvArgs = new SocketAsyncEventArgs(); --> 이것이 클라이언트 세션 내부에서 SEND를 전담하는 쓰레드 A와 RECEIVE를 전담하는 쓰레드 B를 쓰레드 풀에서 가져와서 서버 클라이언트 세션에는 쓰레드 2개가 활동을 하는것이고 이 쓰레드는 비동기로 활동을 하는 건지 아니면 쓰레드 하나가 A라는 클라이언트를 전담하는 서버 컴퓨터의 A라는 클라이언트 세션에는 하나의 쓰레드가 있고 이 쓰레드를 비동기로 만들어주어 Receive와 send 신호오면 투입할 수 있게 콜백 걸어놓고 receive 신호 오면 receive 처리 처리중에 send 신호오면 기억해 두었다가 send 처리 이런식인가요 그리고 쓰레드는 만약 c++ 이라면 해당 cpp 파일 당 쓰레드를 하나씩 분배를 하나요? 함수 단위로 쓰레드를 분배를 하고 쓰레드 풀로 수거가 되나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
UNPROTECTED PRIVATE KEY FILE! 에러 발생
저도 아래 질문과 같은 에러가 발생해서 https://4whomtbts.tistory.com/130 를 바탕으로 해당 파일 속성에서 보안 부분 수정해도 동일한 에러가 발생해서 질문 남깁니다. 혹시 다른 방법이 있을까요? .gitinogore를 prepare파일 안으로 넣어도 같습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GetOrAddComponent 함수 관련
안녕하세요! 강의 9:00까지의 코드를 잘 작성하였는데 계속 에러가 나서 디버깅해보았는데 해결하지 못해서 질문드립니다 ㅠㅠ Util 클래스 내 GetOrAddComponent 함수에 go(ItemIcon)를 넘겨주었음에도 해당 go에 UI_Handler가 이미 붙어 있든 없든 component가 계속 null로 떠있는 것을 확인하였습니다... go에 AddComponent나 GetComponent가 작동하지 않는 이유가 무엇일까요..? ㅠ 답변이 어려주시다면 작성했던 코드를 메일 보내드리겠습니다..!
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
permission 관련..
애초에 creat-react-app 설치 자체가 안되는데 어떤 이슈일까요?
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
Type Error 가 자꾸 나네요
from random import * class Unit: def __init__(self, name, hp, speed): self.name = name self.hp = hp self.speed = speed print("{0} 유닛이 생성되었습니다.".format(name)) def move(self, location): print("[지상 유닛 이동]") print("{0} : {1} 방향으로 이동합니다. [속도 : {2}]"\ .format(self.name, location, self.speed)) def damaged(self, damage): print("{0} : {1} 데미지를 입었습니다.".format(self.name, damage)) self.hp -= damage print("{0} : 현재 체력은 {1}입니다.".format(self.name, self.hp)) if self.hp <=0: print("{0} : 유닛이 파괴되었습니다.".format(self.name)) class AttackUnit(Unit): def __init__(self, name, hp, speed, damage): Unit.__init__(self, name, hp, speed) self.damage = damage def attack(self, location): print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]"\ .format(self.name, location, self.damage)) #마린 class Marine(AttackUnit): def __init__(self): AttackUnit.__init__(self, "마린", 40, 1, 5) #스팀팩 : 일정 시간동안 이동 속도 및 공격 속도 증가 def stimpack(self): if self.hp > 10: self.hp -= 10 print("{0} : 스팀팩을 사용합니다. (Hp 10 감소)".format(self.name)) else: print("{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다.".format(self.name)) #탱크 class Tank(AttackUnit): #시즈 모드 seize_developed = False # 시즈 모드 개발 여부 def __init__(self): AttackUnit.__init__(self, "탱크", 150, 1, 35) self.seize_mode = False def set_seize_mode(self): if Tank.seize_developed == False: return # 현재 시즈 모드 아닐 때 -> 시즈모드 if self.seize_mode == False: print("{0} : 시즈모드로 전환합니다.".format(self.name)) self.damage *= 2 self.seize_mode == True #현재 시즈모드 일 때 -> 시즈모드 해제 else: print("{0} : 시즈모드를 해제합니다.".format(self.name)) self.damage /= 2 self.seize_mode == False # 날 수 있는 클래스 class Flyable: def __init__(self, flying_speed): self.flying_speed = flying_speed def fly(self, name, location): print("{0} : {1} 방향으로 날아갑니다. [속도 {2}]"\ .format(name, location, self.flying_speed)) class FlyableAttackUnit(AttackUnit, Flyable): def __init__(self, name, hp, damage, flying_speed): AttackUnit.__init__(self, name, hp, 0, damage) Flyable.__init__(self, flying_speed) def move(self, location): print("[공중 유닛 이동]") self.fly(self.name, location) class Wraith(FlyableAttackUnit): def def__init__(self): FlyableAttackUnit.__init__(self, "레이스", 80, 20, 5) self.clocked = False #클로킹 모드(해제 상태) def clocking(self): if self.clocked == True: #클로킹 모드 -> 모드 해제 print("{0} : 클로킹 모드를 해제합니다.".format(self.name)) self.clocked = False else: # 클로킹 모드 해제 -> 모드 설정 print("{0} : 클로킹 모드를 실행합니다.".format(self.name)) self.clocked = True def game_start(): print("[알림] 새로운 게임을 시작합니다.") def game_over(): print("Player : gg") #good game print("[Player]님이 퇴장하셨습니다.") #실제 게임 시작 game_start() # 마린 3기 생성 m1 = Marine() m2 = Marine() m3 = Marine() # 탱크 2기 생성 t1 = Tank() t2 = Tank() # 레이스 1기 생성 w1 = Wraith() # 이 부분에서 에러가 납니다 왜 그럴까요? # 유닛 일괄 관리 attack_units = [] attack_units.append(m1) attack_units.append(m2) attack_units.append(m3) attack_units.append(t1) attack_units.append(t2) attack_units.append(w1) # 전군 이동 for unit in attack_units: unit.move("1시") # 탱크 시즈모드 개발 Tank.seize_developed = True prit("[알림] 탱크 시즈 모드 개발이 완료되었습니다.") # 공격 모드 준비 (마린: 스팀팩, 탱크 : 시즈모드, 레이스 : 클로킹) for unit in attack_units: if isinstance(unit, Marine): unit.stimpack() elif isinstance(unit, Tank): unit.set_seize_mode() elif isinstance(unit, Wraith): unit.clocking() # 전군 공격 for unit in attack_units: unit.attack("1시") # 전군 피해 for unit in attack_units: unit.damaged(randint(5, 21)) #공격은 랜덤으로 받음 (5 ~ 20) # 게임 종료 game_over()
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
auto layout 질문!
16:28 쯤 보며 따라하고 있는데요. auto layout을 누르면 직사각형도형 세로가 -1 처리 되면서 홀수로 바뀌네요. auto layout을 줄경우 미리 +1로 설정해줘야하나요? 세로를 26으로 맞췄는데 auto layout을 주니 25로 자기마음대로 바뀌네요.ㅜ 그리고 양쪽 16으로 우연히 맞추시고 넘어가시는데 저는 왼쪽이 18 오른쪽이 16인데 양쪽 16으로 통일하고 싶은데 어떻게 해야할지 여기서 난관이네요.ㅠ 아래는 일단 꾸역꾸역 만들어봤어요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Session #2 강의 _pending 변수 질문입니다.
안녕하세요! 정말 이만한 게임서버에 관한 강의가 없는데 감사히 수강하고있습니다! Session #2 강의 보다가 질문을 올립니다. 아직 Session #2까지밖에 안봐서 인지는 모르지만 _pending으로 분기처리를 하는 부분이 왜 필요한지 모르겠습니다. 이미 _lock으로 들어왔으면 다른스레드는 못들어올 텐데 _pending으로 한번 더 분기해서 큐에만 넣고 빠져나올지 아니면 `RegisterSend`까지 해줄지를 결정하는 부분입니다. _lock에 들어오고 다른 쓰레드가 _pending으로 분기할 경우가 있을지 제 눈에는 도저히 판별하기가 힘드네요 ㅠㅠ 그런 경우가 생기나요?? 우선 _pending의 추가적인 분기없이 실행해도 정상작동합니다! 감사합니다!
-
해결됨프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
혹시 지금은 sass-loader 설치하는 방법이 다른가요?
예제를 보고 따라하고 있는데 의존성 문제로 sass-loader를 설치하지 못하고 있습니다.. 그냥 sass-loader를 설치하려고하면 webpack 5이상을 요구하고 sass-loader@4로 설치해도 문제는 없어보이는데도 설치하지 못하네요... 이 부분이 햇갈리는데... 문서를 찾아보면 또 node-sass를 설치하라는 말은 없네요... 해당부분이 sass로 되어있는데 이게 node-sass와 같은 것인가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 대안 (엔티티승격)
안녕하세요 선생님 값 타입 컬렉션 대안으로 값 타입 컬렉션을 엔티티로 만드셔서 사용하셨는데, 엔티티로 승격했을 때의 이점이 무엇인가요? 엔티티로 승격하면 JpaMain에서 값 타입을 수정할 때 findMember.getAddressesHistory().remove(new AddressEntity("old1", "street1", "10000"));findMember.getAddressesHistory().add(new AddressEntity("newCity1", "street1", "10000")); 이렇게 수정하지 않으려고 엔티티를 사용하는 것인가요? (실제로 위의 코드가 동작하는지 확인해봤는데 동작하지 않습니다) 정리하면, 값 타입을 엔티티로 승격했을때의 이점과 수정방법이 궁금합니다!
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
DataFrame에서 딕셔너리로 변환 관련
선생님 안녕하세요~ 강의(9:35-40)에서는 DataFrame에서 딕셔너리로 변환할 때 dict3 = df_dict.to_dict('list') 이렇게 쓰셨는데요~ dict3 = df_dict.to_dict() 이렇게 쓰면 값들에 인덱스 값과 value가 딕셔너리 형태로 나오네요.. type은 dict으로 나오는데, DataFrame을 딕셔너리로 바꾸는데에는 상관이 없는건가요..?!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Service Layer Test와 Service Layer 관련 질문입니다
강의에 직접적인 연관이 있지는 않지만 궁금한 점이 생겨 질문드리게 되었습니다 1. Service Layer Test 관련 질문입니다 강의에서는 Service Layer를 @SpringBootTest 어노테이션을 통해서 단위 테스트 보다는 통합테스트에 가깝게 테스트가 진행되었습니다 통합테스트로 진행을 하면 DB에 직접 쿼리까지 날림으로써 확실히 이 코드가 제대로 작동한다는 것을 알 수 있습니다 하지만 단위 테스트로 진행할 경우 테스트하는 메서드 내부에서 사용된 메서드는 Mockito를 이용하여 동작을 기대값으로 설정함으로써 해당 메서드의 진짜 비즈니스 로직만의 맞고 틀림을 판별한다는 생각이 듭니다 그렇다면 Service Layer에 그렇다할 비즈니스 로직이 존재하지 않는 경우에는 통합테스트만 진행하고 비즈니스 로직이 존재한다면 단위테스트도 하고 통합테스트도 해야 하는지 궁금합니다 아니면 그렇다할 비즈니스 로직이 존재하지 않더라도 단위테스트를 작성해야 하는지 궁금합니다 2. Service Layer의 존재 유무 관련 질문입니다 만약 memberRepository 와 memberService라는 클래스가 존재하는데 memberService에서는 MemberService public Member findById(Long id) { return memberRepository.findById(id); } 이런식으로 memberRepository의 메서드를 그대로 실행만 하고 반환만 하는 상황이라면 바로 MemberRepository에 접근해서 가져와도 될것 같은데 MemberService Layer를 따로 만들어 줘야하는 지 궁금합니다
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
postman 관련 질문
수업과 같은 방식으로 postman에 products array를 넣어줬는데 Url을 복사해서 크롬으로 열어보면 다음과 같이 결과가 나옵니다. 이 때문에 이후 data에서 products 정보를 받아오지도 못하는 거 같은데 원인을 모르겠어서 질문드립니다!
-
해결됨Svelte.js SPA 영화 검색 프로젝트
그렇다면...
그럼 이전에 했던 수업에 패키지는 안쓰나요? 강사님꺼 패키징으로 복붙해서 쓰면되요? 순서가 좀 헷갈리네요.. 그전에 스노우팩 템플릿 강사님꺼 깃헙에서 가져오는것도 명령어가 제대로 안먹히는데 그냥 다운받아서 하고 있거든요 스노우팩 템플릿이 보일러플레이트 처럼 활용되는건가요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
get_dummies()의 널값 처리
357-8쪽 해당 실습에서 object형을 제외한 int 타입에 대해서 fillna 메서드를 활용해서 Null 칼럼을 평균값으로 대체 하였습니다. null_column_count=house_df.isnull().sum()[house_df.isnull().sum()>0] house_df.dtypes[null_column_count.index] MasVnrType object BsmtQual object BsmtCond object BsmtExposure object BsmtFinType1 object BsmtFinType2 object Electrical object GarageType object GarageFinish object GarageQual object GarageCond object dtype: object그래서 다음과 같이 12개의 feature에서만 null값이 남게 되었는데요, 358쪽에서 get_dummies()는 자동으로 문자열 피처를 원-핫 인코딩 변환하면서 NUll 값은 'None'칼럼으로 대체해준다고 하였습니다.None칼럼으로 대체해주면 인코딩 이후 None으로 끝나는 칼럼의 갯수가 12개가 나와야 하는데, house_df_ohe=pd.get_dummies(house_df)for i in house_df_ohe: if "None" in i: print(i)을 하면, MasVnrType_None으로 한개밖에 나오지 않습니다. 왜 나머지는 나오지 않는지 궁금합니다!예를 들어, house_df에서 BsmtQual은 17번째 row에서 nan 값인데, house_df_ohe에서 BsmtQual_None이라는 칼럼명이 없으며, BsmtQual로 시작하는 칼럼명은 다음과 같이 4개('BsmtQual_Ex','BsmtQual_Fa','BsmtQual_Gd','BsmtQual_TA') 밖에 없고, house_df_ohe[['BsmtQual_Ex','BsmtQual_Fa','BsmtQual_Gd','BsmtQual_TA']].iloc[17]을 해보면 BsmtQual_Ex 0 BsmtQual_Fa 0 BsmtQual_Gd 0 BsmtQual_TA 0 모두 0이 나옵니다. 여기 nan값은 인코딩 후 어떻게 되는건가요? 따로 칼럼이 만들어지지 않는건가요?
-
미해결프론트엔드 개발자를 위한 웹팩
mini-css-extract-plugin 문의
https://www.npmjs.com/package/mini-css-extract-plugin안녕하세요 캡틴판교님이번 강의에서 저희가 쓴 플러그인 문의 드려요제가 이해한게 맞다면 main.css를 플러그인이 가지고 와서 dist폴더에 생성하는거 같은데 맞나요? 그런데 플러그인 리드미파일에는 p태그를 파란색으로 바꾸는 css코드는 없는거 같은데 main.css가 어떻게 만들어지는지 과정이 궁금해서 질문 드려요항상 친절한 답변 늘 감사하고 있어요~
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
Lamda식과 this, 어떤 걸 알고 있어야 하는건가요?
교재에 있는 링크를 타고 가서 생코의 this 5강을 들었는데요. "생성자 안에서 this는, 그 생성자가 만든 객체를 가르킨다."라는 건 이해했는데, 이걸 언급해주신 부분과 어떻게 연계되어서 알고 있으면 될지가 궁금합니다.
-
해결됨Svelte.js SPA 영화 검색 프로젝트
깃 저장소 문제
명령어 해도 안됩니다.. ! could not fetch remote https://github.com/ParkYoungWoong/svelte-snowpack-template ! could not find commit hash for master 막아놨나요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
필드 생성 및 제거에 대한 궁금증!!
alter table mytable add column lowest_price11 int unsigned; alter table mytable drop column lowest_price11; desc mytable; alter table mytable add column lowest_price11 int(10) unsigned; desc mytable; 5분쯤부터 시작되는 실습7 내용 중 위 코드를 순서대로 실행하다 궁금한 점이 있는데요. lowest_price11 int 를 생성 및 제거 후, lowest_price11 int(10)으로 다시 만들면, 1) 워닝표시(노란삼각형) 타입이 등장하고 2) int(10)이 결과에 적혀있지 않은데 그 이유가 무엇일까요??
-
해결됨Svelte.js SPA 영화 검색 프로젝트
마지막 부분에서요
마지막 7분30초? 여기서 빌드를 했어요 이렇게 나옵니다.. main.js에 보면.. 다르네요? import p from"./App.svelte.js";const t=new p({target:document.body});export default t;
-
미해결애플 웹사이트 인터랙션 클론!
브라우저 바운스로 인한 버그 방지에 대한 질문이 있습니다!
안녕하세요 선생님, 인터랙션 강의 재밌게 듣고있는 학생입니다 제가 질문을 드리고자 하는 것은 다름이 아니고, 강의를 들으면서 선생님께서 코딩을 하시기 전에 개략적으로 이런 식으로 하면 되겠다라고 스스로 생각을 미리 해보는데, if (currentScene === 0) return; 강의 말미에 해당 코드를 작성하셨는데, if (yOffset < prevScrollHeight && yOffset > 0) 다음과 같은 방식으로 코드를 작성하는 것은 어떨까요? 다양한 방식이 존재하겠지만 선생님께서 해당 방식을 사용한 이유가 궁금합니다! 또한, 여러 방식중에 어떤 것을 선택할때, 저는 조금 더 효율적인? 브라우저에 부담이 되지 않는 방식을 선택하는 것이 좋은 방향이라고 생각하는데, 어떤 코드가 더 효율적인지 여부를 판단하는 방식을 모르겠습니다ㅠㅠ 개발자 도구를 통해 테스트를 한다거나 하는 방식이 있을 것 같은데 어떤 방식이 있을까요? 새해 복 많이 받으세요 강의 정말 잘 듣고있습니다!