묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
bUseAccelerationForPaths를 C++로 활성화시키고 싶습니다.
안녕하세요. 섹션1의 캐릭터 컨트롤 설정 수업을 듣고 캐릭터를 wasd말고 NavMesh를 이용하여 클릭으로 캐릭터를 움직이고 싶어서 제작하고 있습니다.그런데 Nav Movement의 UseAccelerationForPaths를 true로 변경시켜야 캐릭터의 애니메이션이 움직인다는 것을 알게 되었습니다. blueprint로는 바꿀 수 있지만 C++로는 도저히 바꾸는 방법을 찾지 못하여 물어보게 되었습니다.어떻게 하면 C++코드를 이용하여 UCharacterMovementComponent클래스의 bool변수인 bUseAccelerationForPaths를 true로 변경시키고 ACharacter클래스에 변경된 UCharacterMovementComponent 클래스를 성공적으로 적용시킬 수 있을까요?
-
미해결Node.js로 웹 크롤링하기
크롤링을 여러개 돌리려면 어떠한 방법을 선택하는게 좋을까요?
안녕하세요, 지금 Puppeteer로 크롤링을 하고있는데 예를들어서 1 ~ 10까지 작업이 각각 있다고했을때 이 10가지의 크롤링 작업을 완료하는데 너무 오래걸려서 Multi Processing 혹은 Multi Thread 방식을 생각하고 있습니다. 둘중에 어떠한게 좋을까요? Puppeteer 1개(node process 1개)로 1~10까지 돌렸을때 너무 오래걸려서 이걸 각각의 작업당 프로세스 1개를 붙힐것인지, 아니면 Process는 하나인데 Worker Thread를 여러개 만들어서 Main 스레드는 1번 작업, 나머지 9개 Worker Thread 생성해서 각각 작업에 한개씩 붙혀서 작업하게끔 하는게 좋을지 고민하고 있는데 혹시 어떠한 방법이 좋을까요 ?혹시 설명이 부족할까봐 좀 구체적으로 예시를 남기면,<기존방식>작업들: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이름이 main.js인 1개 자바스크립트 파일을 node main.js로 실행 및 이걸로 그냥 1~10까지 작업들을 모두 동기적으로 처리>> 너무 시간이 오래걸림<원하는 방식 및 고민하고 있는 2가지 방식>작업들: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이름이 main.js인 1개 자바스크립트 파일이 있고 process.argv로 인자를 줘서 아래와 같이 node process를 10개를 생성하여 각각 작업들을 1개의 프로세스들이 실행node main.js 1node main.js 2node main.js 3 ...node main.js 10 이름이 main.js인 1개 자바스크립트 파일이 있고 거기에서 Worker Thread 9개를 만들어서 Main Thread는 1번작업에 붙히고, 만든 9개 Worker Thread를 각각 2,3,4 ~ 10까지의 작업에 각각 한개씩 붙혀서 작업감사합니다
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
list map set
안녕하세요 강의 잘 듣고있습니다.컬렉션List<data type> 변수 = ['지수', '제니'];Map <key:value> 변수 = { 'key' : 'value'};Set<data type> 변수 ' { ........};enum Status {..}List 만 [] 대괄호 나머지는 {}중괄호를 쓰는 이유가 뭔가요 그냥 공식일까요? 그리고enum Status {approved,pending,rejected }void main() {Status status = Status.approved; print(status); }이 예제에서 Status는 키워드 인가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
훈훈한 자바스크립트 섹션8 질문
자꾸 저런 오류가 뜨는데 레퍼런스 코드를 보고 참고해도 똑같네요 무엇이 문제인가요>? ㅜscript.js: const todoInput = document.querySelector("#todo-input"); const todoList = document.querySelector("#todo-list"); const savedTodoList = JSON.parse(localStorage.getItem("saved-items")); const createTodo = function (storageData) { let todoContents = todoInput.value; if (storageData) { todoContents = storageData.contents; } const newLi = document.createElement("li"); const newSpan = document.createElement("span"); const newBtn = document.createElement("button"); newBtn.addEventListener("click", () => { newLi.classList.toggle("complete"); saveItemsFn(); }); newLi.addEventListener("dblclick", () => { newLi.remove(); saveItemsFn(); }); if (storageData?.complete) { newLi.classList.add("complete"); } newSpan.textContent = todoContents; newLi.appendChild(newBtn); newLi.appendChild(newSpan); todoList.appendChild(newLi); todoInput.value = ""; saveItemsFn(); }; const keyCodeCheck = function () { if (window.event.keyCode === 13 && todoInput.value !== "") { createTodo(); } }; const deleteAll = function () { const liList = document.querySelectorAll("li"); for (let i = 0; i < liList.length; i++) { liList[i].remove(); } saveItemsFn(); }; const saveItemsFn = function () { const saveItems = []; for (i = 0; i < todoList.children.length; i++) { const todoObj = { contents: todoList.children[i].querySelector("span").textContent, complete: todoList.children[i].classList.contains("complete"), }; saveItems.push(todoObj); } saveItems.length === 0 ? localStorage.removeItem("saved-items") : localStorage.setItem("saved-items", JSON.stringify(saveItems)); // if (saveItems.length === 0) { // localStorage.removeItem("saved-items"); // } else { // localStorage.setItem("saved-items", JSON.stringify(saveItems)); // } }; if (savedTodoList) { for (let i = 0; i < savedTodoList.length; i++) { createTodo(savedTodoList[i]); } } const weatherSearch = function (position) { console.log(position.latitude); console.log(position.longitude); fetch( `https://api.openweathermap.org/data/2.5/weather?lat=${position.latitude}&lon=${position.longitude}&appid=8980c5d6dfb72e97b5871537ee59d9c1` ) .then((res) => { return res.json(); }) .then((json) => { console.log(json.name, json.weather[0].description); }) .catch((err) => { console.error(err); }); }; const accessToGeo = function (position) { const positionObj = { latitude: position.coords.latitude, longitude: position.coords.longitude, }; weatherSearch(positionObj); }; const askForLocation = function () { navigator.geolocation.getCurrentPosition(accessToGeo, (err) => { console.log(err); }); }; askForLocation();
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
강의 교안 부탁드립니다.
금일 강의 신청완료했고 이제 강의 들으려고 합니다. 교안 부탁드려요!!! dlsgk1864@naver.com 입니다.
-
미해결혼자 공부하는 C 언어 저자에게 배우는 C 언어의 모든 것
7.1 함수의 작성과 사용
설명해주신 내용중에 main 함수와 sum 함수에 모두 res라는 정수형 변수가 사용되는데 main 함수와 sum 함수에 있는 res를 다른걸로 봐야할까요 아니면 같은것으로 봐도 되나요? 다른 것으로 봐야한다면 두개의 변수를 다르게 표현해야하지 않나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
spring batch 통합 테스트시 @Transactional 사용 어려움 질문이욥!!
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.14분쯤에 spring batch 통합 테스트시 여러 트랜잭션 경계가 참여해 @Transactional 사용이 어려워 주로 deleteAllInBatch를 사용해 수동으로 데이터를 지우신다고 말씀해주셨는데..spring batch를 한번도 개발해보거나 테스트한적도 없어서 '여러 트랜잭션 경계가 참여하는 상황'에 대해서 잘 떠오르지가 않아서 혹시 간단하게라도 예시 부탁드려도 될까욥?! ㅠㅠ감사합니다.※ 평소에 막연히 '테스트 코드 짜봐야지~' 라고 생각만 했던걸 강사님 강의를 듣고난 이후로 테스트 코드 작성을 실천하고 있습니다!! 다른 강의들도 많이많이 찍어주세요!!(3개월에 한번..)
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
synthesis error
안녕하세요 맛비님.노트북 새로 구매후에 vitis 설치부터 다시 해보고있는데,이전 노트북에서는 분명 잘 되었던 bitstream generation이 에러가 뜨면서 안되네요 ㅠㅠ아래는 Log내용입니다...TclStackFree: incorrect freePtr. Call out of sequence? 용량 줄이는 선택옵션으로 설치했는데(Socs 체크) 이게 문제일까요?보드추가 인식까지 완료한상태입니다... 재설치를 한번 해보았는데도 똑같네요 ㅠㅠ 컴퓨터 사양은 ram 16gb, cpu 4.5ghz, sdd 용량도 넉넉하여 사양문제는 아닐듯한데 커뮤니티 히스토리 검색해보아도 유사사례가없네요.. 혹시 이런 경험 있으신가요?
-
해결됨쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
맛집 수정 API 질문입니다
editRestaurant() 메서드에서요, RestaurantEntity restaurant = restaurantRepository.findById(restaurantId).orElseThrow(()->new RuntimeException("없는 레스토랑입니다")); restaurant.changeNameAndAddress(request.getName(), request.getAddress()); //restaurantRepository.save(restaurant);여기서 save는 안해도 될 것같습니다.영속성컨테이너에 이미 있는 엔티티라 수정을 하면 save를 안해도 반영이 되는것으로 알고 있습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본 인텔리제이 maven 세팅관련
우선 저는 일반 Maven이 아니라 Maven archetype 으로 프로젝트가 생성이 되더라고요 찾아보니 큰 문제는 아닌 거 같아 진행을 하였습니다.우선적으로 자바 18을 사용하려니 사용이 안돼서 jdk 1.8.0 사용하였고 아래와 같이 h2는 지금 다운받은 서버 버전을 하이버네이트는 강의 pdf그대로 사용하였습니다. 아래처럼 경고는 아니지만 위험표시정도가 뜨는것을 확인할 수 있었고 버전 업그레이드 권장인거 같길래 넘어가고 persistence.xml 설정을 해주었습니다. 우선적으로 저는 resource 밑에 META_INF.maven이라는 파일이 존재하기에 해당 파일에 persistence.xml을 붙여 놓고 빌드를 해주었고 그 상태로 JpaMain을 다음과 같이 작성하고 빌드한 결과 위처럼 강의와는 다른 내용의 오류가 떴습니다. 아무래도 META_INF.maven하위의 persistence 를 인식 못하는것 같아 META_INF 디렉토리를 새로만들어주고 persistence.xml을 옮겨주었지만 그래도 똑같은 오류가 발생합니다 . 이유가 무엇일까요..
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
강의에서 Future 리턴타입 Map<String, dynamic>
안녕하세요? 강좌 섹션5 > 레스토랑상세페이지 구현단계에서build 의 FutureBuilder 의 builder 에서 아래와 같이 구현 되어있는데builder: (context, AsyncSnapshot<Map<String, dynamic>> snapshot) {아래와 같이 AsyncSnapshot<Map<String, dynamic>> 를 제거후 syntax error 따라다니면서 반환타입을 바꾸니 문제 없던데요..builder: (context, snapshot) {flutter 가 업그레이드 되면서 type safe 된거 같기도 한데 AsyncSnapshot<Map<String, dynamic>> 부분이 이해가 잘 안가는데요 부연 설명 가능할까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
질문있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]DAO 에서 SQLException이 발생하면 그 메소드 안에서 잡아서 처리하고 로그를 찍으면 되지 않을까요?? 왜 굳이 밖으로 던지는지 궁금합니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
구조체 이름 동시에 초기화하는 방법 오류
구조체 강의 보던중, 선언과 동시에 구조체 이름 초기화 하는 방법에 대해 질문드립니다.struct MyStruct { string name; string position; int height; int weight; } B; B = { }; cout << B.height << endl; // 오류 !B = { }; -----> 이부분에서 강의에서는 빈값=0으로 저장이 된다고 했는데, 'expected expression'이란 오류가 생깁니다.그렇다고 B = { };을 안해버리면 소용없는 값이 나옵니다.다른방법으로, 아래와 같이 이름선언 + 빈값은 동시에 초기화가 되는데요. 뭐가 문제 일까요? 미리 감사드립니다 !struct MyStruct { string name; string position; int height; int weight; } B = { }; cout << B.height << endl; // 가능 !
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
학원1년 과정vs 루키스님 강의vs 둘다병행
안녕하세요!저는 비전공 독학으로 공부하고 있습니다어느덧 c++강의 완강에 도달하고 있는데요루키스님이 올려놓은 c++,그래픽스,서버,자료구조,추후 출시될 언리얼 포폴 과정을 전부 수료하게 되면 1년 학원 과정에서 배우는 것들을 학습하는 거랑 어떤차이점이있는지 궁금해요취업이 최종목표는 아니지만 제가 부족한 것들이 무엇인지 모르겠어서요 이강의들로 제가 복습하고 기초를 튼튼히 단련하면 채워질수있는 것인지 아니면 추가적으로 학원1년과정을 거치는 것이 많은 도움이 될지 조언좀 해주실수 있을까요?ㅠㅠ Tmi) 항상 스타트업준비로 힘드실텐데 시간내서 좋은강의 올려주셔서 감사합니다 ㅎㅎ소드아트온라인 같은 게임 꼭 만드셨으면 좋겠네요! 언젠간 루키스님처럼은 아니여도 a급인재가 되고싶어요 하하
-
미해결Slack 클론 코딩[실시간 채팅 with React]
DMList 선택 시 무한로딩되는 에러
안녕하세요 제로초님. 강의 잘 듣고 있습니다.다름이 아니라 채널 토글에서 각 채널을 선택하면 정상적으로 이동하지만, DMlist에서 선택하면 아래와 같이 useEffect가 무한루프처럼 호출되어 문제가 발생하는 것 같습니다. 제로초님께서 업로드해주신 코드와 동일하게 def에 workspace를 넣어 작성했는데, 어떠한 부분에서 위와 같이 무한로딩되는 에러가 발생하는지 못 찾겠습니다ㅠㅠ DMList/index.tsx// import useSocket from '@hooks/useSocket'; import { CollapseButton } from '@components/DMList/style'; import { IDM, IUser, IUserWithOnline } from '@typings/db'; import fetcher from '@utils/fetcher'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router'; import { NavLink } from 'react-router-dom'; import useSWR from 'swr'; const DMList: FC = () => { const { workspace } = useParams<{ workspace?: string }>(); const { data: userData, error, mutate } = useSWR<IUser>('/api/users', fetcher, { dedupingInterval: 2000, // 2초 }); const { data: memberData } = useSWR<IUserWithOnline[]>( userData ? `/api/workspaces/${workspace}/members` : null, fetcher, ); // const [socket] = useSocket(workspace); const [channelCollapse, setChannelCollapse] = useState(false); const [countList, setCountList] = useState<{ [key:string]: number}>({}); const [onlineList, setOnlineList] = useState<number[]>([]); const toggleChannelCollapse = useCallback(() => { setChannelCollapse((prev) => !prev); }, []); const resetCount = useCallback( (id) => () => { setCountList((list) => { return{ ...list, [id]: 0, }; }); }, [], ); const onMessage = (data: IDM) => { console.log("DM 왓따", data); setCountList((list) => { return { ...list, [data.SenderId] : list[data.SenderId] ? list[data.SenderId]+1 : 1, }; }); }; useEffect(() => { console.log('DMList: workspace 바꼈다', workspace); setOnlineList([]); setCountList({}); }, [workspace]); // useEffect(() => { // socket?.on('onlineList', (data: number[]) => { // setOnlineList(data); // }); // socket?.on('dm', onMessage); // console.log('socket on dm', socket?.hasListeners('dm'), socket); // return () => { // socket?.off('dm', onMessage); // console.log('socket off dm', socket?.hasListeners('dm')); // socket?.off('onlineList'); // }; // }, [socket]); return ( <> <h2> <CollapseButton collapse={channelCollapse} onClick={toggleChannelCollapse}> <i className="c-icon p-channel_sidebar__section_heading_expand c-icon--caret-right c-icon--inherit c-icon--inline" data-qa="channel-section-collapse" aria-hidden="true" /> </CollapseButton> <span>Direct Messages</span> </h2> <div> {!channelCollapse && memberData?.map((member) => { const isOnline = onlineList.includes(member.id); return ( <NavLink key={member.id} activeClassName="selected" to={`/workspace/${workspace}/dm/${member.id}`} > <i className={`c-icon p-channel_sidebar__presence_icon p-channel_sidebar__presence_icon--dim_enabled p-channel_sidebar__presence_icon--on-avatar c-presence ${ isOnline ? 'c-presence--active c-icon--presence-online' : 'c-icon--presence-offline' }`} aria-hidden="true" data-qa="presence_indicator" data-qa-presence-self="false" data-qa-presence-active="false" data-qa-presence-dnd="false" /> <span>{member.nickname}</span> {member.id === userData?.id && <span> (나)</span>} </NavLink> ); })} </div> </> ); }; export default DMList;
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
java.security.KeyStoreException: Uninitialized keystore 에러가 발생 하고 있습니다.
비대칭키를 통한 암호화 과정에서 keytool을 사용하여 올려주신 내용 그대로 keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR" -keypass "1q2w3e4r" -keystore apiEncryptionKey.jks -storepass "1q2w3e4r" 키를 생성후 bootstrap.yml에 적용 하였습니다. 그런데 encrypt를 실행 하면 java.security.KeyStoreException: Uninitialized keystore at java.base/java.security.KeyStore.getKey(KeyStore.java:1076) ~[na:na] at org.springframework.security.rsa.crypto.KeyStoreKeyFactory.getKeyPair(KeyStoreKeyFactory.java:80) ~[spring-security-rsa-1.0.11.RELEASE.jar:na] at org.springframework.cloud.config.server.encryption.KeyStoreTextEncryptorLocator.rsaSecretEncryptor(KeyStoreTextEncryptorLocator.java:99) ~[spring-cloud-config-server-3.1.6.jar:3.1.6] 해당 에러가 발생을 하고 있습니다. keytool을 생성시 제 자바 home 버전은 java 18 이고 개발 환경운 java 11 이어서 이런 문제가 생기는 걸까요?
-
해결됨[코드캠프] 시작은 프리캠프
과제하면서 궁금해서 질문 올립니다.
16분에 보면 별도로 제공되는 피그마 통해서 들어가서 확인 하라고 했는데 어떻게 들어갈 수 있는 건가요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
로고 크기 지정이 안 되는 문제
안녕하세요 강사님. 다름이 아니라 아래 코드가 적용되지 않아서 글 남깁니다.Image.asset( 'asset/img/misc/logo.png', width: MediaQuery.of(context).size.width * (2 / 3), ),width에 그 어떠한 값을 넣어봐도 로고 크기가 변하지 않았습니다. 이에 아래 코드와 같이 width가 아닌 height 값을 지정해 보니 드디어 로고 크기가 변하기 시작하더군요.Image.asset( 'asset/img/misc/logo.png', height: 100, ),왜 width에 값을 넣었을 때는 로고 크기가 변하지 않았고, height에 값을 넣었을 때만 로고 크기가 변했는지 그 이유가 궁금합니다.
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
예외처리 질문드려요
package exceptions; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ThrowsExceptionTest { public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException { FileInputStream fis = new FileInputStream(fileName); Class c = Class.forName(className); } public static void main(String[] args) { ThrowsExceptionTest test = new ThrowsExceptionTest(); try { test.loadClass("a.txt", "java.lang.Sting"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }a.txt는 없고, 클래스도 찾을 수 없게 만들어진 상태인데요.제가 원하는건 콘솔창에서 FileNotFoundException, ClassNotFoundException 을 보는건데두개 조건을 충족함에도 FileNotFoundException만 출력되고 ClassNotFoundException 출력이 되지 않아요. 어떤 문제일까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
getTransaction에서 커넥션을 생성하는 부분은 어디서 확인할 수 있나요?/
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.별거 아닐수는 있는데 교재를 보면 transactionMannger.getTransaction()을 서비스로직에서 호출하면 트랜잭션을 시작하기전에 트랜잭션 매니저가 내부에서 데이터소스를 이용해서 커넧녀을 생성한다 나와있더라구요,테스트 코드 작성햇을때 보면 일단 데이터소스는 생성자 주입할 때 넣어주는것 같은데 커넥션을 생성하는 코드 부분이 궁금해서 찾아보고 싶은데 어디에 있는지 알 수가 없더라구요.. 코드를 보고 싶은데 어디를 타고 들어가면 되는지 알려주시면 감사하겟습니다.