묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨웹 게임을 만들며 배우는 React
6-4강 useEffect 배열 입력값에 따른 로또 중복공 발생 질문
안녕하세요 제로초님 항상 좋은 강의 감사드립니다 :) 유튜브로 강의를 수강하다가, 인프런/유튜브 댓글에 같은 질문이 없어 질문을 남깁니다. (사실 하나 있긴 했는데 이해가 잘 안되더군요 ㅜㅜ) 강의에서 아래와 같이 useEffect의 배열에 winBalls.length===0을 넣으면 첫번째 공과 두번째 공이 중복으로 나오고, timeouts.current로 넣으면 의도한대로 제대로 공이 중복되지 않게 나오는 것을 확인할 수 있었습니다. useEffect(()=>{ for(let i=0;i<6;i++){ timeouts.current[i]=setTimeout(()=>{ setWinBalls((prevState)=>[...prevState, winNumbers[i]]); }, (i+1)*1000); } timeouts.current[6]=setTimeout(()=>{ setBonus(winNumbers[6]); setRedo(true); }, 7000); return ()=>{ timeouts.current.forEach((v)=>{ clearTimeout(v); }) } },[winBalls.length===0]); class형에서는 winBalls.length===0으로 해도 문제없지만 hooks에서는 문제가 발생한 이유를 저는 componentDidMount와 componentDidUpdate 역할을 useEffect가 한번에 해주기 때문에 중복발생하는 것으로 이해했습니다. (useEffect에서 winBalls.length===0이라는 조건문에 mount,update할 때 각각 부합해서 중복발생하는 것으로 이해하였습니다.) 1. 그런데, timeouts.current을 배열에 넣을 때는 처음 mount될 때나 update될 때나 똑같이 빈 배열일텐데 왜 같은 공이 중복발생하지 않고 의도대로 제대로 작동하는지 궁금합니다. 2. winBalls.length===0과 같이 조건문을 useEffect 배열에 넣어도 되는건가요? 만약 가능하다면, winBalls.length===0을 배열에 넣을 경우, 위 중복 공 발생버그를 해결할 수 있는 방안도 있을까요? 항상 감사드립니다!
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
github권한 요청합니다
인프런 - sizuku11261@gmail.com github mail - woori.kim.se@gmail.com github id - woori3104
-
미해결홍정모의 따라하며 배우는 C언어
7.11 예제 질문
평균은 나오는데 최소값, 최대값 함수를 작동하는 과정에서 num 값이 변하는데 무슨 이유일까요? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <ctype.h> #include <stdbool.h> double min(num, pre_num) { return pre_num >= num ? num : pre_num; } double max(num, pre_num) { return pre_num >= num ? pre_num : num; } int main(void) { double average = 0.0; double sum = 0.0; double pre_num = 0.0; double max_num = 0.0; double min_num = 0.0; double i = 0.0; double num = 0.0; bool consider_num = 1; while (true) { consider_num = scanf("%lf", &num); if (consider_num == 0) break; if (i >= 1) { max_num = max(num, pre_num); min_num = min(num, pre_num); } sum += num; pre_num = num; i += 1.0; } average = sum / i; printf("%lf, %lf, %lf", average, min_num, max_num); return 0; }
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
wstring값에 대해서 질문있습니다.
이전 강의 실습까지는 모두 결과가 잘 나왔는데 이번 강의에서는 Read할때 값이 모두 0으로 바뀌어서 전달되었습니다... imbue를 사용하기 전, 후 모두 0이라 다른 문제 인 것 같은데 어느 부분이 문제인지 잘 모르겠습니다ㅜㅜ
-
미해결iOS AutoLayout 완벽 가이드 - 실무 프로젝트를 위한 실전강의
실습에 사용되는 이미지는 제공이 안되나요?
직접 구글링해서 이미지를 찾아야되는건가요??
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
rest controller 에서의 페이지 이동
전통적인 방식에서는 반환으로 modelandview를 통해 특정 클라이언트 페이지를 지정해주었는데 rest방식에서는 어떻게 처리를 하나요?! 약간 코드레벨에서 궁금합니다..
-
미해결구글 스프레드시트로 배우는 업무 자동화(직장인 코딩)
스크립트 편집기가 안보여요
최근에 메뉴바 내용이 업데이트 되면서, 기능의 위치들이 개편됐는데 스크립트 편집기가 도구메뉴에 보이질 않습니다!도움말에 메뉴검색에도 스크립트 편집기가 없네요 ㅠㅠ 어디로 갔을까요?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
EKS,AKS,GKE 실습에서 외부 통신이 디폴트로 허용되어 있나요?
실습에서 github 링크를 그대로 -f 옵션으로 적용하는 것을 보면서 궁금증이 있어서 질문드립니다. 쿠버네티스는 서비스를 통해 외부와 통신한다고 학습했었는데, EKS 와 같은 클라우드의 쿠버네티스는 디폴트 상태로 외부 통신인 public 망과 통신이 가능한가요? 아니면 따로 설정을 해주신건가요? 감사합니다.
-
미해결
ts(1005) 에러가 발생합니다
(사진)
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
안녕하세요~
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 질문은 아닙니다. 매번 강의를 잘 보고 있습니다.데이터시트와 구글링 만으로도 충분히 가능은 하겠지만... 이렇게 깔끔하게 정리된 강의가 있다는 점에서 너무 좋네요~ 처음 강의를 구매하고 FC컨트롤러를 구매한 것은 작년초반, 그러니까 드론강의가 한창 새로 올라오고 있을때였습니다. 기억하실지 모르겠습니다 ㅎㅎ fc 2개인가 3개인가를 회사에서 구매했었을거에요 ㅎㅎ 매번 업무에 밀려 하지 못하다가 본격적으로 시작한건 음...이제 3일정도 된것 같네요. 이렇게나 빨리 진행이 가능했던건 다 강사님 덕분이 아닐까 싶습니다. 제가 이 글을 쓰는 이유는.. 강의를 보면서 조금 보충이 되면 좋지 않을까 하는 부분들이 조금씩 있어서 도움이 될까 하는 마음에 주제넘게 끄적입니다. 부디 지적하는것으로는 바라보시지 않으셨으면 좋겠습니다. 1. 포인터를 인자로 전달받는 함수를 호출하면서 버퍼를 넘겨주실때 예를 들어서 telemetry_tx_buf 의 주소를 매개변수로 넘겨주실때 &telemetry_tx_buf[0] 이런식으로 표현을 하시는데 사실..배열을 선언할때 그 배열의 이름이 배열의 첫번째 변수의 주소를 가르키는 포인터이기에 telemetry_tx_buf를 넘겨주는것으로 충분합니다. 버퍼의 이름 자체가 첫 멤버의 주소이니까요. 이것이 문법상 더 매끄럽고 컴파일러에 따라 다르겠지만 최적화를 잘 하지 못하는 컴파일러에서는 미묘할지라도 성능에 차이가 납니다. &telemetry_tx_buf[0]은 엄연히 따지면 배열의 첫 멤버주소를 알려주며 거기서 0번째 뒤의 멤버( =결국은 자기자신 )의 value( 주소가 아닌 실제 저장된 값 )찾은다음 다시 그 value의 주소를 찾는 과정으로 의미없는 연산을 하라는 의미가 됩니다. 2. cubeIDE는 문제가 되지 않는것 같지만.. 제가 알고있기로는 코드에 의해서 제어되는 것이 아니라 dma나 외부입력의 의해 변경될 수 있는 레지스터에 의해서만 그 값이 변하고, 유저가 코딩한 부분에서는 실질적으로는 읽기만 하고 쓰지는 않는 변수를 반복적으로 사용하거나 하는등 코드만 봤을 때 조건문 혹은 반복문에 쓰이거나 특정 변수에만 할당되는 경우 일부 컴파일러는 최적화하는 과정에서 이 변수를 지워버리거나 최악의 경우 일부 코드를 통째로 도려내버리는 경우가 있습니다. 이것을 방지하기 위해 c에서 명시적으로 이 변수는 내가 바꾸지 않아도언제든 변경될 수 있으니 컴파일러 너가 보기에 필요없어 보일지라도 최적화를 하지 마라는 의미의 volatile이 있지요. 여기선 저도 긴가민가 하긴 하지만 배터리 전압을 담는 battVolt 변수는 volatile float 타입으로 지정했으면 더 명확하지 않았을까! 이런 생각이 들었습니다. 3. 이번챕터는 저의 경우 it.c 파일내 인터럽트 핸들러 함수내에 카운터는 10으로 하나만 초기화하고, !(count % 20) 으로, 그리고 count == 110 으로 두고 count==110에 해당하면 10으로 리셋해주는 방식으로 두개의 조건이 10ms 어긋나도록 하여 메인함수에서는 if문 하나만 추가해주는 것으로 해결하였습니다. 이것 또한 사실 정석이 아닌것을 알고 정답이 아닌것을 알지만 이러한 방법도 좋지 않을까 해서 끄적였습니다 ㅎㅎ 저도 사실 C를 그렇게 잘하는 사람이 아니고..단순히 C자체를 업으로 하고 좋아해서 파고들다 보니 조막만한 지식을 공유하고 싶어서 아는체를 해 봤습니다. 마지막으로 좋은 강의 너무 잘 보고 있습니다. 감사합니다!
-
해결됨프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
google 첫 페이지에서 사용하는 페이지
강의와 관련없지만 , 구글창키면 처음 나오는 페이지입니다! 웹팩 관련한 페이지 같은데 혹시 어떻게 설정하신건가요 ?! 추가로 private로 설정하면 AWS S3에서 올라간 이미지들을 불러올 때 캐싱이 적용이 안되는건가요 ? 내 브라우저 기준이 어떤건지 잘 모르겠습니다.
-
미해결팀 개발을 위한 Git, GitHub 입문
PPT 자료 요청합니다 :)
git과 github에 대해서 잘 몰랐는데 강의를 듣고 이해하는데 도움이 많이 되었습니다 :) 감사합니다! audtjs9987@naver.com 로 자료 보내주시면 감사하겠습니다 :)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
해시태그가 불러와지지 않습니다....ㅠ
영상을 보고 따라하고 있는데 user/1은 잘 되지만 /hashtag/해시태그는 불러와지지가 않습니다... 원인을 알려주시면 진심으로 감사드립니다....
-
미해결악성코드 분석 중급과정 (유형별분석)
안녕하세요.
강좌 중 C언어로 만든 키 후킹 분석편 보다보면, 키 후킹 이외에도 추가적으로 분석가능하게끔 키로그 샘플파일도 제공해주신다고 되어 있는데 교육 중 제공되는 파일을 살펴봐도 샘플파일을 찾을 수가 없습니다. 혹시 제공받을 수 있을까요? PS. 사실 밑에 ida pro도 아직 제공받지는 못했습니다.ㅠ-ㅠ
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
vultr 대체
vultr말고 다른 대체 서버를 사용해도 강의 듣는데에 문제가 없을까요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
컴포넌트의 이벤트 처리전 후크
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 버튼을 컴포넌트로 만들었습니다. 그 컴포넌트를 불러왔습니다. 부모창에서 그 버튼을 누르면 validation 체크를 하고 그 버튼 click 함수를 처리하고 싶습니다. 그런데 그 버튼은 공통에서 제공되는 부분이라 제가 수정 할수 는 없습니다. 버튼을 누르면 부모창에 체크 함수를 실행하고 버튼을 처리하게 구성을 할수 있을까요? vue에서는 어떤것이 제공되는지, 어떤 기술을 써야 되는지 들은 수업이랑 매칭을 못하겠어요 ㅠㅠ
-
미해결C# 프로그래밍
강의자료
강의자료를 받을 수 있는지 문의드립니다. 만약 공유가 어려우시면 강의 이해에 도움이 되는 교재를 알려주시면 도움이 될 것 같습니다.
-
미해결
Tensorflow checkpoint 기능 활용 방법
안녕하세요 딥러닝을 구글colab을 이용하여 공부중인데 현재 이미지 학습 부분을 공부하고 있습니다. 하지만 결제를 하여도 런타임이 24시간이 한계라 훈련이 자꾸 중단되어 epoch를 전부 학습하지 못하고 있습니다! 그래서 1epoch마다 checkpoint를 저장하는 방법을 사용하여 훈련을 하고 있고, 현재 잘 저장이 되고 있습니다. 하지만 저는 항상 3/10 epoch에서 24시간이 지나 훈련이 중단 되는데 그러면 이때 3 까지 저장된 checkpoint를 불러와서 다시 4epoch부터 재 학습을 시킬수 있는방법이 궁금합니다! 검색을 해 보았지만 전부 학습이 완료된 데이터를 불러오는 예제 밖에 없어서 질문 남깁니다! 제가 사용한 코드는 아래와 같습니다. from fastai.imports import * from tensorflow.keras import datasets, layers, models, losses, Model from tensorflow import keras import tensorflow as tf from keras.layers import Dense,Dropout,Activation,Add,MaxPooling2D,Conv2D,Flatten,BatchNormalization from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator from keras import layers import seaborn as sns from keras.preprocessing import image import numpy as np import cv2 from google.colab.patches import cv2_imshow import matplotlib.pyplot as plt plt.style.use('seaborn-white') data_path = '/content/drive/MyDrive/train_val_data' train_dir = os.path.join(data_path,'train') val_dir = os.path.join(data_path,'test') classes = os.listdir(train_dir) train_datagen = tf.keras.preprocessing.image.ImageDataGenerator( width_shift_range = 0.2, height_shift_range = 0.2, zoom_range = 0.2, vertical_flip=True, rescale = 1. / 255, fill_mode='nearest') val_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale = 1. / 255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) val_generator = val_datagen.flow_from_directory( val_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) base_model = tf.keras.applications.ResNet50(weights = 'imagenet', include_top = False, input_shape = (224,224,3)) for layer in base_model.layers: layer.trainable = False x = layers.Flatten()(base_model.output) x = layers.Dense(720, activation='relu')(x) predictions = layers.Dense(360, activation = 'softmax')(x) opt = tf.keras.optimizers.Adam(learning_rate=0.001) checkpoint_path = "/content/drive/MyDrive/training_resnet50/resnet50_cp.ckpt" checkpoint_dir = os.path.dirname(checkpoint_path) # 체크포인트 콜백 만들기 cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, save_weights_only=True, verbose=1) head_model = Model(inputs = base_model.input, outputs = predictions) head_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) history = head_model.fit(train_generator, validation_data=val_generator, batch_size=32, epochs=100, callbacks = [cp_callback])
-
미해결스프링 핵심 원리 - 고급편
강사님 궁금한게 있습니다.
항상 좋은 강의 감사합니다! 덕분에 실력이 많이 오름을 느끼고 있습니다. 궁금한 것은 애초에 boot-starter-aop을 적용하기 전에, 스프링 컨테이너에 빈들을 등록할때 이들을 프록시 처리해서 등록하는 것으로 알고 있습니다. (싱글톤 처리를 위해서) 이때, boot-starter-aop 모듈을 적용하면 이러한 역학 과정(?)에 어떤 과정이 들어가는지 궁금합니다. 일단 포인트컷 대상이 되는 클래스는 한번 프록시에 감싸주고 이후 스프링에서 빈으로 등록할 때 싱글톤 처리를 위해 한번 더 프록시를 감싸주는 식으로 최종 빈 등록이 되는 것일까요?
-
미해결Spring Boot JWT Tutorial
AuthController에서 loadByUsername 메서드 실행 경로
authenticationManagerBuilder.getObject().authenticate(authenticationToken);이 실행되면 loadUserByUsername으로 어떻게 넘어가지는지 이해가 되지 않습니다. loadUserByUsername은 customUserDatailSevice의 메서드인데 어째서 authenticationdml authentiacate메서드를 실행하면 CustomUserDatailService의 메서드가 호충되는 건가요?