묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js + TypeScript 완벽 가이드
레파지토리 권한 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 깃헙 계정 podoal8281 입니다. 권한 부탁 드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리다이렉트 대신에 th:onclick 사용
@PostMapping("/add")public String addItemV3(Item item){ //자동적용 itemRepository.save(item); return "basic/item";} 리다이렉트를 꼭 서야하나 싶어, 주석부분처럼 th이용해 주소를 이동하면 편할거같아 시도했습니다. 상품등록 클릭 시, org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.id" (template: "basic/addForm" - line 38, col 17) 오류가 떴습니다. @Modelattribute에의해서 item.id 사용할 수 있을거라 생각했는데 오류원인을 모르겠습니다 ㅜㅜ
-
미해결[개념반]배워서 바로 쓰는 SQL 쿼리
슬랙 초대 희망하여 글 남깁니다!
이메일 : hoon4419@gmail.com
-
미해결단 2주간 키운 블로그로 월 80만원 용돈 벌기
안녕하세요 방금 신청하고 첫번째 두번째 강의를 시청했는데요..블로그를 만드는 것을 함께 하는 줄 알았습니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 방금 신청했는데요.. 블로그를 만드는 법을 알려주는 줄 알고 강의를 신청하게 되었는데요.. 두번째 강의 듣다가 .. 아니구나.. 라는 걸 알게 되었습니다 오늘은 토요일이고 인프런 서비스 운영 관련 문의 1:1 안되네요 부탁합니다 환불 좀 부탁합니다 정말 배속으로 두번째 강의도 시청하다 말았습니다
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
소셜 로그인 질문
저는 passport-jwt를 사용하여 로그인을 구현하였는데, passport-apple 를 사용하여 소셜 로그인 구현 중에 막혔습니다. 아무리 구글링해봐도 passport-apple + nest.js 조합이 없어 해결이 되지않아 질문드립니다. 우선 제가 이해하고있는 전반적인 큰 흐름부터 맞나 의심됩니다. 1. passport-apple 을 통하여 유저 정보를 받아온 후 2. 유저에게 jwt를 발급 3. 유저는 클라이언트단(or 쿠키)에 jwt 저장 4. 이후 애플서버와는 연계없이 jwt를 이용해 제 서버만을 통하여 유저 정보를 줌. 이게 맞나 모르겠고 틀린 점이 있으면 지적해주시면 감사하겠습니다! 그리고 본 질문은 passport-apple을 통하여 어떻게 유저 정보를 받아오는지를 모르겠습니다. node.js passport-apple 공식문서를 통해 유추하며 해봤습니다 /apple.strategy.ts 파일 import { Injectable } from '@nestjs/common'; import { PassportStrategy } from '@nestjs/passport'; import { Strategy } from 'passport-apple'; @Injectable() export class AppleStrategy extends PassportStrategy(Strategy,'apple') { constructor() { super({ clientID: process.env.APPLE_CLIENT_ID, teamID: process.env.APPLE_TEAM_ID, callbackURL: process.env.APPLE_CALLBACK_URL, keyID: process.env.APPLE_KEY_ID, privateKeyString: process.env.APPLE_KEY, //참고로 privateKeyLocation로도 해보고 // passReqToCallback: true도 넣어봤습니다. (뭔진 모르겠지만) }); } async validate(req,accessToken, refreshToken, idToken, profile, done) { console.log('req :', req); console.log('idToken :', idToken); console.log('accessToken :', accessToken); console.log('refreshToken :', refreshToken); console.log('profile :', profile); done(null,idToken) } } super에 필요객체를 넣고 validate 인자로 어떤값들이 들어오는지 하나하나 로그를 찍어보려했으나, 아예 저 부분으로 넘어가지않고 에러가 뜹니다. /auth.module.ts 파일 import { JwtStrategy } from './strategies/jwt.strategy'; import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from 'src/common/entities/user.entity'; import { AuthService } from './auth.service'; import { AuthController } from './auth.controller'; import { AppleStrategy } from './strategies/apple.strategy'; @Module({ imports: [ TypeOrmModule.forFeature([User]), PassportModule.register({ session: false }), JwtModule.register({ secret: process.env.JWT_SECRET_KEY, signOptions: { expiresIn: '60s' }, }), ], providers: [AuthService, JwtStrategy, AppleStrategy], controllers: [AuthController], }) export class AuthModule {} /auth.controller.ts 파일 import { AuthGuard } from '@nestjs/passport'; import { AuthService } from './auth.service'; import { Controller, Get, UseGuards, Req, Post, Body } from '@nestjs/common'; @Controller('auth') export class AuthController { constructor(private readonly authService: AuthService) {} @Get('/apple') @UseGuards(AuthGuard('apple')) async appleLogin() {} @Post('/apple/callback') @UseGuards(AuthGuard('apple')) async appleLoginCallback(@Req() req, @Body() body) { console.log("req : ",req) console.log('body : ',body) return 'ok'; } } 전 강의영상의 LocalAuthGuard 같은 클래스 파일을 따로 만들지 않고 바로 AuthGuard('apple')을 데코레이터에 넣어주는 식올 구현했습니다. 여기서 "도메인/auth/apple" 로 접속시 애플 로그인 화면이 뜨는 것까지는 되는데, 로그인을 후 "계속" 버튼을 누르면 서버에 이러한 500에러가 뜹니다 [Nest] 58 - 02/05/2022, 9:56:26 AM ERROR [ExceptionsHandler] Failed to obtain access token InternalOAuthError: Failed to obtain access token at AppleStrategy.OAuth2Strategy._createOAuthError (/usr/src/app/node_modules/passport-oauth2/lib/strategy.js:423:17) at /usr/src/app/node_modules/passport-oauth2/lib/strategy.js:177:45 at /usr/src/app/node_modules/passport-apple/src/strategy.js:101:13 at processTicksAndRejections (node:internal/process/task_queues:96:5) [Nest] 58 - 02/05/2022, 9:56:26 AM LOG [HTTP] 500 POST /api/auth/apple/callback - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 ::ffff:172.18.0.3 도무지 모르겠어서 2번째 (Post부분) @UseGuard데코레이터를 빼서 결과를 봐보니 body에 {state: '2ed****e0ed', code: 'ce23f9c72e7904******d8565b94b4a7.0.r**z.5nDn7h*******RJufk11LWQ'} 이러한 객체가 담겨옵니다. 제 예측으로는 이것이 access 토큰인것같고 이걸 다시 애플에 보내 유저정보를 받아내야하는것같은데, 코드를 어떻게 구현해야하는지 모르겠습니다... 혹시 실무에서 apple login을 어떻게 구현하셨는지, passport-apple이 안되거나 더 편한 다른방법이라도 있다면 알려주시면 정말 감사하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 서비스 테스트 강의 @BeforeEach
강의의 내용을 제가 이해하기로는.. MemberService 와 MemberServiceTest 에서 같은 리포지토리 객체를 사용하기위해서 서비스 클래스에서 리포지토리를 생성자의 매개변수로 받도록 수정하였습니다. 그리고 테스트 클래스에서 @BeforeEach를 사용하여 그 안에서 리포지토리와 서비스 클래스를 생성하였는데, 리포지토리와 서비스 클래스를, 테스트 클래스의 변수로 선언해서 사용하지 않고 @BeforeEach를 사용하여 그안에서 생성해준 이유가 궁금합니다.
-
미해결U-Net 구현으로 배우는 딥러닝 논문 구현 with TensorFlow 2.0 - 딥러닝 의료영상 분석
weight map의 첫번째 항 (Wc(x))가 어떤 의미 인지 상세 설명 부탁드립니다.
논문의 위 식에서 Wc(x)가 의미하는 바가 무엇이고, 어떻게 구해야 되는 것인지 이해되지 않아 질문드립니다.
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
vscode 실행 까진 되지만 pycharm 에서 문제가 생겼어요
이전 실행때는 문제 없다 runserver하니 이러한 에러 메시지가 뜨네요."ModuleNotFoundError: No module named 'mysite.settings.develop'; 'mysite.settings' is not a package" 제가 어디를 놓친건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@ManyToOne
강의 듣다가 궁금한게 생겨서 질문드립니다. 아래의 Member테이블에서 Team 엔티티에 대해 @ManyToOne 어노테이션을 입력해주었는데 반대로 Team에서는 @OnetoMany를 안해주는 이유가 궁금합니다. @ManyToOne@JoinColumn(name = "TEAM_ID")private Team team;
-
미해결대세는 쿠버네티스 (초급~중급편)
v1.15 Cronjob 관련 문의드립니다.
Replace시 강의 내용과 실제 동작이 상이한거 같아 질문드립니다. 1.15버전 사용중이고, 작업을 20,21,22분으로 설정하여 cronjob을 생성했을때 1분이 지나면 수행중인 job과 pod 모두 삭제되고 새로운 job이 생성됩니다. (즉, 1.15버젼에서도 1.19이상 버젼에서의 Cronjob Replace 정책이 동일한듯 합니다.) 혹시 몰라 아래 yaml 파일 첨부드립니다. 그리구 너무 좋은 강의 제공해주셔서 감사히 잘 듣고 있습니다 ! apiVersion: batch/v1beta1 kind: CronJob metadata: name: cron-job-2 spec: schedule: "39,40,41 * * * *" concurrencyPolicy: Replace jobTemplate: spec: template: spec: restartPolicy: Never containers: - name: container image: kubetm/init command: ["sh", "-c", "echo 'job start';sleep 140; echo 'job end'"] terminationGracePeriodSeconds: 0 1.19버전 이후 변경사항 Replace 모드 : 2min이 되었을 시 기존 Job은 삭제되고 (기존 Pod도 같이 삭제됨), 새 Job이(새 pod 생성) 만들어집니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
메뉴구성을 하는 방법차이
제로초님, Menu를 구성할때 각각의 Item으로 나누어서 작성하지 않고 아래와 같이 배열의 형태에서 map함수로 반복해서 구성하게 되면 Next에서 큰 차이점이 생기나요..? const pages = ['whattoeat', 'signin', 'signup']; {pages.map((page) => ( <MenuItem key={page} onClick={handleCloseNavMenu}> <Typography textAlign="center"> <Link href={`/${page}`}> <a>{page}</a> </Link> </Typography> </MenuItem> ))}
-
미해결홍정모의 따라하며 배우는 C++
21:44초에서 cond_type_mixed도 reference가 되어야하는 거 아닌가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 21:44초에서 cond_type_mixed도 reference가 되어야하는 거 아닌가요?
-
미해결인터랙티브 개발 실무 끝장내기 [역량 강화편]
pageChangeFunc에 대해 질문있습니다.
안녕하세요. 강사님. 늘 질 좋은 강의 잘 듣고 있습니다. 강사님이 최대한 쉽게 설명해주심에도 궁금함이 생겨 질문합니다. 왜 pageChangeFunc를 스크롤을 내릴 때 totalNum이 적용될 수 있게 하는 for문 안에 넣어주면 작동하지 않게 되는지. 왜 pageChangeFunc를 for문 밖으로 빼줘야 하는지 궁긍합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 조회 시 @ModelAttribute로 orderSearch 값이 받아지질 않습니다
주문 조회 창에서 회원 이름과 상태를 검색해도 필터링되어서 검색 결과가 조회가 되지 않아서 질문드립니다 (전체 주문이 주문 상태가 order인 주문건이 1개밖에 없는 경우 주문 상태를 cancel로 검색해도 order인 주문건이 1개가 뜸 ) 중간에 로그 찍는 코드와 orderSearch 폼의 @Getter 제외하고는 전부 복붙한 코드입니다(findByCriteria 도 복붙했습니다 너무길어서 생략합니다) http://localhost:8080/orders?memberName=xxxx&orderStatus=CANCEL 이렇게 쿼리파라미터를 넘기고 로그를 찍어보니 List orders = orderService.findOrders(orderSearch); 호출 전 2022-02-05 17:14:47.834 INFO 16212 --- [nio-8080-exec-1] jpabook.jpashop.web.OrderController : member = null, status = null (중간 생략 List orders = orderService.findOrders(orderSearch); 호출 후) 2022-02-05 17:14:47.840 INFO 16212 --- [nio-8080-exec-1] jpabook.jpashop.web.OrderController : order = 4, status = ORDER 이렇게 남습니다 애초에 @ModelAttribute로 orderSearch 받아오는 값이 전부 null로 들어가서 findByCriteria 메소드를 호출해도 제대로 조회가 안되는 것 같은데 왜 이럴까요? h2에는 item member order orderItem 값이 정상적으로 저장된 상태입니다
-
해결됨Java TPC 실전프로젝트 (Java API 활용)
쓰레드 관련해서 질문합니다.
Runnable r=new DownloadBroker(dPath, fileName); Thread dLoad=new Thread(r); dLoad.start(); for(int i=0;i<10;i++) { try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } System.out.print(""+(i+1)); } 쓰레드 관련해서 이해가 부족해서 이 부분이 이해가 되지 않습니다. dLoad.start(); 하면 다운로드가 이루어지고 1. Thread.sleep(1000);은 메인 쓰레드를 10초 후에 종료한다는 뜻인거 같은데, 이렇게 하는 이유가 있나요? 2. Runnable 객체를 만들어 Thread 객체에 생성자로 담은 후 dLoad.start();하는 과정에서 Runnable객체는 어떤 의미이며, Thread 객체를 생성(이것도 궁금)해서 dLoad.start()하는 부분이 궁금합니다. + 자바 기본 강좌 Stream에 관련된 부분도 만드시면 바로 수강하겠습니다. InputStream, BufferedReader 등등 조금 어렵다고 생각이 드네요. 대충은 알겠는데 ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C언어
14.9 강의 예제 실행이 안되요
강의 내용 그대로 따라한거 같은데 저는 왜이렇게 오류가 많이 뜰까요?
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
후반부 강의자료 요청합니다
sally85@naver.com 으로 부탁드릴게요
-
미해결만들면서 배우는 리액트 : 기초
useState 초기값 질문
선생님 useState 초기값 설정할때 const [like, setLike] = React.useState(() => { return Number(localStorage.getItem('like')) || 0; }); 이렇게 함수로 넘기면 re-rendering 할 때마다 실행되지 않고 처음 한 번만 실행이 되는 건가요? 이게 그냥 문법이 그런거면 이해하고 넘어가겠는데~ 다른 이유가 있는거면 왜 그렇게 되는지 이해가 잘 되지 않아서요 😂 함수로 넘기면 그렇게 되도록 리액트 내부적으로 처리가 되는건지... ( useEffect가 적용이 되는건지)
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
requirements.txt 설치 에러
에러 때문에 진도를 못나가고 있습니다. 도움 요청드려요 ㅠㅠ 에러 메세지가 너무 길어서 스크린샷 다 올리기 어렵네요. 그래서 아래 링크에 pdf 파일로 올립니다. https://drive.google.com/file/d/1KYcpktnpC_hccHH5_0yD1S3pRq76aH4G/view?usp=sharing ㅠㅠ
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
검색기능에 대한 내용은 없는데
검색기능은 강의에서 다룬게 아닌 것 맞나요?