안녕하세요. 파일을 읽고 쓸 때 FArchive* 객체를 CreateFileWriter나 Reader함수를 통해 생성한 후, 해제를 꼭 해주시는데요. 저 Create함수 내부적으로 동적 할당을 진행하는 것이기 때문인가요? 또한, UObject클래스의 객체 정보를 직렬화 할 때 Buffer가 따로 필요한 이유가 궁금합니다. 마지막으로, 직렬화 된 UObject 객체를 Read할 때만 FMemoryReader가 필요한지 궁금합니다.
한 입 크기로 잘라먹는 리액트 책 잘 보고 있습니다. 카운터앱 프로젝트는 완료 후, 두 번째 할 일 관리 앱 실행 중에 문제가 발생해서 문의드려요. 1. 문제 : 326쪽까지 문제없이 잘 실행이 되었는데, 327쪽 <div>{it.content}</div> 이 코드를 넣었을때부터 327쪽 책과 동일하게 코드 넣었는데, 에러 문구가 아래처럼 나왔어요. WARNING in [eslint] src\component\TodoList.js Line 1:8: 'TodoItem' is defined but never used no-unused-vars webpack compiled with 1 warning TodoItem 을 import했지만, 코드에서 사용하지 않아서 발생하는 ESLint 경고인 것 같은데, { todo.map ((it) => ( <TodoItem key={ it.id } content={it.content} /> ))} 여기서 TodoItem 이 개별 할 일을 나타내는 컴포넌트라고 가정하고 content 를 props로 전달했습니다. (이때, key 값으로 it.id 를 사용하여 React에서 리스트 렌더링 최적화를 도와야 합니다.) 파란색 부분과 같은 조언을 받아 코드를 수정했더니 npm run start 실행하면 서버에서 지금까지 한 모든 화면이 안 보이고 백지화 되었어요. ㅠㅠ 기존에 html5로 이펍3 만들기 조금 배웠고, css개념 어느 정도 이해하는 수준의 초보인데, 책 보고 프로젝트1 마치고, 프로젝트2도 거의 다 와가서 재미있게 하는 중에 날벼락이 ㅠㅠ; 혼자서는 도저히 해결이 안 될 거 같아서 강의등록 후 문의드려요.. 초보라 문의도 이렇게 하는게 맞는지 모르겠네요. 답변 부탁드릴게요~ 참고 todoeditor.js return 이하 App.js import "./App.css"; import Header from "./component/Header"; import TodoEditor from "./component/TodoEditor"; import TodoList from "./component/TodoList"; import { useState, useRef } from "react"; const mockTodo = [ { id: 0, isDone: false, content: "React 공부하기", createDate: new Date().getTime(), }, {id: 1, isDone: false, content: "빨래 널기", createDate: new Date().getTime(), }, {id: 2, isDone: false, content: "노래 연습하기", createDate: new Date().getTime(), }, ]; function App() { const idRef = useRef(3); const [todos, setTodos] = useState(mockTodo); const onCreate = (content) => { const newItem = { id: idRef.current, content, isDone: false, createDate: new Date().getTime(), }; setTodos([newItem,...todos]); idRef.current += 1; }; return ( <div className="App"> <Header /> <TodoEditor onCreate={onCreate} /> <TodoList todos={todos}/> </div> ); } export default App;
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 스프링컨테이너는 그러면 단순히 브라우저에서 받은 요청을 컨트롤러에 매핑시켜주어 스프링컨테이너에 등록되어 있는 빈? 이라는 것과 매칭 시켜 존재한다면 viewResolver에 연결시켜 화면을 띄워주고 없다면 오류를 발생시켜 주는 역할인가요?
working directory에 circle과 rectange 파일이 있다고 가정하고, 이 파일들이 staging area를 걸쳐 repository에 commit이 완료된 상태라고 가정하겠습니다. 이 과정에서 circle 파일의 내용을 수정한다면, 이 circle 파일은 tracked 상태로 남아있는 것인지 아니면 내용이 수정되었기 때문에 untracked 상태로 변경되는 것인지 궁금합니다. 또한, 만약 위 상황에서 circle 파일의 내용이 변경되었더라도 동일한 circle이라는 파일명을 가지고 있기 때문에 tracked 상태가 유지된다면, circle 파일을 복사한 새로운 이름을 가진 파일 (recircle)이라는 파일의 상태는 tracked인지 untracked인지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. File로 문자 파일 읽기를 복습하다가 I/o스트림 의 '스트림'의 뜻를 몰라서 질문을 드립니다. 9:30 초 부분에서 "I/O 스트림이 아니라 람다와 스트림에서 사용하는 스트림이다"라고 하였는데 , 람다와 스트림에서 사용하는 스트림은 아직 배우지를 않아서 모른다 치더라도, I/O 스트림은 저의 생각으로는 여기까지 공부했다면 알아야 하는것 아닌가 라는 생각에 갑자기 멍해지더라고요. 혹시 I/O스트림의 정확한 정의와 뜻을 알켜주실수있으신가요? 아니면 어느 부분을 복습 해야지 I/O스트림에 대해서 정확히 알 수 있을까요? 답변 부탁드립니다.
안녕하십니까 큰돌님 http://boj.kr/bcfbc194eb8a4428b65f1346ab850c42 코드 작성 중 ret = max(ret, v.size()); 이렇게 하니까 오류가 나서 tmp = v.size(); ret = max(ret, tmp); 이렇게 고치니까 잘 작동했습니다. v.size()는 왜 안 되는 것인지 궁금합니다 !
안녕하세요 강의를 듣다 고민이 생겨 질문드립니다. 지금 msa 구조로 간단하게 프로젝트 진행중인데 이런경우에는 ec2 인스턴스를 여러개 만들어서 진행해야하나요? gpt 는 도커를 이용해서 하나의 ec2 인스턴스에 하는 것도 하나의 방법이다. 라고 말하긴 하는데 어떻게 하는게 맞을까요?
실제로 UserDetails를 구현하고 있는 건 "AccountContext" 이지 "AccountDTO"가 아니기 때문에, @AuthenticationPrincipal AccountDto accountDto를 하면 null이 반환될 수 있지 않나요? 그래서 차라리 @AuthenticationPrincipal AccountContext accountContext를 해서 if (accountContext != null) { model.addAttribute("username", accountContext.getUsername()); } else { model.addAttribute("username", "비회원"); } 이렇게 하는게 더욱 올바른 방법이 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 버그인지 궁금합니다..영상보고 차근차근 따라하다가 해결아닌 해결을 했는데 이게 정상적인건지 궁금합니다. 처음에 첫번째 사진과 같은 스프링부트 프로젝트를 설정하고 build.gradle을 오픈하니 2,3번째 사진과 같은 에러가 발생했습니다. 해결전 설정은 아래와 같았습니다. 이전에 이걸로 질문글 올렸는데 java 버전을 17버전으로 설치해보라고 하셔서 jdk 17버전으로 설치했습니다. 설치후 Project Structure에서 sdk를 변경해주었습니다. 그리고 build.gradle 파일에서 다음과 같이 전 후 languageVersion = JavaLanguageVersion.of(21) 을 languageVersion = JavaLanguageVersion.of(17) 로 변경까지 해준 후에야 gradle 파일을 리로드하니까 되더라구요. 그런데 여기서 이제 궁금한것은 다시 설정을 이렇게 바꾼후에 build.gradle 파일을 리로드해도 되더라구요? 심지어 아래 사진처럼 Setting -> Build -> BuildTools -> Gradle에 있는 Gradle JVM이 지금 JAVA_HOME으로 되어있는데 jdk 22버전으로 되어있습니다. 또한 JAVA_HOME 경로또한 아래와 같습니다. 보시다시피 jdk 22버전 경로가 저장되어있죠. 그러니까 전부 jdk 22버전으로 되어있는데 jdk 17버전 설치 후 build.gradle에 있는 languageVersion = JavaLanguageVersion.of(17) 이것만 17버전으로 바뀌었을뿐인데 정상적으로 로드가 되는건가요? JAVA_HOME같은 경로도 17버전 폴더로 모두 변경해야 동작할줄 알았는데요..
SendBufferHelper를 TLS로 구현을 해서 각 쓰레드가 고유한 SendBuffer인스턴스를 갖게 되는데 ArraySegment<byte> openSegment = SendBufferHelper.Open(4096); byte[] buffer = BitConverter.GetBytes(knight.hp); byte[] buffer2 = BitConverter.GetBytes(knight.attack); Array.Copy(buffer, 0, openSegment.Array, openSegment.Offset, buffer.Length); Array.Copy(buffer2, 0, openSegment.Array, openSegment.Offset + buffer.Length, buffer2.Length); ArraySegment<byte> sendBuff = SendBufferHelper.Close(buffer.Length + buffer2.Length); Send(sendBuff); 그럼 이부분에서 A라는 쓰레드가 Open과 Close를 통해 고유한 SendBuffer의 buffer에 정보(패킷)를 저장을 하게되고 그 정보를 Send하게 되고 그걸 sendQueue에 그냥 저장만 한 상태라고 가정을 해보겠습니다. 또 B라는 쓰레드도 위 과정을 해서 Queue에 저장을 하게된다고 하겠습니다. 여기서 궁금한게 일단 A 와 B가 Send를 한 그 정보는 각 쓰레드가 고유한 _buffer에 저장된 정보이고 만약 다른쓰레드가 큐에저장된 값을 보낸다고 할때 ArraySegment는 원본을 참조하니까 A와 B의 고유한 인스턴스에 접근을 해야하는거 아닌가요..? ArraySegment가 원본을 [참조] 하니까 접근을 하지만 [읽기만] 하기때문에 괜찮다. 이렇게 이해를 하면되는건지 아니면 제가 잘못이해하고있는건지 궁급합니다.
채팅과 관련된 API를 설계할 때 보면 Controller 레이어에서 @AuthenticationPrincipal 파라미터를 사용해서 사용자의 정보를 가지고 오는 것이 아닌 Service 레이어에서 SecurityContextHoler를 통해 사용자의 정보를 가지고 오는데 이는 웹소켓 같은 경우에는 Header에 JWT 토큰 정보를 담을 수 없기 때문이다라고 이해하면 될까요??
cat ~/ join.sh 을 하니 다음과 같은 내용이 나왔습니다 kubeadm join 192.168.56.30:6443 --token 5v22wu.td05ps0r0p1ssinz --discovery-token-ca-cert-hash sha256:396c7e7a04e0cde77225aa42baf35beaeb8c4d9ee9006f91e8fe06750b12ddbb 그리고 이를 다른 클러스터에 붙여넣은 후 확인하면 이렇게 나옵니다. 이후 https://192.168.56.30:30000/#/login 해당 링크로 접근하면 사이트에 연결할 수 없는데요 https://kubetm.github.io/k8s/02-beginner/cluster-install-case7/ 무언가 이슈가 있을까요?
강의 : 스프링 데이터 JPA와 DB 설정, 동작확인 7분 20초 환경설정시에 //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } 를 추가하라고 하셔서 추가했는데, 이 강의에서는 Junit5로 설정하라고 하셔서요.. 그럼 import할때 오류가 나는데 어떻게 해야할까요?