묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
해쉬태그가 불러와지지 않고 있습니다.
보시면 주소창에는 익스프레스 해시태그를 선택한 상태인데 화면에 출력은 변화하지 않고 있습니다. 리덕스에서는 정상적으로 선택된것 같은데 해당 해시태그로 이동하지 않고 있는것 같습니다. 그런데 또 해당 해시태그 주소에서 새로고침을 하면 위에 스샷 화면에서 해당 해쉬태그만 있는 게시물만 정상적으로 출력됩니다. 도대체 어디가 문제인지 갈피를 못잡고 있습니다. hashtag/[tag].js import React, { useEffect } from "react"; import axios from "axios"; import { useRouter } from "next/router"; import { END } from 'redux-saga'; import { useDispatch, useSelector } from "react-redux"; import AppLayout from "../../components/AppLayout"; import wrapper from "../../store/configureStore"; import PostCard from "../../components/PostCard"; import { LOAD_HASHTAG_POSTS_REQUEST } from "../../reducers/post"; import { LOAD_MY_INFO_REQUEST } from "../../reducers/user"; const Hashtag = () => { const dispatch = useDispatch(); const router = useRouter(); const { tag } = router.query; const { mainPosts, hasMorePosts, loadPostsLoading } = useSelector((state) => state.post); useEffect(() => { function onScroll() { if (window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300) { if (hasMorePosts && !loadPostsLoading) { dispatch({ type: LOAD_HASHTAG_POSTS_REQUEST, lastId: mainPosts[mainPosts.length - 1] && mainPosts[mainPosts.length - 1].id, data: tag, }) } } } window.addEventListener('scroll', onScroll); return () => { window.removeEventListener('scroll', onScroll); } }, [hasMorePosts, loadPostsLoading, mainPosts.length, tag]) return ( <AppLayout> {mainPosts.map((c) => ( <PostCard key={c.id} post={c} /> ))} </AppLayout> ) } export const getServerSideProps = wrapper.getServerSideProps(async (context) => { const cookie = context.req ? context.req.headers.cookie : ''; axios.defaults.headers.Cookie = ''; if (context.req && cookie) { axios.defaults.headers.Cookie = cookie; } context.store.dispatch({ type: LOAD_MY_INFO_REQUEST, }) context.store.dispatch({ type: LOAD_HASHTAG_POSTS_REQUEST, data: context.params.tag, }) context.store.dispatch(END); await context.store.sagaTask.toPromise(); }) export default Hashtag; reducers/post.js case LOAD_USER_POSTS_REQUEST: case LOAD_HASHTAG_POSTS_REQUEST: case LOAD_POSTS_REQUEST: draft.loadPostsLoading = true; draft.loadPostsDone = false; draft.loadPostsError = null; break; case LOAD_USER_POSTS_SUCCESS: case LOAD_HASHTAG_POSTS_SUCCESS: case LOAD_POSTS_SUCCESS: draft.loadPostsLoading = false; draft.loadPostsDone = true; draft.mainPosts = draft.mainPosts.concat(action.data); draft.hasMorePosts = action.data.length === 10; break; case LOAD_USER_POSTS_FAILURE: case LOAD_HASHTAG_POSTS_FAILURE: case LOAD_POSTS_FAILURE: draft.loadPostsLoading = false; draft.loadPostsError = action.error; break; sagas/post.js function loadHashtagPostsAPI(data, lastId) { return axios.get(`/hashtag/${encodeURIComponent(data)}?lastId=${lastId || 0}`); } function* loadHashtagPosts(action) { try { const result = yield call(loadHashtagPostsAPI, action.data, action.lastId) yield put({ type: LOAD_HASHTAG_POSTS_SUCCESS, data: result.data, }) } catch (err) { console.error(err) yield put({ type: LOAD_HASHTAG_POSTS_FAILURE, error: err.response.data, }) } } routes/hashtag.js const express = require('express'); const { Hashtag, Post, Image, Comment, User } = require('../models'); const { Op } = require('sequelize'); const router = express.Router(); router.get('/:hashtag', async (req, res, next) => { // GET /hashtag/노드 try { const where = {}; if (parseInt(req.query.lastId, 10)) { // 초기 로딩이 아닐때 where.id = {[Op.lt]: parseInt(req.query.lastId, 10)} } const posts = await Post.findAll({ where, limit: 10, order: [['createdAt', 'DESC']], include: [{ model: Hashtag, where: { name: decodeURIComponent(req.params.hashtag) }, }, { model: User, attributes: ['id', 'nickname'], }, { model: Image, }, { model: Comment, include: [{ model: User, attributes: ['id', 'nickname'], order: [['createdAt', 'DESC']], }], }, { model: User, // 좋아요 누른사람 as: 'Likers', attiributes: ['id'], }, { model: Post, as: 'Retweet', include: [{ model: User, attiributes: ['id', 'nickname'], }, { model: Image, }] }] }); res.status(200).json(posts); } catch (error) { console.error(error); next(error); } }) module.exports = router; 코드입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
HTTP/1.1 415 Unsupported Media Type 오류
혼자 해결할려고 이것 저것 해봤는데.. 해결이 할 수 없어 질문드립니다. 도대체 왜? 유니티 콘솔창에 415오류가 뜨는지 모르겠습니다. (유니티 버전 2020.3.18f1)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강사님 InputManager에서 Action delegate를 쓰신 이유가 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아직 많이 부족한 초보입니다 InputManager 강의에서 Action 대리자를 쓰셨는데 Action 대리자를 쓰신 이유가 궁금합니다.. (delegate보다 편해서 인건지, 메서드를 꼭 받아야만 했던 것인지 ㅠㅠ) 그리고 InputManager를 구현할 다른 방법이 또 있는건지도 궁금해요!
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
react 시작부분 오류질문
첨부한 사진처럼 떠요. 강의 밑에 '주목'해서 올려주신것도 봤는데 잘모르겠습니다 . ㅜ
-
해결됨14일만에 배우는 ASP.NET CORE
03. MVC패턴 강의 질문입니다.
Login.cshtml -> 11라인 asp-controller ="Membership" "Membership" 이라는게 MembershipController.cs 가 맞나요? "Membership", "MembershipController" 둘다 사용해도 되는건가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인 정보 불러오기
로그인 정보를 불러올 때 현재 노드버드 앱 같은 경우에는 페이지 수가 적어서 가가 필요한 정보가 비슷해서 loadUserAPI시 항상 같은 데이터를 받아오는데 만약 페이지가 어느정도 많고 각 페이지에서 유저 관련된 필요한 정보가 많이 다를 경우에는 1. loadUserAPI를 여러개로 쪼갠 후에 loadUser 에서 경우에 따라 다른 api를 호출하는 게 좋은지 아니면 2. 액션을 여러개로 늘려서 하는 것이 좋을지 아니면 3. 모든 페이지에서 필요한 유저 관련 데이터의 합집합을 받는것이 좋을지 궁금하네요. 제 생각에는 2번인데 만약 2번이라면 그에 따른 코드량이 방대해 질텐데 (state수, 리듀서, 사가 등) 그래도 이렇게 하는게 가장 좋겠죠??
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
api/video/uploadfiles 경로 404 에러뜨시는분들
root 디렉토리에 폴더명을 uploads로 만들어놔서 api/video/uploadfiles 말고 api/video/uploads 로 고쳐서 하시면 됩니다. 아마 강사님이 처음에 uploads가 아니라 uploadfiles로 선언을 하시고 추후에 uploads로 바꾸셨는데 나머지 부분이 변경이 안됐던것 같습니다. VideoUploadPage.js에서 axios.post('/api/video/uploads', formData, config) 로 고치고 server 디렉토리의 video.js에선 router.post('/uploads', (req, res) => { 로 고치면 정상적으로 작동 됩니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
파이참
기존에 파이참이랑 아톰이 둘다 설치되어있었는데 아톰에서 아무리해도 autocomplete-python 설치문제로 해결이 안되서 파이참으로 실행하려고 합니다. 혹시 이후에 수업 진행시에 파이참으로 진행하려면 진행이 안된다거나 하는 부분이 있을까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
오류 ㅜ
예외처리 코드에서 error 부분이 빨간 밑줄 쳐지고 에러뜨는데용; 이미 선언되었다고 오류나는거같은데 ㅎㅎ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP 적용 후 의존관계
안녕하세요. "AOP 적용" 강의에서 AOP를 적용했을때 프록시로 가짜 MemberService가 생성되는걸 확인 시켜주시기 위해서 MemberController 의 MemberService 주입 부분에서 프린트를 찍어서 보여주시는데요. AOP가 적용되지 않은 상태에서 프린트 찍어도 비슷한 형태로 출력됩니다. 이 부분에 대해서 설명해주실 수 있을까요..?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
질문요!!
특정 고양이 데이터 조회부분이 조금 어렵네요 ㅎㅎ 1. 동적라우팅? /:id 2.request 안에 파라미터값이 있다?라는 부분이 모르겟어요 ㅜ 왜 있는거지?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다.
인프런 아이디 : slseongjunlee 인프런 이메일: sl.seongjunlee@gmail.com 깃헙 아이디 : sl.seongjunlee@gmail.com 깃헙 Username : sl-seongjunlee
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다.
강의 잘 듣고 있습니다. 감사합니다. Queue를 처음 배우고 있어 혼자 풀 때 아래와 같이 풀었는데 반례가 있을지 궁금합니다. function solution(need, plan) { let answer = "YES"; let planArr = plan.split(""); let max = -1; for (let x of need) { let YN = false; for (let i = 0; i < planArr.length; i++) { if (x === planArr[i]) { YN = true; if (max < i) { max = i; } else { answer = "NO"; } break; } } if (!YN) { answer = "NO"; } } return answer; }
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
bram 관련 질문
안녕하세요, BRAM과 ZYNQ에 대해 공부하던 중, 사용할 수 있는 BRAM이 630kB 정도 밖에 되지 않다는 것을 알게 되었습니다. 1) 만약 BRAM이 부족한 경우, 그렇다면 다른 memory를 사용해야할텐데, 그때는 DDR(?)을 사용하는 것인가요? 2) (1)번이 맞다면, 그 사용법이나 정보를 얻을 수 있는 곳이 있을까요? 여러 문서를 봐도, 코드를 어떤 식으로 작성해야하는지를 알 수가 없네요ㅠ 이 수업 커리큘럼 내에서는 DDR을 다루지 않는 것 같아, 관련된 정보라도 얻을 수 있을까 하여 질문드립니다. 감사합니다:)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jar빌드 오류
지금까지 테스트 케이스 실행에는 큰 문제가 없었지만 ./gradlew clean build 시에 아래와 같은 문제가 발생합니다. 자바버전은 11인것을 확인하였습니다. 어떠한 문제때문에 이러한 에러가 발생하는 것인가요? 이와같은 문제가 gradle 캐시를 삭제후 다시 하면 잘 된다는 글을 봐서 캐시를 모두 삭제하고 다시 실행시켜보니 똑같은 현상이 일어납니다. Could not find org-springframework.boot:spring-boot-devtools: 이 부분을 찾지 못해서 문제인 것 같은데 어떻게 해결할 수 있을까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
sequlize 질문 있습니다.
안녕하세요 제로초님! sequlize를 이용해서 배운 내용을 토대로 공부를 하고 있는데 create에서 몇일동안 잡히지 않는 에러가 있어서 제로초님께 질문 드립니다 ㅜ 다름이 아니라, 아래 코드를 가지고 mysql이랑 연동을 했는데 데이터베이스 컬럼?도 아래 4개로 구성되어있고 id는 자동생성인 상태인데, 왜 create한 결과가 null로 되는지 모르겠습니다.. sequlize에서 내부적으로 쿼리가 잘못되면 생성하지 않는 기능이 별도로 있는 것일까요?ㅜ graphql에 적용해보는데 console.log도 안먹히고 어떻게 해야할 지 모르겠습니다 ㅜㅜ const newUser = await User.create({ email: email, password: hashpw, type: "user", token: "", });
-
미해결
JPA관련 질문이 있습니다!!
현재 진행중인 프로젝트가 spring boot, mybatis 기반인데 jpa 적용 및 정상 동작까지 확인은 했습니다! 다만 현재 프로젝트 구조 상 문제점이 하나 발견되서 해결책이 있을지 여쭤봅니다~! * 문의사항 - DB 조회 시 조회대상 데이터 베이스를 유동적으로 변경할 수 있을까요? 현재(mybatis) 사용 예시 -> select *From ${DB_NAME}.emp 위와같이 DB명을 파라미터로 받아 유동적으로 대상 DB를 변경하면서 조회를 해야하는데 JPA에서도 관련 기능이 있는지 궁금합니다!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
소스코드 깃허브 들어가서 어디에있죠?
오류나서 그대로 소스코드 복사해서 실행 해보려는데 어디에있죠? 깃허브들어가면 nestjs를 위한 express 에서 몇번쨰인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 예제에 대해 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 마지막 예제의 29분 40초 경 bool isEven = ((count % 2) == 0); 이라는 라인을 입력하게 되는데, 이렇게 되면 루프가 돌 때마다 변수의 값을 변경하는게 아닌, isEven이라는 변수를 매번 선언하게 되는 것처럼 보입니다. 이 경우 별다른 문제는 없는 것인가요? 추가로 질문이 더 있는데, 이 부분을 디스어셈블리로 봤을 경우 마치 분기문처럼 어셈블리어가 이루어져 있더라구요. 이 부분은 ((count % 2) == 0)처럼 비교를 하는 부분이 있기 때문에 이해가 가는데, 중간에 dec와 or, inc가 나오는 라인은 왜 그런 것인지 이해가 되지 않습니다. 나머지를 구하는 연산의 경우 div 명령어를 사용하여 dx 레지스터에 저장된 나머지값을 가져오면 되는 것으로 이해하고 있습니다. 그렇게 하지 않는 것은 해당 컴파일러의 특성처럼 이해해도 될 것 같은데, 그것 외에 그냥 해당 instruction 자체가 이해가 가지 않아서, 이해를 돕고자 질문드립니다. 해당 어셈블리 부분 첨부합니다. bool isEven = ((count % 2) == 0); 006924D0mov eax,dword ptr [ebp-44h] 006924D3 and eax,80000001h 006924D8 jns std::_Narrow_char_traits<char,int>::length+0Fh (06924DFh) 006924DA dec eax 006924DB or eax,0FFFFFFFEh 006924DE inc eax 006924DF test eax,eax 006924E1 jne std::_Narrow_char_traits<char,int>::length+1Fh (06924EFh) 006924E3 mov dword ptr [ebp-118h],1 006924ED jmp std::_Narrow_char_traits<char,int>::length+29h (06924F9h) 006924EF mov dword ptr [ebp-118h],0 006924F9 mov cl,byte ptr [ebp-118h] 006924FF mov byte ptr [ebp-4Dh],cl
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
VS CODE에서 웹브라우저가 안열립니다.
선생님 화면과 같이 입력했으나 웹브라우저는 안열리고 위와 같은 오류메시지만 뜹니다. 실행결과를 알아야 틀렸는지를 알텐데 지금 저런 오류때문에 확인하지 못하고 있습니다. 인터넷을 아무리 돌아봐도 답이 없어서 여기에 남깁니다. 답장부탁드립니다.