묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
키보드 떠 있는 상태 만들기
저는 검색창을 눌러도 키보드가 아예 뜨지 않는데 어떤 코드를 추가해야 할까요? extension ViewController: UISearchBarDelegate { func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { term = searchBar.text requestMovieAPI() } }
-
미해결실전! 스프링 데이터 JPA
쿼리 메서드 @Query시 limit
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 듣는 도중 궁금증이 생겨 질문드립니다.만약 쿼리 메서드를 사용하여 특정 조건에 의해 게시물 10개만 가져오고 싶을 때List<Board> findTop10ByWriteDatetimeGreaterThanOrderByCommentCountDescViewCountDescWriteDatetimeDesc(String writeDatetime);과 같이 지저분하게 코드를 작성할 수 있었는데 메서드 이름이 너무 길어져 @Query를 사용해서 코드 양을 줄이고 싶었습니다. 하지만, jpql에 limit를 사용할 수 없는데 이 경우 어떻게 jpql을 작성해야 하는지 궁금합니다.
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
6-6. 만약 카트 내 추가 버튼 클릭에 스크린 이름을 추가한다면
안녕하세요! 로그를 설계할 때,click_recommend_food 이벤트의 파라미터에 화면 정보(cart)를 넣게되면 분자/분모로 계산하지 않아도 되는걸지 궁금합니다!강의 예제에서는 '최소 주문금액을 넘지 않은' 부분을 나타내기 위해서 해당 페이지를 본 수와 클릭수를 따로 해야할 것 같은데 만약 해당 조건이 없는 경우 위처럼 'screen : cart'와 같은 파라미터로도 카트 내에서 일어나는 버튼 클릭 수를 볼 수 있을까요?
-
미해결Angular 기본과 간단한 To-Do 어플리케이션 만들기
컴포넌트 커뮤니케이션 강의 질문
해당 강의 예제를 똑같이 따라한것같은데 결과가 달라서 질문드립니다.@input 예제까지는 잘 따라왔는데 @output 예제에서 <app-add-todo>를 추가하면 처음로딩시 <app-todo> 태그 데이터가 아래 이미지와 같이 나오고 클릭시 하나씩 데이터가 보여집니다.
-
미해결실리콘밸리 엔지니어에게 배우는 쿠버네티스 for SWE
yaml 작성법 문의
yaml 작성 중 리스트는 들여쓰기를 꼭 해야 하는지 아니면같은 줄에 사용해도 무방한지 궁금합니다.예제apiVersion: apps/v1kind: ReplicaSetmetadata: name: frontend labels: app: guestbook tier: frontendspec: replicas: 4 selector: matchLabels: tier: frontend template: metadata: labels: tier: frontend spec: containers: - name: php-redis(들여쓰기 안함) image: gcr.io/google_samples/gb-frontend:v3
-
미해결실리콘밸리 엔지니어에게 배우는 쿠버네티스 for SWE
kubectl command apply create 차이점
안녕하세요 이해가 잘 안되어서 여러번 보고 있습니다.Pod을 생성할때 kubectl apply ~~~kubectl create ~~~둘다 pod이 생성되는데 차이점이 있나요?
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
샘플 소스 전체 다운받아볼 수 있을까요?
안녕하세요?현재 7장까지 잘 따라하다가, 프로필 이미지가 정상 업로드 된거 같은데 홈화면에서 제대로 표시가 안되어 무엇이 문제인지 찾고 있습니다.샘플소스가 있다면 관련 부분 비교해 보고 싶은데 개남님 github 찾아봐도 bookreview 프로젝트가 안보이드라고요. 전체 full 소스 받아볼수 있다면 관련 부분 비교해 보고 싶습니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
vivado 2023.2.2 schematic 오류
안녕하세요, 맛비님!vivado schemetic을 실행하는 과정에서 오류가 생겨 오래 잡고있다 해결이 안되서 질문 남깁니다.vivado를 이용해서 zybo-z7-20 led점등하는 코드를 입력하고 Schematic을 누르니 로딩이 되다가 vivado창이 닫혀버립니다.windows 11에서 vivado 버전은 2023.2.2를 사용중이고 관리자 권한으로도 실행해본 상태입니다. 사용하는 pc 스펙은 아래와 같습니다.감사합니다.
-
미해결이것이 진짜 크롤링이다 - 기본편
이런오류는 어떤 오류인가요
[24532:15216:0226/173731.184:ERROR:policy_logger.cc(157)] :components\enterprise\browser\controller\chrome_browser_cloud_management_controller.cc(161) Cloud management controller initialization aborted as CBCM is not enabled. Please use the --enable-chrome-browser-cloud-management command line flag to enable it if you are not using the official Google Chrome build.DevTools listening on ws://127.0.0.1:58547/devtools/browser/ef895699-d3de-47d1-8fbc-d77db72d47e1
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
프로세스 관련입니다
안녕하세요! 프로세스가 올라가고 내려가는 원리 등의 메커니즘과 cpu를 스케줄링할 때 application(제 3의 프로세스)에서 하는 방식을 공부하려고 하는데, 운영체제 부분만 봐도 무관할까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 수정이 되지 않는데 이유를 모르겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상품 수정페이지 에서 상품에 대한 값 변경 시 데이터베이스에 반영이 되지 않는데 이유를 모르겠습니다. 다음은 코드입니다.ItemController.javapackage jpabook.jpashop.Contorller; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.service.ItemService; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form) { Book book = new Book(); //set안쓰고 Book생성자의 파라미터로 넣는게 더 좋은 설계임 book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/"; } @GetMapping("/items") public String list(Model model) { List<Item> items = itemService.findItems(); model.addAttribute("items", items); return "items/itemList"; } @GetMapping("items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findById(itemId); // 캐스팅이 별로 좋진 않음 BookForm form = new BookForm(); form.setId(item.getId()); form.setName(item.getName()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setAuthor(item.getAuthor()); form.setIsbn(item.getIsbn()); model.addAttribute("form", form); return "items/updateItemForm"; } @PostMapping("items/{itemId}/edit") public String updateItem(@PathVariable("itemId") Long itemId, @ModelAttribute("form") BookForm form) { // Book book = new Book(); 컨트롤러에서 어설프게 엔티티 생성하지 말기 // book.setId(form.getId()); // book.setName(form.getName()); // book.setPrice(form.getPrice()); // book.setStockQuantity(form.getStockQuantity()); // book.setAuthor(form.getAuthor()); // book.setIsbn(form.getIsbn()); // // itemService.saveItem(book); itemService.updateItem(itemId, form.getPrice(), form.getName(), form.getStockQuantity()); return "redirect:/items"; } }ItemService.javapackage jpabook.jpashop.service; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.repository.ItemRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class ItemService { private final ItemRepository itemRepository; @Transactional public void saveItem(Item item) { itemRepository.save(item); } public List<Item> findItems() { return itemRepository.findAll(); } public Item findById(Long itemId) { return itemRepository.findOne(itemId); } public void updateItem(Long itemId, int price, String name, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setPrice(price); findItem.setName(name); findItem.setStockQuantity(stockQuantity); } } HTML파일은 모두 복사붙여넣기 하였습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL JOIN강의 수강 중 에러 발생
package jpql; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import java.util.ArrayList; import java.util.List; @Entity public class Team { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); private Member member; public List<Member> getMembers() { return members; } public void setMembers(List<Member> members) { this.members = members; } public Member getMember() { return member; } public void setMember(Member member) { this.member = member; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } JPQL 조인 강의를 따라하고 있는데 이런 에러가 납니다.'Basic' attribute type should not be 'Persistence Entity' package jpql; import javax.persistence.*; @Entity @Table(name = "MEMBER") public class Member { @Id @GeneratedValue private Long id; private String username; private int age; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; public void changeTeam(Team team){ this.team = team; team.getMembers().add(this); } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Member{" + "id=" + id + ", username='" + username + '\'' + ", age=" + age + ", age=" + age + '}'; } }어떻게 해결하면 좋을지 알 수 있을까요?
-
미해결한 입 크기로 잘라먹는 타입스크립트(TypeScript)
map 구현 중 에러가 발생합니다.
안녕하세요.5분 25초 경의 코드를 똑같이 작성했습니다.그런데 callback(arr[i])부분에서'T' 형식의 인수는 'never' 형식의 매개 변수에 할당될 수 없습니다.ts(2345)라는 에러가 발생하는데 정상적인가요...?const arr = [1, 2, 3]; const newArr = arr.map((it) => it * 2); function map<T>(arr: T[], callback: (item: T) => T) { let result = []; for (let i = 0; i < arr.length; i++) { result.push(callback(arr[i])); } return result; }
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
CISC, RISC 질문있습니다(섹션5)
CISC,RISC에 대해서 헷갈리는게 있습니다 ISA 즉, 명령어 집합(구조)는 CPU의 언어라고 하셧는데요ex) ARM, x86 등등 ====================================그럼 CISC와RISC는 명령어 집합인건가요?아니면 ISA(ARM, x86)를 활용하는 CPU의 종류인가요? 영상에서는 x86,x86-64는 CISC 기반에 명령어 집합이라고 얘기 해주셧는데 그럼 CISC는 명령어 집합인걸로 생각이되는데 또 막상 CISC는 복잡한 명령어 집합을 활용하는 컴퓨터(CPU)라고 얘기해주시니 그럼 이게 CPU의 대표적인 종류인건지 헷갈려서 글 남겨드립니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인시에 response의 성공 유무를 떠나 await되는 이유
안녕하세요 제로초님 강의 수강중에 질문이 있어서요강의에 10분08초를 확인해보시면 response가 성공 실패 유무를 떠나서 await되버려서 catch로 넘어가지 않는 이유는 무엇일까요 ?로그인모달은 클라이언트에서 처리하고 회원가입은 서버액션으로 처리한다는 설명을 영상 후반부에 해주셨는데 이러한 경우와 연관이 있는 걸까요 ? 구글링해도 잘 확인이 안되어서요! 항상 감사합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 ! 질문이 있습니다.
강사님의 강의를 통해 Jwt 와 시큐리티에 대한 공부를 수월히 할 수 있었습니다.근데 개인적으로 이제 실습하면서 문제가 발생해서 자문을 구하고자 글을 쓰게 되었습니다. 로그인이 성공하면 토큰을 로컬 스토리지에 담고, 요청할 때는 토큰을 꺼내어 헤더에 담아서 검증절차를 진행하려고 합니다. 근데 분명 위의 프로세스에 해당 하는 로직을 작성하였다고 생각하였는데, 의도한 대로 흘러가지가 않아서 매우 난처한 상황입니다. Index.html<script> $(document).ready(function() { // 로그아웃 버튼 이벤트 $('#logoutButton').click(function() { // 로컬 스토리지에서 토큰 제거 localStorage.removeItem('accessToken'); // 로그인 페이지로 리다이렉션 window.location.href = '/login'; }); // 테스트 버튼 이벤트 $('#testButton').click(function() { // 로컬 스토리지에서 토큰 가져오기 const token = localStorage.getItem('accessToken'); if (token) { $.ajax({ url: '/api/test', // 요청할 서버의 URL type: 'GET', // HTTP 메서드 beforeSend: function(xhr) { // 요청 헤더에 토큰 추가 xhr.setRequestHeader('Authorization', token); }, success: function(data) { // 요청 성공 시 로직 console.log("테스트 요청 성공:", data); alert("테스트 요청 성공"); }, error: function(xhr, status, error) { // 요청 실패 시 로직 console.error("테스트 요청 실패:", xhr.responseText); alert("테스트 요청 실패"); } }); } else { alert("토큰이 없습니다. 다시 로그인해주세요."); } }); }); </script> 이와 같이 /url/test 로 api 요청을 할때 헤더에 토큰을 담게 했습니다.이에 "테스트 버튼"을 누르게 되면 JwtAuthorizationFilter@Override protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) throws ServletException, IOException { // 헤더에서 토큰 추출 log.info("헤더에서 토큰 추출"); String tokenValue = jwtUtil.getJwtFromHeader(req); log.info("토큰 : " + tokenValue); if (StringUtils.hasText(tokenValue)) { // 토큰 유효성 검사 if (!jwtUtil.validateToken(tokenValue)) { log.info("Token Error"); return; } Claims info = jwtUtil.getUserInfoFromToken(tokenValue); try { setAuthentication(info.getSubject()); } catch (Exception e) { log.error(e.getMessage()); return; } } else { log.info("토큰이 없습니다."); } filterChain.doFilter(req, res); } // 인증 처리 public void setAuthentication(String loginId) { log.info("인증 성공"); SecurityContext context = SecurityContextHolder.createEmptyContext(); Authentication authentication = createAuthentication(loginId); context.setAuthentication(authentication); SecurityContextHolder.setContext(context); } // 인증 객체 생성 private Authentication createAuthentication(String loginId) { log.info("인증 객체 생성"); UserDetails userDetails = userDetailsService.loadUserByUsername(loginId); return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); } 로그로 토큰이 출력되는 것과 최종적으로 인증 객체 생성까지 되는 것을 확인했습니다.그러나 이렇게 인가 필터를 거치고 이제 컨트롤러로 접근하게 되면 @GetMapping("/api/test") public String testPage() { log.info("test controller"); return "test"; } 저기 test controller 라는 로그만 찍힌채 프로세스가 마무리됩니다. 최종로그2024-02-26T16:19:36.394+09:00 INFO 60592 --- [nio-8081-exec-9] JWT 검증 및 인가 : 토큰 : eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0NiIsImF1dGgiOiJPV05FUiIsImlhdCI6MTcwODkzMTk3MywiZXhwIjoxNzA4OTM1NTczfQ.A2AhGDg5phTcm4gGC-01K0jKoAGE1c5Ygsq9v_J1ntk 2024-02-26T16:19:36.426+09:00 INFO 60592 --- [nio-8081-exec-9] JWT 검증 및 인가 : 인증 성공 2024-02-26T16:19:36.427+09:00 INFO 60592 --- [nio-8081-exec-9] JWT 검증 및 인가 : 인증 객체 생성 Hibernate: /* <criteria> */ select u1_0.id, u1_0.email, u1_0.login_id, u1_0.password, u1_0.role from users u1_0 where u1_0.login_id=? 2024-02-26T16:19:36.434+09:00 INFO 60592 --- [nio-8081-exec-9] TestController : test controller 이때 웹 페이지의 개발자 도구를 열어서 콘솔로그를 확인 해보면, 제가 가지고 오고자 했던 test.html 의 코드만이 적혀있을 뿐입니다. 뭐가 문제인 걸까요.. 혹시나 test 쪽에 토큰을 가져오는 로직도 작성해봤습니다. Test.html<head> <meta charset="UTF-8"> <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script> <script> $(document).ready(function () { const auth = getToken(); if (auth) { $.ajaxPrefilter(function (options, originalOptions, jqXHR) { jqXHR.setRequestHeader('Authorization', auth); }); } else { window.location.href = '/user/login-page'; } }); function getToken() { let auth = localStorage.getItem('accessToken'); return auth || ''; } </script> <title>Test Page</title> </head> <body> <h1>This is a test page.</h1> </body> </html> 그럼에도 여전히 해당 페이지에는 접근을 못하고 있습니다 ㅠㅠㅠㅠ제가 놓친 부분이 뭐가 있을지 조언을 주신다면 감사하겠습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
의존성 주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의를 듣다가 순간 애매해서 질문드립니다. V2config에서 해당 코드를@Bean public ItemService itemService() { return new ItemServiceV2(itemRepositoryV2, itemQueryRepositoryV2()); } @Bean public ItemQueryRepositoryV2 itemQueryRepositoryV2(){ return new ItemQueryRepositoryV2(em); }@Bean public ItemService itemService() { return new ItemServiceV2(itemRepositoryV2, new ItemQueryRepositoryV2(em)); } /** @Bean public ItemQueryRepositoryV2 itemQueryRepositoryV2(){ return new ItemQueryRepositoryV2(em); } **/ 처럼 ItemQueryRepositoryV2부분은 주석처리 해서 @Bean으로 등록을 하지 않으면 작동이 안돼야 할까요?? 변경하고 작동해봤는데 문제가 없어서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
빈 등록 초기화, 소멸 메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 종료 메서드 추론에 대해서 강의해주실 때,@Bean 의 destoryMethod의 기본값이 inferred 추론으로 등록되어 있는데, 이 추론 기능이 close, shutdown이라는 이름의 메서드를 자동 호출해준다. "직접 스프링 빈으로 등록하면, 종료 메서드는 따로 적어주지 않아도 잘 동작한다" 라는 말이 이해가 되지 않아서 질문을 남깁니다. 혹시 쉽게 설명이 가능할까요?
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
카메라 관련
안녕하세요. 강의 잘 듣고 있습니다.지금까지 강의해주신 내용대로 잘 따라했는데, Knight를 배치하고 이동시킬 때 아래 사진 2개와 같이 정상적인 카메라 화면과, 이상한 카메라 화면이 반짝거리며 등장하는 현상이 발생하는데, 혹시 이 문제는 왜 생기는걸까요?Play 했을때도 간헐적으로 아래 사진처럼 비정상적인 카메라 화면으로 플레이되곤 합니다.. Knight를 지웠다가 다시 배치하면 정상 동작하긴 하는데, 너무 번거롭네요 ㅜㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
시계열데이터에서 dt관련
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요? 시계열 자료 강의에서 년월일 등을 추출하는 강의가 있는데요.. 여기서 dt가 갑자기 나와서요.. 이것도 그냥 함수인가요.. 아님 뭐 datetime의 약자 뭐 그런건지요? dt관련해서 이거 뭐하는 함수인지 궁긍합니다.