inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

on-Demand-ISR 사용질문드립니다!

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요! on demand isr 의 실제 사용 관련해서 질문 드려요! const revalidate = async () => { try { const response = await fetch("/api/revalidate"); const result = await response.json(); if (result.revalidate) { //페이지 갱신이 됐을 때 } else { //페이지 경신 안됐을 때 } } catch (error) { //에러처리 } };특정 조건에 따라 on demand isr을 제대로 사용하려면 이런식으로 저희가 만든 api를 호출하는 비동기 함수를 만들어서 특정 조건문 아래에서 이 새로만든 함수를 호출하면 되는걸까요?? 감사합니다!

  • react
  • typescript
  • next.js
JIN LEE 댓글 3 좋아요 0 조회수 232

인코딩시 Modified UTF-8만 일어난다 보아도 될까요?

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 1 : 절차적 프로그래밍

영상 4:50부터 나오는 자료를 보면 3가지 내용이 나오는데요 이 중에서 문자열 처리 과정에서는 UTF-16BE를 Modified UTF-8로 변경해 처리 해당 내용의 이해가 헷갈려서 질문드립니다. 이전의 6-6강 문자와 인코딩 규칙 강의중 "인코딩 규칙에 대한 모든 것" 유튜브 영상을 권해주셔서 보고 검색도 해보니 유니코드 문자중 한자와 한글은 UTF-8에서 3바이트로 변환 된다는 것으로 정리가 되었고, 위와 같은 문자/문자열 의 입출력시 JVM의 I/O 버퍼에서는 1바이트씩 3개 단위로 끊어서 들어가며, JVM 내부에서는 UTF-16BE로 저장 및 처리 가 된다는 것으로 이해했습니다. 그런데 그렇다면 Modified UTF-8은 어떤 용도로 나온건가 싶어, GPT에 물어보고 해보니 아래 사진과 같은 상황에서는 UTF-8쓰고, 또 어떨때는 Modified UTF-8을 쓴다 하더군요 즉, Modified UTF-8 뿐만 아니라 UTF-8로도 인코딩 하는 것 같은데, 서론의 강의 내용처럼 "Modified UTF-8로 변경해 처리한다" 로만 이해해도 충분할까요? 말씀하신대로 핵심 내용은 "데이터의 입출력 과정에서 인코딩이 일어난다"는 내용인데, 이해의 과정에서 저 부분이 계속 헷갈려서 질문드립니다.

  • java
네프티스 댓글 2 좋아요 0 조회수 175

강사님이 보고 계신 자료는 따로 공유안되나요?

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네 [질문 내용] 혹시 강사님이 수업중에 보시면서 하는 노션 ? 파일은 따로 없나요 ? Ex진행시에 혼자 문서를 보면서 혼자풀어보고싶은데 문제예시 같은걸 따로 보면서 할 수 없어서 저도 모르게 자꾸 강사님이 작성하신 코드를 보면서 따라치게만 되네요 ㅠ./.

  • java
  • 객체지향
gomdori7183 댓글 1 좋아요 0 조회수 191

OIDC SSO 관련 질문 입니다.

미해결

스프링 시큐리티 OAuth2

안녕하세요 OIDC SSO 관련 질문이 있습니다. 인증서버 에서 A 시스템에 Token을 발급 해주었습니다. 그리고 B시스템에서 인증을 했을 때 , 동일한 사용자 이기 때문에 인증 서버에서는 A시스템에 발급해준 Token를 가지고 사용자를 찾아서 B시스템에 토큰을 발급해 줄 수 있나요 ?

  • java
  • spring
  • spring-boot
  • oauth
samydon 댓글 1 좋아요 0 조회수 154

테스트 코드 작성 관련해서 질문드립니다!

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

강사님 안녕하세요. 강의의 테스트 코드도 보고 실무서 테스트 코드 작성시 문득 궁금한 사항이 생겼습니다. 테스트 코드 작성시 단위, 통합, E2E 등 종류도 많고 일정 등 고려해야 될 사항이 많은데 강사님의 테스트 코드 작성 기준이 궁금합니다. 제가 정한 기준은 아래와 같습니다. 단위 테스트 (도메인 폴더 하위 순수 객체) 는 반드시 작성 일정 일정이 급할때 단위 테스트 일정이 여유로울때 단위 테스트 API 테스트 or 통합 테스트 서비스의 핵심 로직 단위 테스트 API 테스트 or 통합 테스트 일정이 급해도 최대한 작성 그리고 다음과 같은 고민도 있습니다. Mockito를 이용한 테스트가 충분히 검증이 될까? 근데 될것 같기도..? XxxFacade 혹은 XxxService에 Mockito를 이용한 테스트의 정확도에 의문을 품었습니다. 그래서 @SpringBootTest를 이용한 통합 테스트 를 작성하였는데 테스트를 위한 데이터 세팅이 너무 귀찮더라구요.(하하하) 그래서 도메인 모델링을 잘하고 단위 테스트를 꼼꼼하게 작성 한다고 쳤을때 Mockiot의 verify를 이용해 의도한 메서드가 호출이 되었는지만 테스트만 해도 괜찮지 않을까? 란 생각이 들었습니다. 회사일도 바쁘실텐데 다음 강의 준비도 하시고 질의응답도 해주셔서 언제나 감사드립니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
soap 댓글 2 좋아요 0 조회수 245

화면이 너무 끊깁니다.

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

설치 과정을 따라가고 있는데, 화면이 너무 끊겨서 강의에서 어떤 버튼을 클릭하는지 또는 어떤 작업을 하는지 확인하기가 어렵습니다. 따라서 하기가 힘드네요. ㅜㅜ

  • HTML/CSS
  • java
  • mysql
  • php
PSH 댓글 1 좋아요 1 조회수 148

HashSet과 HashMap 메소드의 시간 복잡도에 대해 여쭤봅니다.

해결됨

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. HashSet과 HashMap의 주요 메소드의 시간복잡도에 대해 정리한 내용인데, 제대로 이해했는지 올려봅니다. 1. HashMap은 hash table 역할을 하는 배열을 내부적으로 갖는데 기본 크기는 16이며, 저장되는 요소가 배열 크기의 75%를 초과하면 크기가 두배로 늘어나며 요소들은 re-hashing된다. 2. 특정 인덱스에 저장되는 데이터가 8개 이상이 되면, 이 데이터들은 red-black tree 형태로 변환되어 add(), get(), remove()와 같은 메소드를 호출할 때 O(log N)의 접근 효율을 제공한다. 3. 하지만 인덱스에 8개 이상이 아닌 2~7개의 데이터가 저장되는 경우 강의에서 설명한대로 데이터 접근에 대한 O(N)의 효율이 나온다. (해시 충돌 설명 인용) 4. 그리고 HashSet은 HashMap을 기반으로 하기 때문에 위 1~3번 역시 HashSet에 동일하게 적용된다. (HashSet의 경우 각각 add(), contains(), remove()) 위 정리가 맞다고 가정해도, 특정 인덱스에 8개 이상의 요소가 저장되는 경우가 드물기 때문에 경우에 따른 시간 복잡도를 저렇게까지 깊게 구분할 필요가 없는걸까요..?

  • java
  • 자료구조
  • 알고리즘
  • 코딩테스트
brianyhs 댓글 1 좋아요 0 조회수 245

아파치 서버 실행후

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

test.php 저장해서 xampp 폴더에 넣고 아파치 실행후 해당 경로로 localhost/test.php 접속해보니 아래와 같이 뜨는데요. 접속이 안되는 이유가 혹시 그누보드 설치를 아직 못해서 그런가요? 그누보드 설치에서 막혀서, php 작동 방식 및 다른 강의부터 보고 있었는데.. 이것도 안되네요. ㅜㅠ 만약 그누보드 설치와 관계가 없다면 왜 접속이 안되는걸까요? 주소창에 localhost/ 접속시 그누보드 설치페이지는 잘 뜨거든요.ㅠㅠ 그리고 그누보드 설치 막혀서 문의를 남기긴했는데, 이곳에서도 남겨보겠습니다. ㅠㅠ 해결좀 부탁드립니다. 강의 영상보고 계정생성 다 똑같이 해놨거든요. 그런데 어떤 오류가 있어서 진행이 안되는지 잘 모르겠네요. 흑

  • HTML/CSS
  • java
  • mysql
  • php
재진 댓글 2 좋아요 1 조회수 211

해시알고리즘 질문

미해결

김영한의 실전 자바 - 중급 2편

데이터량보다 배열 크기가 크면 충돌이 잘 안 일어난다고 그랬는데, 에초에 일의자리가 같은 숫자를 넣는 경우가 많으면 배열의 크기가 데이터량보다 커진다 한들, 충돌이 자주 일어나는거 아닌가요? 몇 십만, 몇 백만, 천만건의 데이터가 들어올텐데, 그 중에서 일의자리가 같은 경우가 엄청 많을텐데, 충돌이 엄청 많이 일어나지 않나요??

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
진우 댓글 1 좋아요 0 조회수 93

useEffect 경고

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요! 섹션3 2.14)SSG2.정적 경로에 적용하기 강의 17분23초에서 useEffect 의존성 배열 관련해서 React Hook useEffect has a missing dependency: 'fetchSearchResult' 라고 이 함수를 의존성 배열에서 빠트렸다고 경고가 저도 나왔는데 여기서 함수를 의존성 배열에 꼭 넣어야 하는건가요?? 감사합니다!

  • react
  • typescript
  • next.js
JIN LEE 댓글 2 좋아요 0 조회수 160

강의 의존성 주입 코드 질문.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 13:10 부터 시작하는 DI에 관한 코드 내용중 질문있습니다. 14:15 강의에 따르면 MemberService 클래스에서 만든 MemoryMemberRepository 와 MemberServiceTest 에서 new 하여 만든 것은 MemoryMemberRepository는 각각 다른 인스턴스겠죠. 같은 레포지토리여야 하는데 다른 레포지토리니까 추후에 문제가 생길 수 있다구 하시구요. 여기까지는 강의대로 이해가 갑니다. 그런데 이에 해결책으로 작성하신 의존성 주입 코드가 잘 이해가 가지 않습니다. public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } ... } class MemberServiceTest { MemberService memberService; MemoryMemberRepository memberRepository; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } ... } 이렇게하면 매 테스트 실행하기 전에 beforeEach()가 실행되고 MemoryMemberRepository를 각각 생성하고 MemberService에 넣어준다고 하시는데요, 제가 여기서 이해가 안가는건.. 이것도 결국 매번 MemoryMemberRepository를 생성하는 것이니 전부 다른 인스턴스로 생성 되는 것 아닌가요? 그러니까 지금 문제가 MemberService 클래스와 MemberServiceTest 에서 사용하는 MemoryMemberRepository가 원래는 하나로 사용 해야하지만 각각 new로 생성하여 다른 인스턴스로 사용하여 문제가 되기에 그것을 해결하려는 것이잖아요? 그런데 이번에 생성자를 통해서 MemoryMemberRepository를 매번 생성하여 넣는 것도 결국 또 각각의 인스턴스를 생성하여 넣는것 아닌가요? 이해가 잘 안가요ㅠ

  • java
  • spring
  • mvc
  • spring-boot
yoon6669 댓글 3 좋아요 0 조회수 272

IntelliJ IDEA, Git 설치 및 스프링부트 설정

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

본 강의는 끝까지 잘 따라왔다가 마지막에 실행해보니 error 가 생기며 끝나는데요. 이후 강의가 끝나버려서 문의드리는데요. 어떤 문제일까요? 아, IntelliJ IDEA 사용중에 @EnableFeignClients 입력후 알트 +엔터 누르면 import calss가 안생기던데 왜그럴까요? 한국어 버전을 써서 그런건가요? 한참 헤메다가 어쩌다 노란색으로 처리가 되며 완성은 됐는데, 결과는 에러가 나서..

  • HTML/CSS
  • java
  • mysql
  • php
재진 댓글 2 좋아요 0 조회수 353

Spring은 무조건 MVC인가요?

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 현재 여기까지 강의가 MVC에 관한 내용인데.. 이게 디자인 패턴같은데 Spring은 무조건 MVC를 사용하나요? 아니면 다른 디자인 패턴도 사용을 하나요? MVVM 같은거요

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

완벽한 프론트엔드

해결됨

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

고농축 프론트엔드 강의와 완벽한 프론트엔드 강의 커리큘럼이 차이가 많이 날까요? 추가된 강의 공지는 읽어봤는데 기존의 기본적인 리액트 내용에서 업데이트가 많이 되었다던가 등 차이가 많이 나는지 궁금합니다.

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

그누보드 설치시 DB 연결 실패

해결됨

[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법

강의에서 저만 안보이는지 모르겠지만 그누보드 설치 장면이 잘린 거 같습니다... XAMPP에서 ADMIN을 누르면 강제로 저기로 넘어가는데 강의에선 저 장면이 없거든요. 포트번호 수정에서 갑자기 넘어가는거 봐서 그 장면 삽입하시면서 영상이 잘린 게 아닐까 생각이 드네요... 그래서 스스로 설치하고 있는데 이 장면에서 HOST를 localhost:3307로 해도, 127.0.0.1로 해도, 127.0.0.1:3307로 해도 오류가 납니다. 지금 제 컴에서 mysql 실행이 mysql -uroot -p로는 안되고 강제로 TCP/IP 연결 명령어를 추가해야만 되는 상황인데 이 문제와도 연관이 있을까요

  • HTML/CSS
  • java
  • mysql
  • php
김병학 댓글 2 좋아요 1 조회수 365

nohup.out 관련 문제

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

상단 디렉토리에 nohup.out 은 만들어졌는데 사이트에 접속도 안되고 nohup.out 파일 확인도 조금 이상합니다. [ec2-user@ip-172-31-39-4 ~]$ vi nohup.out [ec2-user@ip-172-31-39-4 ~]$ cat nohup.out Error: Unable to access jarfile library-app_complete/build/libs/library-app-0.0.1-SNAPSHOT.jar [ec2-user@ip-172-31-39-4 ~]$ tail -f nohup.out Error: Unable to access jarfile library-app_complete/build/libs/library-app-0.0.1-SNAPSHOT.jar 이렇게 나옵니다. 혹시 몰라 위에있는 코드들도 첨부합니다. BUILD SUCCESSFUL in 2s 1 actionable task: 1 executed [ec2-user@ip-172-31-39-4 library-app_complete]$ ls README.md build.gradle gradle gradlew gradlew.bat settings.gradle src [ec2-user@ip-172-31-39-4 library-app_complete]$ cd .. [ec2-user@ip-172-31-39-4 ~]$ ls library-app_complete [ec2-user@ip-172-31-39-4 ~]$ ps aux | grep java ec2-user 171942 1.8 34.0 2110252 330692 ? Ssl 06:40 1:07 /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/ java.net =ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8 - Duser.country -Duser.language=en -Duser.variant -cp /home/ec2-user/.gradle/wrapper/dists/gradle-7.5-bin/f1w0cc9nuo0eivz97x2xlu9sv/gradle-7.5/lib/gradle-launcher-7.5.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 7.5 ec2-user 175460 0.0 0.2 222316 2032 pts/0 S+ 07:40 0:00 grep --color=auto java [ec2-user@ip-172-31-39-4 ~]$ ^[[200~ nohup java -jar library-app/build/libs/library-app-0.0.1-SNAPSHOT.jar --spring.profile -bash: $'\E[200~': command not found [ec2-user@ip-172-31-39-4 ~]$ ls library-app_complete [ec2-user@ip-172-31-39-4 ~]$ nohup java -jar library-ap_bbbbbbbbbbu^Cd/libs/library-app-0 .0.1-SNAPSHOT.jar -sspring.profile s.active=dev & [ec2-user@ip-172-31-39-4 ~]$ nohup java -jar library-ap_bpppp/^Cild/libs/library-app-0.0. 1-SNAPSHOT.ja.profile s.active=dev & [ec2-user@ip-172-31-39-4 ~]$ nohu juuupnupoupgup upbuupuuup^Cava -jar library-app_compleat e/build/libs/library-app-0.0.1-.active=dev & [ec2-user@ip-172-31-39-4 ~]$ nohup java -jar library-app_complete/build/libs/library-app-0.1-SNAPSHOT.jar --spring.profiles.active=dev & [1] 175532 [ec2-user@ip-172-31-39-4 ~]$ nohup: ignoring input and appending output to 'nohup.out' [1]+ Exit 1 nohup java -jar library-app_complete/build/libs/library-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev [ec2-user@ip-172-31-39-4 ~]$ v1. nohup.out -bash: v1.: command not found [ec2-user@ip-172-31-39-4 ~]$ vi nohup.out [ec2-user@ip-172-31-39-4 ~]$ cat nohup.out Error: Unable to access jarfile library-app_complete/build/libs/library-app-0.0.1-SNAPSHOT.jar [ec2-user@ip-172-31-39-4 ~]$ tail -f nohup.out Error: Unable to access jarfile library-app_complete/build/libs/library-app-0.0.1-SNAPSHOT.jar vi nohup.out 를 했을 때는 E325: ATTENTION Found a swap file by the name ".nohup.out.swp" owned by: ec2-user dated: Mon Feb 24 07:07:21 2025 file name: ~ec2-user/nohup.out modified: YES user name: ec2-user host name: ip-172-31-39-4.ap-northeast-2.compute.i process ID: 173572 While opening file "nohup.out" dated: Mon Feb 24 07:43:35 2025 NEWER than swap file! (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution. (2) An edit session for this file crashed. If this is the case, use ":recover" or "vim -r nohup.out" to recover the changes (see ":help recovery"). If you did this already, delete the swap file ".nohup.out.swp" to avoid this message. Swap file ".nohup.out.swp" already exists! [O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 이렇게 나옵니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
김태진 댓글 2 좋아요 0 조회수 118

멀티모듈 구성 질문입니다.

해결됨

서버개발자 과제전형 완벽가이드 - 1편

학습관련 질문을 남겨주세요! 상세히 작성주시면 더 좋아요 🙂 아래 질문이랑 차이가 있습니다. 멀티모듈 extenal에서 kakao-client new 모듈을 만들때 모듈은 생성이 안되고 iml파일과 src폴더만 생성입니다. 이럴 때는 어떻게 해야하나요? 그리고 그림처럼 모듈이 없는데 이미 프로젝트내에서 모듈이 존재한다고 합니다. 시도방법: 캐시삭제 clean 후 build 프로젝트 종료후 재시작 Import Module 추가 settings.gradle에서 아래 글자 추가 하고 멀티모듈 생성했는데 iml 파일 만들어집니다. 아래글자 주석 처리했는데도 똑같은 현상 나옵니다. include 'external:kakao-client' 파일은 메일로 보냈는데 확인 부탁드립니다.

  • java
  • spring
  • spring-boot
  • database
zzzzz 댓글 3 좋아요 0 조회수 260

npm run seed 에러

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요! 섹션2의 1.3 강의를 보며 초기 데이터 설정을 진행하고 있는데 에러가 발생했습니다. npx prisma db push를 실행시켜서 테이블이 생성된 것을 확인하였고 npm run seed를 실행시키니 에러가 발생하게 되었습니다. 구글링해도 잘 모르겠어서 질문드립니다.

  • next.js
shim 댓글 2 좋아요 0 조회수 204

refreshToken 저장의 문제

해결됨

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

아래에 질문이 있으나 해결안이 없어 다시 문의드립니다. refreshToken, 쿠키는 정상적으로 전달되고 있습니다. setCookie도 나옵니다. 그러나, Application에 나타나지 않습니다. 그리고 조금 기다렸다가 acessToken을 재발급하려고 클릭하면 아래와 같은 메시지가 나타납니다. 크롬에서 써드파티 쿠키를 다 accept하도록 설정이 되어있고, 시크릿 모드에서도 진행해봤고 사파리에서도 동일합니다. 클릭하여 나타난 통신기록을 총 3번입니다. 첫번째 통신은 accessToken만료로 발생한 것으로 보입니다. 네트워크 통신기록을 살펴보면 UNAUTHENTICATED가 발생된 것을 알수 있습니다. 두번째 통신은 restoreAccessToken의 뮤테이션입니다. 헤더와 페이로드는 아래와 같습니다. jwt가 첨부되지 않았다는 부분입니다. 3번째 통신의 Header와 payload, response입니다. 이 부분은 주어진 조건으로 사용자 정보를 불러오는 query같습니다. 사용자에 관련된 정보가 없이 시도되어 _id null이 표시된것 같습니다. 인터넷에 검색해보았지만 잘 모르겠습니다. axios통신으로 refreshToken을 직접 저장해주는 코드를 보긴 했는데, graphql은 설정만 바꾼다고 하셔서 refreshToken을 어떻게 처리하는지 잘 모르겠습니다. 관련해서 검색을 통해 https로 환경을 바꾸면 될거다 하여, localhost:3000을 mkcert로 https로 환경을 바꾸려고 해봤는데 설치만 하고 아래의 글을 발견해서 잠깐 멈추었습니다. https://shingy.tistory.com/46 _id null의 문제가 local에 받아온 쿠키를 저장하지 못하는 문제인것 같은데, 어떻게 처리할수있는 방법이 있나 싶어서 여쭤봅니다. 코드 getAccessToken의 코드 import { GraphQLClient, gql } from "graphql-request"; import { IMutation } from "../../../commons/types/generated/types"; const RESTORE_ACCESS_TOKEN = gql` mutation { restoreAccessToken { accessToken } } `; export const getAccessToken = async (): Promise<string | undefined> => { try { const graphQLClient = new GraphQLClient( "https://backend-practice.codebootcamp.co.kr/graphql", { credentials: "include" }, ); const result = await graphQLClient.request<Pick<IMutation, "restoreAccessToken">>( RESTORE_ACCESS_TOKEN, ); const newAccessToken = result.restoreAccessToken.accessToken; return newAccessToken; } catch (error) { if (error instanceof Error) console.log(error); } }; 아폴로 클라이언트 코드 import { ApolloClient, InMemoryCache, ApolloProvider, ApolloLink, fromPromise, } from "@apollo/client"; import { createUploadLink } from "apollo-upload-client"; import { useRecoilState } from "recoil"; import { accessTokenState } from "../../../commons/store"; import { useEffect } from "react"; import { ErrorResponse, onError } from "@apollo/client/link/error"; import { getAccessToken } from "../libraries/getAccessToken"; const GLOBAL_STATE = new InMemoryCache(); interface IApolloSettingProps { children: JSX.Element; } export default function ApolloSetting(props: IApolloSettingProps) { const [accessToken, setAccessToken] = useRecoilState(accessTokenState); useEffect(() => { const result = localStorage.getItem("accessToken"); console.log(result); console.log("현재는 브라우저입니다"); setAccessToken(result ?? ""); }, []); const errorLink = onError(({ graphQLErrors, operation, forward }) => { //1-1.에러캐치 if (typeof graphQLErrors !== "undefined") { for (const err of graphQLErrors) { //1-2.토큰 만료에러인지 체크 if (err.extensions?.code === "UNAUTHENTICATED") { return fromPromise( getAccessToken() .then((newAccessToken) => { setAccessToken(newAccessToken ?? ""); operation.setContext({ headers: { ...operation.getContext().headers, Authorization: `Bearer ${newAccessToken}`, }, }); }) .catch((err) => { console.log("오류입니다"); }), ).flatMap(() => forward(operation)); } } } }); const uploadLink = createUploadLink({ uri: "https://backend-practice.codebootcamp.co.kr/graphql", headers: { Authorization: `Bearer ${accessToken}`, credentials: "include", }, }); const client = new ApolloClient({ link: ApolloLink.from([errorLink, uploadLink]), uri: "http://backend-practice.codebootcamp.co.kr/graphql", cache: GLOBAL_STATE, }); return <ApolloProvider client={client}>{props.children}</ApolloProvider>; } 로그인 success의 코드 import { gql, useApolloClient, useQuery } from "@apollo/client"; import type { IQuery } from "../../../src/commons/types/generated/types"; import { wrapAsync } from "../../../src/components/commons/libraries/asyncFunt"; const FETCH_USER_LOGGED_IN = gql` query fetchUserLoggedIn { fetchUserLoggedIn { email name } } `; export default function LoginPage() { const client = useApolloClient(); const onClickButton = async (): Promise<void> => { const result = await client.query({ query: FETCH_USER_LOGGED_IN, }); console.log(result); }; return ( <> {/* <div>{data?.fetchUserLoggedIn.name}님, 환영합니다.</div> */} <div>환영</div> <button onClick={wrapAsync(onClickButton)}>클릭하세요</button> </> ); }

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

인기 태그

인프런 TOP Writers

주간 인기글