묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
textRPG1에서 체력이 2배로 까이는 현상
안녕하세요 선생님텍스트 rpg1 강의에서 선생님이 프로그램을 시연하실 때 정상적으로 플레이어의 체력이 까일 때도 있지만 2배로 까이는 경우도 생기던데 이건 왜 그런건지 궁금합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
ManyToOne에 MappedBy기능이 없는이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@JoinColumn(insertable = false, updatable = false)를 사용하는 부분에서 궁금증이 생겼는데@ManyToOne에 mappedBy가 없는 이유는 실무에서 주로 ManyToOne을 연관관계의 주인으로 사용하기 때문에 기능을 추가 안한거라고 생각하면 맞을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
createAsyncThunk로 일부러 지연시켜서 pending상태 만드는법 질문
const wait = (timeToDelay) => new Promise((resolve) => setTimeout(resolve, timeToDelay)); export const loginAction = createAsyncThunk(LOG_IN, async (data) => { await wait(1000); return data; }); export const logoutAction = createAsyncThunk(LOG_OUT, async () => { return; });const userSlice = createSlice({ name: "user", initialState, // exraReducers 그냥 reducer는 user/login 이런식으로 액션 이름을 적어야 하지만 extraReducers를 사용하면 login으로 줄일 수 있다 extraReducers: (builder) => builder .addCase([HYDRATE], (state, action) => ({ ...state, ...action.payload.user, })) .addCase(loginAction.pending, (state) => { state.isLoggingIn = true; state.isLoggedIn = false; }) .addCase(loginAction.fulfilled, (state, action) => { state.isLoggingIn = false; state.isLoggedIn = true; state.user = dummyUser; state.loginData = action.data; }) .addCase(loginAction.rejected, (state) => { state.isLoggingIn = true; }) .addCase(logoutAction.pending, (state) => { state.isLoggingOut = true; state.isLoggedIn = true; }) .addCase(logoutAction.fulfilled, (state) => { state.isLoggingOut = false; state.isLoggedIn = false; state.user = null; }) .addCase(logoutAction.rejected, (state) => { state.isLoggingOut = false; }) .addCase(signUp.fulfilled, (state, action) => { state.signUpData = action.data; }) .addDefaultCase((state) => state), });제가 redux toolkit으로 제로초님이 만드시는 코드를 만들고 있는데 createAsyncThunk로 일부러 지연 시켜서 pending상태로 만들려고 했는데 이렇게 코드를 짜니까 pending이 제대로 동작을 안하고 로딩 아이콘이 제대로 보이지 않습니다 제가 추가적으로 실험을 해보았는데 state.isLoggingIn을 pending과 fulfilled두개 모두 state.isLoggingIn = true;로하고 동작을 시켜도 로그인 아이콘이 로딩이 안됩니다 하지만 로그아웃은 모두 true로 하니까 로딩이 보입니다...그래서 액션을 reducer를 작성할때 뭔가를 실수한것 같습니다 무었인지 알 수 있을까요?그리고 saga의 delay처럼 createAsyncThunk의 지연시켜서 pending상태가 나오는 방법을 알고싶습니다
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
vs 2019에서 함수들 색상이 강의처럼 안변하는데 어느 설정을 바꾸면 될까요?
원래라면 Getkey랑 TransformDirection같은 함수가주황색으로 나와야하는데 이런식으로 하얗게 나오네요비주얼스튜디오 2019버전입니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터프레임과 시리즈 차이
파이썬 내장함수 사용 시타입이 데이터프레임이냐 시리즈내에 따라서 사용가능한 함수가 다른 건가요? ex) drop 함수는 데이터프레임만 가능하고, fillna함수는 시리즈만 가능한지?df = df.dropna(subset=['qsec'])df['qsec'] = df['qsec'].fillna(0)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
웹 서버, WAS
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]웹 서버(아파치)는 정적인 컨텐츠를 담당해서 작성한 대로 전달하고, WAS(톰캣)은 동적인 컨텐츠를 담당해서 db 등과 연결되어 결과를 전달한다고 이해했습니다. 그런데 현재 개인 컴퓨터로 실습하는 입장에서 잘 이해가 되지 않는 부분이 있어 질문합니다.스프링부트를 이용해 빌드된 파일을 서버에 실행시키면 웹 서버가 구동된다고 이해했습니다. 그렇다면 이 빌드된 파일은 서버를 위한 파일인가요? 개인 컴퓨터로 프로젝트를 할 때 따로 물리적인 서버를 두지 않으면 이때는 개인 컴퓨터가 서버 역할을 하게 되는 것인가요? 백엔드 개발자란 서버의 동적 컨텐츠들을 담당하는 개발자라고 이해하면 될까요? 답변 기다리겠습니다. 감사합니다.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
useParams를 이용한 영화 상세 페이지 구현하기
useParams를 이용한 영화 상세 페이지 구현하기에서 가져올 useParams에 파라미터 값이 movieId인 것을 어떻게 확인할 수 있을까요 ?
-
미해결
Spool Dir 로 여러 종류csv 파일 읽을때
안녕하세요.Spool Dir 로 csv 파일 읽어서 처리하는 것을 배우고 있습니다.제가 아직 뒤쪽을 안봐서 이런 문의를 드릴수도 있겠는데요, CSV 파일안의 구조가 다른예를들어,A.csv는 칼럼이 [A,B,C] 이고B.csv는 칼럼이 [D,E,F, G] 라고 하면topic을 새로 만들어야 하는지요?새로 만들어야 한다면, 포맷이 다른 CSV 마다 하나씩 topic을 만드는 것 맞는지요?spooldir_source.json 역시 CSV 종류마다 각각 만들어야 하는 것 맞는지요? 좋은 강의 감사드립니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Exception evaluating SpringEL expression: "#fields.hasGlobalErrors()"
먼저 html은 다음과 같이 작성되어있습니다.<form th:action method="post" th:object="${form}" enctype="multipart/form-data"> <input class="form-control" accept=".txt" type="file"> <div th:if="${#fields.hasGlobalErrors()}"> <p class="field-error" th:each="err: ${#fields.globalErrors()}" th:text="${err}">전체 오류 메시지</p> <button class="btn btn-primary">Submit</button> </form>그리고 controller에서는 다음과 같이 작성했습니다.@PostMapping public String getFile(@Validated @ModelAttribute("form") ConvertInputForm inputForm, Model model, BindingResult bindingResult) { if (inputForm.getAttachFile() == null || inputForm.getAttachFile().isEmpty()) { bindingResult.reject("FileSelected", "파일을 다시 선택하세요."); } if (bindingResult.hasErrors()) { return "[위에 작성된 html]"; } ... }ConvertInputForm은 다음과 같이 작성했습니다.@Data public class ConvertInputForm { private MultipartFile attachFile; @NotEmpty private String version; }위와 같이 코드를 작성하고 돌린 다음 파일을 선택하지 않고 버튼을 눌렀습니다.버튼을 눌렀을때 제가 기대한 결과는 bindingResult에 reject("FileSelected", "파일을 다시 선택하세요.") 가 들어가고 html에서 ${#fields.globalErrors() 를 통해서 메시지를 받는 것입니다.그런데 실제 결과는 버튼을 눌렀을때 다음과 같은 에러가 발생합니다.org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "#fields.hasGlobalErrors()"구글링해보면서 해결해보려고 해도 모르겠습니다.
-
미해결평생 써먹는 데이터 기반 투자법 with 파이썬 퀀트 투자
리밸런싱 포트폴리오 구현 원리 질문있습니다.
안녕하세요.리밸런싱 포트폴리오 구현 원리에서 리밸런싱 일자(노란색) 비중을 리밸런싱 기간이 아닌 모든 행에 곱해주면 곱하는 날 모두 리밸런싱이 적용되는 것이 아닌가요? 리밸런싱 일자에만 비중을 곱해주고 나머지는 그대로 누적수익률을 구해야하는 것이 아닌지 이해가 잘 가지 않아서 질문드립니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
lesson5-5 Order Entity의 registeredDateTime 컬럼
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.질문Order Entity가 상속 받는 BaseEntity에 createdDateTime 컬럼이 있음에도 registerdDateTime 컬럼을 추가하는 이유는 무엇인가요? 외부결제API에서 제공하는 결제일시를 저장하기 위함인가요?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
안드로이드 11 이상부터 startActivityForResult 지원 안하므로 다른 방법 이용
https://blog.naver.com/tmvmffpsej/223135588600해결방법 정리한 블로그
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
배포 질문있습니다.
안녕하세요. 해당 강의로 배포를 배우고 있습니다. 현재 별개로 진행하는 스프링부트 프로젝트에서 레디스를 도커를 이용해 (docker-compose up) 실행하고, 스프링 프로젝트를 실행하는 형태로 진행하고 있습니다. 이러한 경우는 배포를 어떻게 해야할지를 모르겠습니다.원격 ec2 서버에도 마찬가지로 docker desktop 및 redis를 설치하여 실행한 뒤, 스프링부트 프로젝트를 실행해야 할까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 요청드립니다~
안녕하세요.강의 자료 요청드립니다.감사합니다.leejeha0428@enders.co.kr
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
버전관련해서 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용]여기에 질문 내용을 남겨주세요. java 11버전을 사용하고 있고 pom.xml 파일과 persistence.xml은 강의내용을 복붙했습니다.버전 문제인 것 같은데 해결 방법이 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Fixed Duration 관련해서 질문드립니다.
State Machine #1 강의 말미에 Fixed Duration의 체크 여부에 따라 Exit Time과 Transition Duration 내에 기입된 수치가 비율에서 초로 변환된다고 말씀하습니다.제가 이것저것 만져본 결과 Exit Time은 Fixed Duration 체크 여부에 상관 없이 무조건 비율인 것 같습니다.반면에 Transition Duration은 Fixed Duration이 체크되었을 때는 초, 그렇지 않을 때는 비율로 적용되는 듯합니다. 확인 부탁드립니다..https://docs.unity3d.com/kr/2018.4/Manual/class-Transition.html
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
CharField 테이블 안넘어오는 문제
class Car(models.Model): brand = models.CharField('brand', max_length=200), model = models.CharField('model', max_length=200, default=''), color = models.CharField('color', max_length=200), year = models.IntegerField('year', default=1900) 이렇게 모델을 적었는데 integerField의 테이블만 db에 생성되고 CharField table은 넘어오지 않습니다 뭐가 문제인걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 모의문제3 질문있습니다!
안녕하세요. 작업형2 모의문제3(에어비엔비 가격)을 직접 풀었을 아래와 같이 입력했습니다.저는 minmax_scale을 사용했고, 선생님께서 입력하신 결과와 비교를 하는데 사용하지 않았다는 것을 알게되었고 결과값도 다르게 나왔습니다.작업형 2유형 문제를 풀때마다 스케일링을 적용하고 있는데, minmax스케일을 하는 경우와 사용하지 않는 경우가 따로 있나요? 있다면 어떻게 구분할 수 있는지 궁금합니다. 그리고 위 문제에서 적용 안하신 자세한 이유도 궁금합니다.감사합니다! import pandas as pd train = pd.read_csv('train.csv') test = pd.read_csv('test.csv') # print(train.head()) # print(test.head()) # print(train.info()) # print(test.info()) train = train.drop(columns = 'id') test_id = test.pop('id') train = train.drop(columns = 'name') test = test.drop(columns = 'name') train = train.drop(columns = 'host_id') test = test.drop(columns = 'host_id') train = train.drop(columns = 'host_name') test = test.drop(columns = 'host_name') train = train.drop(columns = 'neighbourhood') test = test.drop(columns = 'neighbourhood') train = train.drop(columns = 'neighbourhood_group') test = test.drop(columns = 'neighbourhood_group') train = train.drop(columns = 'last_review') test = test.drop(columns = 'last_review') # print(train.info()) # print(test.info()) # print(train.isnull().sum()) # print(test.isnull().sum()) #last_review, reviews_per_month train['reviews_per_month'] = train['reviews_per_month'].fillna(0) test['reviews_per_month'] = test['reviews_per_month'].fillna(0) # print(train.isnull().sum()) # print(test.isnull().sum()) # print(train.info()) room_type,last_review # print(test.info()) from sklearn.preprocessing import LabelEncoder cols = train.select_dtypes(include = 'object').columns for col in cols: encoder = LabelEncoder() train[col] = encoder.fit_transform(train[col]) test[col] = encoder.transform(test[col]) # print(train.describe()) # print(test.describe()) from sklearn.preprocessing import minmax_scale cols2 = train.select_dtypes(exclude = 'object').columns for col in cols2: train[col] = minmax_scale(train[col]) cols3 = test.select_dtypes(exclude = 'object').columns for col in cols3: test[col] = minmax_scale(test[col]) # print(train.describe()) # print(test.describe()) # print(train.info()) # print(test.info()) from sklearn.model_selection import train_test_split X_train, X_val, y_train, y_val = train_test_split(train.drop('price', axis = 1), train['price'], test_size=0.2, random_state = 20) from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor() rf.fit(X_train, y_train) pred_val = rf.predict(X_val) from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # print(mean_squared_error(y_val, pred_val)) # print(mean_absolute_error(y_val, pred_val)) # print(r2_score(y_val, pred_val)) pred = rf.predict(test) pd.DataFrame({'id': test_id, 'price': pred}).to_csv('5959.csv', index=False)
-
미해결데이터 분석 SQL Fundamentals
Outer 조인 1:n 관계 방향이 궁금합니다
안녕하세요 강사님의 강의에 큰 도움을 받고 있는 초보 SQL 유저입니다 문제를 풀다 궁금한 점이 생겼습니다해당 문제의 경우 왼쪽이 customers (부모) 오른쪽 orders(자식) 관계인데 요구 조건 마다 다르겠지만 outer 조인 할 때, Null 쪽이 M 쪽을 넣는 것이 더 자주 사용될거 같은데 혹시 저의 생각이 맞을까요?과거에 조인절이 많아져 행과 열이 늘어나면 쿼리 처리속도가 늘어난다는 얘기를 들었습니다 그래서 서브쿼리로만 풀 수 있는 쿼리는 조인문을 안 쓰는 것이 더 낫지 않나라 생각 드는데 혹시 맞을까요? -- 주문이 단 한번도 없는 고객 정보 구하기.select *from customers cleft join orders o on (o.customer_id = c.customer_id)where o.customer_id is null select *from customers cwhere customer_id not in (select customer_idfrom orders)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 관련 질문!(화살 파트)
안녕하세요 루키스님.MMORPG 시리즈 Part7 화살 #1 ~ 화살 #2 를 수강하다가 궁금한 점이 있어서 질문을 올립니다.궁금한 부분은 화살을 생성하는 부분인데요. 제가 이해하기로는 화살 스킬을 사용하는 과정이 클라에서 스킬 사용 패킷을 보냄(C_Skill) -> 서버 C_SkillHandler를 거쳐 GameRoom.HandleSkill 에서 처리 -> 이 때 GameRoom.EnterGame(Arrow)로 화살 입장 -> 본인 클라이언트와 다른 플레이어의 클라이언트에 스폰패킷(S_Spawn)을 보냄 ->각 클라이언트에서 ObjectManager.Add로 화살을 스폰하는 것으로 이해했습니다.강의 코드에서, Gameroom에서 EnterGame(Arrow)를 실행하면 Arrow는 Projectile 타입이므로 if 문에 걸려 본인 클라에 Spawn패킷을 뿌리지 않고 다른 클라에만 뿌리는 것으로 작성이 된것 같은데... Player 타입이 GameRoom의 인자로 들어왔을 때만 본인 클라에 패킷을 전송하는 것 같거든요. 그런데 실행하면 화살이 잘 날아갑니다. 어느 단계에서 화살이 생성되는지 모르겠습니다. 어느 부분을 잘못 이해했을까요? 강의 코드 그대로 입니다.public void EnterGame(GameObject gameObject) { if (gameObject == null) return; GameObjectType type = ObjectManager.GetObjectTypeById(gameObject.Id); lock (_lock) { if (type == GameObjectType.Player) { Player player = gameObject as Player; _players.Add(gameObject.Id, player); player.Room = this; Map.ApplyMove(player, new Vector2Int(player.CellPos.x, player.CellPos.y)); // 본인한테 정보 전송 { S_EnterGame enterPacket = new S_EnterGame(); enterPacket.Player = player.Info; player.Session.Send(enterPacket); S_Spawn spawnPacket = new S_Spawn(); foreach (Player p in _players.Values) { if (player != p) spawnPacket.Objects.Add(p.Info); } foreach (Monster m in _monsters.Values) spawnPacket.Objects.Add(m.Info); foreach (Projectile p in _projectiles.Values) spawnPacket.Objects.Add(p.Info); player.Session.Send(spawnPacket); } } else if (type == GameObjectType.Monster) { Monster monster = gameObject as Monster; _monsters.Add(gameObject.Id, monster); monster.Room = this; Map.ApplyMove(monster, new Vector2Int(monster.CellPos.x, monster.CellPos.y)); } else if (type == GameObjectType.Projectile) { Projectile projectile = gameObject as Projectile; _projectiles.Add(gameObject.Id, projectile); projectile.Room = this; } // 타인한테 정보 전송 { S_Spawn spawnPacket = new S_Spawn(); spawnPacket.Objects.Add(gameObject.Info); foreach (Player p in _players.Values) { if (p.Id != gameObject.Id) p.Session.Send(spawnPacket); } } } }