inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

결과는 뜨는데 에러가 나옵니다 그냥 무시하면 되나요?

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] java.io .EOFException: null at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.fillReadBuffer( NioEndpoint.java:1347 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1234 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:785 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:348 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:263 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:926 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1791 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-08-01 17:56:50.209 DEBUG 21464 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header java.io .EOFException: null at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.fillReadBuffer( NioEndpoint.java:1347 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1234 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:785 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:348 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:263 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:926 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1791 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-08-01 17:56:50.213 DEBUG 21464 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing request java.io .EOFException: null at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.fillReadBuffer( NioEndpoint.java:1347 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1234 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:785 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:348 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:263 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:926 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1791 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-08-01 17:56:50.213 DEBUG 21464 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing request java.io .EOFException: null at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.fillReadBuffer( NioEndpoint.java:1347 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1234 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:785 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:348 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:263 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:926 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1791 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-08-01 17:56:50.215 DEBUG 21464 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Socket: [ org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper@b93f867: org.apache.tomcat.util.net .NioChannel@44fa23bd:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:61117]], Status in: [OPEN_READ], State out: [CLOSED] 2023-08-01 17:56:50.216 DEBUG 21464 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Socket: [ org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper@294549a5: org.apache.tomcat.util.net .NioChannel@38789ba9:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:61116]], Status in: [OPEN_READ], State out: [CLOSED] 이런 에러가 뜹니다.

  • spring
  • mvc
박준형 댓글 2 좋아요 0 조회수 1193

cartpole_DQN 에러

미해결

프로그래머를 위한 강화학습(저자 직강)

github에 있는 cartpole_DQN 코드를 그대로 사용하는데 위와 같이 에러가 뜹니다. 별도로 수정한 내용은 없고 우분투 20.04, 코랩에서 돌렸습니다.

  • 인공신경망
  • 강화학습
정윤상 댓글 2 좋아요 0 조회수 451

null? blank? 차이

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

- 여러분의 질문을 고대하고 있습니다. :-) - 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다. - 예의는 거침없이 질문하기 위한 최고의 발명품입니다. - 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다. - 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다. - 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다. - 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 혹시 model 생성시 null=True와 blank=True의 차이점은 뭔가요? 둘다 값을 부여하지않아도 된다라는 식으로 이해하고 있어서요

  • react
  • python
  • django
  • docker
조윤식 댓글 2 좋아요 0 조회수 498

헥스 타일맵 작성시 좌표생성

미해결

태블로 지도 시각화, 기초부터 고급까지

헥스 타일맵 작성시 좌표 생성은 어떤 식으로 해야 쉽게 할 수 있을까요? 시도와 시군구 경우, 좌표 템플렛을 제공해 주셔서 활용이 가능한데, 만약 미국을 주별로 좌표를 생성한다던가 아시아국가들을 좌표로 생성한다던가 하는 것으로 활용한다고 가정한다면 이럴 경우, 좌표 생성은 어떤 식으로 하면 될까요?

  • tableau
  • geospatial
  • geocoding
  • joins
Jungmi Choi 댓글 1 좋아요 0 조회수 474

cartpole_DQN 에러

미해결

github에 업로드된 cartpole_DQN을 그대로 colab에서 사용중인데 다음과 같은 에러가 뜹니다. 어떻게 해야 하나요?

  • 프로그래머를위한강화학습
  • cartpole_dqn에러
  • reshape에러
정윤상 댓글 1 좋아요 0 조회수 213

Button is not defined

미해결

[리뉴얼] React로 NodeBird SNS 만들기

프로필 탭 들어갈 시 Button is not defined 이라는 오류가 뜹니다 제 코드는 import React from "react"; import PropTypes from "prop-types"; import { List } from "antd"; import Item from "antd/lib/list/Item"; import { StopOutlined } from "@ant-design/icons"; import { isStyledComponent, keyframes } from "styled-components"; const FollowList = ({ header, data }) => { return ( <List style={{ marginBottom: 20 }} grid={{ gutter: 4, xs: 2, md: 3 }} size="small" header={<div>{header}</div>} loadMore={ <div style={{ textAlign: "center", margin: "10px 0" }}> <Button>더 보기</Button> </div> } bordered dataSource={data} renderItem={(Item) => ( <List.Item style={{ marginTop: 20 }}> <Card actions={[<StopOutlined key="stop" />]}> <Card.Meta description={Item.Nickname} /> </Card> </List.Item> )} /> ); }; FollowList.propTypes = { header: PropTypes.string.isRequired, data: PropTypes.array.isRequired, }; export default FollowList; 입니다 무엇이 문제 일까요?

  • react
  • redux
  • node.js
  • express
  • next.js
lsw0810222 댓글 2 좋아요 0 조회수 364

강사님 좋은 강의 감사드리며 궁금한 사항이 있어서 질문 드립니다.

해결됨

스프링부트를 기동시키면 @Configuration 에 의해 존재하는 모듈들을 참고하여 환경을 자동 구성하는 것으로 알고 있습니다. 하지만 우리가 자체로 제작한 imports 파일에 jetty 와 tomcat , dispatcher 가 를 작성하여 이의 조건에 따라 이를 구성하였는데 이건 스프링 부트 자체에서 해주는 일들과 충돌이 발생하지 않는 건지요? 만약 발생하지 않는다면 그 이유는 사용자가 설정한 환경이 먼저 구성되고 스프링 부트는 @ConditionalOnMissingBean 을 사용하여 사용자가 생성한 빈을 따로 생성하지 않기 때문인지요 ? 제 생각이 틀렸으면 정확한 지적 부탁드립니다. 감사합니다.

내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 178

두번째 프로젝트 권한 요청 드려요~

미해결

Vue.js + TypeScript 완벽 가이드

닉네임: JAESEOK 깃헙 아이디: sjs1@cudo.co.kr 감사합니다~

김성인 댓글 2 좋아요 1 조회수 287

HomeController 클래스 통해서 home.html 렌더링되는 과정이 이게 맞는 건지 궁금해요

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. 애플리케이션이 실행될 때, @Controller annotation이 있는 HomeController class의 instance가 스프링 컨테이너에 bean으로서 등록 2. 사용자가 localhost:8080 입력하면 tomcat 서버가 받고, 스프링 컨테이너에 @GetMapping("/")이 있는 bean 탐색 3. HomeController class 내부에 있는 home()이 @GetMapping("/")이 있고, 문자열 "home"을 return하므로 templates 폴더에 있는 home.html 렌더링됨, 컨테이너에서 이미 대응되는 bean을 찾았으므로 static 폴더에 있는 index.html는 렌더링 X 이 과정이 맞을까요?

  • java
  • spring
  • mvc
  • spring-boot
han 댓글 1 좋아요 0 조회수 577

[3_Q맞왜틀] 어디서 틀렸는지 잘 모르겠어요

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/2c94d34c79944ea3a6c763ef440ac650 예제는 맞는 것 같은데 (visited배열 출력해서 확인함) 제출 하면 틀렸다고 나오네요.. 왜그런지 잘 모르겠어요 ㅜㅜ 저는 다음과 같이 코드를 짰습니다. 입력받고 gohome 함수에서 cnt가 k와 같으면 ret++하고 return ny와 nx정의해서 범위 벗어나는지 확인, 방문했는지 확인, 입력받은 배열 값이 T인지 확인, cnt==k인데도 도착지가 집이 아닌지 확인 위 조건들을 통과하면 방문하고 재귀함수 호출 , 방문기록 삭제 도움 많이 받고있습니다 선생님 감사합니다!

  • c++
  • 코딩-테스트
jsshin0201 댓글 2 좋아요 1 조회수 227

long 반환타입

미해결

실전! 스프링 데이터 JPA

MemberJpaRepository의 count 함수에서 Long이 아닌 long 으로 반환타입을 작성 하는 이유가 뭔가요? Long으로 해도 상관 없는걸까요?

  • java
  • spring
  • spring-boot
  • jpa
.. 댓글 1 좋아요 0 조회수 415

keycloak, oauth2을 이용한 spring boot 인증 처리

미해결

안녕하세요. 프론트와 백엔드간에 인증처리 구성을 테스트 하던 중 궁금한게 있어 질문드립니다. 프론트와 백엔드에 kecloak 적용 방법이 궁금합니다. 현재 프론트, 백엔드 모두 spring boot를 사용했습니다. 그 다음 spring-boot-starter-oauth2-resource-server, spring-boot-starter-oauth2-client를 적용하려고 하는데요. keycloak 로그인을 해서 인증 세션을 생성(프론트) : client 적용 들어온 요청이 인증된 요청인지 확인(백엔드) : resource-server 적용 이렇게 적용하면 되는걸까요? REST API 호출 시 인증 처리 방식이 궁금합니다. 1) 같은 realms 안의 client들 끼리는 keycloak SSO 처리로 인증된다.? 2) keycloak에서 토큰정보 조회 url을 호출해서 받은 access-token을 헤더에 넣어서 받는 쪽에서 token을 파싱해서 인증 체크를 한다. 2번으로 한다고 하면 access-token을 얻어오는 방식이 url을 호출해서 받아오는 게 맞는 방법인지가 궁금합니다. 프론트 접속 -> keycloak 로그인 페이지 호출 -> keycloak 로그인 -> 백엔드 호출 요청 -> keycloak에 access-token 요청 -> access-token을 헤더에 넣고 백엔드 호출 -> 백엔드에서 헤더에 있는 access-token을 확인 -> keycloak에 token 검증 요청 이 흐름대로 동작한다고 생각하면 될까요? 아니면 로그인 되어 있는 상태라면 access-token을 꺼낼 수 있는 방법이 있는걸까요?

이 희재 댓글 1 좋아요 0 조회수 1997

npm start

미해결

처음 만난 리액트(React)

npm start를 하면 여기서 멈추고 원하는 화면이 안나오는데 어떻게 해야하나요?

  • HTML/CSS
  • javascript
  • react
댓글 1 좋아요 1 조회수 491

C언어로 메모장 프로젝트를 시작한다면,

미해결

홍정모의 따라하며 배우는 C언어

지금 강의 커리큘럼을 완주했을때, 메모장 프로젝트가 가능할까요? 제가 생각한 메모장 기능은 파일 열기, 닫기,최대화 최소화, 크기변화 텍스트입력, 삭제. 복사,붙여넣기 저장,수정 -이렇게 일때, 해당 과정만으로 가능할까요? 아니면 winAPI나 GUI에 대한 추가 학습이 필요할까요? 순수C언어만으로 프로젝트가 가능한지, 다른 별도 학습이 필요한지 궁금합니다.

  • c
  • 메모장
  • texteditor
이제운 댓글 1 좋아요 1 조회수 576

이진탐색 코드 질문

해결됨

n, m = map(int, input().split()) duck = list(map(int, input().split())) ducks = sorted(duck) def binary(array, target, start, end): global result while start <= end: sum = 0 mid = (start+end)//2 for i in duck: if i > mid: sum += i - mid if sum < m: end = mid - 1 else : result = mid start = mid+1 result = binary(ducks, m, 0, ducks[-1]) print(result) 이 코드에 입력값 4 6 19 15 10 17 대입하면 15가 나와야하는데 나오지 않습니다. 어디가 문제인걸까요?

soh9909 댓글 1 좋아요 0 조회수 128

MemberServiceTest 똑같이 작성했는데 java: ';' expected 에러가 자꾸 떠요

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemoryMemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions. assertThrows ; public class MemberServiceTest { MemberService memberService; MemoryMemberRepository memberRepository; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @AfterEach public void afterEach() { memberRepository.clearStore(); //코드가 끝날때마다 clear @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when long saveId = memberService.join(member); // then Member findMember = memberService.findOne(saveId).get(); Assertions. assertThat (member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { // given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when memberService.join(member1); //then IllegalStateException e = assertThrows (IllegalStateException.class, () -> memberService.join(member2)); Assertions. assertThat (e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } // //then // try{ // memberService.join(member2); // fail(); // }catch (IllegalStateException e){ // // assertThat을 통해 두 객체가 같은지 확인한다. // Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.1232131"); // } @Test void findMember() { } @Test void findOne() { } }

  • java
  • spring
  • mvc
  • spring-boot
콜드 댓글 1 좋아요 0 조회수 1379

Frame에 대한 개념 질문

해결됨

[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기

"뷰는 자신의 콘텐트와 자신이 속한 레이아웃에 따라 자동으로 크기가 조절됩니다. 하지만 frame 수정자를 사용하여 뷰의 크기나 영역을 조절 할 수 있습니다." 프레임은 해당 글과 같은 역할을 한다고 볼 수 있을거 같은데 아래 실습을 통해 추가적으로 이해를 해보려고 하면 VStack(spacing: 20){ Text("Hello World!") .font(.title) .background( Color.red ) .frame(height: 100, alignment: .top) // 100프레임에 대한 컨텐츠는 위에 붙게됨 .background(.orange) .frame(width: 200) .background(Color.purple) .frame(maxWidth: .infinity, alignment: .leading) .background( Color.pink ) .frame(height: 400) .background( Color.green ) .frame(maxHeight: .infinity, alignment: .top) .background(Color.yellow) } 실질적으로 뷰의 크기나 영역을 frame 함수를 통해 조각조각 붙여나가는 방식으로 구현한다.라고 정리될 거 같습니다. 제가 이해한 게 맞는지 궁금합니다. 이런 식으로 조각을 붙여가면서 구현을 하는 개념으로 이해해도 되는 건지...

  • ios
  • swift
  • swiftui
조승범 댓글 1 좋아요 0 조회수 282

TypeError: Cannot read property 'status' of undefined

미해결

배달앱 클론코딩 [with React Native]

안녕하세요 제로초님! 회원가입을 하려면, 계속 아래와 같은 에러가 터미널에 뜹니다. error: [TypeError: Cannot read property 'status' of undefined] ERROR undefined 어디가 잘 못 된걸까요,, .env파일 확인 해서 제 IP주소 확인했습니다. signUp 부분을 확인해야하는건지,, import React, {useCallback, useRef, useState, useEffect} from 'react'; import { ActivityIndicator, Alert, Platform, Pressable, StyleSheet, Text, TextInput, View, } from 'react-native'; import {NativeStackScreenProps} from '@react-navigation/native-stack'; import DismissKeyboardView from '../components/DismissKeyboardView'; import axios, {AxiosError} from 'axios'; import Config from 'react-native-config'; // 혹시 이거 설정법 아시나요 import {RootStackParamList} from '../../AppInner'; type SignUpScreenProps = NativeStackScreenProps<RootStackParamList, 'SignUp'>; function SignUp({navigation}: SignUpScreenProps) { const [loading, setLoading] = useState(false); const [email, setEmail] = useState(''); const [name, setName] = useState(''); const [password, setPassword] = useState(''); const emailRef = useRef<TextInput | null>(null); const nameRef = useRef<TextInput | null>(null); const passwordRef = useRef<TextInput | null>(null); useEffect(() => { console.log('email: ', email); console.log('name: ', name); console.log('password: ', password); }, [email, name, password]); const onChangeEmail = useCallback((text: string) => { setEmail(text.trim()); }, []); const onChangeName = useCallback((text: string) => { setName(text.trim()); }, []); const onChangePassword = useCallback((text: string) => { setPassword(text.trim()); }, []); const onSubmit = useCallback(async () => { if (loading) { return; } if (!email || !email.trim()) { return Alert.alert('알림', '이메일을 입력해주세요.'); } if (!name || !name.trim()) { return Alert.alert('알림', '이름을 입력해주세요.'); } if (!password || !password.trim()) { return Alert.alert('알림', '비밀번호를 입력해주세요.'); } if ( !/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/.test( email, ) ) { return Alert.alert('알림', '올바른 이메일 주소가 아닙니다.'); } if (!/^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[$@^!%*#?&]).{8,50}$/.test(password)) { return Alert.alert( '알림', '비밀번호는 영문,숫자,특수문자($@^!%*#?&)를 모두 포함하여 8자 이상 입력해야합니다.', ); } console.log(email, name, password); try { //:TODO log 삭제 console.log('LOGIN REQUEST'); console.log(Config.API_URL); setLoading(true); console.log(email); console.log(name); console.log(password); const response = await axios.post(`${Config.API_URL}/user`, { email, name, password, }); console.log('response: ', response.data); Alert.alert('알림', '회원가입 되었습니다.'); navigation.navigate('SignIn'); } catch (error) { console.log('error: ', error); const errorResponse = (error as AxiosError).response; console.error(errorResponse); if (errorResponse) { Alert.alert('알림'); } } finally { setLoading(false); } }, [loading, navigation, email, name, password]); const canGoNext = email && name && password; return ( <DismissKeyboardView> <View style={styles.inputWrapper}> <Text style={styles.label}>이메일</Text> <TextInput style={styles.textInput} onChangeText={onChangeEmail} placeholder="이메일을 입력해주세요" placeholderTextColor="#666" textContentType="emailAddress" value={email} returnKeyType="next" clearButtonMode="while-editing" ref={emailRef} onSubmitEditing={() => nameRef.current?.focus()} blurOnSubmit={false} /> </View> <View style={styles.inputWrapper}> <Text style={styles.label}>이름</Text> <TextInput style={styles.textInput} placeholder="이름을 입력해주세요." placeholderTextColor="#666" onChangeText={onChangeName} value={name} textContentType="name" returnKeyType="next" clearButtonMode="while-editing" ref={nameRef} onSubmitEditing={() => passwordRef.current?.focus()} blurOnSubmit={false} /> </View> <View style={styles.inputWrapper}> <Text style={styles.label}>비밀번호</Text> <TextInput style={styles.textInput} placeholder="비밀번호를 입력해주세요(영문,숫자,특수문자)" placeholderTextColor="#666" onChangeText={onChangePassword} value={password} keyboardType={Platform.OS === 'android' ? 'default' : 'ascii-capable'} textContentType="password" secureTextEntry returnKeyType="send" clearButtonMode="while-editing" ref={passwordRef} onSubmitEditing={onSubmit} /> </View> <View style={styles.buttonZone}> <Pressable style={ canGoNext ? StyleSheet.compose(styles.loginButton, styles.loginButtonActive) : styles.loginButton } disabled={!canGoNext || loading} onPress={onSubmit}> {loading ? ( <ActivityIndicator color="white" /> ) : ( <Text style={styles.loginButtonText}>회원가입</Text> )} </Pressable> </View> </DismissKeyboardView> ); } const styles = StyleSheet.create({ textInput: { padding: 5, borderBottomWidth: StyleSheet.hairlineWidth, }, inputWrapper: { padding: 20, }, label: { fontWeight: 'bold', fontSize: 16, marginBottom: 20, }, buttonZone: { alignItems: 'center', }, loginButton: { backgroundColor: 'gray', paddingHorizontal: 20, paddingVertical: 10, borderRadius: 5, marginBottom: 10, }, loginButtonActive: { backgroundColor: 'blue', }, loginButtonText: { color: 'white', fontSize: 16, }, }); export default SignUp; 아니면 AppInner부분인건지 모르겟습니다. import SignIn from './src/pages/SignIn'; import SignUp from './src/pages/SignUp'; import Orders from './src/pages/Orders'; import Delivery from './src/pages/Delivery'; import Settings from './src/pages/Settings'; import * as React from 'react'; import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; import {createNativeStackNavigator} from '@react-navigation/native-stack'; import {useSelector} from 'react-redux'; import {RootState} from './src/store/reducer'; import useSocket from './src/hooks/useSocket'; import {useEffect} from 'react'; import EncryptedStorage from 'react-native-encrypted-storage'; import axios, {AxiosError} from 'axios'; import {Alert} from 'react-native'; import userSlice from './src/slices/user'; import {useAppDispatch} from './src/store'; import Config from 'react-native-config'; import orderSlice from './src/slices/order'; export type LoggedInParamList = { Orders: undefined; Settings: undefined; Delivery: undefined; Complete: {orderId: string}; }; export type RootStackParamList = { SignIn: undefined; SignUp: undefined; }; const Tab = createBottomTabNavigator(); const Stack = createNativeStackNavigator<RootStackParamList>(); function AppInner() { const dispatch = useAppDispatch(); const isLoggedIn = useSelector((state: RootState) => !!state.user.email); console.log('isLoggedIn', isLoggedIn); const [socket, disconnect] = useSocket(); // 앱 실행 시 토큰 있으면 로그인하는 코드 useEffect(() => { const getTokenAndRefresh = async () => { try { const token = await EncryptedStorage.getItem('refreshToken'); if (!token) { return; } const response = await axios.post( `${Config.API_URL}/refreshToken`, {}, { headers: { authorization: `Bearer ${token}`, }, }, ); dispatch( userSlice.actions.setUser({ name: response.data.data.name, email: response.data.data.email, accessToken: response.data.data.accessToken, }), ); } catch (error) { console.error(error); if ((error as AxiosError as any).response?.data.code === 'expired') { Alert.alert('알림', '다시 로그인 해주세요.'); } } }; getTokenAndRefresh(); }, [dispatch]); useEffect(() => { const callback = (data: any) => { console.log(data); dispatch(orderSlice.actions.addOrder(data)); }; if (socket && isLoggedIn) { socket.emit('acceptOrder', 'hello'); socket.on('order', callback); } return () => { if (socket) { socket.off('order', callback); } }; }, [dispatch, isLoggedIn, socket]); useEffect(() => { if (!isLoggedIn) { console.log('!isLoggedIn', !isLoggedIn); disconnect(); } }, [isLoggedIn, disconnect]); useEffect(() => { axios.interceptors.response.use( response => { return response; }, async error => { const { config, response: {status}, } = error; if (status === 419) { if (error.response.data.code === 'expired') { const originalRequest = config; const refreshToken = await EncryptedStorage.getItem('refreshToken'); // token refresh 요청 const {data} = await axios.post( `${Config.API_URL}/refreshToken`, // token refresh api {}, {headers: {authorization: `Bearer ${refreshToken}`}}, ); // 새로운 토큰 저장 dispatch(userSlice.actions.setAccessToken(data.data.accessToken)); originalRequest.headers.authorization = `Bearer ${data.data.accessToken}`; // 419로 요청 실패했던 요청 새로운 토큰으로 재요청 return axios(originalRequest); } } return Promise.reject(error); }, ); }, [dispatch]); return isLoggedIn ? ( <Tab.Navigator> <Tab.Screen name="Orders" component={Orders} options={{title: '오더 목록'}} /> <Tab.Screen name="Delivery" component={Delivery} options={{title: '내 오더'}} /> <Tab.Screen name="Settings" component={Settings} options={{title: '내 정보'}} /> </Tab.Navigator> ) : ( <Stack.Navigator> <Stack.Screen name="SignIn" component={SignIn} options={{title: '로그인'}} /> <Stack.Screen name="SignUp" component={SignUp} options={{title: '회원가입'}} /> </Stack.Navigator> ); } export default AppInner;

  • react-native
박채연 댓글 4 좋아요 0 조회수 1712

mysql 관련 docker-compose 빌드 시 에러

미해결

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

강의 하나 들을 때마다 에러가 너무 많이 떠서 진도가 안나가서 미칠 지경이네요 ㅠㅠ docker-compose.yaml 파일을 아래와 같이 설정하고 docker-compose build를 하니 services.mydb.environment.0 must be a string 라는 에러가 떠서 구글링을 하니 environment: - MYSQL_DATABASE: 'dockerProject' - MYSQL_ROOT_PASSWORD: 'root' 여기서 띄어쓰기를 없애보라고 하길래 아래와 같이 띄어쓰기를 없앤채로 .yaml파일을 변경하였습니다. version: '3.7' services: mybackend: build: context: . dockerfile: Dockerfile volumes: - ./src:/myfolder/src ports: - 3000:3000 env_file: - ./.env.docker mydb: # platform: linux/86_64 image: mysql:8.0.34 environment: - MYSQL_DATABASE:'dockerProject' - MYSQL_ROOT_PASSWORD:'root' ports: - 3306:3306 그리고는 docker-compose build 이후 up을 실행했으나 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... 에러가 계속 발생합니다.(docker 말고 내 로컬컴퓨터에서는 mysql 연결 잘 되었음) 다른 질문자 분들 내용을 참조하여 package.json 파일의 mysql2와 typeorm의 버전을 아래와 같이 바꾸었고, .yaml 파일에서도 mysql 버전을 latest에서 8.0.34로 지정해주었습니다. { "name": "graghql", "version": "0.0.1", "description": "", "author": "", "private": true, "license": "UNLICENSED", "scripts": { "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { "@apollo/server": "^4.9.0", "@nestjs/apollo": "^12.0.7", "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.0.0", "@nestjs/graphql": "^12.0.8", "@nestjs/platform-express": "^10.0.0", "@nestjs/typeorm": "^10.0.0", "graphql": "^16.7.1", "mysql2": "3.2.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.1", "typeorm": "^0.3.12" }, "devDependencies": { "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", "@types/supertest": "^2.0.12", "@typescript-eslint/eslint-plugin": "^5.59.11", "@typescript-eslint/parser": "^5.59.11", "eslint": "^8.42.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.5.0", "prettier": "^2.8.8", "source-map-support": "^0.5.21", "supertest": "^6.3.3", "ts-jest": "^29.1.0", "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", "typescript": "^5.1.3" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } 그런데도 똑같이 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... 에러가 발생하여 node_modules 파일 및 dist 파일을 삭제 후 다시 yarn install을 했는데, 이제는 import도 되지 않습니다.... 에러 때문에 진도가 나가질 않아, 중간중간에 강의를 멈춰가며 강의와 똑같이 따라가고 있는데 왜 이런 에러가 계속 발생할까요 ㅠㅠ

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
댓글 2 좋아요 0 조회수 697

맥 vscode 질문있습니다.

미해결

윈도우에서 vs code 코드 작성후 프로그램 종료후 다시 vscode 실행하면 이전 작업 그대로 화면에 나오는데 맥에서는 코드 작성후 프로그램 종료후 다시 실행하면 이전 작업이 안나오고 이화면이 계속 나오는데 윈도우 처럼 할려면 어떻게 해야하나요? ㅠㅠ

ksd3940 댓글 1 좋아요 0 조회수 562

인기 태그

인프런 TOP Writers

주간 인기글