묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전 리액트 프로그래밍
react typescript 환경에서 커스텀 훅을 만들어서 사용하려고 하는데 This expression is not callable 에러가 나타납니다.
안녕하세요. 강의 보고 useState, useEffect 를 활용해보고 싶어서 공공데이터 포털에서 제공해주는 openapi 로 커스텀 훅을 만들어 봤습니다. typescript + webstorm 환경에서 작업중인데요 TS2349: This expression is not callable. No constituent of type 'void | coronaApiPros[]' is callable. import useDailyCorona: void | coronaApiPros[] App.tsx 6번 라인의 useDailyCorona(); 코드에서 이런 에러가 나타납니다. 구글링을 계속 해보는데 원하는 답을 찾을수가 없어서 질문드립니다..ㅠㅠ App.tsx 파일과 커스텀훅 파일인 useDailCorona.tsx 파일을 첨부합니다. ----------- App.tsx --------- import './App.css'; import React from 'react'; import useDailyCorona from './hooks/useDailyCorona'; function App() { const items = useDailyCorona(); return ( <ul> {items?.map((item, index) => ( <li key={index}>createDate: {item.createDt}</li> ))} </ul> ); } export default App; ----------- useDailyCorona.tsx ------------- import {useEffect, useState} from "react"; import {getCorona} from "../corona"; interface coronaApiPros { createDt: string // 조회 시작 시간 deathCnt: number // 사망자 수 defCnt: number // 확진자 수 gubun: string // 시도명(한글) gubunCn: string // 시도명(중국어) gubunEn: string // 시도명(영어) incDec: number // 전일대비 증감 수 isolClearCnt: number // 격리 해제 수 isolIngCnt: number // 격리중 환자 수 localOccCnt: number // 지역 발생 수 overFlowCnt: number // 해외 유입 수 qurRate: string // 10만명당 발생률 seq: number // 게시글번호 (국내 시도별 발생 현황 고유값) stdDay: string // 기준 일 시 updateDt: string // 수정 일시 분초 } function useDailyCorona():void|coronaApiPros[] { const [items, setItems] = useState(); const coronaItems = getCorona(); useEffect(() => { coronaItems.then(response => { setItems(response); }); }, []); return items; } export default useDailyCorona();
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
data_file.write 관련 질문
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다 - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, '파이썬으로 Plain text 포맷 파일 다루기' 영상에서 6분대 - Data 쓰기 관련 설명에서 어려움을 겪고 있습니다. 데이터 입력하기 data_file.write = open('comp/00_data/text_data_practice.txt','w',encoding='utf-8-sig')를 하고나서, 밑에 원하는 데이터를 입력하고 엔터를 치면 저렇게 숫자가 뜨고 데이터가 입력되지 않네요. ㅜㅜ Write 말고 add로 원하는 문구를 추가하는 건 됩는데 말입니다. 완전 초보라 뭐가 잘못된지도 모르겠습니다, 혹시 어떤 문제인지 아실까요? 혹시 제가 주피터에서도 하고 idle에서도 해보고 있는데, idle 실행 방법이 잘못되었을끼요?
-
미해결웹 게임을 만들며 배우는 React
질문있습니다.
기존까지 빌드를 했을 때는 dist 폴더에 app.js 를 생성해서 빌드가 되었음을 눈으로 확인할 수 있었는데, 핫 리로딩을 하고 개발용서버를 통해 빌드를 한 시점부터 app.js 를 눈으로 확인할 수 없는데도 잘 작동이 되고 있어서 확인해본 결과 메모리 상에서 실행된다고 하는데 제가 해석한 내용이 맞는지 궁금해서 질문을 드립니다ㅠㅠ 그렇다면 왜 그렇게 되는지 궁금합니다!
-
미해결iOS AutoLayout 완벽 가이드 - 실무 프로젝트를 위한 실전강의
질문있습니다!
강사님과 똑같이 하단에 제약조건의 우선순위를 750을 주니 큰 화면에서 40보다 더 크게 간격이 생겼습니다. 그런데 4s단말기에선 화면 밖으로 view가 넘어가 버렸습니다. 강사님의 강의에서는 40의 제약조건을 지키기 위해 버튼크기가 작아진걸로 보이는데 저는 왜 이렇게 되는 지 잘 모르겠습니다...
-
미해결Slack 클론 코딩[실시간 채팅 with React]
useCallback 관련 질문있습니다.
안녕하세요 제로초님 항상 질 좋은 강의 잘 듣고 있습니다. 다름이 아니라 useCallback과 관련하여 질문이 있는데요 만약 두번째 인자인 'deps'배열이 비게 되는 상황에도 무조건 useCallback으로 함수를 감싸주는게 맞나요? deps배열에 아무 요소도 들어가지 않는다면 굳이 써줘서 deps 배열을 검사하는 비용을 낭비할 필요가 없다. 라는 지인의 의견이 있어서 궁금하여 이렇게 질문 올립니다. 감사합니다.
-
미해결Vue.js 시작하기 - Age of Vue.js
그럼 최종적으로 라우터가 실행될 때 모습이 이게 맞을까요?
안녕하세요! 부끄럽지만 저의 이해가 맞는지 여쭤보고 싶습니다. 그럼 <router>의 최종형태..? 모습은 자바스크립트의 <div><a href="/login"></div> 인걸까요? 좋은 강의 감사합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
posthandle() 사용
안녕하세요! 좋은 영상 많이 만들어 주셔서 항상 감사합니다. prehandle()과 aftercompletion()에 대해서 잘 알겠습니다. 그렇다면 posthandle()은 보통 언제 쓰나요? 에러가 터지면 posthandle()을 타지 않기 때문에 aftercompletion()을 사용하는 것은 잘 알겠습니다. 그런데 posthandle()은 보통 언제 사용하는지 궁금하네요 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
싱글톤방식을 통한 객체생성에 대한 질문이 있습니다!
싱글톤 컨테이너(스프링컨테이너)를 통한 객체 생성시, 강의중 MemberServiceImpl 클레스를 예로들면, 해당 클레스를 무상태로 설계를 하였고 그덕에 여러 클라이언트(사용자)들의 요청이 들어와서 스프링 컨테이너의 같은 빈을 사용할지라도 사용자 정보가 서로 겹치는 사태가 발생하지않는다고 판단하였습니다. 즉, 스프링 컨테이너는 싱글톤을 사용하여 메모리효율은 좋지만, 여러사용자들의 사용자 정보들이 겹칠수있는 큰 문제점이 있는데 이 문제가 일어나지 않는이유가 구현객체를 무상태로 설계 했기 때문이다. 라고 생각해도될까요?
-
미해결Nuxt.js 시작하기
SPA 배포시 서버 설정 관련 안내 영상(Vue.js 완벽 가이드 강의 - 결제 필요)
해당 부분에 대해서 결제 없이 안내 받을 수 없을까요..? AWS S3+CloudFront 상황에서 디테일 페이지 리프레쉬를 진행하면 slash가 포함된 url로 redirect(301)로 시켜버려서요.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
QueryDSL 강의 수강에 대한 질문입니다.
안녕하세요. 항상 좋은 강의 감사합니다. 이번에 JPA 활용 2편까지 수강을 마무리하고 직접 JPA를 활용해서 프로젝트를 만들어볼 생각인데요. 스프링 데이터 JPA의 경우는 JPA를 빠르고, 간결하게 사용할 수 있게 도와주는 용도라서 필수가 아니지만, QueryDSL은 JPA를 활용하는데 있어서 처리하기 힘든 동적쿼리를 쉽게 해결해주기 때문에 필수라고 생각했습니다. 당장 급하게 프로젝트를 만들어야하는 상황이라서 듣더라도 QueryDSL 중에서도 동적쿼리 부분만 빠르게 들어야할 상황인데요. 스프링 데이터 JPA 강의를 듣지 않더라도 QueryDSL 강의를 이해하는데 어려움없이 들을 수 있을까요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 404페이지가 떴을 때 App.vue의 컴포넌트의 영향을 받지않는 빈페이지에서 새로운 컴포넌트를 출력하고싶은데 그럴땐 어떤 방식으로 하나요?
-
해결됨Vue.js 끝장내기 - 실무에 필요한 모든 것
@vue로 설치되는 라이브러리와 일반 라이브러리의 차이점이 궁금합니다.
안녕하세요 캡틴님! 항상 잘듣고 있고 어느덧 엔드게임까지 왔네요! 강의를 듣고 다른프로젝트를 위해서 개발환경을 맞추는중 package.json에서 궁금한게 생겼는데 @vue경로가 잡힌 라이브러리와 일반 라이브러리가 있더군요. 혹시 이 두가지의 차이점이 어떻게 되는지 궁금하고 중복되어도 상관없는지 궁금합니다 :)
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
expose설정 후 docker run 시 docker ps에 아무것도 표시안됨
안녕하세요 강사님 강의 5:47쯤에 Dockerfile-apache에 expose설정을 80으로하고 도커 inspect로 ExposedPorts가 "80/tcp"로 설정된 것을 확인 후, 강사님과 같이 docker run -P -d myweb을 실행 후 docker ps를 돌려보았습니다. 제가 앞 강의에서 무엇인가 놓친 것인 지 확실히 잘 모르겠지만 docker ps 명령어를 입력하면 표시되는 것이 없습니다. d 명령을 사용하면 백그라운드에서 돌아가게끔 되어있어야한다고 생각하는데 docker ps -a로 들어가보면 STATUS가 Exited로 표시되어있습니다. 사진 첨부 드립니다. 또 어떤 부분을 놓쳤는지 잘 모르겠는데 p 옵션을 사용해 9999포트로 연결하게 끔 설정을 해도 설정이 안됬는지 제 퍼블릭IP주소:9999로 들어가면 페이지에 연결할 수 없습니다 라는 메세지가 표시됩니다. 하지만 아래와 같은 식으로 , 입력을 해야지만 index.html파일에 연결되어 표시가 됩니다. docker run -d -p 9999:80 -v /home/ubuntu/2021_DEV_HTML:/usr/local/apache2/htdocs --name apacheweb httpd:alpine 어떤것이 잘못되었을까요? ㅜㅜ
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
넥스트 12 버전에 나왔다고 합니다ㅋㅋㅋ
제로초 강사님, 책과 강의 잘보고 있습니다. 감사합니다. 넥스트 12가 나왔는데... 러스트 컴퍼일러 등 다른 기능과~~ 서버 컴포넌트가 나왔다고 하네요 (getServerSideProps or getStaticProps 요거 필요없다고 함) 어떻게 생각하시나요? 넉스트보다 좋나요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV off 패키지 구조
안녕하세요. 항상 좋은 강의 감사드립니다. 강의에서 실시간 요청이 많은 서비스의 경우, OSIV 옵션을 off하고 쿼리 서비스를 따로 분리하여 패키지 구조를 가져가라고 말씀해주셨습니다. 패키지 구조를 분리하는 것까지는 이해했는데, 어떤 구조로, 어떤 점을 고려해서 구조를 잡아야할지 감이 오질 않아서 혹시 참고할 수 있는 예제나 설명이 있을까하여 질문드립니다. 강의에서는 예제 설명을 위해 간단하게 서비스 패키지 내부에 쿼리 패키지를 두어 만드셨는데요. 좋은 방법은 아니라고 언급해주어 질문드립니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
axios를 입력하면 브라우저에서 products개체가 안보입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며<html> <head> <title>그랩마켓</title> <link href="index.css" type="text/css" rel="stylesheet" /> <script src="https: //cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> </head> <body> <div id="header"> <div id="header-area"> <img src="images/icons/logo.png" /> </div> </div> <div id="body"> <div id="banner"> <img src="images/banners/banner1.png" /> </div> <h1>판매되는 상품들</h1> <div id="product-list"> </div> </div> <div id="footer"></div> </body> <script> axios .get("https://e3f2bd1c-cf0f-4c5f-9d8d-ec27a55f4785.mock.pstmn.io/products") .then(function (result) { console.log("통신 결과 : ", result); }) .catch(function (error) { console.error("error 발생: ", error); }); var products = [{ name : '농구공', price : 100000, seller : '조던', imageUrl : 'images/products/basketball1.jpeg'},{ name : '축구공', price : 50000, seller : '메시', imageUrl : 'images/products/soccerball1.jpg' },{ name : '키보드', price : 10000, seller : '그랩', imageUrl : 'images/products/keyboard1.jpg' }]; let productsHtml=''; for(var i=0; i < products.length; i++){ let product = products[i] productsHtml = productsHtml + '<div class="product-card">'+ '<div>'+ '<img class ="product-img" src="'+ product.imageUrl +'" />'+ '</div>'+ '<div class="product-contents">'+ '<span class="product-name">'+product.name+'</span>'+ '<span class="product-price">'+product.price+'원'+'</span>'+ '<div class="product-seller">'+ '<img class="product-avatar" src="images/icons/avatar.png" />'+ ' <span>'+product.seller+'</span>'+ '</div>'+ ' </div>'+ '</div>' } document.querySelector("#product-list").innerHTML = productsHtml; </script> </html> 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf message 사용 시 Cannot resolve property key 에러
안녕하세요 ! 강의에서는 Intellij thymeleaf message 사용 시 properties 파일과 연동 및 자동완성이 잘 되는데 저는 Cannot resolve property key 에러가 뜨고 message 파일과 연동이 잘 되지 않는 것 같습니다. 프로젝트 실행에는 이상이 없지만 강사님처럼 동작하게 하려면 따로 설정해야 하는 부분이 있을까요? 구글링해도 해결방법을 찾지 못 해 질문 남깁니다..! 감사합니다 !!
-
미해결Vue.js 시작하기 - Age of Vue.js
캡틴님께 건의사항 있습니다 :)
안녕하세요! 강의를 듣다가 요구사항이 하나 생겼습니다. 중간중간에 실습을 넣어주시는데, 혹시 하나의 큰 챕터 끝나고 나서 기본 개념 잘 익히고 있는지 확인하는 선수학습확인같은 실습을 한 3배(=3개?)로 넣어주시면 안될련지 건의드려봅니다. (그 챕터 수준에 맞게요!) 강의 너무 잘 듣고 있습니다! 감사합니다!
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
xcode 시뮬레이터가 작동하지 않네요 ㅠㅠ
expo에서 run on IOS simulator를 클릭했을때 시뮬레이터가 켜지지 않고 이런 에러창이 뜹니다ㅠㅠ 어떻게 해결해야할까요?
-
미해결실전! Querydsl
AttributeConverter로 적용하는 필드에 대해 그룹함수 적용은 어떤 방식으로 해야할까요?
안녕하십니까 집합 함수 적용에 관해 궁금한 점이 있어서 질문 드립니다. 아래와 같이 AttributeConverter 적용 필드의 경우에는 QueryDSL로 집합함수 적용이 가능한 방법이 있는지 궁금합니다. public class Product { public enum ProductStatus { PROCEEDING, SOLD_OUT;} @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "PRODUCT_ID") private Long id; @Column(name = "TITLE") private String title; @Column(name = "PRICE") private Money price; } public class Money { public static final Money ZERO = Money.wons(0); private final BigDecimal amount; public static Money wons(long amount) { return new Money(BigDecimal.valueOf(amount)); } public static Money wons(double amount) { return new Money(BigDecimal.valueOf(amount)); } public static <T> Money sum(Collection<T> bags, Function<T, Money> monetary) { return bags.stream().map(bag -> monetary.apply(bag)).reduce(Money.ZERO, Money::plus); } Money(BigDecimal amount) { this.amount = amount; } public Money plus(Money amount) { return new Money(this.amount.add(amount.amount)); } public Money minus(Money amount) { return new Money(this.amount.subtract(amount.amount)); } public Money times(double percent) { return new Money(this.amount.multiply(BigDecimal.valueOf(percent))); } public Money divide(double divisor) { return new Money(amount.divide(BigDecimal.valueOf(divisor))); } public boolean isLessThan(Money other) { return amount.compareTo(other.amount) < 0; } public boolean isGreaterThan(Money other) { return amount.compareTo(other.amount) > 0; } public BigDecimal getAmount() { return amount; } public Long longValue() { return amount.longValue(); } public Double doubleValue() { return amount.doubleValue(); } public boolean equals(Object object) { if (this == object) { return true; } if (!(object instanceof Money)) { return false; } Money other = (Money)object; return Objects.equals(amount.doubleValue(), other.amount.doubleValue()); } public int hashCode() { return Objects.hashCode(amount); } public String toString() { return amount.toString() + "원"; } } @Converter(autoApply = true) public class MoneyConverter implements AttributeConverter<Money, Long> { @Override public Long convertToDatabaseColumn(Money money) { return money.getAmount().longValue(); } @Override public Money convertToEntityAttribute(Long amount) { return Money.wons(amount); } }