inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

@ModelAttribute 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@PostMapping("/members/new") public String create(@Valid @ModelAttribute MemberForm form, BindingResult result) { if (result.hasErrors()) { return "members/createMemberForm"; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/"; } @GetMapping("/members/new") public String createForm(Model model) { return "members/createMemberForm"; } 이런식으로 @ModelAttribute를 사용하여 코드를 짜보려고 하니 에러가 나왔고, 아마 html에서 memberForm 객체가 없어서 이용하지 못했고, 결국 매핑에 문제가 생겨 출력(?)을 하지 못해서 그런 것 같은데 예전 스프링 MVC강의에서는 @ModelAttriute를 이용해 코드를 잘 작성했던 거 같은데 왜 이번 강의에서는 사용하지 않았는지 궁금합니다. @PostMapping("/members/new") public String create(@Valid MemberForm form, BindingResult result) { MemberForm이 어떻게 파라미터로 받을 수 있는지 궁금합니다. (이미 Model에 객체가 있으면 파라미터로 받듯이 받을 수 있는 건지?) 위의 코드를 이용해서 웹페이지를 만드려면 createMemberForm.html 에서 <form role="form" action="/members/new" th:object="${memberForm}" method="post"> 이부분 대신 html 파라미터를 넘겨주는 식으로 고쳐야하는 것 일까요? html을 잘 몰라 질문드립니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 627

스타일링 명시도 질문 (@layer)

해결됨

Next.js 시작하기(feat. 지도 서비스 개발)

@layer base { #__next { display: contents; } } #__next를 레이어 두어 스타일링 명시도를 낮춘 것에 대한 이유가 궁금합니다. 혹시 next.js 내부에서 (프레임워크 내부에서) id : __next 를 스타일링하면 내가 작성한 코드보다 우선시 되도록 하기 위함인가요??

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
콩팥팥죽 댓글 1 좋아요 2 조회수 317

OrderService에서는 find 메서드를 만들지 않은 이유가 따로 있나요 ?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

ItemService에서는 ItemRepository의 기능을 위임받아 저장 및 검색 기능을 구현했는데 OrderService에서는 검색기능을 구현하지 않았더라구요. ItemService에서 위임 받는 것 처럼 하면 간단할 것 같은데 굳이 만들지 않고 OrderRepository의 findOne기능을 사용하는 이유가 따로 있는 것일까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 371

배포시 Ubuntu에 yarn 설치

해결됨

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

안녕하세요 선생님, yarn을 사용중이었는데, Ubuntu에서 npm이 아니라 yarn을 설치하면 되겠죠?

  • react
  • node.js
  • postgresql
  • docker
  • typescript
  • 클론코딩
  • next.js
miniapp 댓글 1 좋아요 0 조회수 346

캐시 stale 질문입니다.

해결됨

Next.js 시작하기(feat. 지도 서비스 개발)

안녕하세요 강의 감사합니다. 잘듣고잇습니다. 헤더에서 처음보는 값이 잇는데 x-nextjs-cache: STALE hit는 알겟습니다. stale이 라고 표기되는 기준이 무엇인가요? 서버의 최신 값이 아닌걸 어떻게 알죠? revalidate 되기 전에는 hit 로 표기되고 revalidate 되는 동안에는 stale 표기가 되는 건가요? 그리고 추측이 맞다면 revalidate 되는 동안이라는건 서버에 다시 요청보내고 응답받을때 까지를 말하는게 맞을까요? (* 여기는 읽으실 필요 없습니다. 질문이랑 같이 메모한거에요 그리고 revalidate 되었는데 값이 안바뀌면 캐시는 stale이라하더라도 e-tag로 2차 검증하고 태그 값이 같아서 그래도 사용한다 (강의 내용 그대로) 값이 바뀌면 hit 되고 e-tag값도 갱신한다. )

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
콩팥팥죽 댓글 1 좋아요 2 조회수 1065

ssr 캐시 가능한지 질문

해결됨

Next.js 시작하기(feat. 지도 서비스 개발)

ssr인데 해당 html에 연결된 js 파일이 있어서 js파일로 동적으로 렌더링하면 ssr로 내려진 html 자체는 캐시가 가능한가요? *ex) ssr로 받아온 infren.html 안에 user.js 파일 있고 user.js에서 ajax로 사용자 이름만 json으로 받아와 렌더링하면 infren.html과 user.js은 캐시할 수 있나요???

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
콩팥팥죽 댓글 1 좋아요 1 조회수 851

서버 라우터 에러 문의

해결됨

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

state 끌어올리기 수업부분에서 계속 이런 오류가 나서 문의드립니다. 혹시나 해서 다른 서버들은 종료를 해놓고 이것만 다시 실행을 했는데도 계속 오류가 발생하네요. 어떤부분이 잘못된 것인가요?

  • react
  • node.js
  • seo
  • graphql
  • next.js
suny_fun 댓글 2 좋아요 0 조회수 442

이미지 업로드 후 url 접속 에러와 관련해서 질문드립니다. (섹션 19)

해결됨

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

이미지를 업로드 후 받아오는 url을 통해, 이미지를 로딩해오는 과정에서 오류가 발생해서 질문드립니다. data는 uploadFile mutation 후 받아온 result에 대한 출력 결과이고, 여기서 받아온 url을 https://storage.googleapis.com/ . 뒤에 붙여서 이미지를 불러오려고 하면 오류가 발생합니다. 이 부분에 대한 에러를 해결할 수가 없어서 질문드립니다.

  • react
  • node.js
  • seo
  • graphql
  • next.js
김민규 댓글 1 좋아요 0 조회수 495

test/resources/application.yml이 없으면

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

main/resources/application.yml 을 따라가게 되는 건가요 ? 자바에서는 디비를 사용하고 싶고, test에서만 메모리 DB를 사용하고 싶다면 아무런 내용이 없는 application.yml를 test/resources 아래 생성만 하면 되는 건가요 ?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 602

API Routes로 변경 후 JSON 오류

해결됨

Next.js 시작하기(feat. 지도 서비스 개발)

안녕하세요 강사님. 먼저 강의 감사히 잘 듣고 있습니다. 다름이 아니라 API Routes로 프로젝트를 변경한 이후 아래와 같은 에러가 발생합니다. 아래 자막에 달아 두신 것과 같이 .env파일도 정상적으로 배포한 사이트로 바꿔 두었고 혹시몰라 JSON파일에 대한 파싱문제가 있는것인지 확인하고 싶습니다. https://github.com/eugene028/NextJsMap github주소도 남깁니다. 잘 되다가 API Routes로 변경하니까 이런 에러가 뜨네요!! ㅜㅜ

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
김유진 댓글 1 좋아요 1 조회수 454

로그인 버튼 클릭시 auth/auth-domain-config-required 에러 발생

미해결

만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)

안녕하세요. 로그인 버튼 클릭시 콘솔창에 다음과 같은 에러가 발생합니다. rebaseError: Firebase: Error (auth/auth-domain-config-required). at createErrorInternal (index-16e22603.js:497:1) at _assert (index-16e22603.js:503:1) at getIframeUrl (index-16e22603.js:9318:1) at _openIframe (index-16e22603.js:9343:1) at async BrowserPopupRedirectResolver.initAndGetManager (index-16e22603.js:9609:1) w https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth 공식 문서를 보니 authDomain configuration is not provided 일때 발생하는 에러라고 합니다. auth/auth-domain-config-required Thrown if authDomain configuration is not provided when calling firebase.initializeApp(). Check Firebase Console for instructions on determining and passing that field. 아래는 로그인버튼 컴포넌트에 onClick입니다. 코드상에는 에러가 발생하지 않았습니다. <GoogleLoginButton onClick={() => { signInWithPopup(FirebaseClient.getInstance().Auth, provider) .then((result) => { console.info(result.user); }) .catch((error) => { console.error(error); }); }} /> 루트 폴더에 .env 파일도 잘 있구요 ㅜㅜ 아래는 루트 폴더에 next.config.js 파일입니다. module.exports = { reactStrictMode: true, publicRuntimeConfig: { publicApiKey: process.env.publicApiKey || '', authDomain: process.env.FIREBASE_AUTH_HOST || '', projectId: process.env.projectId || '', }, }; 로그인 버튼 컴포넌트도 강사님 코드와 일치합니다.. 아래는 models/firebase_client.ts 입니다. 원인이 뭘까요!? import { initializeApp, getApps } from 'firebase/app'; import { Auth, getAuth } from 'firebase/auth'; import getConfig from 'next/config'; const { publicRuntimeConfig } = getConfig(); /** 환경변수는 node.js이기 때문에 서버에서 사용할 수 있고, 클라이언트에서 바로 접근할 수 없기 때문에 config 설정을 해주고 * 아래처럼 가져와서 쓸 수 있도록 해준다. */ const FirebaseCredentials = { apiKey: publicRuntimeConfig.apiKey, authDomain: publicRuntimeConfig.authDomain, projectId: publicRuntimeConfig.projectId, }; /** Firebase의 Authentication 모듈을 사용하기 위해 FirebaseClient 클래스를 정의하는 코드 */ export default class FirebaseClient { private static instance: FirebaseClient; private auth: Auth; /** 이미 초기화된 Firebase 애플리케이션이 있는지 검사하고, 없다면 FirebaseCredentials를 사용하여 Firebase 애플리케이션을 초기화 */ public constructor() { /** 앱이 몇 개 있는지 찾는 것 */ const apps = getApps(); /** 앱이 한 번도 초기화되지 않았다면 초기화를 시작 */ if (apps.length === 0) { console.info('firebase client init start'); initializeApp(FirebaseCredentials); } /** 초기화가 되었으면 Auth를 가져와서 할당 */ this.auth = getAuth(); console.info('firebase auth'); } /** 인스턴스를 가져옴 */ public static getInstance(): FirebaseClient { if (FirebaseClient.instance === undefined || FirebaseClient.instance === null) { FirebaseClient.instance = new FirebaseClient(); } return FirebaseClient.instance; } /** auth를 반환 */ public get Auth(): Auth { return this.auth; } }

  • next.js
fe 댓글 1 좋아요 0 조회수 739

@types/react를 인식하지 못하는 에러

미해결

만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)

강사님 안녕하세요. 이 전 질문에 대한 답변으로 get 요청에 대한 문제는 해결했습니다 감사합니다^^ 그런데 이후 다음과 같은 문제가 발생하였습니다. package-lock.json 삭제하고, node_modules 폴더도 삭제한 뒤 yarn 으로 패키지 재설치하였고, yarn dev, yarn build 등 명령어를 입력하면 다음과 같은 에러 메시지가 출력되면서 localhost :3000에 진입할 수 없습니다. @types/react를 최신버전으로 다시 설치해봤고, 강의에서 사용중인 버전인 ^17.0.37으로도 다시 설치해봤고, vscode 종료 후 재실행하여도 동일한 에러메시지가 계속 출력됩니다. 해당 에러 메시지는 npm run dev 명령어를 입력해도 @types/react를 설치하라는 에러가 발생합니다. 자체 해결 https://stackoverflow.com/questions/71843307/next-js-is-not-recognizing-types-react 위 스택오버플로우 답변을 보고 @types/react 버전을 18.0.1 버전으로 변경했습니다. 결과적으로 문제는 해결되었습니다. 그러나 의문점은, 강의에서 사용하는 버전은 ^17.0.37인데 저의 경우만 18.0.1버전으로 변경해야 작동하는 것인지? 아니면 다른 분들도 작동하지 않으시는지? 저만 그런것이라면 원인이 무엇일지 궁금합니다. ready - started server on 0.0.0.0:3000, url: http://localhost:3000 info - Loaded env from /Users/hanair/dev/blahx2/.env It looks like you're trying to use TypeScript but do not have the required package(s) installed. Please install @types/react by running: yarn add --dev @types/react If you are not trying to use TypeScript, please remove the tsconfig.json file from your package root (and any TypeScript files in your pages directory). error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. package.json 파일은 다음과 같습니다. { "name": "blahx2", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@chakra-ui/react": "1.8", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "firebase": "^9.20.0", "firebase-admin": "^11.7.0", "framer-motion": "^6.5.1", "next": "12.0.7", "react": "17.0.2", "react-dom": "17.0.2", "styled-components": "^5.3.3" }, "devDependencies": { "@types/node": "^16.11.13", "@types/react": "^17.0.58", "@types/styled-components": "^5.1.18", "@typescript-eslint/eslint-plugin": "^5.8.0", "@typescript-eslint/parser": "^5.8.0", "babel-eslint": "^10.1.0", "babel-plugin-styled-components": "^2.0.2", "eslint": "8.4.1", "eslint-config-airbnb": "^19.0.2", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-next": "12.0.7", "eslint-config-prettier": "^8.3.0", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react": "^7.27.1", "eslint-plugin-react-hooks": "^4.3.0", "prettier": "^2.5.1", "typescript": "^4.5.4" } }

  • next.js
fe 댓글 3 좋아요 0 조회수 2870

s3 연결하기 강의중 이미지 포함 post

미해결

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

안녕하세요 제로초님 늦은 밤에 죄송합니다 현재 이미지 업로드하고 미리보기까지 나오는거 확인하고 올렸는데 성공했다고만 뜨고 정작 이미지 파일만 빼고 post성공한거같습니다 그리고 게시글은 올려 지긴 하나 사진 빼고 내용만 나옵니다 지금까지 콘솔내용을 보고 Images에 어떻게 넣을까 고민하다가 postform하고 백에서 routes/post.js부분을 건드려봤지만 아무런 성과가 없었습니다 에러도 안나와서 어딜봐야할지 잘모르겠습니다 ㅠㅠ

  • react
  • redux
  • node.js
  • express
  • next.js
장산 댓글 2 좋아요 -1 조회수 635

버전이 다른데 어떤 식으로 학습하는게 좋을까요?

미해결

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

Nextjs 버전을 내리고 강의 버전과 똑같이 맞춰서 사용할 지, 아니면 문법을 수정하여 학습해야 할 지 모르겠습니다.. index.tsx 구조 다른거부터 머리아프네요 ㅜㅜ... 강의에서 사용하신 버전도 알려주세요!

  • react
  • node.js
  • postgresql
  • docker
  • typescript
  • 클론코딩
  • next.js
허 영욱 댓글 1 좋아요 0 조회수 557

섹션 1 관련 강의 노트는 없는지요?

미해결

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

안녕하세요. 강의를 듣고 있는 수강생 입니다. 강의 관련 기본 지식이 부족하다 보니, 여러 번 듣게 되는데요. 섹션 1에 대한 강의노트가 없는 것 같습니다. ( draw.io diagram file) 혹시 받을 수 있는지 문의 드립니다. 감사합니다.

  • node.js
  • postgresql
  • docker
  • typescript
  • 클론코딩
  • next.js
jiwoo_lee 댓글 2 좋아요 0 조회수 280

연관관계 메서드와 CASCADE의 관계

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

//==연관관계 메서드==// 가 주석으로 달린 메서드들이 연관관계에 있는 객체에 값을 넣어줄 때 반대편에도 자동으로 값을 넣어주는 역할을 하는 메서드가 맞나요? 이렇게 따로 메서드를 구현해주는 이유가 있나요? CASCADE 옵션을 사용하면 어차피 알아서 다 해주지 않나요 ?? 기본편에서 설명해주셨다고 했는데 어떤 강의를 다시 수강해보면 될까요 ? 지연로딩에서 ***ToMany의 디폴트는 Lazy고, ***ToOne의 디폴트는 Eager인 이유가 ***ToMany같은 경우 하나만 불러와도 기본적으로 수많은 값이 따라오기 때문에 스프링 측에서 Lazy로 해놓았고, (Member의 Order을 조회하면 수많은 Order이 자동으로 따라오기 때문에 디폴트가 Lazy) ***ToOne의 경우 객체 하나만 조회하면 쿼리문을 하나밖에 더 날리지 않기 때문에 Eager로 해놓았지만, 실무에서는 테이블 전체를 조회할 때가 있기 때문에 디폴트값인 Eager를 쓰지 않고 Lazy를 사용한다 이게 맞을까요? (Order하나만 조회하면 Member 1개만 따라오기때문에 디폴트가 Eager지만, select o from Order o 와 같은 쿼리문으로 Order를 전체 조회했을 때는 Order에 따른 멤버가 전부 따라오므로 그냥 Lazy 옵션을 준다) 이렇게 이해했는데 맞을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 668

엔티티와 테이블 설계 및 Category 클래스 질문입니다

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

기본편에서 관계에 따른 연관관계 설정하는 방법은 공부했는데, 위와 같은 기능 목록을 보고 기능목록을 보고 위와 같이 어떤 도메인을 써야 할지, 도메인끼리 1:N인지, N:N인지, 1:1인지 단방향인지, 양방향인지(실무에서는 N:N과 양방향은 지양하라고 하셨지만) 등 도메인 모델과 테이블 설계가 어렵다면 무엇을 참고하는 것이 좋을까요 ? ( 영한님이 분석해 놓은 회원 엔티티와 회원 테이블을 보고 코드를 작성할 순 있는데 스스로 회원 엔티티와 테이블을 분석하기가 너무 어렵습니다.) Category 클래스 안에서 스스로 일대다 관계를 맺고 있는데 이것은 무엇을 위해 만든건가요 ?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 1050

Category - Item 관계

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

카테고리 : 과일, 빨강, 노랑 // 아이템 : 사과, 배, 체리 이렇게 존재할 때 ================== 과일 -> 사과 배 체리 빨강 -> 사과 체리 노랑 -> 배 ================== 사과 -> 과일 빨강 배 -> 과일 노랑 체리 -> 과일 빨강 ================== 사과(아이템)같은 경우 과일과 빨강이라는 카테고리에 속해있고, 과일(카테고리)같은 경우 사과 배 체리라는 아이템이 속해있기 때문에 다대다 관계가 맞나요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 430

static/index.html 은 Mapping을 안해줬는데도 되는 이유가 무엇인가요 ?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@GetMapping("/") public String index() { return "index"; } 이런 소스 없이 자동으로 localhost:8080 들어가면 Index.html로 연결되는 이유가 무엇일까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 1174

첫번째 querydsl테스트 코드 에서 nullpointexception이 터졌습니다

미해결

실전! Querydsl

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. q타입을 생성하고 import를 해주었습니다. package study.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import study.querydsl.entity.Member; import study.querydsl.entity.Team; import javax.persistence.EntityManager; import static study.querydsl.entity.QMember.*; @SpringBootTest @Transactional public class QuerydslBasicTest { @Autowired EntityManager em; JPAQueryFactory queryFactory; @BeforeEach public void before() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = new Member("member3", 30, teamA); Member member4 = new Member("member4", 40, teamA); em.persist(member1); em.persist(member2); em.persist(member3); em.persist(member4); } @Test public void startJPQL() { String qlString = "select m from Member m" + " where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("username", "member1") .getSingleResult(); Assertions.assertThat(findMember.getUsername()).isEqualTo("member1"); } @Test public void startQuerydsl() { Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fetchOne(); Assertions.assertThat(findMember.getUsername()).isEqualTo("member1"); } }

  • java
  • jpa
  • querydsl
최형택 댓글 2 좋아요 0 조회수 451

인기 태그

인프런 TOP Writers

주간 인기글