묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
7강 GameMode와 Modules관련 질문드립니다.
안녕하세요. 강의 잘 듣고 있으며 좋은 강의를 해주셔서 감사드립니다.7강에서 GameMode는 무겁기 때문에 하나의 GameMode를 사용하고 GameMode 변경 대신 모듈을 이용하여 이러한 무거움의 단점을 보완 했다고 설명 하는 것으로 이해 했습니다.Level 변경 시, GameMode는 World에 종속되어 있고 Level 별로 동일한 GameMode 클래스를 이용하더라도 World가 바뀌기 때문에 GameMode도 Actor에 해당하고 GC되고 새로운 GameMode 인스턴스를 사용하기 때문에 설명 하신 부분과 상이하다는 생각입니다.즉, '생성 비용'이 아니라 '유연성과 확장성'을 위해 이 러한 방식을 택한 것이 아닐까요?
-
미해결디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
수강기간 변경관련
Q&A들을 보다보니 기존 수강자들도 수강기간을 무제한으로 변경 가능하다는 내용이 있어 수강기간 무제한으로 변경 요청드리고 싶습니다.
-
미해결
안녕하세요! 강사님!
안녕하세요! 강사님~! 강사님의 인스타그램이나 유튜브 등 sns 계정이 있으신지 궁금합니다! 개별 메세지할 방법이 있을까요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문
강사님 안녕하세요 WITH절로 조인하셨을때아래와 같이 WHERE절에서 product_id를비교했을때와 조인조건으로 넣었을때 같은 실행계획과 성능이 나오는것 같은데둘다 맞다고 봐도 되나요?조인조건에 있는 것과 where조건에 있는 것이어떤 차이가 있는지 잘 모르겠어서요![궁금한 사항]jointemp_00bona.user_id = b.user_idanda.product_id != b.product_id--where a.product_id != b.product_id [전체쿼리]withtemp_00as (selectb.user_id , a.order_id , a.product_idfromorder_itemsajoinordersbona.order_id = b.order_id),temp_01as (selecta.user_id ,a.product_idasprod_01 , b.product_idasprod_02fromtemp_00ajointemp_00bona.user_id = b.user_idanda.product_id != b.product_id--where a.product_id != b.product_id)selectcount(*) fromtemp_01
-
미해결아바타 커뮤니티앱 만들기 (React Native Expo)
댓글 버튼 하단에 고정되지 않는 이슈
node 버전 : v24.11.1[id.tsx] 파일입니다. 현재 상세 페이지를 가면 아래와 같이 댓글 버튼이 상단으로 올라오는 현상이 생겼습니다. 또한 답글 남기기를 눌러도 focus는 댓글 input으로 되지만, 화면처럼 스크롤이 내려가는 현상은 안나타납니다. npx expo start를 이용하여, 실기기로 테스트한겁니다!import AuthRoute from "@/components/AuthRoute"; import CommentItem from "@/components/CommentItem"; import FeedItem from "@/components/FeedItem"; import InputField from "@/components/InputField"; import { colors } from "@/constants"; import useCreateComment from "@/hooks/queries/useCreateComment"; import useGetPost from "@/hooks/queries/useGetPost"; import useKeyboard from "@/hooks/useKeyboard"; import { useLocalSearchParams } from "expo-router"; import { Fragment, useRef, useState } from "react"; import { Keyboard, KeyboardAvoidingView, Platform, Pressable, ScrollView, StyleSheet, Text, TextInput, View, } from "react-native"; import { SafeAreaView, useSafeAreaInsets, } from "react-native-safe-area-context"; export default function PostDetailScreen() { const { id } = useLocalSearchParams(); const { data: post, isPending, isError } = useGetPost(Number(id)); const createComment = useCreateComment(); const [content, setContent] = useState(""); const scrollRef = useRef<ScrollView | null>(null); const inputRef = useRef<TextInput | null>(null); const [parentCommentId, setParentCommentId] = useState<number | null>(null); const { isKeyboardVisible } = useKeyboard(); const insets = useSafeAreaInsets(); if (isPending || isError) { return <></>; } const handleReply = (commentId: number) => { setParentCommentId(commentId); inputRef.current?.focus(); }; const handleCancelReply = () => { setParentCommentId(null); Keyboard.dismiss(); }; const handleSubmitComment = () => { const commentData = { postId: post.id, content: content, }; if (parentCommentId) { createComment.mutate({ ...commentData, parentCommentId }); setContent(""); handleCancelReply(); return; } if (parentCommentId) { createComment.mutate({ ...commentData, parentCommentId }); setContent(""); handleCancelReply(); return; } createComment.mutate(commentData); setContent(""); setTimeout(() => { scrollRef.current?.scrollToEnd(); }, 500); }; return ( <AuthRoute> <SafeAreaView style={styles.container} edges={["right", "left", "bottom"]} > <KeyboardAvoidingView contentContainerStyle={styles.awareScrollViewContainer} behavior="height" keyboardVerticalOffset={ Platform.OS === "ios" || isKeyboardVisible ? 100 : insets.bottom } > <ScrollView ref={scrollRef} style={{ marginBottom: 75 }} contentContainerStyle={styles.scrollViewContainer} > <View style={{ marginTop: 12 }}> <FeedItem post={post} isDetail /> <Text style={styles.commentCount}> 댓글 {post.commentCount}개 </Text> </View> {post.comments?.map((comment) => ( <Fragment key={comment.id}> <CommentItem parentCommentId={parentCommentId} onReply={() => handleReply(comment.id)} onCancelReply={handleCancelReply} comment={comment} /> {comment.replies.map((reply) => ( <CommentItem key={reply.id} comment={reply} isReply /> ))} </Fragment> ))} </ScrollView> <View style={styles.commentInputContainer}> <InputField ref={inputRef} value={content} returnKeyType="send" onSubmitEditing={handleSubmitComment} onChangeText={(text) => setContent(text)} placeholder={ parentCommentId ? "답글 남기는중..." : "댓글을 남겨보세요." } rightChild={ <Pressable disabled={!content} style={styles.inputButtonContainer} onPress={handleSubmitComment} > <Text style={styles.inputButtonText}>등록</Text> </Pressable> } /> </View> </KeyboardAvoidingView> </SafeAreaView> </AuthRoute> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: colors.WHITE, }, awareScrollViewContainer: { flex: 1, backgroundColor: colors.GRAY_200, }, scrollViewContainer: { backgroundColor: colors.GRAY_200, }, commentCount: { marginTop: 12, backgroundColor: colors.WHITE, paddingVertical: 12, paddingHorizontal: 16, fontSize: 16, fontWeight: "bold", }, commentInputContainer: { width: "100%", borderTopColor: colors.GRAY_200, borderTopWidth: StyleSheet.hairlineWidth, backgroundColor: colors.WHITE, padding: 16, bottom: 0, position: "absolute", }, inputButtonContainer: { backgroundColor: colors.ORANGE_600, padding: 8, borderRadius: 5, }, inputButtonText: { color: colors.WHITE, fontWeight: "bold", }, });
-
미해결비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)
보상 트랜잭션을 위한 catch 문 안에서 에러가 발생한다면 어떻게 되는 건가요?
만약 에러가 나서 보상 트랜잭션이 발생했는데 거기서 또 에러가 난다면 따로 모니터링 시스템 같은 걸 구축해서 추후에 수동으로 롤백을 시켜주어야하는 방식일까요? (동기식 일때 입니다!)
-
미해결원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
Img 생성 시 오류
다른 질문에도 있는 것 같은데, 이미지 생성 시 자꾸 이런식으로 새로운 cell 을 만들어냅니다. 해결 방법이 있을까요?
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
10강 google sheet 관련 질문
선생님 안녕하세요좋은 강의 감사합니다. 10강(Brave API를 활용해서 n8n으로 작성하는 뉴스 감정 분석 (n8n -> gspread))를 듣는 과정에서 질문이 생겨서 문의드립니다.강의 14:23 부분에서 loop over items에서 항목들이 안넘어와서 선생님은 llm이 output을 주도록 하셨는데요, 저는 해보니 되더라고요..?이러면 굳이 llm output을 안받아와도 되는것이죠?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
안녕하세요 남박사님! 궁금한점이 있어 질문드립니다.
안녕하세요 남박사님, n8n강의를 너무 재밌게 보고 있습니다! 제가 플랫폼을 개발하고 있는데 여기에 n8n기술을 어떻게 접목시킬 수 있는지 궁금해서 문의드립니다. n8n에서 각자의 이메일을 설정해서 이메일을 발송할 수 있잖아요.이 기능을 제가 만든 홈페이지에 도입하고 싶은데 방법이 있을까요...? 제가 만들고 있는 사이트는 인플루언서 정보를 모았고 인플루언서에게 이메일을 보낼 수 있는 기능을 구현하고 있는데, 이메일을 보내는 기능을 n8n으로 하면 되겠다! 생각을 했는데 어떻게 해야할지 아예 감이 안와서요... 추가로 남박사님이 알려주신대로 콘타보에서 서버를 구매했는데 고객이 만약에 각자의 이메일을 등록해서 이메일을 발송한다고 했을 때 이때는 api 과호출? 로 오류가 문제가 생기는 일은 없을까요?
-
미해결[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
4주 1회차 과제
두 요소를 모두 사용 하나, 각각 다른 용도로 쓸 것입니다. is_host 용도: 호스트 전용 엔드포인트 접근 통제 및 UI 메뉴 노출, 권한 기반 라우팅 호스트를 위한 endpoint API 에 대한 이용 허가 여부를 결정하는 호스트의 access token 생성 및 엔드포인트 함수 내의 조건문을 위해 필요한 모델 필드라고 생각합니다. 예상되는 우려점은 호스트 유저가 더이상 host가 되지 않을 때, host를 위한 API의 이용 허가를 거부 해야하기 때문에 is_host 필드값의 확실한 업데이트가 필요합니다. 사용자 캘린더 보유 여부 용도: 실제 예약 생성/동기화가 필요한 시점에 필수 체크, 호스트의 온보딩 플로우의 완료조건 게스트의 성공적인 Booking 을 위해서는 실제 캘린더에 대한 접근이 필요하기 때문에, 호스트는 게스트가 Booking 하기 위해서는 캘린더를 무조건 보유해야 합니다. 예상되는 우려점은 호스트의 캘린더는 호스트가 Booking을 받을 준비가 되있다면 항상 존재 해야하며, 실제 올바른 호스트에 매핑이 되어야합니다. 만약 캘린더가 존재 하지않거나, 호스트 캘린더 ID 에 대한 검증이 제대로 동작 하지 않는다면, 게스트의 Booking 이 실패로 이어지거나 다른 호스트 캘린더에 등록이 될 수 있습니다.
-
미해결[6주 과정] 『혼자 공부하는 바이브 코딩 with 클로드 코드』 완독 챌린지
첨부파일
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
안녕하세요! 11. 그래프와 인접행렬 강의를 듣다가 질문이 생겨 글을 남깁니다.가중치 방향 그래프에서 가중치가 0인 간선이 문제 특성상 의미가 있을 경우 가중치가 0인 간선을 자바로 표현하는 방법이 있을까요? 기존처럼 0으로 표현해 버리면 간선이 없는 경우와 구분하기 어려울 것 같아서요.검색 해보니 그런 경우에는 double 타입 행렬을 선언하고 간선이 없을 때 Double.POSITIVE_INFINITY 를 쓰는 것 같긴 한데 맞는 방법일까요? 그런 기법이 코딩테스트 풀 때 사용되는지도 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Update 후 UpdateMemberResponse 매핑할 때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]update하고 응답할 때 어차피 request dto에 응답할 파라메터 값이 담겨져있는데 해당 값을 response dto에 할당해서 응답하면 되지 않을까요? 즉 제가 구상한 코드는 다음과 같습니다. @Operation(summary = "회원 수정") @PutMapping("{id}") public UpdateMemberResponse updateMemberV1(@Validated @RequestBody MemberUpdateDTO memberUpdateDTO, BindingResult bindingResult, @PathVariable("id") Long id){ memberService.update(memberUpdateDTO, id); return new UpdateMemberResponse(id, memberUpdateDTO.getName(), memberUpdateDTO.getCity(), memberUpdateDTO.getStreet(), memberUpdateDTO.getZipcode()); }굳이 컨트롤러단에서 memberService.findOne(id)를 select문을 날려서 호출해서 준영속상태의 Member 엔티티의 값을 response dto에 할당하는 이유가 있을까요?
-
미해결[4주 완독X실습 챌린지] <커서×AI로 완성하는 나만의 웹서비스> 함께 읽고, 함께 만들어요!
ai 할일 생성 기능 구현하기에서 오류
ai 할일 생성 기능 구현하기에서 해당 오류가 계속 나와서 진행을 하지 못하고 있습니다. 해결 방법이 궁금합니다.
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지 (with 커서 AI)
미션5 이미지 첨부
맥, 클로드코드2.1.5, haiku 모델로 사용중인데 플랜모드 뿐 아니라 모든 모드에서 이미지 붙여넣기가 안되네요 다른곳에는 붙여놓기가 됩니다 아래처럼요
-
미해결옵시디언 마스터 클래스(생산성을 바꾸는 기록 습관)
데일리노트 폴더 관리 관련 질문
안녕하세요 Part 3. 데일리 노트 활용법 파트를 전부 듣고 난 뒤 궁금즘이 생겨 질문을 남깁니다.dailnote 형식을 생성하고 난 뒤 지속적으로 일일 노트 파일을 생성하다 보면 상당히 파일이 많이 쌓여서 비효율적으로 만들어지게 되는 상황이 발생될 것으로 예상됩니다. 이러한 상황 속에서 폴더 관리를 어떻게 진행해야 될 지 모르겠어서 질문을 드립니다.폴더 구조를 자동으로 만들어서 주차별로 보관할 수 있는 자동화 기능이나 플러그인이 있는 지 여쭤보고 싶습니다.강의에서는 나오지 않았지만 제가 직접 일일이 넣어서 보관해야 되는 것인지 여쭤보고 싶습니다.또한 일정 템플릿을 만들어서 관리하고 싶은 파일들이 있는데 그러한 것들도 어떠한 방식으로 폴더를 생성하고 파일을 자동화해서 저장할 수 있는 방법이 있는 지 궁금합니다. (단순히 일일 노트만이 아니라 강의 내용 작성 템플릿, 과제 작성 템플릿 등의 템플릿 생성)
-
미해결코테의 바이블 [java]
섹션6에 있는 [코테 TIP] visited 초기화 부분이 자바 내용이 아니라 파이썬으로 되어있습니다
섹션6에 있는 [코테 TIP] visited 초기화 부분이 자바 내용이 아니라 파이썬으로 되어있습니다.자바 내용으로 최신화해주셔야 될 것 같습니다
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
4주 3회차 과제
중복 예약을 데이터베이스의 고유값 제약으로 예방하는 방법조건은 1)동일 일자와 동일 타임 슬롯인 경우 중복으로 간주 2)약속(부킹)이 취소되어 attendance_status 모델 필드값이 cancellled인 경우 예약 가능 위를 구현하기 위해 데이터베이스에게 아래 정보가 고유해야 한다는 특별한 규칙을 알려줄 수 있습니다.1)누가 예약하는지2)언제 예약하는지3)어느 시간대에 예약하는지 위의 세가지가 모두 같으면 중복 예약이라고 판단 합니다. 취소된 재예약은 가능하게 하기 위해고유성 규칙에 한가지 예외를 부여합니다.호스트, 날짜, 시간 슬롯의 조합은 고유해야 한다. 예외적으로 예약상태가 "취소됨"이라면 그 예약은 위의 고유성 규칙을 무시해 달라고 합니다. 새로운 예약 생성 시:데이터베이스는 예약하려는 호스트, 날짜, 시간슬롯 정보를 보고, 현재 '취소됨' 상태가 아닌 다른 예약이 이미 있는지 찾아봅니다.만약 '취소됨' 상태가 아닌 다른 예약이 이미 같은 자리에 있다면, 데이터베이스는 "안돼! 이미 예약된 자리야!"라고 하며 새로운 예약을 저장하지 못하게 합니다.만약 같은 자리에 '취소됨' 상태가 아닌 예약이 없다면, 데이터베이스는 새로운 예약을 성공적으로 저장합니다.예약 취소 시:어떤 예약이 '취소됨(cancelled)' 상태로 변경되면, 데이터베이스의 이 "특별한 규칙"은 그 취소된 예약을 더 이상 고유성 검사 대상에서 제외합니다.이제 그 자리는 "비어있는" 것처럼 간주되므로, 다른 사람이 같은 호스트, 날짜, 시간슬롯 정로 새로운 예약을 만들 수 있게 됩니다.
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
4주 1회차 과제
사용자가 호스트인지 두 가지 방법으로 확인 가능합니다. 1. User 모델에 선언한 is_host 모델 필드가 True인지 확인 2.사용자가 캘린더를 보유했는지 확인 이 중 두 가지 방법 모두를 사용해야 한다고 생각합니다.1. User 모델에 선언한 is_host 모델 필드가 True인지 확인 -> 관점적 측면에서 명시적이고 관리적인 역할 및 자격을 부여합니다. 즉 사용자가 호스트로 자격이 있다는 것을 의미합니다. 관리자가 특정 사용자를 호스트로 지정하거나 해제하는데 사용할 수 있고 캘린더의 유무와 별개로 관리가 가능하게 서비스의 효율을 향상시켜 줍니다. 2.사용자가 캘린더를 보유했는지 확인->실제 예약 요청이 들어 왔을 때 해당 호스트가 유효한 캘린더를 보유하고 있는지 확인하는 최종적인 역할을 할 수 있습니다. 즉 위의 두 정보가 모두 필요한 이유는 존재하지 않는 사용자의 username으로 캘린더 정보를 가져오려고 하거나 호스트가 아닌 사용자의 username으로 캘린더 정보를 가져오려고 하는 시도를 막을 수 있을것으로 예상됩니다. 요약하면 is host는 "호스트로서의 신분"을, 캘린더 보유 여부는 "호스트로서의 활동을 나타내는 정보여서 모두 필요합니다.
-
미해결절대강좌! 유니티6 - UGS를 활용한 백엔드 시스템 구축
UGS 라이센스 및 요금제 관련
안녕하세요. 이전에 성남시 멘토링 진행할 때 업무에 치여 제대로 진행하지 못했었는데, 그 때도 느꼈지만 확실히 설명이 깔끔하고 좋으십니다. 이 강의 이후 다른 강의도 마저 들어보려고 합니다.질문 드릴 내용은, UGS 기능 자체는 좋으나 요금제 기준이 어느정도인지 아직 감이 제대로 오지 않습니다. 실제 요금제 표 봤을때 읽기,쓰기 월 100만회까지 무료 -> 그 뒤 추가 요금 발생 등 내용은 확인했는데.1. industry 라이센스가 있는 회사에서 unity cloud/ugs를 도입했을때 요금적으로 부담이 없을지 (콘텐츠로 요금제를 충당할 수 있을만큼 돈 벌었을 때부터 요금이 발생할거다. 등) 주관적인 내용.2. 개인으로 1인~소규모 인디 개발을 할 때 UGS를 도입한다면 이 경우에도 게임으로 돈을 벌었다. 싶을 때부터 요금이 발생할 것인지혹여 요금제에서는 확인하지 못하였으나, 1번 경우에 런타임 요금제가 있는지.요금에 관련된 주관적인 + 아시는 내용이 있다면 듣고 싶습니다. 감사합니다.