inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

토큰스튜디오에서 폰트 스타일등록 문의

해결됨

디자인 시스템 with 피그마

안녕하세요. 토큰을 배우고있는 디자이너입니다 폰트 스타일 등록시 토큰 Sizing > Scale(1.333) 값을 못불러오고 Font Size > scale(1.333)로 등록하고 불러오면 적용이됩니다 같은 카테고리(폴더)안에 scale이 있어야 적용이되는게 맞는건가요? 제가 등록을 잘못한것인지 궁금합니다.

  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
Boyoung Choi 댓글 2 좋아요 0 조회수 111

1-4 강의의 seoul-images 이미지가 원래 이런 것이 맞을까요?

해결됨

The 10x AI-Native Developer: 회사에서 AI로 압도적 성과를 내는 법

[진도] 1주차 4강 진행 중 질문: 강의 내에서 자료로 쓰이는 seoul-images 폴더내에 있는 04_N서울타워, 05_서울숲, 06_한강공원, 07_명동, 08_홍대, 09_롯데월드.jpg 각각이 각각의 장소를 나타내지 않는 것 같은데 이 이미지로 실습하는 것이 맞을까요? 프롬프트 결과는 잘 나오긴 합니다. 스크린샷: 09_롯데월드.jpg

SSAMI 댓글 2 좋아요 0 조회수 90

외부 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 역할을 하게 하는 게 나을까요?

우으어으 댓글 1 좋아요 0 조회수 24

tailwind 설치 명령어 관련 질문

해결됨

React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드

안녕하세요! 강의 노션에서는 이렇게 나와있는데 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 autoprefixer npm install -D taiㅇindcss@3 postcss autopnpm install -D tailwindcss@3 postcss autoprefixerrefixer

  • HTML/CSS
  • javascript
  • react
  • node.js
  • mongodb
seohyeon kim 댓글 2 좋아요 0 조회수 106

7강 GameMode와 Modules관련 질문드립니다.

해결됨

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

안녕하세요. 강의 잘 듣고 있으며 좋은 강의를 해주셔서 감사드립니다. 7강에서 GameMode는 무겁기 때문에 하나의 GameMode를 사용하고 GameMode 변경 대신 모듈을 이용하여 이러한 무거움의 단점을 보완 했다고 설명 하는 것으로 이해 했습니다. Level 변경 시, GameMode는 World에 종속되어 있고 Level 별로 동일한 GameMode 클래스를 이용하더라도 World가 바뀌기 때문에 GameMode도 Actor에 해당하고 GC되고 새로운 GameMode 인스턴스를 사용하기 때문에 설명 하신 부분과 상이하다는 생각입니다. 즉, '생성 비용'이 아니라 '유연성과 확장성'을 위해 이 러한 방식을 택한 것이 아닐까요?

  • c++
  • unreal-engine
DDolJJin Boss 댓글 1 좋아요 0 조회수 87

수강기간 변경관련

해결됨

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

Q&A들을 보다보니 기존 수강자들도 수강기간을 무제한으로 변경 가능하다는 내용이 있어 수강기간 무제한으로 변경 요청드리고 싶습니다.

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
accellys 댓글 2 좋아요 0 조회수 92

안녕하세요! 강사님!

미해결

안녕하세요! 강사님~! 강사님의 인스타그램이나 유튜브 등 sns 계정이 있으신지 궁금합니다! 개별 메세지할 방법이 있을까요?

댓글 1 좋아요 0 조회수 18

"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문

미해결

다양한 사례로 익히는 SQL 데이터 분석

강사님 안녕하세요 WITH절로 조인하셨을때 아래와 같이 WHERE절에서 product_id를 비교했을때와 조인조건으로 넣었을때 같은 실행계획과 성능이 나오는것 같은데 둘다 맞다고 봐도 되나요? 조인조건에 있는 것과 where조건에 있는 것이 어떤 차이가 있는지 잘 모르겠어서요! [궁금한 사항] join temp_00 b on a . user_id = b . user_id and a . product_id != b . product_id --where a.product_id != b.product_id [전체쿼리] with temp_00 as ( select b . user_id , a . order_id , a . product_id from order_items a join orders b on a . order_id = b . order_id ), temp_01 as ( select a . user_id , a . product_id as prod_01 , b . product_id as prod_02 from temp_00 a join temp_00 b on a . user_id = b . user_id and a . product_id != b . product_id --where a.product_id != b.product_id ) select count (*) from temp_01

  • sql
  • postgresql
  • dbms/rdbms
  • 데이터-엔지니어링
  • data-analysis
박준현 댓글 2 좋아요 0 조회수 92

댓글 버튼 하단에 고정되지 않는 이슈

미해결

아바타 커뮤니티앱 만들기 (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", }, });

  • react-native
  • typescript
  • expo
  • react-hook-form
  • react-query
댓글 1 좋아요 0 조회수 127

보상 트랜잭션을 위한 catch 문 안에서 에러가 발생한다면 어떻게 되는 건가요?

미해결

비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)

만약 에러가 나서 보상 트랜잭션이 발생했는데 거기서 또 에러가 난다면 따로 모니터링 시스템 같은 걸 구축해서 추후에 수동으로 롤백을 시켜주어야하는 방식일까요? (동기식 일때 입니다!)

  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • devops
김준환 댓글 2 좋아요 0 조회수 98

Img 생성 시 오류

해결됨

원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)

다른 질문에도 있는 것 같은데, 이미지 생성 시 자꾸 이런식으로 새로운 cell 을 만들어냅니다. 해결 방법이 있을까요?

  • python
  • youtube-api
  • n8n
  • ai-활용-(ax)
수현 댓글 2 좋아요 0 조회수 89

10강 google sheet 관련 질문

해결됨

회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)

선생님 안녕하세요 좋은 강의 감사합니다. 10강(Brave API를 활용해서 n8n으로 작성하는 뉴스 감정 분석 (n8n -> gspread))를 듣는 과정에서 질문이 생겨서 문의드립니다. 강의 14:23 부분에서 loop over items에서 항목들이 안넘어와서 선생님은 llm이 output을 주도록 하셨는데요, 저는 해보니 되더라고요..? 이러면 굳이 llm output을 안받아와도 되는것이죠?

  • n8n
  • 인공지능(ai)
  • langchain
  • ai-활용-(ax)
  • langgraph
nathan 댓글 1 좋아요 0 조회수 94

안녕하세요 남박사님! 궁금한점이 있어 질문드립니다.

해결됨

수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화

안녕하세요 남박사님, n8n강의를 너무 재밌게 보고 있습니다! 제가 플랫폼을 개발하고 있는데 여기에 n8n기술을 어떻게 접목시킬 수 있는지 궁금해서 문의드립니다. n8n에서 각자의 이메일을 설정해서 이메일을 발송할 수 있잖아요. 이 기능을 제가 만든 홈페이지에 도입하고 싶은데 방법이 있을까요...? 제가 만들고 있는 사이트는 인플루언서 정보를 모았고 인플루언서에게 이메일을 보낼 수 있는 기능을 구현하고 있는데, 이메일을 보내는 기능을 n8n으로 하면 되겠다! 생각을 했는데 어떻게 해야할지 아예 감이 안와서요... 추가로 남박사님이 알려주신대로 콘타보에서 서버를 구매했는데 고객이 만약에 각자의 이메일을 등록해서 이메일을 발송한다고 했을 때 이때는 api 과호출? 로 오류가 문제가 생기는 일은 없을까요?

  • docker
  • n8n
  • 인공지능(ai)
  • 프롬프트엔지니어링
  • ai-활용-(ax)
부릉부릉 댓글 2 좋아요 0 조회수 64

4주 1회차 과제

해결됨

[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>

두 요소를 모두 사용 하나, 각각 다른 용도로 쓸 것입니다. is_host 용도: 호스트 전용 엔드포인트 접근 통제 및 UI 메뉴 노출, 권한 기반 라우팅 호스트를 위한 endpoint API 에 대한 이용 허가 여부를 결정하는 호스트의 access token 생성 및 엔드포인트 함수 내의 조건문을 위해 필요한 모델 필드라고 생각합니다. 예상되는 우려점은 호스트 유저가 더이상 host가 되지 않을 때, host를 위한 API의 이용 허가를 거부 해야하기 때문에 is_host 필드값의 확실한 업데이트가 필요합니다. 사용자 캘린더 보유 여부 용도: 실제 예약 생성/동기화가 필요한 시점에 필수 체크, 호스트의 온보딩 플로우의 완료조건 게스트의 성공적인 Booking 을 위해서는 실제 캘린더에 대한 접근이 필요하기 때문에, 호스트는 게스트가 Booking 하기 위해서는 캘린더를 무조건 보유해야 합니다. 예상되는 우려점은 호스트의 캘린더는 호스트가 Booking을 받을 준비가 되있다면 항상 존재 해야하며, 실제 올바른 호스트에 매핑이 되어야합니다. 만약 캘린더가 존재 하지않거나, 호스트 캘린더 ID 에 대한 검증이 제대로 동작 하지 않는다면, 게스트의 Booking 이 실패로 이어지거나 다른 호스트 캘린더에 등록이 될 수 있습니다.

  • python
  • aws
  • tdd
  • FastAPI
  • 북-챌린지
김도균 댓글 2 좋아요 0 조회수 64

첨부파일

미해결

[6주 과정] 『혼자 공부하는 바이브 코딩 with 클로드 코드』 완독 챌린지

(사진)

  • 인공지능(ai)
  • ai-활용-(ax)
  • 바이브코딩
  • 북-챌린지
가룟유다 댓글 2 좋아요 0 조회수 121

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

안녕하세요! 11. 그래프와 인접행렬 강의를 듣다가 질문이 생겨 글을 남깁니다. 가중치 방향 그래프에서 가중치가 0인 간선이 문제 특성상 의미가 있을 경우 가중치가 0인 간선을 자바로 표현하는 방법이 있을까요? 기존처럼 0으로 표현해 버리면 간선이 없는 경우와 구분하기 어려울 것 같아서요. 검색 해보니 그런 경우에는 double 타입 행렬을 선언하고 간선이 없을 때 Double.POSITIVE_INFINITY 를 쓰는 것 같긴 한데 맞는 방법일까요? 그런 기법이 코딩테스트 풀 때 사용되는지도 궁금합니다.

  • java
  • 코딩-테스트
happyrichman 댓글 1 좋아요 0 조회수 113

Update 후 UpdateMemberResponse 매핑할 때

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 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에 할당하는 이유가 있을까요?

  • java
  • spring
  • spring-boot
  • jpa
경민 댓글 1 좋아요 0 조회수 90

ai 할일 생성 기능 구현하기에서 오류

해결됨

[4주 완독X실습 챌린지] <커서×AI로 완성하는 나만의 웹서비스> 함께 읽고, 함께 만들어요!

ai 할일 생성 기능 구현하기에서 해당 오류가 계속 나와서 진행을 하지 못하고 있습니다. 해결 방법이 궁금합니다.

  • cursor
  • gemini
  • chatgpt
  • ai-활용-(ax)
  • 북-챌린지
너목민 댓글 2 좋아요 0 조회수 113

미션5 이미지 첨부

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

맥, 클로드코드2.1.5, haiku 모델로 사용중인데 플랜모드 뿐 아니라 모든 모드에서 이미지 붙여넣기가 안되네요 다른곳에는 붙여놓기가 됩니다 아래처럼요

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
outflearn 댓글 2 좋아요 0 조회수 100

데일리노트 폴더 관리 관련 질문

해결됨

옵시디언 마스터 클래스: PKM·AI Second Brain·LLM WiKi 기초부터 실전까지

안녕하세요 Part 3. 데일리 노트 활용법 파트를 전부 듣고 난 뒤 궁금즘이 생겨 질문을 남깁니다. dailnote 형식을 생성하고 난 뒤 지속적으로 일일 노트 파일을 생성하다 보면 상당히 파일이 많이 쌓여서 비효율적으로 만들어지게 되는 상황이 발생될 것으로 예상됩니다. 이러한 상황 속에서 폴더 관리를 어떻게 진행해야 될 지 모르겠어서 질문을 드립니다. 폴더 구조를 자동으로 만들어서 주차별로 보관할 수 있는 자동화 기능이나 플러그인이 있는 지 여쭤보고 싶습니다. 강의에서는 나오지 않았지만 제가 직접 일일이 넣어서 보관해야 되는 것인지 여쭤보고 싶습니다. 또한 일정 템플릿을 만들어서 관리하고 싶은 파일들이 있는데 그러한 것들도 어떠한 방식으로 폴더를 생성하고 파일을 자동화해서 저장할 수 있는 방법이 있는 지 궁금합니다. (단순히 일일 노트만이 아니라 강의 내용 작성 템플릿, 과제 작성 템플릿 등의 템플릿 생성)

  • 업무-생산성
  • obsidian
로로로도로로 댓글 3 좋아요 0 조회수 191

인기 태그

인프런 TOP Writers

주간 인기글