좋은 강의 잘 보고 있습니다. 감사드립니다. 이번 강의의 중요한 부분인듯 한데 제가 이해를 잘 못하는 부분이 있어서 이렇게 질문드립니다. flag 변수와 turn 변수의 원자성이 Peterson's problem의 Mutual exclusion 조건을 충족시키는 이유가 구체적으로 무엇인가요? 제가 조사한 바로는 기계어 레벨에서 flag에 true를 할당하는 부분이 while문의 뒤쪽에서 완료될 수 있기 때문이라고 이해를 했거든요. 그럼 양쪽 스레드 모두 상대방의 true를 확인하지 못하고 Critical Section에 접근하는 경우의 수가 생기더라고요. 정보 출처 : https://www.quora.com/Why-is-Petersons-solution-not-guaranteed-to-work-on-modern-computer-architecture-as-mentioned-in-Operating-System-Concepts-by-Silberschatz 반대로 이론적으로 상대 스레드의 접근성을 확인하는 라인(while 문)보다 flag에 true를 할당하는 부분이 위에 있으면 Mutual exclusion이 해결됨을 확인했습니다. 예를 들면 A스레드가 while문으로 B의 접근을 확인한 직후에, B스레드가 자신의 flag B를 True를 바꾸고 Critical Section에 접근한다고 해도, B는 무조건적으로 A가 True임을 확인할 수 있기 때문입니다. (A의 flag가 true가 되는 부분이 A의 while문 위에 있기 때문에) 그래서 강의 후반에 flag와 turn 부분을 원자성이 보장되도록 바꾸셨는데 결과가 0으로 나오는게 이해가 가지 않더라고요. 저는 Critical Section의 특정 부분(예제에서는 count 변수)을 원자성이 보장되는 변수로 바꿀줄 알았거든요. A 스레드에서 count를 1에서 2로 올리는 와중에 context switching이 일어나서 B 스레드에서 1에서 0로 바꿔버리면, 다시 A 스레드에게 주도권이 왔을 때 count는 2가 될 테니까요. 그래서 flag와 turn 변수의 원자성이 어째서 Mutual exclusion을 보장되게 하는지 구체적인 이유를 알고싶습니다.
viewcontroll를 xib로 작성후 present하기 위해 인스턴스화를 시킬 경우 let vc = myViewController() let vc = myViewController( nibName : "myViewController" ,bundle: nil ) self . present (vc, animated : true , completion : nil ) 두개가 똑같이 작동합니다. 혹시 그 이유를 알 수 있을까여?
no-cache를 사용하지 않으면 캐시가 expire되지 않았을 때 실제 origin 서버에서는 데이터가 수정되었음에도 불구하고 cache를 사용하는 문제가 발생할 수 있는건가요? 혹은 no-cache를 사용하지 않더라도 이런 문제를 해결하기 위해서 origin 서버에서의 업데이트는 proxy 서버나 클라이언트 브라우저 캐시에 알려주는 식으로 될까요? 제 생각에 후자는 절대 아닐 것 같습니다만.. 그러면 실무에서는 no-cache의 사용이 거의 필수적이라고 생각해도 무방할까요?
안녕하세요. 뷰 폴더 복사하기 영상을 따라하며 빌드를 하던 중 에러가 발생하여 질문 드립니다. npm run build를 실행하면 영상의 코드를 정확히 따라 했음에도 불고하고 아래와 같은 에러가 발생합니다. (폴더 이름 제외) Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. 구글링 결과 vue.config,js에 lintOnSave: false 를 넣어 eslint 설정을 끄면 해결 된다고 하여 이것도 따라했습니다. 그러면 위의 에러는 발생하지 않지만 main_home.js, main_post_list.js, main_post_detail.js에서 에러가 발생하는데 @vue/cli-plugin-babel/preset 모듈을 찾을 수 없다고 합니다 . 강의를 따라했는데 왜 이런 에러가 나는지 궁금합니다.
let vc = MyIDViewController () let midVC = MyIDViewController ( nibName : "MyIDViewController" , bundle : nil ) self . present (vc, animated : true , completion : nil ) 안녕하세여 강의를 듣고 코드를 다시 보니 xib파일로 view Controller를 만들어 불러오는 코드에서 저렇게 init매개변수로 아무것도 주지 않고 생성하고 코드를 생성해도 똑같이 작동했습니다. 굳이 MyIDViewController객체로 생성하는데 init에 파라미터로 xib파일이름을 주는 이유가 있을까여?
numOne을 음수로 설정하기 위해서 아래와 같이 else if문을 추가해 보았습니다. 추가한 위치와 방법이 옳바른지 알고싶습니다. const onClickOperator = ( op ) => () => { ... if ( numOne ) { operator = op ; $operator . value = op ; } else if (! numOne && op === '-' ) { operator = op ; $operator . value = op ; } else { alert ( '숫자를 먼저 입력해주세요.' ); } };
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요 강사님 좋은 강의 잘 듣고 있습니다. 다름이 아니라 이번은 2d 던데 만약 3d 같은 게임은 서버로 구현해서 플레이어 움직임을 뿌려주는게 2d 보다 당연히 어렵겠죠? 혹시 이번 2d에 배운 것을 응용해서 3d 게임 서버도 구현 할 수 있을까요? 아니면 그 둘은 좀 많이 다른가요?
안녕하세요 그랩님, 다름이 아니라 node.js 설치를 마치고 리액트 설치 방법까지 따라한 후 package.json 에서 npm start를 하려고 하니까 자꾸 오류가 발생하는데 이유를 모르겠습니다 ㅠㅠ 오류창은 밑에 처럼 나오구요 설치 파일은 이렇게 되어있습니다. 답변 기다리겠습니다. 감사합니다.
ㅕuser_reducer.js에 저장된 저 loginSuccess, register, userData 등의 이름은 백엔드와의 api와 상관없이 프론트 쪽에서 맘대로 지어도 되는 것 맞을까요? 조금 궁금한 것이 아위의 사진과 같이 RegisterPage.js에서 위의 register라는 단어를 쓰지않고 그냥 reponse.payload라고 쓰는데, 저 지정한 이름들이 왜 필요한지가 궁금합니다!!
저어어쪽 Querydsl 강의 초반부 듣다가 갑자기 프록시에 대한 개념(지연로딩)으로 인해 생긴 mappedBy의 의문점으로 이리저리 고생 끝에 확인차 이 강의로 와서 질문 드립니다 . @Entity @Getter @Setter public class TestTeam { @Id @GeneratedValue @Column ( name= "TESTTEMA_ID" ) private Long id ; private String name ; @OneToMany ( mappedBy = "team" ) private List < TestMember > members = new ArrayList <>() ; } @Entity @Getter @Setter public class TestMember { @Id @GeneratedValue @Column ( name = "TESTMEMBER_ID" ) private Long id ; private String name ; @ManyToOne ( fetch = FetchType. LAZY) @JoinColumn ( name = "TESTTEAM_ID" ) private TestTeam team ; } 일 때, @Test public void test () { TestTeam teamA = new TestTeam () ; teamA.setName ( "teamA" ) ; em .persist ( teamA ) ; 처럼 em.persist(teamA)를 하면 1차 캐시에 {id = 1(예시), name = "teamA", List<TestMember> members = 프록시} 로 저장되는게 아니라 {id = 1(예시), name = "teamA", List<TestMember> members = null} 로 저장되고 조회할 때 1차 캐시에, {id = 1(예시), name = "teamA", List<TestMember> members = 프록시} 로 저장되는 거죠 ? 뭔가 풀고 나니 바보같은 질문인 것 같기도 하고..그런데 확인차 질문드립니다 :[
OrderService의 order메소드에서 memberId, itemId를 인자로 받았는데도 member 와 item 을 조회하는 것에 의문이 들어서 질문드립니다. 생 쿼리 작성시에는 조회없이 저장할 수 있지만 영속성 컨텍스트에 해당 값이 없다면 2번의 조회 쿼리가 더 나가게 될텐데 JPA를 사용하면 어쩔 수 없는건가요? 이 문제가 실무에서 감수할만한 정도인지 아니면 다른 최적화 방법이 있는지 궁금합니다.
답변 주신대로 디노이저 셋팅하고 production mode에서는 렌더링은 잘 되는데 activeshade mode에서 렌더링 하면 아래 메세지가 나오면서 안됩니다. SYSTEM: Active Shade renderer is changed to Arnold. Previous messages are cleared. [Arnold]: 00:00:00 1773MB WARNING | [color_manager_ocio] unable to find default OCIO config, expected in c:\programdata\autodesk\applicationplugins\maxtoa_2022\..\ocio\configs\arnold\config.ocio This material is not supported: 02 - Default (Standard (Legacy)). An approximation will be used. [Arnold]: 00:00:00 1932MB WARNING | [ginstance] /Object004: trying to clone a NULL object [Arnold]: 00:00:00 1935MB WARNING | [color_manager_ocio] could not find a valid config [Arnold]: 00:00:03 3098MB ERROR | [gpu] an error happened during rendering. OptiX error is: Unknown error (Details: Function "_rtContextLaunch2D" caught exception: Encountered a CUDA error: cudaDriver().CuEventSynchronize( m_event ) returned (700): Illegal address, file: <internal>, line: 0) GPU 0 had 5661MB free before rendering started and 3354MB free when crash occurred GPU errors are sometimes due to a GPU not having enough remaining free memory. To see if this is what happened here, try simplifying your scene or running on a GPU with more free RAM to see if it solves the crash. Otherwise, upgrading to the latest nvidia gpu driver and Arnold core (available from www.arnoldrenderer.com) might fix the crash [Arnold]: 00:00:00 3001MB WARNING | [color_manager_ocio] unable to find default OCIO config, expected in c:\programdata\autodesk\applicationplugins\maxtoa_2022\..\ocio\configs\arnold\config.ocio This material is not supported: 02 - Default (Standard (Legacy)). An approximation will be used. [Arnold]: 00:00:00 3009MB ERROR | [gpu] Fatal GPU error occurred, please restart the host application [Arnold]: 00:00:00 3019MB WARNING | Aborted by user: received abort signal activeshade mode에서는 안되는 건가요?