묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[손에 익는 Next.js] Part 1 - 공식 문서 훑어보기
비동기 호출 관련 질문있습니다!
혹시 서버 컴포넌트에서만 비동기 호출이 가능한건가요??그렇다면 서버 컴포넌트가 컴포넌트를 서버 내에서 미리 만들어 둘 때, 비동기 호출을 통해 데이터를 가져와서 이 값을 미리 가져와서 컴포넌트를 만드는 건가요??그리고 만약 그렇다면 왜 서버 컴포넌트에서만 비동기 호출이 가능하도록 만드신 건지 의도를 아시고 계신지 궁금합니다! (단순히 서버 컴포넌트의 장점 때문인건가요??)그리고 강의의 진행은 SSR을 사용한다는 가정하에 진행해주셨던 게 맞나요?? (SSG도 동일한 건가요?)
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
BeeBox의 ip주소 문제
안녕하세요일단 발생한 문제 자체는 해결을 한 상황인데요, 정확한 이유는 파악하지 못해 질문 올립니다. 다른 가상환경은 괜찮은데, BeeBox에서만 169.254.XX의 IP를 받아오는 현상이 있었습니다.강의 자료대로 따라하였는데 eth0이 아닌 eth1을 받아오고 있고avahi를 사용하고 있었습니다.스스로 해결해보기 위해 찾아보니 DHCP 서버를 사용하는 것이 아닐 때,avahi를 통해 ip주소를 받아오므로 169.254.XX의 IP를 할당받는 것이라고 하는데, 정확히 어떤 부분이 문제였는지 이해를 못하였습니다.왜 eth0을 설정하고자 했는데 eth1이 없다고 뜨며 해당 avahi를 통해 ip주소를 받아온 것인지 궁금합니다. 일단 /etc/network/interfaces에서 eth0이 아닌 eth1로 바꿔주니 정상적으로 ip를 10.0.10.100을 받아오는 것은 확인하였는데 어떤 부분이 문제였는지 이해하고 싶습니다. 아울러 이러한 eth0, eth1 등의 이름은 어떻게 지정하면 되는 것인지도 궁금합니다. 감사합니다.감사합니다 아래는 오류가 났을 당시의 내용입니다.BeeBox ifconfigDmz-net 설정 BeeBox 설정
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
카운트 부분 질문드립니다.
if(count(arr, mid)==c) {answer=mid;lt=mid+1;} else if(count(arr, mid)<c) rt=mid-1;else lt=mid+1;카운트가 c보다 큰 값인 경우에 answer=mid를 해주지 않으면 왜 오답으로 나오는지 모르겠습니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 제너릭 관련하여 질문이 있습니다.
안녕하세요. 해당 강의에 질문이 있어서 글을 남깁니다. 강의에 소개된대로 itemBuilder에 RestaurantModel 제너릭을 제공해준 경우 return PaginationListView( provider: restaurantProvider, itemBuilder: <RestaurantModel>(context, index, model) { return GestureDetector( onTap: () { Navigator.of(context).push(MaterialPageRoute( builder: (_) => RestaurantDetailScreen( id: model.id, ), )); }, child: RestaurantCard.fromModel(model: model), ); }, ); PaginationListView에 제너릭을 제공한 경우 return PaginationListView<RestaurantModel>( provider: restaurantProvider, itemBuilder: (context, index, model) { return GestureDetector( onTap: () { Navigator.of(context).push(MaterialPageRoute( builder: (_) => RestaurantDetailScreen( id: model.id, ), )); }, child: RestaurantCard.fromModel(model: model), ); }, );위 두가지 경우 중에 PaginationListView 소스를 확인하면 2번 항목이 맞는거 같은데 작동은 1번에서만 가능합니다. typedef PaginaitonWidgetBuilder<T extends IModelWithId> = Widget Function( BuildContext context, int index, T model, ); class PaginationListView<T extends IModelWithId> extends ConsumerStatefulWidget { final StateNotifierProvider<PaginationProvider, CursorPaginationBase> provider; final PaginaitonWidgetBuilder<T> itemBuilder; const PaginationListView({ super.key, required this.provider, required this.itemBuilder, }); @override ConsumerState<PaginationListView> createState() => _PaginationListViewState<T>(); }제가 생각한 해석방식은 이렇습니다.PaginationListView 생성 시 ImodelWithId를 extend 한T 타입을 제너릭으로 받습니다.따라서 itemBuilder가 아닌 PaginationListView<RestaurantModel>과 같이 제너릭을 제공한 경우, 해당 타입을 PaginationWidgetBuilder에 매핑 됩니다. 위 해석방식에서 제가 틀리게 생각한게 있나요? 에러메시지는 아래와 같습니다. The following _TypeError was thrown building: type '(BuildContext, int, RestaurantModel) => GestureDetector' is not a subtype of type '(BuildContext, int, IModelWithId) => Widget'
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
pred_proba 질문
데이터를 예측할 때 predict가 아니라 predict.proba를 사용하였을 때,데이터프레임을 제작할 때 pred_proba[:,1]로 작성하는 것을 외웠지만 [:,1]을 작성하는 이유를 모르겠어서 질문 드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 빌드가 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 자바 19버전인데 스프링부트 3.0.0이상에서는 17버전 이상으로 사용하래서 자바 19버전인데 왜 빌드가 안되는지 궁금합니다..
-
해결됨피그마 배리어블을 활용한 디자인 시스템 구축하기
4분 부분에서 궁금한점이있습니다.
앞족에서 베리어블은 스타일과 베리어블을 참조받을수있따고 설명해주셧는데 3분 20초에서는 스타일을 찾을수 없다고 말씀하셔서요. 실제로도 해보니베리어블은, 기존 베리어블을 참조할 수잇고 스타일은 참조못하고스타일은, 라이브러리에서 베리어블만 적용되고 스타일은 안된느데둘이 각각 서로 참조가 안되는 부분으로 실제 적용되는데 제가 잘못 하고 잇는걸까요? 앞에서 하신 설명과 보여주신 설명이 조금 다르게 느껴져서 혼동이오네요 ㅠ
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
45번 문제 질문 있습니다.
안녕하세요. 45번 문제 풀어보는데 달러로는 잘 나오는데위안이나 엔도 달러값으로만 나오는것 같습니다.ㅜㅜ
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
시험장 캡쳐 및 보고서 첨부방법
좋은 수업 감사합니다.세 가지 여쭤보고 싶습니다.실기 시험을 앞두고 있는데 보고서 작성시제가 확인한 프로그램 화면들을 캡쳐해서 넣고 싶을 때화면 우측 하단의 시간 날짜까지 나와야 하는지,아니면 캡쳐 중 일부만 잘라서 붙여도 되는지요?캡쳐는 일반적인 그림판 이용 외에 다른 방법이 있는지요?어떤 문제에서 캡쳐를 해줘야 하고, 어떤 문제애서 해주지 않아도 되는지 여쭤보고 싶습니다.좋은 수업에 다시 한번 감사드립니다.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
매칭리스트를 눌러도 아무 반응이 없어요
계정 여러개 생성하여 서로 매칭을 시켜 알람까지 갔는데 MY MATCHING LIST를 눌러도 아무 반응이 없네요 어디가 문제인지 봐주실 수 있을까요?전체코드 깃허브 주소 -https://github.com/alsxm4625/sogating4/commit/e1307ce30381e77d678b715b3227f2e1a00d9a09
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
노드가 검색이 안됩니다.
11:43 에서 사용하는 new state machine 이 검색이 안됩니다. context sensitive도 체크 해제해서 검색 해봐도 안보이고 혹시 이름이 바뀌었나 해서 언리얼 문서도 확인했는데 이상이 없네요 그리고 영상에서는 fwd를 연결하면 계속 반복실행이 되는데 제 상황에서는 따로 설정한 것이 없는데 1번 실행되고 반복실행이 안됩니다. 이 같은 경우는 어떻게 해결하나요?
-
미해결예제로 배우는 스프링부트 입문
26강, springboot 3.1.5에서는 에러
'org.springframework.boot' version '3.1.5'으로 실행하면 에러가 나는데요. 버전에 차이가 많이 있는 건가요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
결제오류 입니다.
코드는 전혀 문제가 없는 것 같은데, 결제창으로 넘어가지를 않습니다.코드를 보면 만약 resp 일때 OrderDoneScreen으로 넘어가도록 되어있는데, 그 resp 는 await ref.read(orderProvider.notifier).postOrder(); 이라고 했습니다.그렇다면 이 resp가 이 상태가 아니라는 건데, 이걸 어떻게 확인을 하면 좋을까요?에러의 이유로는 'type 'Null' is not a subtype of type 'String' in type cast' 라고 나옵니다.저번에는 재설치 하면 넘어갔었는데, 이번에는 아무리 모든 코드를 검사해봐도 이유를 모르겠습니다 ㅠSizedBox( width: double.infinity, child: ElevatedButton( onPressed: () async { final resp = await ref.read(orderProvider.notifier).postOrder(); if (resp) { context.goNamed(OrderDoneScreen.routeName); } else { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( '결제 실패!', ), ), ); }
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
테스트 더블
덕분에 테스트에 대해 흥미를 가지고 공부중에 있습니다.테스트 공부하면서 한가지 궁금한 점이 있습니다. 혹시, Mock, Stub, Fake 등 상황에 따라 구분해서 사용하고 계신가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
카카오맵 이 출력이 안되요
window.kakao에 underfined로 나와요...
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS 종화 문제 질문드립니다.
안녕하세요. 선생님멀어 보였던 DFS를 이해하고 코딩하고 있다는게 놀라운 수강생입니다. 종화는 방구쟁이야 문제 관련되서 궁금한게 있어 질문드립니다. 저 같은 경우에 visited를 빼고 하나의 함수로 구현하였습니다.이렇게 구현해도 괜찮을까요? 제 풀이가 맞을지 걱정되서 질문 남깁니다.감사합니다. http://boj.kr/6dccc9b963c543a0bd537144b48beb0a
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
컨슈머 랙 모니터링 질문
안녕하세요. 강의 잘 듣고 있습니다! 컨슈머 랙 모니터링 부분 강의를 듣고 있는데 의문이 생겨서 질문 드립니다. 컨슈머 랙을 모니터링하다가 사용량이 많아지게 되면 데이터 처리를 위해 컨슈머 개수와 파티션 개수를 늘려 병렬 처리량을 늘리는 방법이 좋다라고 말씀 하셨는데요. 이전 강의에서는 파티션 수를 늘리면 다시 줄일 수 없기 때문에 처음에 잘 선정해야 한다라고 들어서 이 부분이 약간 헷갈리는 거 같습니다. 많은 데이터량을 처리하려면 파티션 수를 늘리는 방법말고는 없을 거 같은데 설날같이 일시적인 트래픽이 증가하는 날을 위해 평소에도 과도한 파티션 수로 운영하는게 더 좋을까라는 의문도 같이 생기네요. 혹시 현업에서는 어떠한 방식으로 처리하고 있으신가요? 좋은 강의 감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
8강 Getter Setter 에 대한 질문이 있습니다.
안녕하세요 교수님.CPP에 대한 이해가 아직 많이 부족해서 수업을 듣던 중 질문이 생겼습니다. 조금 이상한 질문일 수도 있을것같은데,FString 멤버 변수의 Getter Setter 멤버 함수는FORCEINLINE FString& GetName() { return Name; }FORCEINLINE void SetName(const FString& InName) { Name = InName; }이렇게 인라인 함수 선언과 참조자 반환으로 성능을 중시한 반면, ECardType 열거형 멤버 변수의 Getter Setter의 경우에는ECardType GetCardType() const { return CardType; }void SetCardType(ECardType InCardType) { CardType = InCardType; }이렇게 선언하여 안정성을 추구한 것처럼 보이는데, 이런 설계 이유나 판단 기준이 무엇인가요? 객체의 크기와 특성에 따라 적절한 설계 방법이 조금씩 다르기 때문일까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
retweet 관련 질문이 있습니다.
다름이 아니라 리트윗빼고는 문제가 없습니다.하지만 리트윗을 하게 되면 데이터베이스에 userid가 null로 들어가면서 게시글을 불러올때 userid가 없기때문에 오류가 나는 것으로 보입니다... 해결해보려고 노력하는 중입니다만 어디가 문제인지 잘 모르겠습니다.const express = require("express"); const multer = require("multer"); const path = require("path"); const fs = require("fs"); const { Post, Image, Comment, User, Hashtag } = require("../models"); const { isLoggedIn } = require("./middlewares"); const router = express.Router(); try { fs.accessSync("uploads"); } catch (error) { console.log("uploads폴더가 없으므로 생성합니다."); fs.mkdirSync("uploads"); } const upload = multer({ storage: multer.diskStorage({ //어디에 저장할지 diskStorage => 하드디스크에 저장 destination(req, file, done) { done(null, "uploads"); }, filename(req, file, done) { // 제로초.png const ext = path.extname(file.originalname); // 확장자 추출(.png) const basename = path.basename(file.originalname, ext); // 제로초 done(null, basename + "_" + new Date().getTime() + ext); // 제로초15184712891.png }, }), limits: { fileSize: 20 * 1024 * 1024 }, // 20MB }); router.post("/", isLoggedIn, upload.none(), async (req, res, next) => { // 보기에는 "/"로 되어있지만 실제로는 "/post"로 되어있다. try { const hashtags = req.body.content.match(/#[^\s#]+/g); //hashtag 정규식 const post = await Post.create({ content: req.body.content, UserId: req.user.id, }); if (hashtags) { const result = await Promise.all( hashtags.map( (tag) => Hashtag.findOrCreate({ //있으면 가져오고 없으면 추가해라 where: { name: tag.slice(1).toLowerCase() }, }) //[[노드, true], [리액트, true]] 이런식으로 나옴 //slice는 글자만 떼기 위해 ex ) #react인 경우 react만 꺼냄 ) ); await post.addHashtags(result.map((v) => v[0])); //위에 같은 형식이기 때문에 0번째만 꺼내야함 } if (req.body.image) { if (Array.isArray(req.body.image)) { //여러개의 이미지를 올린 경우 const images = await Promise.all( req.body.image.map((image) => Image.create({ src: image })) ); await post.addImages(images); } else { const image = await Image.create({ src: req.body.image }); await post.addImages(image); } } const fullPost = await Post.findOne({ where: { id: post.id }, include: [ { model: Image, }, { model: Comment, include: [ { model: User, //댓글 작성자 attributes: ["id", "nickname"], }, ], }, { model: User, //게시글 작성자 attributes: ["id", "nickname"], }, { model: User, //좋아요 누른 사람 as: "Likers", attributes: ["id"], }, ], }); res.status(201).json(fullPost); //다시 프론트로 돌려주기 } catch (error) { console.error(error); next(error); } }); router.post("/:postId/comment", isLoggedIn, async (req, res, next) => { //:postId는 동적으로 바뀐다. //POST /post/comment // 보기에는 "/"로 되어있지만 실제로는 "/post"로 되어있다. try { const post = await Post.findOne({ //이 게시물이 진짜 있는지. where: { id: req.params.postId }, }); if (!post) { return res.status(403).send("존재하지 않는 게시글입니다."); } const comment = await Comment.create({ content: req.body.content, PostId: parseInt(req.params.postId, 10), //문자열로 넘어가기 때문에 int형으로 바꿔줘야한다. UserId: req.user.id, }); const fullComment = await Comment.findOne({ where: { id: comment.id }, include: [ { model: User, attributes: ["id", "nickname"], }, ], }); res.status(201).json(fullComment); } catch (error) { console.error(error); next(error); } }); router.patch("/:postId/like", isLoggedIn, async (req, res, next) => { //PATCH /post/1/like\ try { const post = await Post.findOne({ where: { id: req.params.postId } }); if (!post) { return res.status(403).send("게시글이 존재하지 않습니다."); } await post.addLikers(req.user.id); res.json({ PostId: post.id, UserId: req.user.id }); } catch (error) { console.error(error); next(error); } }); router.delete("/:postId/like", isLoggedIn, async (req, res, next) => { //DELETE /post/1/like try { const post = await Post.findOne({ where: { id: req.params.postId } }); if (!post) { return res.status(403).send("게시글이 존재하지 않습니다."); } await post.removeLikers(req.user.id); res.json({ PostId: post.id, UserId: req.user.id }); } catch (error) { console.error(error); next(error); } }); router.delete("/:postId", isLoggedIn, async (req, res, next) => { // DELETE /post/10 try { await Post.destroy({ where: { id: req.params.postId, UserId: req.user.id, }, }); res.status(200).json({ PostId: parseInt(req.params.postId, 10) }); } catch (error) { console.error(error); next(error); } }); router.post( "/images", isLoggedIn, upload.array("image"), //PostForm.js에서input에 올린 이미지가 배열로 들어감 (이미지를 여러장 올릴 수 있게 하기 위해서) async (req, res, next) => { // POST /post/images/ //이곳은 이미지 업로드 후 실행되는 부분, 업로드는 위에 upload에서 이미 다 올라감 console.log(req.files); res.json(req.files.map((v) => v.filename)); //프론트로 보내줌 } ); router.post("/:postId/retweet", isLoggedIn, async (req, res, next) => { // POST /post/1/retweet try { const post = await Post.findOne({ where: { id: req.params.postId }, include: [ { model: Post, as: "Retweet", }, ], }); if (!post) { return res.status(403).send("존재하지 않는 게시글입니다."); } if ( req.user.id === post.UserId || (post.Retweet && post.Retweet.UserId === req.user.id) ) { return res.status(403).send("자신의 글은 리트윗할 수 없습니다."); } const retweetTargetId = post.RetweetId || post.id; const exPost = await Post.findOne({ where: { UserId: req.user.id, RetweetId: retweetTargetId, }, }); if (exPost) { return res.status(403).send("이미 리트윗했습니다."); } const retweet = await Post.create({ UserId: req.user.id, RetweetId: retweetTargetId, content: "retweet", }); const retweetWithPrevPost = await Post.findOne({ where: { id: retweet.id }, include: [ { model: Post, as: "Retweet", include: [ { model: User, attributes: ["id", "nickname"], }, { model: Image, }, ], }, { model: User, attributes: ["id", "nickname"], }, { model: Image, }, { model: Comment, include: [ { model: User, attributes: ["id", "nickname"], }, ], }, ], }); res.status(201).json(retweetWithPrevPost); } catch (error) { console.error(error); next(error); } }); module.exports = router; //node에서는 import와 export defau lt를 사용하지 않고 require를 사용한다. //리트윗 case RETWEET_REQUEST: draft.retweetDone = false; draft.retweetLoading = true; draft.retweetError = null; break; case RETWEET_SUCCESS: draft.retweetLoading = false; draft.retweetDone = true; draft.mainPosts.unshift(action.data); break; case RETWEET_FAILURE: draft.retweetLoading = false; draft.retweetError = action.error; break; default: break; } }); export default reducer;//리트윗 function retweetAPI(data) { return axios.post(`/post/${data}/retweet`); //data는 formdata다 } function* retweet(action) { try { const result = yield call(retweetAPI, action.data); yield put({ type: RETWEET_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ type: RETWEET_FAILURE, error: err.response.data }); } }
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
카이제곱 독립성 검정에서 각 항목의 빈도수가 이상하게 나와요.
import pandas as pd df = pd.DataFrame({ '남자': {'합격': 100, '불합격': 200}, '여자': {'합격': 130, '불합격': 170}}) from scipy.stats import chi2_contingency chi2_contingency(df)Chi2ContingencyResult(statistic=5.929494712103407, pvalue=0.01488951060599475, dof=1, expected_freq=array([[115., 115.], [185., 185.]]))위 코드를 실행하면 expected_freq 값이 행별로 동일하게 나오는데.. 혹시 이유가 있을까요?