안녕하세요. Part 4를 완강하고 Part 7으로 넘어가기 위해 새로운 솔루션을 생성해서 기존 Part 4 솔루션 내의 프로젝트들을 우선 Ctrl + C, V 한 뒤 기존 프로젝트 추가로 Part 7에서 사용할 서버 솔루션을 Part 4와 동일하게 맞추는 작업을 하고 있었습니다! 그런데, DummyClient의 연결 수를 20개 정도로 하면 문제가 없지만, 30개부터는 특정 ClientSession의 Room이 null인 상태에서 서버 측의 C_MoveHandler가 실행되어 서버가 뻗어버리는 경우가 간헐적으로 발생하고 있습니다. (강의 보면서 따라 한 솔루션은 100이면 100 잘 되며, 새롭게 복사한 솔루션은 대부분 잘 되지만 가끔식 위 오류가 발생합니다..) 처음엔 단순히 Ctrl+C , V 하는 과정에서 프로젝트나 솔루션의 설정값들이 새로운 경로로 옮기면서 동기화가 안되어 생기는 문제인 줄 알았는데, 코드를 계속 천천히 읽다보니 의문이 들게 되었습니다. public GameRoom? Room { get; set; } public override void OnConnected(EndPoint? endPoint) { Console.WriteLine($"OnConnected: {endPoint}"); Program.Room.Push(() => Program.Room.Enter(this)); } 제가 이해한 바로는 ClientSession의 Room은 Listener에 의해서 ClientSession.OnConnected가 호출되며 Program.Room 에게 Enter(this)를 요청하고, 이후 Program.Room 은 Flush()를 통해 특정할 수 없는 시점에 비로소 Enter를 호출하게 되며, ClientSession.Room 이 자기 자신을 가리키도록 합니다. 그런데, 정말 운이 안 좋다면 Program.Room 이 A번 ClientSession에 대한 Enter 작업이 미처 다 수행되기 전에 DummyClient 측의 SendForEach로 인해 A번 ClientSession과 대응되는 ServerSession으로 이동 패킷을 보내고, 최종적으로 A번 ClientSession의 Room이 null인 상태에서 C_MoveHandler를 실행 할 여지가 있는 것이 아닌가 생각하게 되었습니다. 혹시 제가 생각하고 있는 것이 맞는건지, 아니면 단순하게 솔루션을 잘못 복사해와서 문제가 생긴건지 궁금합니다.. 만약 그런 여지가 있다면 단순히 room이 아직 null인지 체크하고 이동 패킷을 무시하면 되는걸까요?
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
================= 현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ) 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등) 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요) 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등.. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.) 서로 예의를 지키며 존중하는 문화를 만들어가요. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! ) 먼저 유사한 질문이 있었는지 검색해보세요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ================== 안녕하세요 맛비님! 이번에 hdl season 1 을 다 수강하고 fpga 가속기 설계를 듣고자 하는 학생입니다! 그런데 강의를 살펴보니 zybo z7 이나 arty z7을 사용하더군요 그런데 제가 학교에서 해당 기기들을 대여 할 수 있는지 문의해보니 해당 모델은 없고 nexys a7을 대여 할 수 있다고 답변이 왔습니다. 학생인지라 기기를 새로 살만한 여유가 없어 부득이하게 nexys a7 밖에 사용 할 수 없는 상황인데 nexys a7으로도 강의 진행이 가능한지 여쭤보고 싶습니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] 여기에 질문 내용을 남겨주세요. @Configuration은 어떨때 쓰이나요? Appconfig가 있는 어플도 있고 없는 어플도 있는데 차이를 모르겠습니다. 자세히 설명주시면 감사하겠습니다.
안녕하세요 애구마님 우선 강의 정말 유익하게 잘 들었고, 궁금한점이 있어서 질문드려봅니다. 통신수업파트에서 통신이 ios 어려운 관문 3~4가지 중에 하나라고 하셨는데요. 다른것들이 무엇인지도 말씀해주실수있나요? 수업과 관계없는 질문이긴하지만.. 저는 지금 swift, swiftui를 공부중인데요. 인터넷에 찾아보면 취업이 목적이면 결국엔 스토리보드를 공부해야 한다고 하는데요. swiftui를 어느정도 공부한 후에 스토리보드를 시작해도 상관없는건가요?
#include <iostream> using namespace std; int main() { //short circuit evaluation int x = 2; int y = 2; if (x == 1 && y++ == 2) { cout << "good" << endl; } cout << y << endl; return 0; } 강의 18:05에서 마지막에 y값이 2로 출력되는 이유가 &&연산자는 왼쪽을 계산했을 때 false면 오른쪽을 계산하지않는다고 하셨습니다. if (x == 1 && y++ == 2) 근데 이 문장에서 연산자 우선순위를생각해보면 y++ > == > &&니까 y++(후위증가연산자)먼저 되서 y는 이 문장이 끝나면 어쨌든 1이 증가되야하는것 아닌가요? 그 후 그다음 연산자 우선순위인 ==, &&순으로 진행되어야 하지 않나요? 제가 잘못이해한걸까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] CoreApplication이나 MemberApp은 잘 되는데 OrderApp을 실행하면 다음과 같은 오류가 뜹니다.. 코드 문제인가 싶어 복붙도 해서 실행해봤는데 똑같은 결과가 나옵니다. 구글에 검색해보니 같은 포트를 써서 그렇다는 이야기를 봐서 8080 포트가 켜져있는지 보았는데 없었습니다. 도저히 모르겠어서 질문드립니다 ..ㅠㅠ
1. tsc로 compile하고 난 후 지정된 경로 저장을 하였을 때 기존 ts파일과 compile된 js파일문아니라 js.map 이라는 파일이 함께 생성됩니다. js.map 이라는 파일은 어떤 파일인지 여쭤보고 싶습니다 npm run start:dev 로 실행했을 경우 import * as express from 'express'; import { Cat, CatType } from './app.model'; const app:express.Express = express(); const data = [1,2,3,4,5,6,7,8,9,10]; app.get('/',(req:express.Request,res:express.Response) => { // res.send({data}); res.send({ cats:Cat }); }); app.listen(8000, () => { console.log('Server is running on port 8000'); }) 위처럼 실행한 후 res.send({data}) 의 주석을 풀면 오류가 발생하고 중단 후 재실행하면 정상작동합니다. tsc-watch --onSuccess \"node dist/app.js\" 위 script가 nodemon처럼 안정화가 되지 않아서 발생하는 오류인가요?
인터페이스가 이해가 잘 되지않습니다 추상클래스를 이용해서도 상속을 하는데 왜 더 작게 상속을 해야하나요? 아니면 여러개 상속할 것을 인터페이스를 이용하여 하나로 묶어 다중상속 하는건가요? 일반적으로 추상클래스를 이용하거나 open을 이용해도 상속이 되는데 꼭 interface를 사용해야하나요??
public class Animal { public void sound(){ System.out.println("동물 울음 소리"); } } public class Dog extends Animal{ @Override public void sound() { System.out.println("멍멍"); } } public class BabyDog extends Dog{ public void sound() { System.out.println("낑낑"); } } public class AnimalPolyMain1 { public static void main(String[] args) { Dog dog = new Dog(); BabyDog babyDog = new BabyDog(); soundAnimal(dog); soundAnimal(babyDog); } private static void soundAnimal(Animal animal){ System.out.println("동물 소리 테스트 시작"); animal.sound(); System.out.println("동물 소리 테스트 종료"); } } 안녕하세요. 강의 중 추가적으로 궁금한게 생겨서 질문드립니다. 그림에 따르면 코드에 만약에 제가 BabyDog클래스를 만들어서 Dog를 extends 한 후 오버라이딩을 하지 않고 매서드를 생성하면 "낑낑"이 아닌 매서드 오버라이딩이 된 "멍멍"이 출력되어야 하는 거 아닌가요??
복습 중 매핑 어노테이션들에 대한 궁금증이 생겼습니다. 1. 해당 매핑 어노테이션들이 강의의 예제처럼 ddl-auto에서 create 옵션을 주는 상황처럼, JPA에서 자체적으로 테이블을 생성하는 경우에 적용되는것인가. 2. 혹은 해당 어노테이션들이 사용자가 따로 DB에서 테이블을 미리 생성해둔 경우에 객체와 관계형 데이터페이스를 매핑하기 위한 용도로 사용되는 것인가. 혹은 매핑 어노테이션 1, 2번 모두에 해당되는건가요?