묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
선생님 화면이랑 호출스택이 다르게 나옵니다ㅠㅠ
Exercise 8번 문제를 실행하면 선생님 호출스택에서는 [ Exercise_8.exe!Archer::~Archer() 줄 17 ] [Exercise_8.exe!main() 줄 57 ] 이렇게 뜨는데, 제 호출스택은 위와 같이 나옵니다. 클릭해보면 제가 만들지도 않은 이상한 코드들이 나오는데 통상 디버깅할때 저런 코드들은 무시하면 되는건가요? 그리고 호출 스택이 다르게 나오는 건 그냥 컴퓨터 환경마다 달라서 그런건가요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
AuthGuard에 관한 질문
제로초님 안녕하세요. AuthGuard를 이용해 로그인 처리를 하고있습니다. 세션 쿠키 방식을 사용하고 있구요. 로그인 방식이 1. 리퀘스트에 쿠키가 있으면 => 쿠키로 세션을 불러와서 안에 들어가있는 user id를 가져와서 디비에서 검색후 로그인 2. 리퀘스트에 쿠키가 없으면 => 디비에서 id와 password를 검색하고 있을 시 세션에 저장하고 로그인. 없으면 UnauthorizedException 이렇게 되는 걸로 파악했는데요. 리퀘스트에 쿠키가 있고 세션에도 저장된 게 있지만 디비에서 유저가 지워졌을 경우, 1번 방식에서 user id가 없기 때문에, 그냥 500 에러가 발생하고 끝나는데요. 저는 이 때, 다시 2번 방식으로 돌리는 플로우로 가고 싶습니다.(쿠키 세션으로 불러지는 정보가 없을 경우, 디비에서 id와 password를 가지고 검색 후 처리)그래서 막연히 LocalAuthGuard 에 null 값을 주고 실행해 봤는데, 아무 동작도 하지 않았습니다. 어떻게하면 좋을지 조언을 듣고 싶습니다. ```ts local-auth.guard.ts@Injectable() export class LocalAuthGuard extends AuthGuard('local') { async canActivate(context: ExecutionContext): Promise<boolean> { if (context) { const can = await super.canActivate(context); if (can) { const request = context.switchToHttp().getRequest(); console.log('쿠키 사용해서 로그인 : ', request); await super.logIn(request); } } return true; } } ``````tslocal.strategy.ts @Injectable() export class LocalStrategy extends PassportStrategy(Strategy) { constructor(private authService: AuthService) { super({ usernameField: 'email', passwordField: 'password' }); } async validate(email: string, password: string, done: CallableFunction) { const user = await this.authService.validateUser(email, password); if (!user) { throw new UnauthorizedException(); } return done(null, user); } } ``` ```ts local.serializer.ts @Injectable() export class LocalSerializer extends PassportSerializer { constructor( private readonly authService: AuthService, private readonly localStrategy: LocalStrategy, private readonly localAuthGuard: LocalAuthGuard, private readonly reLocalAuthGuard: ReLocalAuthGuard, @InjectRepository(HpMasterUserRepository, 'homepage-db') private userRepository: UserRepository, ) { super(); } serializeUser(User: User, done: CallableFunction) { done(null, user.UserId); } async deserializeUser(userId: number, done: CallableFunction) { try { const user = await this.userRepository.selectHpMasterUserById( userId, ); if (hpMasterUser) { done(null, hpMasterUser.userId); // req.user } await this.localAuthGuard.canActivate(null); // this.reLocalAuthGuard.canActivate(null); } catch (err) { // throw new UnauthorizedException(); done(err); } } } ``` ```ts auth.service.ts @Injectable() export class AuthService { constructor(private userService: UserService) {} async validateUser(email: string, password: string) { const user = await this.userService.masterUserLogin(email, password); if (!user) { return null; } else if (user) { const { password, ...userWithOutPassword } = user; return userWithOutPassword; } return null; } } ```
-
미해결vue.js 실전 프로젝트(트위터 클론)
firebase 버전에 따른 import 문제 질문드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 firebase authentication 강의를 듣다가 에러가 지속적으로 발생해서 문의 드립니다. 현재 버전에 따르면 import firebase from 'firebase'는 더이상 지원 하지 않는다고 합니다. 즉, firebase/app 이런 식으로 세부적으로 들어가야한다고 합니다.. 그에 따라 강사님이 작성해주신 export const auth = firebase.auth() 에서 auth 함수가 작동하지 않습니다. 여러 검색 결과 이제는 initalizeApp 따로, getAuth 따로 import를 해주어야한다고 확인하였고 auth() 함수는 getAuth를, firestore() 함수는 getFireStore 를 import하여 어찌 진행해 볼 수 있었으나 storage() 함수는 어디를 어떻게 찾아야할 지 방법이 없어 질문을 드립니다.. 아니면 firebase install 하는 버전을 강사님과 동일하게 맞춰야 하는지 생각도 됩니다. 강사님과 동일한 firebase 버전으로 변경하여 진행하여도 해당 에러가 발생합니다..
-
미해결처음 배우는 리액트 네이티브
채널화면에서 에러가 나네요 ..
아마 파이어베이스에서 channels 의 하위 컬렉션 members 생성시의 에러인것 같은데 실력부족입니다 https://github.com/dongguntechnology/rn_chat Possible Unhandled Promise Rejection (id: 0): FirebaseError: Function doc() cannot be called with an empty path.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
[템플릿엔진] 노드에서 View html을 작성할때, 퍼그/넌적스 쓰지않고 순수? html로 view 사용할 수 있나요?
안녕하세요, 정적인 프로젝트(html/css)만 해보다보니 퍼그/넌적스와 템플릿 엔진으로 html 작성이 조금 더딘데요,, 혹시, 노드 프로젝트 View, 템플릿 엔진(값)을 설정할때, 퍼그나, 넌적스 와 같은 템플릿 엔진을 말고, 일반?(순수) html 작성으로 view 템플릿 값을 설정할 수 있을까요? 보통은 '노드 html작성' 이라 검색을 하면 퍼그/넌적스 view 엔진 설정 설명이 많아서요, 어떤 키워드로 구글링을 하면 좋을까요, 어떻게 검색을 해, 퍼그방식이 아닌, 순수 html 파일 한개는 서빙 하는데 성공했는데요, 목표는 view폴더 안에 여러 폴더를 만들고, 계층구조에 맞게 다수 html/css를 보여주는 겁니다. 그래도 app.js에서 view 렌더 설정은 해야할꺼 같은데, 퍼그/넌적스는 아니고,,, 하지 않으면 퍼그를 써야하고ㅠ 저와 같은 상황과 희망사항이 가능한 내용일까요? 읽어주셔 감사합니다.
-
미해결Django REST Framework 핵심사항
fields E300, E307 에러
안녕하세요 강사님, viewset 으로 Post API 만들기 강의 진행중에 발생한 에러입니다. 강의 내용대로 post url을 라우터에 등록하고, serializers 생성, view 생성 이후에 재가동하니 다음과 같은 에러가 발생하면서 동작하지 않습니다. 검색해보니 ForeignKey 로 참조하는 모델 클래스에 앱이 명시되지 않아서 그런거 같다는 거 같은데 자세한 원인은 모르겠습니다. https://stackoverflow.com/questions/56972174/errors-book-book-author-fields-e300-book-book-author-fields-e307 1. 해당 오류의 원인과 lazy reference란 무엇인지요? 2. 해결방안이 궁금합니다. (다른 앱의 model을 참조할때 발생하는 문제라면 어떻게 해야하는지) Post class는 `from blog.models import Post` 로 import 하여 가져왔습니다. from django.db import models # blog/models.py class Post(models.Model): category = models.ForeignKey('Category', on_delete=models.SET_NULL, blank=True, null=True) tags = models.ManyToManyField('Tag', blank=True) title = models.CharField('TITLE', max_length=50) description = models.CharField('DESCRIPTION', max_length=100, blank=True, help_text='simple one-line text.') image = models.ImageField('IMAGE', upload_to='blog/%Y/%m/', blank=True, null=True) content = models.TextField('CONTENT') create_dt = models.DateTimeField('CREATE DT', auto_now_add=True) update_dt = models.DateTimeField('UPDATE DT', auto_now=True) like = models.PositiveSmallIntegerField('LIKE', default=0) class Meta: ordering = ('update_dt',) def __str__(self): return self.title - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTML Form에서 GET/POST만 지원하는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] http://haah.kr/2017/05/23/rest-http-method-in-html-form - 해당 글을 읽어 봤는데 잘 이해가 되지 않습니다. - DELETE는 form 을 통해 값을 전달할게 없다는것은 알겠는데 - 위 블로그 글에서 PUT 의 내용이 이해가 안되네요.. - 그래서 GET/POST만 지원하는 궁극적인 이유가 무엇인가요~? 아래는 PUT 내용입니다. - PUT도 전송해야할 것은 대상 리소스를 대체할 representation 그 자체인데, 대상 리소스더러 조각난 form 데이터를 처리하라고 보낼 수는 없는 노릇
-
미해결제품 관리자와 서비스 기획자를 위한 실전 노하우 - 아낌없이 드립니다!
동종업계 리텐션 조사
동종업계 리텐션보다 잘 나올 경우 이를 긍정 지표라 설정할 수 있다면 동종업계의 리텐션은 어떻게 알 수 있나요?
-
미해결프레이머를 활용하여 쉽고 간단하게 프로토타입 제작하기
Override 쪽 파트 코드창 관련 질문
안녕하세요. Override쪽 파트를 수강 관련 질문이 있어서 이렇게 글을 남깁니다. 해당 과정으로 코드창에 들어와보니 강의에서 구현된 코드창과 다른 모습을 보이는데요. 이게 프레이머에서 업데이트 되어 이렇게 노출되는건지 아니면 제가 잘못들어가 이 화면이 노출되는건지 모르겠습니다 ㅠㅠ 프론트 하는 친구에게 물어보니 현재 제가 보는 화면은 리엑트 코드와 거의 유사한 화면이라고 답변 받았습니다.. 먼저 제가 맞는 화면을 보는지 궁금하고, 프레이머가 업데이트 된 것이라면 해당 업데이트에 맞춰 강의 내용 업데이트가 가능한지 궁금합니다.
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [통합편]
git TIL 저장소 관련 질문
안녕하세요, 한정수 강연자님! 여기까지 수강하면서 든 아이디어가 생겼는데, 다름 아니라 TIL 저장소에 스크렙한 기술 면접 질문들에 대한 저의 답변을 적는 것입니다. 그런데 혹시 취업을 위해 나중에 깃 주소를 제출하게 될 때, 그런 것들이 오히려 마이너스로 적용할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 실행 시 JUnit Exception 발생하는 문제 질문드립니다
안녕하세요 영한님, 강의 잘 듣고 있습니다! JUnit 테스트 실행 시 에러가 발생하는데 해결을 못 해서 질문드립니다..ㅠ 에러 로그 화면입니다. 메서드 옆에 있는 초록색 삼각형 버튼을 눌러서 `Run 'MemoryMemberRepositoryTest`를 선택하면 아래 에러가 발생합니다. build.gradle 파일과 외부 라이브러리 junit-platform-* 이 보이는 부분을 캡쳐했습니다. MemoryMemberRepositoryTest 입니다. 답변해 주시면 감사하겠습니다. 좋은 밤 되세요^^!
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
모듈을 지우고 다시 설치하고를 두번 반복했는데도 해결이 안됩니다.
code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\\Users\\Desktop\\vue_online_study\\advanced\\vue-endgame\\vue-til-server\\dist\\api\\auth.js', 'C:\\Users\\Desktop\\vue_online_study\\advanced\\vue-endgame\\vue-til-server\\dist\\app.js' ] } npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! server@1.0.0 start: `node dist/app.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the server@1.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\snowb\AppData\Roaming\npm-cache\_logs\2022-03-10T14_51_30_459Z-debug.log npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! server@1.0.0 restart: `rimraf dist && npm run build && npm run start` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the server@1.0.0 restart script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\snowb\AppData\Roaming\npm-cache\_logs\2022-03-10T14_51_30_560Z-debug.log [nodemon] app crashed - waiting for file changes before starting... 어떻게 하면 될까요 ㅠ
-
해결됨배달앱 클론코딩 [with React Native]
토큰 질문있습니다!
제로초님 저번에 강좌에서 낸 숙제라고 하신 앱을 킬때마다 리프레시 토큰 갱신하는것을 구현해 보았습니다. 그런데 제가 옳은 방법으로 했는지 피드백 부탁드립니다!! 질문 1. 로그인을 해서 accesstoken과 refreshtoken을 이미 발급받았고 앱을 껐다가 다시 켰을 때를 가정했을 시 getTokenAndRefresh 함수가 실행되어 (1)의 axios.post(`${Config.API_URL}/refreshToken`,백앤드 요청이 갑니다. AppInner.tsx useEffect(() => { const getTokenAndRefresh = async () => { try { const token = await EncryptedStorage.getItem('refreshToken'); if (!token) { return; } const response = await axios.post( ////////////(1) `${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, }), ); await EncryptedStorage.setItem( (3) ////////추가된 부분 'refreshToken', response.data.data.refreshToken, ); } catch (error) { console.error(error); if ((error as AxiosError).response?.data.code === 'expired') { // refreshToken 만료되었을 때 Alert.alert('알림', '다시 로그인 해주세요.'); } } }; getTokenAndRefresh(); }, [dispatch]); app.js의 백앤드에서 리프레시 토큰 유효성 검사를 한 후 (2) refreshtoken(새로 추가한 부분)와 accesstoken을 같이 발급해 줍니다. 그러면 다시 AppInner 프론트 페이지로 가서 accesstoken을 리덕스에 저장하고 refreshtoken은1은(2의) await EncryptedStorage.setItem에 저장해줍니다. app.js (백앤드) app.post("/refreshToken", verifyRefreshToken, (req, res, next) => { const refreshToken = jwt.sign( // (2) 추가된 부분 { sub: "refresh", email: res.locals.email }, jwtSecret, { expiresIn: "24h" } ); const accessToken = jwt.sign( { sub: "access", email: res.locals.email }, jwtSecret, { expiresIn: "5m" } ); if (!users[res.locals.email]) { return res.status(404).json({ message: "가입되지 않은 회원입니다." }); } res.json({ data: { accessToken, refreshToken, // 추가된 부분 email: res.locals.email, name: users[res.locals.email].name, }, }); }); 이렇게 구현해 보았는데요. 결과는 로그인 하면 기존처럼 accesstoken과 refreshtoken이 발급되고 앱을 껐다가 키면 리프레시 토큰 유효성 검사를 한 뒤 유효하면 accesstoken과 refreshtoken을 다시 발급해주며 갱신시켜 줍니다. 만약 refreshotken이 만료되었다면 로그인 페이지로 이동하게 되구요. 시도를 해보니 잘 작동을 하는것 같은데 혹시 제가 무엇을 빼놓지는 않았는지 옳은방법으로 한것인지 제로초님의 의견이 궁금합니다!. 질문2. 강의중 제로초님은 accesstoken은 리덕스에 refreshtoken은 암호 저장소에 저장한다고 하셨는데 그러면 백엔드 db에는 둘 중 어느 토큰도 저장하지 않으시는지 궁금합니다. 만약 그렇다면 로그인 할때 백엔드에서 app.post("/login", (req, res, next) => { const refreshToken = jwt.sign( { sub: "refresh", email: req.body.email }, jwtSecret, { expiresIn: "24h" } ); const accessToken = jwt.sign( { sub: "access", email: req.body.email }, jwtSecret, { expiresIn: "5m" } ); users[req.body.email].refreshToken = refreshToken; /////// 이 부분 return res.json({ data: { name: users[req.body.email].name, email: req.body.email, refreshToken, accessToken, }, }); }); users[req.body.email].refreshToken = refreshToken;이 코드가 의미하는바가 무엇인지 궁금합니다. 디비용 더미 데이터 같은데 지웠는데도 잘 실행되더라구요. 없어도 되는 코드인가요?...
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
gitignore 에 venv/를 추가하였는데 git add .에 venv파일이 추가되네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. gitignore 에 venv/를 추가하였는데 git add .에 venv파일이 추가되는데 왜그럴까요? 처음에 venv 파일 안에 gitignore생성해서 나중에 밖으로 빼내긴했는데 그것때문에 그럴까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
코드에 대해
request.getParameterNames().asIterator().forEachRemaining(paramName->paramMap.put(paramName, request.getParameter(paramName)));이부분에 대해서 혹시 각 함수가 어떤 역할을 하는 함수인지 여쭤봐도 될까요?? 제가 이해력이 부족해서 잘 이해가 가지않습니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
페치조인가 즉시로딩
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 그럼 [질문 내용]여기에 질문 내용을 남겨주세요. 페치조인과 즉시로딩의 차이가 어떤걸까요??
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
다음 강좌 오픈 일정에 대해 여쭤보려고 질문남깁니다!
우선 정말 좋은 강좌 찍어주셔서 감사드립니다! 실제로 많이 이용하는 기능들을 어떤식으로 구현하는 것인지 알려주시니 이 정도로 도움이 많이 되는 강좌는 처음들어봐요 ㅎㅎ 제가 궁금한 것은 안드로이드 Jetpack과 디자인 패턴, 최신 기술 살펴보기 강좌가 제작 예정이라고 되어있는데 앱을 조금이나마 유지보수가 편리하게 만들려면 AAC와 디자인 패턴을 잘 알아야 할 것같아서 강좌를 찾던 중에 개복치 개발자님의 강좌가 제작 예정이라고 되어있어 현재 기다리고 있는데 혹시 언제쯤 제작하여 오픈하실 계획인지 대강이라도 알려주시면 그동안 혼자 공부하다가 바로 수강하고싶어요 ㅠㅠ AAC가 대강 어떤거고 어떻게 쓰는거다 라는 것 정도만 알고 있다보니 제대로 사용하고 있는것인지도 모르겠고 해서 제대로 배워보고싶습니다! 빠른 시일내에 해당 강좌를 듣고싶어요!! 바쁘시겠지만 개발자님의 강좌를 기다리고있는 사람이 있다는 것을 알아주셨으면합니다 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
궁금한게 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비안녕하세요 선생님 궁금한게 있어서 질문 남깁니다! max = x.length 면 결국엔 max는 9가 되는데 저 부분이 answer = x와 무슨 관계인지 이해가 되질 않습니다. x의 길이를 구한것이지 x를 구한게 아닌데 어떻게 x를 answer 에 대입할 수 있는건가요 ??
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
채팅 데이터 처리 질문
현재 채팅앱 구현중인데, 경험이없어 조언을 얻고싶어 질문드립니다! 지금까지 나름 조사해본결과, 채팅 데이터 처리방법으로는1. 소켓으로 채팅 하나하나올때마다 MySQL에 저장한다. 클라이언트가 앱 최초 실행시 Local DB에 저장되어있던 마지막 ChatId로 MySQL에서 그 이후 채팅을 조회후 클라이언트에게 보내줌. ---가장 깔끔하고 쉽지만,대규모 채팅앱이 되었을경우 매번 INSERT를 해버리면 MySQL이 감당을 못할것같음.--- 2. 소켓으로 채팅 올때마다 redis에 저장후 일정시간혹은 일정량이차면 한꺼번에 MySQL에 저장한다. 클라가 앱 최초 실행시 Local DB에 있던 마지막 Chat createdAt으로 그시간 뒤의 채팅들은 MySQL에서 조회후, redis에 임시저장된 채팅들이 있다면 그것들을 합처주고 클라이언트에게 보내줌. ---좀 번거롭지만 MySQL INSERT를 한번에 해줌으로서 DB부하를 줄일 수 있을것같음. 다만, 아주 극적인 타이밍으로 클라가 MySQL에 채팅내역을 조회함과 동시에 redis에서 일정량이차서 MySQL에 INSERT 해주고 redis가 비워저버릴경우 해당 클라이언트는 합처줘야할 대화내용이 유실될수있을것같음.(아주 주관적인 이론)--- 이정도가 있는것같은데, "대규모 채팅앱"이라고 가정할경우 1.더 좋은 방법이 있는지, 2.만약 위의 두번째방법이 괜찮지만 제 이론대로 대화내용 유실 문제가 있을수있다면, 해결방법이 있는지. 3.제로초님은 어떤방식을 선호하는지 등 조언을 듣고싶습니다..!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
querydsl은 다른 커리큘럼에서 알려주시는걸까요?
안녕하세요 강의 너무 재밌게 수강한 학생입니다. 전에 주문 검색에서 동적쿼리에 대한 해결법 여러가지를 소개해 주시면서 가장 querydsl 을 쓴다. 이 부분은 나중에 말해주겠다 라고 하셨던 것 같아서 되게 두근대는 마음이 있었거든요 이 부분은 다른 커리큘럼에서 언급이 되는걸까요?? 개인적으로 너무 기대되어서 궁금한 마음 갖고 듣고있었는데 듣다보니까 완강해버렸습니다 ㅠㅠ