묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
GitHub 권한 요청드립니다!
안녕하세요 선생님, 수업 잘 듣고 있습니다.깃허브 접근할 수 있게 권한 설정 부탁 드릴게요!인프런 아이디 : epalos인프런 이메일 : leo@poinblack.com깃헙 아이디 : rkdgus48@naver.com깃헙 Username : KAI-0419
-
미해결따라하며 배우는 리액트 네이티브 기초
에뮬레이터를 찾을 수 없는 에러 (Android)
선생님 안녕하세요저의 경우에는 안드로이드를 사용해야하는 상황이어서 (사용 os window10)npm run android를 터미널에서 사용하는데요Failed to launch emulator. Reason: No emulators found as an output of emulator -list-avds와 같은 에러가 발생합니다프로젝트 생성이 익숙해지기 위해서 프로젝트 자체를 만드는걸 여러번 해봤는데요 생각보다 자주 발생하는 에러여서 이러한 에러를 어떻게 잡아낼 수 있는지 한번 질문드려봅니다
-
해결됨AWS Boot Camp - AWS로 클라우드 시작하기
AWS Shield & WAF
안녕하세요영상중에 AWS Shield & WAF 마지막 부분이 말이 중간에 끊어진거 같습니다.뒤에 뭐가 더 있는지 알수가 없네요 확인 부탁드려요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
프론트에서 useSWR로 받아온 data 콘솔로그로
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이걸 백엔드부분에서 콘솔로그를 출력안하고프론트에서 로그출력하는 법은 없을까요??백엔드에서말고 프론트에서도 받아온 데이터 보고싶은데 콘솔로그하면 데이터가 안뜨고, undefined만 떠서요..
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MVC 1편까지만 완강 후 수강해도 될까요?
안녕하세요! 강의를 통해 매일 백엔드 개발자에 한 걸음 더 가까워지는 느낌을 받고 있는 취준생입니다. 김영한 강사님의 강의로 프론트엔드에서 백엔드 개발자로의 전향을 준비하고 있습니다!다름이 아니라, 현재 저는 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵의 스프링 MVC 1편까지 완강한 상태인데요! 강사님께서 올려주신 로드맵 영상과 Q&A 게시판에서 답변주신 내용에 따르면 MVC 2편을 계속 수강하는 게 맞습니다. 그런데 제가 조금 더 빠르게 토이 프로젝트(정확히 말하면 상용 웹 서비스 출시 - 같이 하는 동료가 있습니다!)에 투입되고 싶은 마음이 큰 상태여서 이후 커리큘럼에 대해 고민이 생겼습니다..!우선은 실무적인 웹 애플리케이션 개발을 다루는 현재 강의(실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발)를 먼저 들음으로써 - 시간도 MVC 2편 대비 7시간 정도로 짧은 편이기에...! - 전체적인 개발 플로우를 접한 후, MVC 2편부터 DB 2편까지 남은 스프링 완전 정복 로드맵 강의를 수강하면서, 부족한 부분을 채워나가는 건 어떨까 생각이 들었습니다! 이와 관련해서 김영한 강사님의 고견을 듣고 싶어서, 질문글을 작성합니다 :-)
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
실습 환경
안녕하세요. 강의선생님처럼 저렇게 가상화면을 띄우고싶은데 server with gui 설치로 graphical 로 설정하였는데 렉이 너무 걸리고 마우스 포인터도 안보여서 혹시 저렇게 설정을 어떻게 하나요??ㅠㅠ
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
GetText()사용법
GetText 사용법이 감이 잘 안오네요while과 state없이 GetText()를 실행하면 텍스트 출력이 안되네요..파이썬에서 정확한 문법 정의가 어떻게 되는지요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 9번 질문입니다.
저번에 퀴즈 풀다가 static 관련해서 오류가나서 질문한적이 있는데요.이번에도 static관련해서 오류가 났습니다 ㅜㅜ 선생님과 소스코드는 똑같이 쳤는데도 오류가 나네요위의 사진처럼 class Student에 static을 붙이지 않으니까 non-static 변수라서 참조가 안된다는 내용의 오류가 떠서 static을 추가하니까 아래 사진처럼 결과가 나왔는데요.혹시 어떤게 문제일까요 ㅠㅠ?
-
해결됨냉동코더의 알기 쉬운 Modern Android Development 입문
서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?
문득 페이징을 공부하다보니로컬 데이터의 경우 한꺼번에 받아오는 경우가 많아서 페이징이 필요하다고 생각되지만예제에 사용한 API 는 페이지 size 까지 정할 수 있는데 Paging 라이브러리를 사용하는 이점이 무엇이있을까 궁금합니다...!
-
미해결한국인이 좋아하는 속도로 때려넣는 파이썬
수업 자료에 오류가 있는것 같습니다 ㅠ
문서 정리 자동화 소프트웨어 만들기 압축 파일에 직원 정보라는 파일이 들어있지 않네요 ㅠ
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
선생님 질문입니다.
지금까지 (28, 28, 1): 그레이스케일 이미지 였다면input_tensor = Input(shape=(28, 28, 3): RGB이미지Conv2d(filters=32, kernersize=(3, 3), strides=1, padding='same', activation='relu')(input_tensor)라면 파라미터수는 (32*3*3):커널을 적용한 피처맵 (3)input데이터 채널수로 계산하는것이 맞나요? 최종: 32*3*3*3 피처맵의 개수는 채널수와 상관없이 같구요 (왜냐하면 필터의 채널수도 3으로 늘어나기 때문에)
-
미해결자바스크립트 : 기초부터 실전까지 올인원
타임즈 render 부분 질문
안녕하세요! 타임즈 뉴스 만들기 부분에서 render 함수 짜고 있는데 자꾸 map 관련 오류가 뜹니다... 콘솔에 아래와 같이 찍혀요... 데이터만 불러오면 자꾸 같은 오류가 나서 렌더링이 잘 안되는데 어떻게 해결할 수 있나요? main.js:17 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'map')let news = [] const getLastNews = async () => { let url = new URL('https://api.newscatcherapi.com/v2/latest_headlines?countries=KR&topic=business&page_size=10' ); let header = new Headers({"x-api-key" : "TXFw8gmdafTvdz_B53fry7i7yuJesOf5fWWhu5EZdyQ", }); let response = await fetch(url,{ headers:header }); let data = await response.json(); news = data.articles render() }; const render = () => { let newsHTML = ""; newsHTML = news.map((news) => { return `<div class="row news"> <div class="col-lg-4"> <img class="news-image" src="${news.media}"/> </div> <div class="col-lg-8"> <h2>${news.title}</h2> <p> 내용 </p> <div> 출처 </div> </div> </div>`; }).join(''); document.querySelector('#news-board').innerHTML = newsHTML; } getLastNews()
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
토큰 재발급 API 실습 중 restoreAccessToken 401 에러
강사님 안녕하세요?토큰 재발급 API 실습 중에 해결되지 않는 부분이 있어 질문드려요. 관련 코드는 강의에서 진행하는 대로 모두 작성하였고, 마지막 실습 부분에서 막힙니다. login 과 fetchUser 까지는 진행이 잘 되는데문제는,restoreAccessToken 부분에서 401 에러가 발생합니다.관련 에러 명령 프롬프트 화면입니다. 관련 쿠키 값 입니다.(login 시도 시 쿠키 값)코드는 실습대로 다 작성했구요.실습도 그대로 따라하는 중 restoreAccessToken 부분만 에러가 나네요. auth.resolver.ts 의 @UseGuards 데코레이터를 빼보기도 하고, 제 나름대로 해결책을 찾아보려 했는데 잘 모르겠네요. 구글링 해봐도 안되고,혹시 제가 빼먹은 부분이나 잘못한 부분이 있을까요?도움 부탁드립니다 :) 아래는 관련 제 코드들 입니다. auth.module.tsimport { Module } from '@nestjs/common'; import { AuthResolver } from './auth.resolver'; import { AuthService } from './auth.service'; import { JwtModule } from '@nestjs/jwt'; import { UserService } from '../users/user.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from '../users/entities/user.entity'; import { JwtRefreshStrategy } from 'src/commons/auth/jwt-refresh.strategy'; @Module({ imports: [ JwtModule.register({}), // TypeOrmModule.forFeature([User]), ], providers: [ JwtRefreshStrategy, // AuthResolver, AuthService, UserService, ], }) export class AuthModule {} auth.resolver.tsimport { UnprocessableEntityException, UseGuards } from '@nestjs/common'; import { Args, Context, Mutation, Resolver } from '@nestjs/graphql'; import { UserService } from '../users/user.service'; import * as bcrypt from 'bcrypt'; import { AuthService } from './auth.service'; import { GqlAuthRefreshGuard } from 'src/commons/auth/gql-auth.guard'; import { CurrentUser } from 'src/commons/auth/gql-user.param'; @Resolver() export class AuthResolver { constructor( private readonly userService: UserService, // private readonly authService: AuthService, ) {} @Mutation(() => String) async login( @Args('email') email: string, // @Args('password') password: string, @Context() context: any, ) { // 1. 로그인(이메일이 일치하는 유저를 DB에서 찾기) const user = await this.userService.findOne({ email }); // 2. 일치하는 이메일이 없으면 -> 에러 던지기!! if (!user) throw new UnprocessableEntityException('이메일이 없습니다.'); // 3. 일치하는 이메일이 있지만, 비밀번호가 틀렸다면 -> 에러 던지기!! const isAuth = await bcrypt.compare(password, user.password); if (!isAuth) throw new UnprocessableEntityException('암호가 틀렸습니다.'); // 4. refreshToken(=JWT)을 만들어서 프론트엔드(쿠키)에 보내주기 this.authService.setRefreshToken({ user, res: context.res }); // 5. 이메일과 비밀번호 모두 일치한다면 -> accessToken(=JWT)을 만들어서 브라우저에 전달하기 return this.authService.getAccessToken({ user }); } @UseGuards(GqlAuthRefreshGuard) @Mutation(() => String) restoreAccessToken( @CurrentUser() currentUser: any, // ) { return this.authService.getAccessToken({ user: currentUser }); } } auth.service.tsimport { Injectable } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; @Injectable() export class AuthService { constructor( private readonly jwtService: JwtService, // ) {} setRefreshToken({ user, res }) { const refreshToken = this.jwtService.sign( { email: user.email, sub: user.id }, { secret: 'myRefreshKey', expiresIn: '2w' }, ); // 개발 환경 res.setHeader('Set-Cookie', `refreshToken=${refreshToken}`); // 배포 환경 // res.setHeader('Access-Control-Allow-Origin', 'https://myfrontsite.com') // res.setHeader( // 'Set-Cookie', // `refreshToken=${refreshToken}; path=/; domain=.mybacksite.com; SameSite=None; Secure; httpOnly;` // ) } getAccessToken({ user }) { return this.jwtService.sign( { email: user.email, sub: user.id }, { secret: 'myAccessKey', expiresIn: '30s' }, ); } } jwt-refresh.strategy.tsimport { PassportStrategy } from '@nestjs/passport'; import { Strategy } from 'passport-jwt'; export class JwtRefreshStrategy extends PassportStrategy(Strategy, 'refresh') { constructor() { super({ jwtFromRequest: (req) => { const cookie = req.headers.cookie; const refreshToken = cookie.replace('refreshToken=', ''); return refreshToken; }, secretOrKey: 'myRefreshKey', }); } validate(payload) { console.log(payload); // { email: c@c.com, sub: qkwefuasdij-012093sd } return { email: payload.email, id: payload.sub, }; } } gql-auth-guard.tsimport { ExecutionContext } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; import { AuthGuard } from '@nestjs/passport'; export class GqlAuthAccessGuard extends AuthGuard('access') { getRequest(context: ExecutionContext) { const ctx = GqlExecutionContext.create(context); return ctx.getContext().req; } } export class GqlAuthRefreshGuard extends AuthGuard('refresh') { getRequest(context: ExecutionContext) { const ctx = GqlExecutionContext.create(context); return ctx.getContext().req; } } app.module.tsimport { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from './apis/auth/auth.module'; import { BoardModule } from './apis/boards/boards.module'; import { ProductModule } from './apis/products/product.module'; import { ProductCategoryModule } from './apis/productCategory/productCategory.module'; import { UserModule } from './apis/users/user.module'; // import { AppController } from './app.controller'; // import { AppService } from './app.service'; @Module({ imports: [ AuthModule, BoardModule, ProductModule, ProductCategoryModule, UserModule, GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', context: ({ req, res }) => ({ req, res }), }), TypeOrmModule.forRoot({ type: 'mysql', // 데이터 베이스 타입 host: 'localhost', // local 환경으로 진행 port: 3306, // mysql은 기본 port는 3306 username: 'root', // mysql은 기본 user는 root로 지정 password: 'bada332@', // 본인의 mysql password database: 'myproject03', // 연결할 데이터 베이스명 entities: [__dirname + '/apis/**/*.entity.*'], // 데이터 베이스와 연결할 entity synchronize: true, // entity 테이블을 데이터베이스와 동기화할 것인지 logging: true, // 콘솔 창에 log를 표시할 것인지 }), ], // controllers: [AppController], // providers: [AppService], }) export class AppModule {}
-
미해결Java TPC (생각하고, 표현하고, 코딩하고)
문자열 String 에 대해 질문이 있습니다.
문자열 String을 객체 생성하여 String str = new String();과 Strign str = ""; 이렇게 생성하는 방식중에 무엇이 더 적합한지요?그리고 두개방식의 차이점이 무엇인지 궁금합니다. 문자열을 담을 수 있는 변수가 필요할때 어떻게 사용하는게 더 나은것인지에 대한 질문입니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 매핑과 핸들러 어댑터 강의 질문 (컨트롤러 호출과정 질문)
안녕하세요 선생님!스프링 입문 강의부터 잘 따라가고 있다가 컨트롤러 인터페이스 부분에서 막혀서 질문 드립니다. 전 강의 '유연한 컨트롤러' 강의를 보면 FrontControllerServletV5에서는 핸들러 매핑정보를 Map<String, Object> handlerMappingMap에 담았고, getHandler메소드를 통해 handlerMappingMap.get(requestURI);로 반환하여 핸들러를 찾았습니다. 제가 이해한 컨트롤러 호출과정은,핸들러 조회 - getHandler(request); =>handlerMappingMap.get(requestURI);으로.핸들러 어댑터 조회 - getHandlerAdapter(handler);핸들러 어댑터 실행 - adapter.handle(request, response, handler);이라고 알고있었습니다. 그런데 이번에 핸들러 매핑과 핸들러 어댑터 강의에서 Controller인터페이스를 사용한 OldController를 보니, 이렇게 설명이 나와있습니다.그렇다면 , 위와 같은 순서가 아니라 핸들러를 찾는 방법 선정이 먼저인적절한 핸들러 매핑방법 찾기 (RequestMappingHandlerMapping 인지, BeanNameUrlHandlerMapping 인지)찾은 핸들러 매핑으로 핸들러 조회핸들러 어댑터 조회핸들러 어댑터 실행이렇게 이해를 했습니다. 질문입니다. 1 . 그러면 V5와의 차이점이 ,V5는 핸들러 매핑방법이 handlerMappingMap.get(requestURI); 이거 하나였는데, Controller인터페이스를 적용한 부분은 핸들러 매핑방법이 RequestMappingHandlerMapping, BeanNameUrlHandlerMapping 이렇게 두개(실제로는 더 많다고 하셨으니 여러개)가 된 것인가요??? 2. 매핑 방법이 두개가 된 이유는 지금까지 스프링을 사용하지 않은 서블릿으로만 사용했기 때문에 컨트롤러를 Map으로만 관리하다가, 이제는 컨트롤러를 @Component를 이용해 스프링 빈으로 등록을 해서, Map이 아닌 스프링빈으로 관리를 해서 그런건가요?? 3. 그렇다면 이 때, 컨트롤러 저장소(?) 모양의 변화는 아래와 같나요?이 모양에서이모양으로 바뀐건가요?그리고 여기서 스프링 빈 저장소의 빈 객체는 OldController인가요? 아니면 null인가요? .. 반환값이 null이어서.. 4. 빈 이름으로 등록하지 않고 @RequestMapping으로 등록한다면 스프링 빈 저장소의 모양은 위의 빈 저장소와 동일한가요? 5. 교재에서 DispacherServlet.doDispatch()의 핸들러 조회 부분인 getHandler메소드가 적혀있지 않은데 일부러 안적으신건가요? 아래의 V5의 getHandler메소드처럼 핸들러 조회할 때 Map을 뒤져서 가져오는걸 바로 파악해서 이해하기 좋았는데doDispatch()에는 위 메소드가 없더라구요ㅠ.. 어떻게 뒤져서 가져오는 지 흐름이 궁금합니다.아니면 스프링이 제공해줘서 메소드가 없는건지? 있다면 메소드 코드를 알려주실 수 있나요? (제가 못찾는건지 인텔리제이 검색이 안나오네요..ㅠ) 더 궁금한 게 많지만 여기 까지 질문 하겠습니다. 혹시 위에서 제가 다르게 이해하고 있는 부분이 있거나, 앞서 들은 강의에서 부족한 개념이 있어 보이시면 알려주시면 감사하겠습니다.그리고 강의 너무 재밌고 좋아요!감사합니다!!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
EntityManager , JpaReopsitory
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 spring 강의를 듣고 혼자 구글링을 통해 연습을하다가 다시 인강으로 돌아온 수강생입니다! 혼자 연습할 때 리포지토리를 작성할 경우 JpaRepository를 extends 하여 사용하였습니다. 이때 em의 역할까지 자동으로 해주는것같아 엔티티 메니저는 사용하지않았습니다. 구글링을 더 해보니 CrudRepository등도 존재하는 것을 알게 되었습니다.여기서 질문은 보통 어느 방식을 선택하는지 궁금합니다. 상황에 맞는 방법이 있는 것인지 아니면 추세가 변하여 요즘은 어떤 것을 주로 쓴다는 흐름이 있는 것인지 궁금합니다!
-
미해결홍정모의 따라하며 배우는 C++
9:56 getRandomNumber 함수 질문
getRandomNumber 함수를 보면,int getRandomNumber(int min, int max){const double fraction = 1.0/(RAND_MAX +1.0);return min+static_case<int>((max-min+1)*(rand()*fraction));} 으로 구현하셨는데요. 여기서 rand의 seed를 time을 이용해 바꾸지 않았으니 매번 실행할 때마다 같은 seed가 들어가서 같은 결과가 나올테니, getRandomNumber함수도 매번 실행할 때마다 같은 값이 나오게 될 것 같은데 맞나요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mAP 성능결과에 대한 기준이 궁금합니다.
안녕하세요 선생님. Mask-RCNN 을 이용한 프로젝트를 수행하면서 궁금증이 생겨 질문드립니다. 질문에 대한 답이 상대적이고 주관적일 수 있지만 약간의 기준이라도 얻고싶어 질문 남깁니다. 해당 강의를 통해 mAP가 높은 모델일수록 재현율, 정밀도가 함께 좋은 성능을 보이는 균형잡힌 모델이라고 이해를 하였습니다. 이번에 Mask-RCNN을 학습하여 테스트 데이터셋에 적용하였을 때, IOU 0.5 기준 mAP=60.3, 0.75 기준 mAP=47.4 성능의 모델을 만들었는데, 이와 같은 성능을 두고 해당 모델이 사용하기 적합하다 혹은 추가적인 튜닝이 필요하다와 같은 결론을 내리는 과정에서 어려움이 있습니다. 이에 대한 기준이 절대적이지 않겠지만, mAP에 대하여 통상적으로 사용되는 대략적 기준이 있는지 궁금합니다.추가적으로 Mask-RCNN의 경우 BBox에 대한 성능 외에 Segmentation에 대한 mAP 성능이 나오던데, 이는 Masking의 픽셀에 대해서 IOU를 계산한 것인지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle-resources-test:hello-spring.main: java.lang.NoClassDefFoundError:
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요강의 13분 20초를 실습하는데gradle-resources-test:hello-spring.main: java.lang.NoClassDefFoundError: 에러가 생겼습니다해결시도1.스택오버플로우에서https://stackoverflow.com/questions/27978908/java-lang-noclassdeffounderror-org-apache-tools-ant-util-readerinputstream-vaadTryFile > Invalidate Caches / Restart를 따라했는데, 해결이 되지 않았습니다 해결시도2.https://www.inflearn.com/questions/728870/java-lang-noclassdeffounderror-org-apache-tools-ant-util-readerinputstream이분도 저와 같은 에러가 있어서 프로젝트를 새로 생성하였는데 해결이 되지 않았습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 11분 코드 19행 exclude group:
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 강사님 안녕하세요강의 11분 8초에서 19번째 줄 코드에서exclude group: 이라는 코드가 보이는데제 코드에서는 그 코드가 보이지 않습니다그 이유와 이 코드의 역할에 대해서 질문 드리고 싶습니다.