묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결디자인 시스템 with 피그마
토큰스튜디오에서 폰트 스타일등록 문의
안녕하세요. 토큰을 배우고있는 디자이너입니다 폰트 스타일 등록시 토큰 Sizing > Scale(1.333) 값을 못불러오고Font Size > scale(1.333)로 등록하고 불러오면 적용이됩니다 같은 카테고리(폴더)안에 scale이 있어야 적용이되는게 맞는건가요?제가 등록을 잘못한것인지 궁금합니다.
-
미해결The 10x AI-Native Developer: 회사에서 AI로 압도적 성과를 내는 법
1-4 강의의 seoul-images 이미지가 원래 이런 것이 맞을까요?
[진도] 1주차 4강 진행 중질문:강의 내에서 자료로 쓰이는 seoul-images 폴더내에 있는 04_N서울타워, 05_서울숲, 06_한강공원, 07_명동, 08_홍대, 09_롯데월드.jpg 각각이 각각의 장소를 나타내지 않는 것 같은데 이 이미지로 실습하는 것이 맞을까요? 프롬프트 결과는 잘 나오긴 합니다.스크린샷: 09_롯데월드.jpg
-
미해결
외부 API 통합 시 데이터 제어 범위 설계 질문
상황 정리저희가 매장 관리자용 통합 예약 관리 시스템을 개발하고 있습니다.현재 시스템 구조[외부 예약 플랫폼 (네이버 같은)] ↓ 자동 연동 [매장 POS 시스템 (티오더 같은)] ↓ API 폴링 [우리 통합 관리 시스템] 고객이 외부 플랫폼에서 예약하면 POS에 자동으로 들어옴우리는 POS API를 폴링해서 예약 데이터를 가져옴우리 어드민에서 직접 예약 등록 기능도 곧 추가 예정문제 상황POS 업체에 확인해보니:API에서 외부 플랫폼 예약 구분이 안 됨 → 구분값 추가 예정외부 예약은 원칙적으로 수정 불가현재는 수정이 되지만 플랫폼 API 키가 연결 안 되어 사실상 불가능DB만 바꿔서는 의미 없고, 외부 플랫폼 API 재호출이 필요POS와 외부 플랫폼 간 연동이 아직 불완전한 상태논의된 두 가지 방향A안 (readonly 방식)- 우리 어드민 생성 예약 → POS 직접 등록 (수정 가능) - 외부 플랫폼 예약 → POS에서 폴링해서 조회만 (수정 불가) - UI에서 "외부 예약" 표시하고 수정 버튼 비활성화 - 수정 필요시 원본 플랫폼 바로가기 링크 제공 B안 (통합 수정 방식)- 모든 예약을 우리 시스템에서 직접 수정 가능하게 - 외부 예약 수정 시 POS API → 외부 플랫폼 API 호출까지 처리 장단점 분석A안 장점각 시스템의 책임 범위가 명확함동기화 정합성 이슈 없음외부 플랫폼 정책 변경에 영향 안 받음여러 플랫폼을 한 곳에서 조회만 해도 관리자 리소스 절감 효과A안 단점수정은 여전히 각 플랫폼에서 해야 함"진정한 통합 관리"는 아님B안 장점완전한 통합 관리 경험관리자가 한 곳에서 모든 예약 제어B안 단점외부 플랫폼 API 직접 연동 불가 (계약 주체가 매장)POS가 외부 플랫폼 제어 API를 제공해야 하는데 현재 없음POS-외부 플랫폼 양쪽 동기화 복잡도 높음외부 플랫폼 정책(취소규칙 등) 변경 시 계속 대응 필요문제 발생 시 책임 소재 애매질문이런 다중 오리진 데이터를 통합하는 시스템에서:readonly로 가는 게 맞을까요, 아니면 수정까지 구현해야 할까요?단계적으로 접근한다면 어떤 순서가 좋을까요?1단계: 통합 조회만2단계: POS가 API 제공하면 그때 수정 추가비슷한 사례에서 일반적으로 어떻게 접근하나요? 현재 상황에서는 A안(readonly)이 합리적이라고 판단됩니다.하지만 시간이 지나서 다음 조건들이 충족된다면:POS에서 외부 예약 플랫폼 식별값을 제공외부 예약 플랫폼 API를 저희가 제공받을 수 있음그때는 어떤 아키텍처로 가야 할까요?옵션 1: 직접 호출 방식[우리 시스템] → [외부 플랫폼 API] (직접 호출) → [POS API] (동기화용) 우리가 외부 플랫폼 API를 직접 호출POS는 조회 + 동기화 확인용으로만 사용옵션 2: POS Proxy 방식[우리 시스템] → [POS API] → [외부 플랫폼 API] POS가 외부 플랫폼 제어 API를 제공하도록 요청우리는 POS API만 호출하면 POS가 내부적으로 플랫폼 API 처리외부 플랫폼 변경사항은 POS가 책임옵션 3: readonly 유지[우리 시스템] → [POS API] (조회만) 기술적으로 가능해져도 readonly 유지각 플랫폼 바로가기만 제공어떤 방식이 일반적이고, 각 옵션의 trade-off는 무엇인가요?특히 옵션 1 vs 옵션 2에서:우리가 직접 여러 외부 API를 관리하는 게 나을까요?아니면 POS가 Proxy/Gateway 역할을 하게 하는 게 나을까요?
-
미해결React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
tailwind 설치 명령어 관련 질문
안녕하세요! 강의 노션에서는이렇게 나와있는데 npx tailwindcss init만으로는 tailwind.config.js만 설치되고, postcss.config.js는 설치가 안되는 게 아닌가요? npx tailwind init -p 명령어를 사용해야 하는지 여쭤보고 싶습니다! 그리고 위 두 명령어만 입력해서 tailwind를 사용하려고 하니 에러가 떠서 찾아보니까Vite가 postcss.config.js 읽다가 autoprefixer 플러그인을 불러오려고 했는데, 프로젝트에 autoprefixer 패키지가 설치되어 있지 않아서 터진 거야.라고 하더라구요npm install -D tailwindcss@3이 아니라 npm install -D tailwindcss@3 postcss autoprefixer 이 명령어를 사용해야 한다고 해서 사용해보니 에러가 해결된 상태입니다.노션에 적혀있는 명령어와 달라서 여쭤봅니다! npm install -D tailwindcss@3 postcss autoprefixernpm install -D taiㅇindcss@3 postcss autopnpm install -D tailwindcss@3 postcss autoprefixerrefixer
-
미해결[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 형식을 생성하고 난 뒤 지속적으로 일일 노트 파일을 생성하다 보면 상당히 파일이 많이 쌓여서 비효율적으로 만들어지게 되는 상황이 발생될 것으로 예상됩니다. 이러한 상황 속에서 폴더 관리를 어떻게 진행해야 될 지 모르겠어서 질문을 드립니다.폴더 구조를 자동으로 만들어서 주차별로 보관할 수 있는 자동화 기능이나 플러그인이 있는 지 여쭤보고 싶습니다.강의에서는 나오지 않았지만 제가 직접 일일이 넣어서 보관해야 되는 것인지 여쭤보고 싶습니다.또한 일정 템플릿을 만들어서 관리하고 싶은 파일들이 있는데 그러한 것들도 어떠한 방식으로 폴더를 생성하고 파일을 자동화해서 저장할 수 있는 방법이 있는 지 궁금합니다. (단순히 일일 노트만이 아니라 강의 내용 작성 템플릿, 과제 작성 템플릿 등의 템플릿 생성)