묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
도메인 이름
강의에서 이세계의 집 주소 별칭을 현실 세계의 도메인으로 빗대어 설명해 주신 부분에 대한 질문입니다.1. 강의를 들을 때 '서울에 있는 컴퓨터' == 강의를 듣고 있는 내 노트북, '대전에 있는 컴퓨터' == 인프런 사이트의 서버 쯤으로 이해하는 게 맞을까요?처음에는 간단하게 친구 컴퓨터와 내 컴퓨터 사이의 카카오톡으로 데이터를 주고 받는 상황 으로 이해 헀는데, '대전에 있는 컴퓨터'의 주소에 도메인 이름이 붙는 걸 보니 이해가 안 가더라구요. 내 컴퓨터에 spring.com 이라는 주소 이름이 붙을리가 없으니까요.친구 컴퓨터와 내 컴퓨터 사이의 카카오톡 통신은 '친구 노트북와 카카오 서버와의 통신' + '카카오 서버와 내 노트북의 통신' 으로 나뉜다고 이해하는 게 맞을까요? 만약 위에서 카카오톡을 예시로 든 내용이 맞는 내용이라면 추가로 더 궁금한 게 있습니다.채팅 어플에선 어떤 HTTP Method를 사용하나요? 내가 친구에게 카톡을 보낸다면 POST 같은 메소드를 쓸 수 있을 것 같긴한데, 그건 내가 '보내기' 버튼을 이용해서 카카오 서버에 요청하는 것으로 생각해봤습니다. 그런데 친구에게서 오는 카톡은 어떻게 나에게 오는 건지는 도무지 생각이 나질 않습니다. 내 컴퓨터에서 카톡 서버에 실시간으로 계속해서 GET과 같은 메소드로 요청을 하는 것은 아닌 것 같아서요. 카카오와 같은 서버가 내 컴퓨터로 요청하는 경우가 있다면, 내 컴퓨터는 따로 도메인 주소를 갖고 있지 않으니 그냥 내 컴퓨터 IP를 사용하나요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
메모리 맵 질문
메모리 맵 자체는 data width가 1바이트인데, 0xE000ED00의가 가리키는 값은 왜 4바이트 인가요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
오답처리 원인
import java.util.ArrayList; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; Maininf = new Main(); ArrayList<Integer> answerList = inf.solution(nums); for (int i : answerList) { System.out.print(i + " "); } } public ArrayList<Integer> solution(int[] nums) { ArrayList<Integer> answerList = new ArrayList<>(); answerList.add(nums[0]); for (int i = 1; i < nums.length; i++) { if(nums[i] > nums[i-1]) { answerList.add(nums[i]); } } return answerList; } }위는 제 코드인데.. IDE에서는 결과가 잘 리턴되는데, 채점 사이트에서 리턴이 자꾸 0으로 나온다고 오답처리합니다..! 문제가 뭔지 모르겠습니다
-
미해결Practical Testing: 실용적인 테스트 가이드
Controller와 Service간의 requestDto를 구분하는 측면
충분히 공감가고 이해되는 내용입니다! 좋은 내용 설명해주셔서 감사합니다!그렇다면 responseDto도 순수 서비스 응답과 ,각 컨트롤러 별 응답으로 구분하는게 좋을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
video 버튼 만들기에서 Stack 이 잘안됩니다.
import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:video_player/video_player.dart'; class CustomVideoPlayer extends StatefulWidget { final XFile video; const CustomVideoPlayer({required this.video, super.key}); @override State<CustomVideoPlayer> createState() => _CustomVideoPlayerState(); } class _CustomVideoPlayerState extends State<CustomVideoPlayer> { // 비디오 플레이어 같은 경우 컨트롤러를 사용해서 위젯을 구성해 줘야한다. VideoPlayerController? videoController; @override void initState() { super.initState(); initializeController(); } initializeController() async { videoController = VideoPlayerController.file( File(widget.video.path), // 이미지 피커에서 가져온 XFile 이랑 형식이 같지않아 dart:io 에 File에다가 변경해줘서 넣어준다. ); // 초기화하라 await videoController!.initialize(); setState(() {}); } @override Widget build(BuildContext context) { if (videoController == null) { return CircularProgressIndicator(); } return AspectRatio( // 비율 맞추는 위젯, 옵션 aspectRatio: videoController!.value.aspectRatio, child: Stack(children: [ VideoPlayer( videoController!, ), _Controler(), ]), ); } } class _Controler extends StatelessWidget { const _Controler({super.key}); @override Widget build(BuildContext context) { return Container( color: Colors.black.withOpacity(0.5), child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ renderIconButton( onPressed: () {}, iconData: Icons.rotate_left, ), renderIconButton( onPressed: () {}, iconData: Icons.play_arrow, ), renderIconButton( onPressed: () {}, iconData: Icons.rotate_right, ), ], ), ); } Widget renderIconButton({ required VoidCallback onPressed, required IconData iconData, }) { return IconButton( onPressed: onPressed, iconSize: 30.0, color: Colors.white, icon: Icon(iconData), ); } }해당 코드 로직입니다.!
-
미해결함수형 프로그래밍과 JavaScript ES6+
flatMap 관련 질문드립니다~
안녕하세요 선생님~~지금까지 모르는거 있어도 그냥 계속 반복해서 보고, log 찍어보면서 해결했는데flatMap 부분에서 도저히 이해 안 가는 부분이 있어서 이렇게 질문드립니다 ㅠㅠ.. 우선 왜 map을 먼저하는지 모르겠습니다..중첩배열을 먼저 평탄화 시켜주고 그 다음 map을 했을때에는 예상치 못한 결과나 에러가 발생하지 않았는데요.map을 먼저 하게 되면 중첩 배열을 받아서 전달된 함수를 실행하는 부분에서 계속 결과값이 이상해 집니다... ㅠㅠ사실 당연한 결과인데 map이든 L.map이든 [1,2,[3,4],[5]] 이런 중첩배열을 받아서 순회를 하고a => a+10 이런 함수를 실행하면 당연히 결과 값이 이상해지는데 선생님 코드에서는 어떻게 제대로 작동 되는 건지 궁금합니다...;;만약 L.flatMap(a => a, [1, 2, [3, 4], [5]]) 이런식으로 하면 그냥 a를 반환만 하니까 중첩배열이 반환 되고 L.flatten 에서 평탄화 되니까 별문제 없는데 a =>a +10 이런식의 함수를 넘겨주면 결과값이 이상해집니다...ㅠ 뭐가 문제 인지 힌트 부탁드립니다~ const curry = fn => (a, ...args) => args.length ? fn(a, ...args) : (...args) => fn(a, ...args); const reduce = (fn, iter, acc) => { if (!acc) { iter = iter[Symbol.iterator](); acc = iter.next().value; } for (const a of iter) { acc = fn(acc, a); } return acc; } const L = {}; L.map = curry(function* (fn, iter) { for (const a of iter) { yield fn(a) } }); const isIterable = (a) => a && a[Symbol.iterator] L.flatten = function* (iter) { for (const a of iter) { if (isIterable(a)) { yield* a } else yield a } } const map = curry((fn, iter) => { const res = []; for (const a of iter) res.push(fn(a)) return res; }) const take = curry((limit, iter) => { const res = []; for (const a of iter) { res.push(a) if (res.length === limit) return res; } return res; }); const go = (...args) => reduce((a, fn) => fn(a), args); const pipe = (f, ...fn) => (...args) => go(f(...args), ...fn); // L.flatMap L.flatMap = curry(pipe( L.map, L.flatten )); const iter = L.flatMap(a => a + 10, [1, 2, [3, 4], [5]]) console.log(...iter) // 결과값 11 12 3 , 4 1 0 5 1 0
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
1.가장 큰 수 질문드립니다
안녕하세요 교수님강의 중 질문이 있어 글 작성드립니다.마지막에 m이 0보다 클 경우 뒤에서 자르셨는데 stack에 저장되는 값이 1번 예제 7823처럼 항상 내림차순은 아니라 다른 방법으로 풀이해야하지 않나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 [초보] 쳅터 14의 두번째강의 에서 7분20초대
안녕하세요, 코드팩토리님 질문있습니다!쳅터 14의 두번째강의 에서 7분20초대에 routetwo스크린에서 팝하면 routeone스크린으로 가야하는거 아닌가요? 왜 팝했는데 home스크린으로 가는건가요?답변 부탁드립니다!
-
미해결
JPA 연관관계시 PK id가 숫자가 이어짐
JPA 연관관계를 맺어서 게시글과 댓글을 구현하는데 각 테이블이 1번으로 시작하는게 아니라 이어지는 상황이 생겨서 이게 정상적인가 의문이 들어서 질문을 드립니다. 기능은 제대로 돌아가는데 등록, 수정, 삭제 잘되는데 제가 알기론 id는 auto_increment 기능이면 각자 테이블에서 1번 부터 시작해서 자동증가로 알고있는데 여기는 이어지다 보니 의문이 생겨서 코드@Entity(name = "board") @ToString @Table @Getter @NoArgsConstructor public class BoardEntity extends BaseEntity{ @Id @GeneratedValue @Column(name = "board_id") private Long boardId; private String title; private String contents; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private MemberEntity member; @OneToMany(mappedBy = "boardEntity", cascade = CascadeType.ALL) // 댓글 정렬 @OrderBy("id asc") private List<CommentEntity> comments = new ArrayList<>(); @Builder public BoardEntity(Long boardId, String title, String contents, MemberEntity member, List<CommentEntity> comments) { this.boardId = boardId; this.title = title; this.contents = contents; this.member = member; this.comments = comments; } } @Entity(name = "comment") @Table @Getter @NoArgsConstructor public class CommentEntity extends BaseTimeEnity{ @Id @GeneratedValue @Column(name = "comment_id") private Long id; private String comment; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "board_id") private BoardEntity boardEntity; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private MemberEntity memberEntity; @Builder public CommentEntity(Long id, String comment, BoardEntity boardEntity, MemberEntity memberEntity) { this.id = id; this.comment = comment; this.boardEntity = boardEntity; this.memberEntity = memberEntity; } } @RequiredArgsConstructor @Service @Transactional public class CommentService { private final CommentRepository commentRepository; private final MemberRepository memberRepository; private final BoardRepository boardRepository; // 댓글 작성 public ResponseEntity<?> save(Long boardId, CommentDTO commentDTO, String memberEmail) { MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); List<CommentEntity> commentEntities = new ArrayList<>(); if(findMember != null) { CommentEntity commentEntity = CommentEntity.builder() .comment(commentDTO.getComments()) .boardEntity(findBoard) .memberEntity(findMember) .build(); CommentEntity saveComment = commentRepository.save(commentEntity); commentEntities.add(saveComment); findBoard = BoardEntity.builder() .boardId(findBoard.getBoardId()) .title(findBoard.getTitle()) .contents(findBoard.getContents()) .member(findMember) .comments(commentEntities) .build(); boardRepository.save(findBoard); CommentDTO commentDTO1 = CommentDTO.toCommentDTO(saveComment); return ResponseEntity.ok().body(commentDTO1); } else { return ResponseEntity.notFound().build(); } } // 댓글 삭제 public String remove(Long boardId, Long commentId, String memberEmail) { BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); CommentEntity findComment = commentRepository.findById(commentId) .orElseThrow(EntityNotFoundException::new); MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); boolean equalsEmail = findMember.getMemberEmail().equals(findComment.getMemberEntity().getMemberEmail()); boolean equalsId = findComment.getBoardEntity().getBoardId().equals(findBoard.getBoardId()); if(equalsEmail && equalsId) { commentRepository.deleteById(findComment.getId()); return "댓글을 삭제했습니다."; } else { return "해당 이메일의 댓글이 아닙니다."; } } // 댓글 수정 public ResponseEntity<?> update(Long boardId, Long commentId, CommentDTO commentDTO, String memberEmail) { BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); CommentEntity findComment = commentRepository.findById(commentId) .orElseThrow(EntityNotFoundException::new); MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); boolean equalsEmail = findMember.getMemberEmail().equals(findComment.getMemberEntity().getMemberEmail()); boolean equalsId = findComment.getBoardEntity().getBoardId().equals(findBoard.getBoardId()); List<CommentEntity> commentEntities = new ArrayList<>(); if(equalsEmail && equalsId) { findComment = CommentEntity.builder() .id(findComment.getId()) .comment(commentDTO.getComments()) .boardEntity(findBoard) .memberEntity(findMember) .build(); CommentEntity saveComment = commentRepository.save(findComment); commentEntities.add(saveComment); findBoard = BoardEntity.builder() .boardId(findBoard.getBoardId()) .contents(findBoard.getContents()) .title(findBoard.getTitle()) .member(findBoard.getMember()) .comments(commentEntities) .build(); boardRepository.save(findBoard); CommentDTO returnComment = CommentDTO.toCommentDTO(saveComment); return ResponseEntity.ok().body(returnComment); } else { return ResponseEntity.badRequest().body("일치하지 않습니다."); } } }
-
미해결홍정모의 따라하며 배우는 C언어
3.13 불리언형 질문
b1=0;b1=1;이걸 왜 해줘야 되나요?
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
중급 수업 문의
안녕하세요! 강의 넘 재밌어요ㅎㅎㅎLevel2 중급 수업도 준비 중이신지 궁금해요
-
미해결리눅스 입문 - 개념으로 탄탄히!!
grep 커맨드에 인수 하나만 전달한 경우
안녕하세요 강사님, 질문이 있습니다. grep 커맨드에서 인수 하나만 입력했을 때 그 결과가 무엇을 의미하는지 궁금합니다. 예를들어, 아래와 같이 패턴만 입력하고 file을 입력하지 않은 상태에서 엔터를 누르면, 커서가 아래에 위치하며 아무일도 일어나지 않고 있습니다.grep "startup" | <- 커서가 위치하며 아무런 일도 일어나지 않음나머지 인수를 입력 받길 기다리는 건가요?여기서 Ctrl + C를 누르면 원래 프롬프트로 돌아오는 것은 확인했습니다.저 결과는 어떤 것을 의미하는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
카페 가입 관련 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의중에 Rookiss 네이버 카페를 보여주시는데, 해당 카페에 가입하기 위한 조건이 있을까요?
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
singleton pattern
싱글톤 패턴으로 클래스 작성시 private static Company company = new Company();라고 작성을 하였는데 프로그램 실행 부터 메모리에 올라가는 static 필드가 바로 인스턴스를 생성하는건가요? static 필드와 인스턴스의 생성 시점이 충돌하지는 않나요?클래스 로딩과 static 필드 중 어떤게 먼저 메모리에 잡히는지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
구조체 전방선언
강의에서는 구조체를 게임인스턴스 헤더에 바로 만들어서상관없는데 나중에 따로 헤더파일을 만들어서 구조체를 관리하게 되면이거도 다른 곳에서 쓸 때 전방선언을 해줘야 하는건가요? 그렇다면 TObjectPtr 을 써서 전방선언을 해야 하나요? 아니면 구조체는 간단하니까 바로 헤더파일을 인클루드 하면 되나요? 초보자라 이 질문이 맞는 질문인지도 모르겠네요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
springmvc/old-controller
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 똑같은 코드인데 어떤 컴퓨터에서는 되고 다른 컴퓨터에서는 안되는 이유가 뭔지 궁금합니다. https://drive.google.com/file/d/11Zuk3zBvm9QWWpyIQeAWwWIwUGdSc7Bk/view?usp=sharing 이게 제 코드인데 강사님 코드를 다운 받고 돌려도 localhost:8080/index.html 조차 에러가 뜹니다. 뭐가 문제일까요. 저번에 질문했지만 문제가 해결이 되지 않아 한번 더 질문합니다. 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
삭제하기 기능 구현 레퍼런스 코드는 없을까요
게시글 상세 화면에서 삭제하기 기능을 구현해주세요.이부분에 대한 레퍼런스 코드가 깃허브에 등록된 내용에는 나오지 않는데 알고 싶습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리 초과 관련 문제
안녕하세요, 메모리 초과 관련 문제가 생겨서 질문드립니다.제가 생각한 알고리즘을 설명드리자면2중 벡터 fire의 경로를 구합니다. (bfs)2중 벡터 player의 경로를 구합니다. (bfs)fire와 player의 각 요소를 비교하여 player의 요소가 작은 경우엔 유지, 아닌 경우엔 -1로 값을 덮어씌웁니다.최종적으로 vector<vector<int>> player는 다음과 같은 값을 갖습니다.-1 -1 -1 2-1 -1 -1 1-1 -1 1 0-1 -1 -1 -1해당 player를 다시 bfs로 순회합니다. (시작점은 player의 초기 위치인 0 지점) -> 이걸 하는 이유는 혹여나 player의 길이 fire에 의해 끊기는 경우가 존재할 수 있으므로 입니다. (하지만 이런 경우는 발생하지 않는 것 같습니다.)마지막으로 player가 갈 수 있는 최종 길만 남게되고, 가장자리의 4변에서 -1이 아닌 최소값을 찾습니다.이런 알고리즘을 시행했는데 메모리 초과가 뜹니다. 메모리 초과와 관련해서는 visual studio에서 어떻게 디버깅을 해야할지 잘 모르겠습니다. 단순히 생각해보면 각 2차원 벡터는 최대 1000*1000*4byte(int)=4MB의 크기를 갖고, deque는 아마 최대로 해도 4MB 이하의 크기를 갖을 것 같은데 문제의 256MB가 왜 초과가 되는지. 모르겠습니다.아래는 해당 코드의 링크입니다.http://boj.kr/6145ffa1c073417ab06e3a7e86afe533 강의를 듣고나서는 코드를 수정하여 player의 경로를 구할 때, 미리 구해둔 fire의 경로와 비교하여 fire가 선점한 경우엔 갈 수 없는 경로로 표시하고, 순서 5의 과정을 삭제했습니다. 이러니 해결이 되긴하는데.. 이게 왜 되는건지는 모르겠습니다. 해당 코드는 메모리 10872KB를 썼다고 나옵니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요@RequestBody와 @ModelAttibute차이를 제대로 이해했는지 궁금하여 여쭤봅니다.서버로 데이터를 전달하는 방법은 3가지방법이있는데 쿼리파라미터 시에는 get방식 @RequestParam 사용HTML Form 시에는 get, post 다 지원 @ModelAttibute 사용message body 시에는post방식 @ReqeustBody 로 받아서 사용하는것이 맞을까요?각 전달 방법3가지에 get/post방식 매핑과 어노테이션 매칭이 잘 되엇는지 궁금합니다. 그리고 RequestParam , ReqeustBody 를 컨트롤러의 같은 메소드에 사용가능할까요?ex ) public void test(@RequestParam int id, @ReqeustBody Body body)같이 사용가능하다면 왜 가능한지도궁금합니다ㅜㅜ
-
해결됨디자인 시스템 with 피그마
타이포그래피 연결해제 표시
다른분이 연결해제 관련 질문을 올리긴 하셨는데 json 파일을 따로 안올리셔서 같이 첨부드립니다 ㅠ.ㅠ 왜 연결해제와 같은 표시가 뜨는 걸까요..?json 입니다.{ "140": { "value": "140%", "type": "lineHeights" }, "150": { "value": "150%", "type": "lineHeights" }, "160": { "value": "160%", "type": "lineHeights" }, "spacing": { "6": { "value": "{spacing.baseSpacing} *1.5", "type": "spacing" }, "8": { "value": "{spacing.baseSpacing} *2", "type": "spacing" }, "10": { "value": "{spacing.baseSpacing} *2.5", "type": "spacing" }, "12": { "value": "{spacing.8} + {spacing.baseSpacing}", "type": "spacing" }, "16": { "value": "{spacing.12} + {spacing.baseSpacing}", "type": "spacing" }, "20": { "value": "{spacing.16} + {spacing.baseSpacing}", "type": "spacing" }, "24": { "value": "{spacing.20} + {spacing.baseSpacing}", "type": "spacing" }, "28": { "value": "{spacing.24} + {spacing.baseSpacing}", "type": "spacing" }, "32": { "value": "{spacing.28} + {spacing.baseSpacing}", "type": "spacing" }, "36": { "value": "{spacing.32} + {spacing.baseSpacing}", "type": "spacing" }, "40": { "value": "{spacing.36} + {spacing.baseSpacing}", "type": "spacing" }, "44": { "value": "{spacing.40} + {spacing.baseSpacing}", "type": "spacing" }, "48": { "value": "{spacing.44} + {spacing.baseSpacing}", "type": "spacing" }, "52": { "value": "{spacing.48} + {spacing.baseSpacing}", "type": "spacing" }, "56": { "value": "{spacing.52} + {spacing.baseSpacing}", "type": "spacing" }, "60": { "value": "{spacing.56} + {spacing.baseSpacing}", "type": "spacing" }, "64": { "value": "{spacing.60} + {spacing.baseSpacing}", "type": "spacing" }, "baseSpacing": { "value": "4", "type": "spacing" } }, "black": { "value": "#000000", "type": "color" }, "white": { "value": "#ffffff", "type": "color" }, "blue": { "100": { "value": "#d4e2fc", "type": "color" }, "200": { "value": "#a9c5f9", "type": "color" }, "300": { "value": "#7da8f7", "type": "color" }, "400": { "value": "#528bf4", "type": "color" }, "500": { "value": "#276ef1", "type": "color" }, "600": { "value": "#1f58c1", "type": "color" }, "700": { "value": "#174291", "type": "color" }, "800": { "value": "#102c60", "type": "color" }, "900": { "value": "#081630", "type": "color" } }, "red": { "100": { "value": "#f9d1cc", "type": "color" }, "200": { "value": "#f3a399", "type": "color" }, "300": { "value": "#ed7566", "type": "color" }, "400": { "value": "#e74733", "type": "color" }, "500": { "value": "#e11900", "type": "color" }, "600": { "value": "#b41400", "type": "color" }, "700": { "value": "#870f00", "type": "color" }, "800": { "value": "#5a0a00", "type": "color" }, "900": { "value": "#2d0500", "type": "color" } }, "yellow": { "100": { "value": "#fff2d9", "type": "color" }, "200": { "value": "#ffe6b4", "type": "color" }, "300": { "value": "#ffd98e", "type": "color" }, "400": { "value": "#ffcd69", "type": "color" }, "500": { "value": "#ffc043", "type": "color" }, "600": { "value": "#cc9a36", "type": "color" }, "700": { "value": "#997328", "type": "color" }, "800": { "value": "#664d1b", "type": "color" }, "900": { "value": "#33260d", "type": "color" } }, "green": { "100": { "value": "#cde7da", "type": "color" }, "200": { "value": "#9bcfb6", "type": "color" }, "300": { "value": "#68b891", "type": "color" }, "400": { "value": "#36a06d", "type": "color" }, "500": { "value": "#048848", "type": "color" }, "600": { "value": "#036d3a", "type": "color" }, "700": { "value": "#02522b", "type": "color" }, "800": { "value": "#02361d", "type": "color" }, "900": { "value": "#011b0e", "type": "color" } }, "accent": { "value": "{blue.500}", "type": "color" }, "negative": { "value": "{red.500}", "type": "color" }, "warning": { "value": "{yellow.500}", "type": "color" }, "positive": { "value": "{green.500}", "type": "color" }, "gray": { "100": { "value": "#e1e1e1", "type": "color" }, "200": { "value": "#c4c4c4", "type": "color" }, "300": { "value": "#a6a6a6", "type": "color" }, "400": { "value": "#898989", "type": "color" }, "500": { "value": "#6b6b6b", "type": "color" }, "600": { "value": "#565656", "type": "color" }, "700": { "value": "#404040", "type": "color" }, "800": { "value": "#2b2b2b", "type": "color" }, "900": { "value": "#151515", "type": "color" } }, "positiveTransparent": { "value": "#0488481a", "type": "color" }, "negativeTransparent": { "value": "#e119001a", "type": "color" }, "scale": { "value": "1.333", "type": "sizing" }, "default": { "value": "16", "type": "fontSizes" }, "heading": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" }, "XXL": { "value": "{heading.XL} * {scale}", "type": "fontSizes" }, "XXXL": { "value": "{heading.XXL} * {scale}", "type": "fontSizes" } }, "label": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" }, "XXL": { "value": "{heading.XL} * {scale}", "type": "fontSizes" } }, "paragraph": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" } }, "pretendard": { "value": "Pretendard", "type": "fontFamilies" }, "bold": { "value": "Bold", "type": "fontWeights" }, "semibold": { "value": "SemiBold", "type": "fontWeights" }, "\bregular": { "value": "Regular", "type": "fontWeights" }, "Heading": { "XXXL": { "value": { "fontFamily": "{pretendard}", "fontWeight": "{bold}", "lineHeight": "{140}", "fontSize": "{heading.XXXL}", "letterSpacing": "{letterSpacing.0}", "paragraphSpacing": "{paragraphSpacing.0}", "paragraphIndent": "{paragraphIndent.0}", "textCase": "{textCase.none}", "textDecoration": "{textDecoration.none}" }, "type": "typography" }, "XXL": { "value": { "fontFamily": "{pretendard}", "fontWeight": "{bold}", "lineHeight": "{140}", "fontSize": "{heading.XXL}", "letterSpacing": "{letterSpacing.0}", "paragraphSpacing": "{paragraphSpacing.0}", "paragraphIndent": "{paragraphIndent.0}", "textCase": "{textCase.none}", "textDecoration": "{textDecoration.none}" }, "type": "typography" } } }추가로 import 할 때 이런 표시도 뜹니다.