묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결함수형 프로그래밍과 JavaScript ES6+
reduce의 acc가 없는 경우 코드에 의문이 있어 질문드립니다.
안녕하세요! 초기값 acc가 없는 경우 iter에서 첫 값을 acc로 지정하고 next() 메서드를 통해 두번째 값부터 f(acc, a)를 누적하는 로직에서 궁금한 점이 있어 질문 남깁니다. 인자에 acc가 부재한 경우 if(!iter) 조건이 아니라 if(!acc) 조건으로 iter의 첫 값을 acc에 지정해주는 게 맞지 않나 싶었습니다. 해당 부분 시작 전에도 JS 내장 reduce 방식처럼 acc가 없는 경우 사용하는 방식이라고 소개하셔서 코드 부분에서 더 괴리가 있는 것 같습니다. 또한 acc[Symbol.iterator](); 의 경우 acc는 초기값이고, iterator 프로토콜을 따르는 배열은 인자로 주어진 iter니까 iter[Symbol.iterator]()가 맞지 않나요? const reduce = (f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } ... } 강의에서는 위와 같이 작성해주셨는데, 제가 생각했을 때 이해가 되는 코드는 아래와 같습니다. const reduce = (f, iter, acc) => { if (!acc) { iter = iter[Symbol.iterator](); acc = iter.next().value; } ... } acc가 없는 경우 인자가 2개가 들어온다고 생각하면, acc를 3번째 인자로 두어야 acc가 undefined라 !acc가 true 처리되어서 if문을 돌 것 같아서 순서를 바꿔보았습니다. 제가 배움이 얕아 잘못 생각하고 있는 것이라면 어떤 부분에서 잘못 생각하고 있는건지 여쭙고 싶습니다. 감사합니다. ----- 라고 생각했는데, 아예 iter랑 acc를 재지정해주셨다는 걸 알게 되었습니다. 다른 수강생들에게도 도움이 되기 위해 정리해보는데, 혹시 오류가 있다면 짚어주시면 감사하겠습니다. 초기값(acc)이 함수로 전달되지 않는 경우 인자가 당겨져서 if 문 이전까지는 acc가 iterable(배열)이고, iter가 부재해undefined가 됩니다. 그러면 초기값이 없다는 if 문의 판별 조건은 (!iter)가 됩니다. if문 내부에서는 acc가 iterable이니 이를 iter로 다시 지정하는 것이고, acc는 단어 뜻 그대로 초기값으로 설정하기 위해 iter.next().value로 iterable의 첫 값으로 지정합니다. next()를 해서 iterable은 두 번째 값부터 for문에서 iteration을 진행하게 됩니다. iter와 acc 단어 자체의 의미에 집중하다보니 이해가 되지 않았는데, 당겨진다고 생각하니까 바로 납득이 되네요. 오류가 있다면 지적 부탁드립니다. 감사합니다!
-
미해결홍정모의 따라하며 배우는 C언어
강의 중에
7:15 쯤에 float max = 3.402823466e+38f; max = max * 100.0f; 제가 초보라서 이해를 못 했는 것 같은데 애초에 이게 성립이 되나요? max = max * 100.0f; 는 곧 3.402823466e+38f = 3.402823466e+38f * 100.0f; 와 같은 게 아닌가 싶어서...
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
웹봥화벽 설치가 안됩니다.
OVF 로 가상머신 등록하려하는데 가상머신을 켤수가 없다 나옵니다...
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
vivado 실행은 잘 되는 것 같습니다.
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 실행은 되는데 뭔가 께름칙한게 있습니다 xvlog를 치면 이상한 메세지가 뜹니다. 이런 메세지가 뜨네요 ,,, 환경변수는 입력한 상태입니다. root 모드에서 경로 찾아서 xvlog 실행했을 때의 메세지입니다.
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
강사님 질문있습니다.
강의 재밌게 잘 듣고 있습니다. 혹시 draw함수가 웹에서 1초에 60번 호출된다고 이해하면 되나요? 만약 draw함수가 한번 실행하는데 1/60초 넘게 소요되면 어떻게 되는지 머릿속에서 그려지지 않습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 강사님 이미지 파일, 문서 파일(pdf, docs) 업로드 하는데 아래와 같은 에러메시지가 나옵니다.
안녕하세요 강사님 강의 잘 복습하고 있습니다. 복습중에 antd를 사용하지는 않고 한번 파일을 업로드 해보려 시도중인데 파일(이미지, 문서) 업로드시 아래와 같은 에러가 발생하여 문의드립니다.. ㅜㅜ 위 파일을 제외하고는 장고에 포스트가 잘 작성되는데.. 해당 파일을 포함하면 위와 같은 에러메시지가 발생합니다. const onChangeTitle = (e) => { setTitle(e.target.value) } console.log(title) const onChangeCategory = (e) => { setCategory(e.target.value) } console.log(category) const onChangeContent = (e) => { setContent(e.target.value) } console.log(content) const handleFileCapture = async (e) => { await Setuploadfile({[e.target.name]: e.target.files[0]}) }; console.log({attachedfile}) const handleImageCapture =async (e) => { await SetuploadImage({[e.target.name]: e.target.files[0]}) }; console.log({coverimg}) const handleChange = (e) => { setChecked(e.target.checked); }; console.log('is_public : ', {checked}) const onSubmit = (e) => { e.preventDefault() const formData = new FormData(); formData.append("title", title); formData.append("category", category); formData.append("content", content); formData.append("attached_file", attachedfile); formData.append("cover_img", coverimg); formData.append("is_public", checked) console.log('formData :', formData) const headers = { Authorization: `JWT ${jwtToken}`, "Content-Type": "multipart/form-data", }; Axios.post("http://127.0.0.1:8000/api/posts/", formData, {headers}) .then(response => { history.push('/') console.log(response['status']) }) .catch(error => { console.log(error.response) }) }; 위 console.log로 찍어보면 내용이나 파일 값(상태값)은 잘 반영되는거 같은데.. submit만 하면 에러가 발생합니다.ㅜㅜ 위는 리액트단 코드이고 아래는 장고입니다. - models.py class Post(BaseModel): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='post_author') category = models.CharField(max_length=100, default='all') title = models.CharField(max_length=100, default='') content = models.TextField(default='') attached_file = models.FileField(blank=True, upload_to="shareinfo/post/cover/%Y/%m/%d", verbose_name='Attached File') cover_img = models.ImageField(blank=True, upload_to="shareinfo/post/cover/%Y/%m/%d", verbose_name='Cover Image') post_tag_set = models.ManyToManyField('Tag', blank=True) like_user_set = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='post_likes') ip = models.GenericIPAddressField(null=True, editable=False) is_public = models.BooleanField(default=True) - serializer.py class PostSerializer(ModelSerializer): author = AuthorSerializer(read_only=True) is_like = serializers.SerializerMethodField("post_likes_field", read_only=True) post_tag_set = serializers.CharField(source='extract_tag_list', read_only=True) class Meta: model = Post fields = ['author', 'is_like', 'post_tag_set', 'title', 'category', 'content', 'attached_file', 'cover_img', 'is_public'] def post_likes_field(self, post): -views.py class PostViewSet(ModelViewSet): queryset = Post.objects.all().filter(is_public=True) parser_classes = [MultiPartParser, FormParser] serializer_class = PostSerializer def get_queryset(self): qs = super().get_queryset() qs = qs.filter( Q(author=self.request.user) | Q(author__in=self.request.user.following_set.all()) ) return qs def perform_create(self, serializer): serializer.save(author = self.request.user, ip=self.request.META['REMOTE_ADDR']) return super().perform_create(serializer) 파일이 어떠한 형식으로 변환되어야지 장고에 저장이 되는거같은데... 어렵습니다..
-
미해결스프링 핵심 원리 - 기본편
에러를 도저히 못잡겟네요,....
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.이런 에러가 뜨는데 어디를 고쳐야 할지 모르겟어요..========================org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderService' defined in class path resource [appConfig.xml]: Cannot resolve reference to bean 'discountPolicy' while setting constructor argument; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [hello.core.discount.RateDiscountPolicy] for bean with name 'discountPolicy' defined in class path resource [appConfig.xml]; nested exception is java.lang.ClassNotFoundException: hello.core.discount.RateDiscountPolicy at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:707) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:198) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) at org.springframework.context.support.GenericXmlApplicationContext.<init>(GenericXmlApplicationContext.java:71) at hello.core.xml.XmlAppContext.xmlAppContext(XmlAppContext.java:12) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [hello.core.discount.RateDiscountPolicy] for bean with name 'discountPolicy' defined in class path resource [appConfig.xml]; nested exception is java.lang.ClassNotFoundException: hello.core.discount.RateDiscountPolicy at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1542) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330) ... 85 more Caused by: java.lang.ClassNotFoundException: hello.core.discount.RateDiscountPolicy at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.springframework.util.ClassUtils.forName(ClassUtils.java:284) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:469) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1607) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1534) ... 91 more =================
-
미해결Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득
슬랙 초대가 안왔습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 휴일에는 슬랙 초대 안해주시는 걸까요?? 보통 8시간 걸린다고 했는데 아직 안와서... 시험 바로 보려했는데 혹시 초대해주실 수 있을까요ㅠㅠ
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
오타 문의
안녕하세요 강의 잘보고 있습니다 강의를 따라서 공부하고 있는중에 오타가 의심되는 부분이 있어서 문의드립니다. PostLIst 컴포넌트에서 map 메서드를 통해 posts배열을 PostItem 컴포넌트로 넘기는 부분에서 .../PostList.tsx ... .../PostList.tsx (이부분 ) 로 디렉토리가 작성 되어 있는데 코드에는 PostItem 컴포넌트에서 작성하는것 같아서요 혹시 이부분 오타인건 가요??
-
미해결데이터 분석 SQL Fundamentals
조인(Join) - 조인 기반 메커니즘_조인 실습 - 03 강의 속 질문입니다.
1997년에 주문한 주문 정보를 추출하는 쿼리에서 날짜 조건을 아래처럼 and o.order_date = to_date('1997','yyyy') 작성하면 결과값이 안나오는데 다른 이유가 있을까요?? 강의 속 코드인 between A and B 구문보다 간단하다고 생각해서 위처럼 코드를 작성했습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
빌더패턴질문
ㅎ혹시 이렇게빌더 패턴을사용하는게 아닌가요? builder가나와야정상으로아는데 같은엔티티안에는 builder못쓰나요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
혹시 프록시로 로그인하면
쿠기생성이안될까요? 응답헤더에쿠기가 없어서요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
_sendQueue 질문입니다.
강의 마지막에 와서 뒤늦게 질문하는 느낌이 적지 않게 있는데, 재수강하면서도 여전히 긴가민가한 느낌이 있어서 질문드립니다. #_sendQueue에는 버퍼가 언제 쌓이는가. 쓰레드 A가 제일 처음으로 Send 함수를 호출했다. _sendQueue에 버퍼를 집어넣는다. _pendingList.Count ==0 이라 RegisterSend가 호출된다. 이후 RegisterSend 안에 있는 SendAsync 함수로 pendingList를 송신한다. 그런데 SendAsync 함수가 true 떠서, 즉 송신을 실패했다면? 쓰레드 A는 Lock을 풀고 사라지고, 이어서 다른 쓰레드 B가 Send를 호출했을 때 PendingList의 Count는 0이 아니므로, _ sendqueue에 버퍼만 집어넣고 쓰레드 B는 사라진다. 그 이후에 실패로 끝났던 SendAsync 함수가 콜백으로 OnSendCompleted 함수를 호출하면, _sendQueue에 쌓인 버퍼가 한꺼번에 송신된다. 이런 흐름이라고 이해하면 될까요? 만약 이게 맞다면 SendQueue는 SendAsync 가 실패로 끝났을 때를 위한 안전 장치라고 생각해도 될까요? 마침 질문글 답변 중에 이런 부분이 있기는데 한데 확신이 없네요. 멀티쓰레드보다는 비동기 네트워크 쪽과 관련이 있는데,SendAsync를 한다고 무조건 상대방이 받아준다는 보장이 없습니다.로컬 환경에서야 pending이 거~~의 대부분 false로 뜨고 바로 완료 되겠지만저 지구 반대편에 있는 사람이 접속했다면 이런저런 이유로SendAsync가 바로 완료되지 않고 pending = true로 설정될 확률도 높습니다.물론 말씀하신대로 Latency 뿐 아니라 Recv할게 너무 많아서 상대쪽에서 처리를 못해서 그럴 수도 있구요.
-
미해결진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 데이터 가공부터 분석까지
엑셀 쿼리 웹 데이터 불러오기 오류
-엑셀 쿼리에서 웹 데이터를 불러 오려 합니다. 그럼데 URL을 입력하면 이런 화면이 나옵니다. 그렇다 보니 진도가 나가질 않아요 도와주세요
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
설치 질문이요 ,,,
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 화면에서 멈춰있었습니다 어떻게 해야할지를 몰라서, 이 상태에서 CTRL+C를 눌렀습니다. 이런 화면이 뜨면서 갑자기 Vivado를 지웠다고 합니다 ,,, 경로를 찾아보니 Vivado 하위 폴더만 모두 사라졌습니다 ,,, ^C 누른게 화근이었는데 여기서 뭘 눌러야했던건가요 ,,, 이거 또 다 지우고 다시 해야하나요 ,, ??
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce방식을 풀어봤습니다.
function solution(cnt, arr){ if(arr.length !== cnt){ return; } let answer = 0; arr.reduce((previous, current) => { if(current === 1){ answer += previous; return previous + 1; }else{ return 1; } }, arr[0]) return answer;}이런방식은 어떤가요?
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
Props로 받아 포스트 데이터 출력하기가 안됩니다.
강의에 나온대로 코드를 작성했는데, PostList.tsx에서 import PostItem에서 PostItem이 빨간줄이에요
-
미해결함수형 프로그래밍과 JavaScript ES6+
병렬프로그래밍
실무에서 web worker는 잘 안쓰나욤?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
AWS typescript 배포 module error 질문 드립니다
강의에서 나온 nodebird를 참고하여 작은 게시판 서비스를 Typescript로 제작하여 AWS ec2에 배포하는 과정에서 import 부분에서 error가 나서 질문들비니다 * error * error. 모듈 부분을 찾을 수 없다는 에러가 검출되고 있습니다 * tsconfig.json * 개발 환경에서는 어떠한 에러도 없었습니다 전에 node-bird를 배포하는 과정에선 에러가 없었는데 이러한 경우에는 어디에서 문제를 찾아볼 수 있을까요..
-
해결됨(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
train,test 분리 MF알고리즘에서 결과가 출력이 안되요 ㅠㅠ
안녕하세요 거친코딩님. 해당 챕터에서 코드를 작성해서 돌려봤는데요~ 마지막에 하셨던 full_prediction과 get_one_prediction은 잘 출력되었는데, result=mf.test()만 출력이 안돼요 ㅠㅠ 코랩에서 체크모양은 떴는데, 결과값 출력이 안나와요.. import os import numpy as np import pandas as pd base_src = 'drive/MyDrive/RecoSys/Data' u_data_src = os.path.join(base_src,'u.data') r_cols = ['user_id','movie_id','rating','timestamp'] ratings = pd.read_csv(u_data_src, sep='\t', names = r_cols, encoding='latin-1') #timestamp 제거 ratings = ratings[['user_id','movie_id','rating']].astype(int) # train set과 test set 분리 from sklearn.utils import shuffle #데이터가 imbalance하면 계층화추출, balance하면 셔플(계층화추출하면, 표본의 대표성을 저해할 수 있기때문에) TRAIN_SIZE = 0.75 #(사용자-영화-평점) ratings = shuffle(ratings,random_state=2021) cutoff = int(TRAIN_SIZE * len(ratings)) ratings_train = ratings.iloc[:cutoff] ratings_test = ratings.iloc[cutoff:] class NEW_MF(): def __init__(self,ratings,hyper_params): self.R = np.array(ratings) #사용자 수(num_users)와 아이템 수 (num_items)를 받아온다. self.num_users,self.num_items = np.shape(self.R) #아래는 MF weight 조절을 위한 하이퍼 파라미터 # K : 잠재요인(Latent Factor)의 수 self.K = hyper_params['K'] # alpha : 학습률 self.alpha = hyper_params['alpha'] # beta : 정규화 계수 self.beta = hyper_params['beta'] # iterations : SGD의 계산을 할 때의 반복 횟수 self.iterations = hyper_params['iterations'] # verbose : SGD의 학습 과정을 중간중간에 출력할 것인지에 대한 여부 self.verbose = hyper_params['verbose'] # 데이터가 연속적이지 않을 때, 인덱스와 맞지 않는 것을 방지하기위해 맵핑해주는 작업 item_id_index = [] index_item_id = [] for i, one_id, in enumerate(ratings): #i:enumerate의 idx, one_id : movie_id item_id_index.append([one_id,i]) index_item_id.append([i,one_id]) self.item_id_index = dict(item_id_index) self.index_item_id = dict(index_item_id) user_id_index = [] index_user_id = [] for i, one_id, in enumerate(ratings.T): user_id_index.append([one_id,i]) index_user_id.append([i,one_id]) self.user_id_index = dict(user_id_index) self.index_user_id = dict(index_user_id) def rmse(self): # self.R에서 평점이 있는(0이 아닌) 요소의 인덱스를 가져온다. xs,ys = self.R.nonzero() # prediction과 error를 담을 리스트 변수 초기화 self.predictions = [] self.errors = [] # 평점이 있는 요소(사용자 x, 아이템 y) 각각에 대해서 아래의 코드를 실행 for x,y in zip(xs,ys): #사용자 x, 아이템 y에 대해서 평점 예측치를 get_prediction()함수를 사용해서 계산 prediction=self.get_prediction(x,y) # 예측값을 예측값 리스트에 추가 self.predictions.append(prediction) # 실제값(R)과 예측값의 차이(errors) 계산해서 오차값 리스트에 추가 self.errors.append(self.R[x,y] - prediction) #예측값 리스트와 오차값 리스트를 numpy array형태로 변환 self.predictions = np.array(self.predictions) self.errors = np.array(self.errors) #error를 활용해서 RMSE 도출 return np.sqrt(np.mean(self.errors**2)) def sgd(self): for i,j,r in self.samples: #사용자 i 아이템 j에 대한 평점 예측치 계산 prediction = self.get_prediction(i,j) # 실제 평점과 비교한 오차 계산 e = (r-prediction) # 사용자 평가 경향 계산 및 업데이트 self.b_u[i] += self.alpha *(e - (self.beta * self.b_u[i])) # 아이템 평가 경향 계산 및 업데이트 self.b_d[j] += self.alpha *(e - (self.beta * self.b_d[j])) # P 행렬 계산 및 업데이트 self.P[i,:] += self.alpha * ((e * self.Q[j,:]) - (self.beta * self.P[i,:])) # Q 행렬 계산 및 업데이트 self.Q[j,:] += self.alpha * ((e * self.P[i,:]) - (self.beta * self.Q[j,:])) def get_prediction(self,i,j):#평점 예측값 구하는 함수 #전체 평점 + 사용자 평가 경향 + 아이템에 대한 평가 경향 + i번쨰 사용자의 요인과 j번째 아이템 요인의 행렬 곱 prediction = self.b + self.b_u[i] + self.b_d[j] + self.P[i,:].dot(self.Q[j,].T) return prediction # Test Set 선정 def set_test(self,ratings_test): test_set = [] for i in range(len(ratings_test)): x = self.user_id_index[ratings_test.iloc[i,0]] #사용자 id y = self.item_id_index[ratings_test.iloc[i,1]] #영화 id z = ratings_test.iloc[i,2] #실제 평점 test_set.append([x,y,z]) self.R[x,y] = 0 #안해주면 전체 데이터에 대한 트레이닝이 이루어짐 self.test_set = test_set return test_set # Test Set RMSE 계산 def test_rmse(self): error = 0 for one_set in self.test_set: predicted = self.get_prediction(one_set[0],one_set[1]) #사용자 ID, 영화 ID error += pow(one_set[2] - predicted,2) return np.sqrt(error/len(self.test_set)) def test(self): self.P = np.random.normal(scale=1./self.K, size=(self.num_users,self.K)) self.Q = np.random.normal(scale=1./self.K, size=(self.num_items,self.K)) self.b_u = np.zeros(self.num_users) self.b_d = np.zeros(self.num_items) self.b = np.mean(self.R[self.R.nonzero()]) #테스트셋에서 0으로 처리하여서 트레이닝 셋만 #트레이닝 셋에 대해서 데이터셋 구성 rows, columns = self.R.nonzero() self.samples = [(i,j,self.R[i,j]) for i,j in zip(rows,columns)] training_process = [] for i in range(self.iterations): np.random.shuffle(self.samples) self.sgd() rmse1 = self.rmse() rmse2 = self.test_rmse() training_process.append((i+1,rmse1,rmse2)) if self.verbose: if (i+1) % 10 == 0 : print('Iteration : %d ; Train RMSE = %.4f ; Test RMSE = %.4f'% (i+1,rmse1,rmse2)) return training_process def get_one_prediction(self,user_id,item_id): return self.get_prediction(self.user_id_index[user_id], self.item_id_index[item_id]) def full_prediction(self): return self.b + self.b_u[:,np.newaxis] + self.b_d[np.newaxis,:] + self.P.dot(self.Q.T) R_temp = ratings.pivot(index='user_id', columns='movie_id', values='rating').fillna(0) hyper_params = { 'K' : 30, 'alpha' : 0.001, 'beta' : 0.02, 'iterations' : 100, 'verbose' : True } mf = NEW_MF(R_temp, hyper_params) test_set = mf.set_test(ratings_test) result = mf.test() 1:1 문의하기를 이용해주세요.