묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
Response Time (강의 외 질문)
안녕하세요 선생님! 이전 시리즈의 강의에서도 언급해주셨듯 운영환경에서 바람직한 Response Time이 있고 이에 관해 찾아보던 중 100ms 이하의 Response Time 성능을 가져야한다는 글을 보았습니다! 하지만 제가 현재 개발하고 있는 api의 Response Time은 대략 250ms ~ 350ms 정도 나옵니다(local 환경에서) 정말 단순히 로그인 유무를 체크하는 api 조차도 대략 250ms의 Response Time이 발생합니다. 인증 관련 api부분이라 조금이라도 response time을 줄이기 위해 promise.all을 사용하여 코드를 구현해보았는데 만족스럽지 않은 Response Time이 발생합니다. 전체적인 설계의 문제인지 다른 고려사항이 있는지 조언을 부탁드려도 될까요? 혹시나 봐주실 수 있으시다면 https://github.com/FITTOSS/fittoss_backend 전체 코드도 올리겠습니다!감사합니다!
-
미해결Slack 클론 코딩[실시간 채팅 with React]
메시지 관련 질문있습니다 !
대화창을 켜놓고 과거 기록을 보고 있는 중에 상대방이 메시지를 보내면 보냈다는 알림?같이 미리 보기 형식으로textarea위에 보여주게 하고 싶은데 이런 경우에는 socket id의 data를 가져와서 출력해줘야 하는걸까요 ?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
안녕하세요
강의 잘 보고 있습니다 궁금증이 생겼는데 const current = (scrollRef as MutableRefObject<Scrollbars>)?.current; 1.타입 해결해놓으신걸 참고하니 이렇게 되어있더라구요 ㅕ기서 as는 그냥 별명같은 역할을 하는건가요 ? 아니면 타입이 저렇게된다는걸 알려주는건가요 ? 2.위 타입 오류는 어떻게 해결하셨는지 궁금합니다 마우스를 가져다대도 딱히 해결할만한 실마리가 안 보였는데 타입에러의 원인을 어떻게 아셨나요 ?!
-
해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
docker와 kubeadm 설치 강의가 플레이가 안됩니다.
docker와 kubeadm 설치 강의가 플레이가 안됩니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
onClick 파라메터 바인드 질문드립니다.
// button onClick시.. () => onCancel(item.id) const onCancel = (item) => { console.log(item) dispatch({ type: UNFOLLOW_REQUEST, data: item }) } // button onClick시.. onCancel(item.id) const onCancel = (item) => () => { console.log(item) dispatch({ type: UNFOLLOW_REQUEST, data: item }) } 고차 함수 이용해서 파라메터 전달 및 바인드가 나와서 질문드립니다. 위 방법과 아래 방법의 차이가 있을까요 ... ?
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
또다른 시각화 라이브러리 seaborn 강의의 part1이 안나와요.
또다른 시각화 라이브러리 seaborn 강의의 part1이 안나와요.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그아웃 시 궁금한 점이 하나 있습니다.
안녕하세요! 강의 수강중에 궁금한 점이 있어서 질문 드립니다! 제로초님 화면에서는 로그아웃할때 아이디, 비밀번호칸에 그대로 로그인시에 입력한 데이터가 남아있는데 저는 로그아웃하면 빈칸이어서.. 혹시 제가 잘못따라한것일까요?.. 돌려보면서 비교해봤는데 차이가 없는거 같아서 질문드립니다!
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
프로그래밍 언어 기초와 파이썬 이해 강의 재생이 안돼요
이렇게 뜨고 강의가 재생이 안됩니다.... 아래 강의만 이렇게 뜨고 나머지는 다 잘 재생돼요 ㅠㅠ 프로그래밍 언어 기초와 파이썬 이해
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
부트 버전 높은 걸로 하다가 화이트라벨 에러 뜨신 분 참고
https://www.inflearn.com/questions/94189 전 이걸로 해결했습니다. 높은 버전에서는 application.properties에 추가로 넣어줘야될 게 있군요. 코딩 관련 인강 들으면서 제일 문제는 버전 차이에 따른 오류인 것 같네요. 코딩 인강은 수강생의 이런 문제에 관한 사후 운영, 관리가 더 중요한 거 같아요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
errors.yml
안녕하세요. 선생님 강의 너무 잘 듣고 있습니다. 제가 얼마 전부터 yaml 형식에 대해서 알게 돼서 applicaiton.properties도 appilcation,yml로 설정을 옮겨보고, 이번에도 마찬가지로 errors.properties -> errors.yml로 바꿔봤는데 에러가 발생합니다. errors.properties 도 yml로 변경하면 스프링이 받아들이지 못하는 걸까요? # Lever 1#required.item.itemName=상품 이름은 필수입니다.#range.item.price=가격은 {0} ~ {1} 까지 허용합니다.#max.item.quantity=수량은 최대 {0} 까지 허용합니다.### Level 2#totalPriceMin=가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1}required: item: itemName: 상품 이름은 필수입니다.range: item: price: 가격은 {0} ~ {1} 까지 허용합니다.max: item: quantity: 수량은 최대 {0} 까지 허용합니다. # Level 2totalPriceMin: 가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1}
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 4 뮤직비디오 문제에 대해서 질문드립니다.
안녕하세요 선생님, 복습 중에 이해 되질 않는 점이 있어 문의드립니다. 반례 수정 영상 까지 전부 보았습니다. 말씀 해주신대로 dvd 한 장의 길이가 최소한 노래들 중에서 가장 긴 곡보다는 길어야 하므로 저는 아예 처음부터 lt를 노래들 중 가장 긴 곡으로 설정하였고, 이를 적용한 풀이는 아래와 같습니다. n, m = map(int, input().split()) song = list(map(int, input().split())) song.sort() def count(length): cnt = 1 # 최소 1장 size = 0 for i in range(n): if size + song[i] > length: cnt += 1 size = song[i] else: size += song[i] return cnt lt = max(song) # 최소한 가장 긴곡의 길이보다는 길어야 하니까(노래 쪼개지면 안됨) rt = sum(song) res = 0 while lt <= rt: mid = (lt + rt) // 2 if count(mid) <=m: res = mid rt = mid - 1 else: lt = mid + 1 print(res) 여기서 두 번째 테스트 케이스를 실행하였을 때 원래 답인 24가 아니고 23의 결과를 도출하는데요, 실제로도 23으로도 3장에 담는 것이 가능한 것을 확인하였습니다. 테스트 케이스 답안에 문제가 있는 걸까요? 확인해주시면 감사하겠습니다. (수정) 죄송합니다 선생님, 이진검색은 정렬된 자료에서 써야하는 것을 엉뚱하게 주어진 자료에다가 정렬을 해버렸네요. 다른 사람들도 도움이 될 수있도록 질문글은 남겨두겠습니다. 좋은 강의 감사합니다!!!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
cascadeType.ALL + orphanRemoval = true 를 동시에 사용할 때
mappedby 속성은 연관관계의 주인이 1:多 관계에서 多쪽(Member엔티티쪽)이라는 것을 명시하는데 cascadeType.ALL + orphanRemoval = true 속성은 1쪽(Team엔티티쪽)에서 FK를 관리하는 느낌을 받고있습니다. 두 상반된 개념이 함께 적용되는것 같아 이해하기가 어렵습니다... 이해를 하고싶어 다음 두 예제를 비교하고 있는데요. p.185의 예제 5.13 (mapped by) p.309의 예제 8.17 (cascade) 사실 p.185에서 적용하지 않아도 됐던 getMembers().add(member)를 p.309에서는 Parent와 Child 관계로 getChildren().add(child)와 같이 적용하는 모양새입니다. (p.309 예제의 엔티티에도 mapped by 설정을 해줬음에도) 답변부탁드립니다. 감사합니다.
-
해결됨Spring Boot JWT Tutorial
jwt 에러에 따라 나가는 응답을 다르게 하려면 어떻게 해야할까요?
jwtProvider 쪽 try ~ catch문을 보면 jwt에러에 여러 종류가 있는데 그중에서 토큰 만료의 경우(ExpiredJwtException) 단순 UNAUTHORIZED이 아니라 추가적으로 메세지를 주거나 다른 코드로 구분되게 하고싶은데요? 어떤 방법이 있을가요??
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
커스텀 폰트 적용할 때 font.xml파일
커스텀 폰트 적용방법 복습하다가 문의 드립니다. 강사님께서 알려주신 방법에는 폰트를 font directory에 넣고 textview에서 fontFamily 속성으로 바로 적용하셨는데, 검색하다보니 directory에 넣고나서 font.xml이라는 리소스 파일을 생성해서 집어넣고 fontFamily로 적용을 하던데 그 둘의 차이점을 알 수 있을까요?
-
미해결더 개발자, 인터뷰 가이드
자기소개서 항목 질문
안녕하세요. 미션에 글이 올라왔지만 답변이 없더라구요. 미션에 올리면 답을 받을 수 있는건가요? 저는 직무 준비 노력 사항에 대한 항목과 관련해서 질문을 드리고 싶습니다. 정확히 언급하신 질문에는 없는 내용이지만 혹시 피드백 받을 수 있을까요?
-
미해결Vue로 Nodebird SNS 만들기
팔로우 팔로잉 관계가 작동하지 않습니다ㅜ
안녕하세요! 제로초님 처럼 팔로잉 팔로워 관계를 확인해 보려고 6개의 아이디를 가입후에 하나로 5개의 아이디를 팔로우하여 프로필에 들어갔는데 아이디 2 3 4는 팔로우해도 뜨지 않고 아이디 5와 6만 프로필에 뜹니다. 게다가 제로초님 처럼 가로로 3개씩 안나오고 세로로 뜨네요ㅜ 이런 식으로 팔로우를 했는데 이렇게 5와 6만 뜹니다 팔로잉에요 제로초님 코딩과 비교해보고, 테이블도 다 드랍해보고 해봐도 같은현상이 반복됩니다 ㅜ 무슨문제인지 알 수 있을까요?? routes/user.js router.post('/:id/follow', isLoggedIn, async (req, res, next) => { try { const me = await db.User.findOne({ where: { id: req.user.id } }); await me.addFollowing(req.params.id) res.send(req.params.id) } catch (err) { console.error(err) next(err) } }) router.delete('/:id/follow', isLoggedIn, async (req, res, next) => { try { const me = await db.User.findOne({ where: { id: req.user.id } }); await me.removeFollowing(req.params.id) res.send(req.params.id) } catch (err) { console.error(err) next(err) } }) router.get('/:id/followings', isLoggedIn, async (req, res, next) => { try { const user = await db.User.findOne({ where: { id: req.user.id}, }) const followings = await user.getFollowings({ attributes: ['id', 'nickname'], limit: parseInt(req.query.limit || 3, 10), offset: parseInt(req.query.limit || 0, 10) }) res.json(followings) } catch (err) { console.error(err) next(err) } }) router.get('/:id/followers', isLoggedIn, async (req, res, next) => { try { const user = await db.User.findOne({ where: { id: req.user.id}, }) const followers = await user.getFollowers({ attributes: ['id', 'nickname'], limit: parseInt(req.query.limit || 3, 10), offset: parseInt(req.query.limit || 0, 10) }) res.json(followers) } catch (err) { console.error(err) next(err) } }) router.delete('/:id/follower', isLoggedIn, async (req, res, next) => { try { const me = await db.User.findOne({ where: {id: req.user.id} }) await me.removeFollower(req.params.id) res.send(req.params.id) } catch (err) { console.error(err) next(err) } }) store/users.js mutations loadFollowing(state, payload) { if(payload.offset === 0) { state.followingList = payload.data } else { state.followingList = state.followingList.concat(payload.data); } state.hasMoreFollowing = payload.data.length === limit }, loadFollower(state, payload) { if(payload.offset === 0) { state.followerList = payload.data } else { state.followerList = state.followerList.concat(payload.data); } state.hasMoreFollower = payload.data.length === limit }, following(state, payload) { state.me.Followings.push({ id: payload.userId }) }, actions loadFollowing({commit, state}, payload) { if(!(payload && payload.offset === 0) && !state.hasMoreFollowing) { return } let offset = state.followingList.length; if(payload && payload.offset === 0) { offset = 0; } return this.$axios.get(`/user/${state.me.id}/followings?limit=3&offset=${offset}`, { withCredentials: true }) .then((res) => { commit('loadFollowing', { data: res.data, offset, }) }) .catch((err) => { console.error(err) }) }, loadFollower({commit, state}, payload) { if(!(payload && payload.offset === 0) && !state.hasMoreFollower) { return } let offset = state.followerList.length; if(payload && payload.offset === 0) { offset = 0; } return this.$axios.get(`/user/${state.me.id}/followers?limit=3&offset=${offset}`, { withCredentials: true }) .then((res) => { commit('loadFollower', { data: res.data, offset, }) }) .catch((err) => { console.error(err) }) }, follow({commit, state}, payload) { this.$axios.post(`/user/${payload.userId}/follow`, {}, { withCredentials: true, }) .then(() => { commit('following', { userId: payload.userId }) }) .catch((err) => { console.error(err); }) }, unFollow({commit, state}, payload) { return this.$axios.delete(`/user/${payload.userId}/follow`, { withCredentials: true, }) .then(() => { commit('removeFollowing', { userId: payload.userId }) }) .catch((err) => { console.error(err); }) }, 뷰 데브툴과 네티워크 탭에서도 이상은 보이지 않습니다. 뷰데브툴에서도 팔로우 언팔로우 누르면 following removefollosing 찍히구요 네트워크 탭에서도 200으로 잘찍힙니다
-
미해결Slack 클론 코딩[실시간 채팅 with React]
2차원 배열->1차원으로
2차원 배열을 1차원으로 하기위해 flat을 사용하셨는데여 전에는 spread 문법으로 뮤타블을 지켜줬는데 flat을 사용하면 자동적으로 뮤타블을 지켜주는건가요 ?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
모듈사용이 안됩니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
메세지 바디
안녕하세요. 강의 잘 듣고 있습니다! HTTP 바디에 실어서 보낸다. 메세지 바디에 실어서 보낸다. 이 2개가 다른 의미인가요? HTTP API는 메세지 바디, FORM 데이터 전송은 HTTP 바디 로 구분되는것 같아서요.
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
안녕하세요 관리형 쿠버네티스에 대해 질문이 있습니다.
안녕하세요 강의들으며 궁금한 것이 생겨서요. 지금 강의하시는 환경과 관리형 쿠버네티스의 차이점은 마스터노드를 보는것에 대해 제한이 있다는 것과 기존에 로드밸런서가 설치되어있다는 것만 있는건가요?? 다른 차이점도 있다면 무엇이 있는지 알고싶습니다. :)