묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Test 실행 시 별도의 application.yml 파일 적용이 안됩니다..
[질문 내용] 구글 드라이브에 파일을 올려놓았습니다.https://drive.google.com/file/d/1Y8IHzdy-PcCujECBrTVG_CvdODYKZZXx/view?usp=sharing Test시 강의에서 처럼 별도의 yml 파일을 만들어 Test에서만 적용을 하려 했지만 되지가 않아 문의 남깁니다. 에디터: VS-CODE 환경: JUNIT5 실행방법: VScode 내 확장 마켓플레이스 검색: Crtl + Shift + X Java Extension Pack Spring Boot Extenstion Pack Lombok Annotations Support for VS Code Spring Initializr Java Support 설치 후 Test 파일로 들어가서 코드줄 번호 왼쪽 실행하고 싶은 클래스 옆 빨간 동그라미 클릭. main/src/test/resources/application-test.yml 을 MemberRepositoryTest.java에 적용시키고 싶어 TestPropertySource를 사용하였지만 경로를 읽어들이지 못하는것 같습니다. (https://docs.spring.io/spring-framework/docs/5.1.9.RELEASE/javadoc-api/org/springframework/test/context/TestPropertySource.html#properties--) 공식 홈페이지 사용법을 보고 체크했는데도 문제점을 발견하지 못해 게시글을 남깁니다. 인프런 커뮤니티에 다른 사용자가 같은 상황에 남긴 글을 보고 적용을 시켜보았지만 되지가 않았습니다. yml 파일 Repo 소스코드
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
제가 BFS 길찾기를 이해한 게 맞는지 확인 부탁드립니다
BFS를 이용하여 미로의 최단거리를 구하는 방식이 1. 일단 갈 수 있는 좌표(맵의 모든 초록색 점)를 BFS로 탐색해 모두 저장한 다음, 2. 도착점(23, 23)을 기준으로 parent만 따라가면서 플레이어가 이동할 좌표를 _points 리스트에 저장한 후(어차피 역순으로 parent를 찾으면서 가게 되면 막혀있는 길로 갈 필요가 없으므로) 3. _points의 순서를 뒤집어서 시작점부터 출발하게 하면 플레이어가 최단거리로 도착점까지 간다 이렇게 이해하는 게 맞을까요?
-
미해결스프링 핵심 원리 - 기본편
스프링 컨테이너에 저장되는 것
안녕하세요! 질문이 있습니다. 스프링 컨테이너에 정확히 어떤 클래스가 저장되는지 헷갈리는데... AppConfig에서 return new 가 되는 클래스들이 컨테이너에 저장되는 것이 맞나요? AppConfig 기반으로 보자면, 스프링 컨테이너에는 MemberServiceImpl, MemoryMemberRepository, OrderServiceImpl, RateDiscountPolicy 이렇게 딱 4개만 저장되는 것인가요? 추가적으로, configurationTest 메소드 내에서 MemberServiceImpl memberService = ac.getBean("memberService", MemberService.class); 라고 했더니 MemberServiceImpl이 출력되더라구요. 그런데 만약 스프링 컨테이너에 부모를 MemberSerivce 로 갖고 있는 자식들 중 MemberServiceImpl 말고 다른 자식들도 있다면.. 그 자식들 전체를 출력할 것 같은데.. 이때 타입이 Map으로 자동완성이 안되서요... 자식들 즉, 구현체들이 전체 불러와질 것 같은데 원래 Map이 되어야 하는 것 아닌가요?
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
where문에 대한 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 DELETE p1 FROM person p1 INNER JOIN person p2 ON p1.email = p2.email WHERE p1.id > p2.id 이러면 p1.Id p1.Email p2.Id p2.Email3 john@example.com 1 john@example.com 이 결과가 필터링되고 결국 p1.id p1.email p2.id p2.email 1 john@example.com 1 john@example.com 2 bob@example.com 2 bob@example.com 3 john@example.com 3 john@example.com 위의 데이터들이 남는데 id=3인 부분이 p1테이블에서만 지워진게 아니라 그냥 person테이블 자체에서 지워진거여서 p2테이블에서도 id = 3인 부분이 지워져서 delete이후 결과가 1 john@example.com 2 bob@example.com 인거 맞나요? .
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
bcrypt.compare 에러 질문 있습니다.
이런 에러가 발생합니다. 일단 users 테이블에 컬럼은 id, username, password, createdAt, updatedAt이 있습니다. 아무리 찾아봐도 저는 못찾겠습니다. 문제가 뭘까요..? undefined가 나오는 것 같아서 여기저기 찍어봐도 어디서 나오는지도 모르겠습니다. auth.service.ts import { Injectable } from '@nestjs/common';import bcrypt from 'bcrypt';import { InjectRepository } from "@nestjs/typeorm";import { Users } from "../entities/Users";import { Repository } from "typeorm";@Injectable()export class AuthService { constructor( @InjectRepository(Users) private usersRepository: Repository<Users> ) {} async validateUser(username: string, password: string) { const user = await this.usersRepository.findOne({ where: {username}, select: ['id', 'username', 'password' ] }); console.log(username, password, user); if (!user) { return null; } console.log(password, user.password); const result = await bcrypt.compare(user.password, password); if (result) { const { password, ...userWithoutPassword } = user; return userWithoutPassword; } return null; }} local.serializer.ts import { Injectable } from "@nestjs/common";import { PassportSerializer } from "@nestjs/passport";import { AuthService } from "./auth.service";import { InjectRepository } from "@nestjs/typeorm";import { Users } from "../entities/Users";import { Repository } from "typeorm";@Injectable()export class LocalSerializer extends PassportSerializer { constructor( private readonly authService: AuthService, @InjectRepository(Users) private usersRepository: Repository<Users>, ) { super(); } serializeUser(user: Users, done: CallableFunction) { console.log(user); done(null, user.id); } async deserializeUser(userId: string, done: CallableFunction) { return await this.usersRepository .findOneOrFail( { id: +userId, }, { select: ['id', 'username'] }, ) .then((user) => { console.log('user', user); done(null, user); }) .catch((error) => done(error)); }} local.strategy.ts import { Injectable, UnauthorizedException } from "@nestjs/common";import {Strategy} from "passport-local";import { PassportStrategy } from "@nestjs/passport";import { AuthService } from "./auth.service";@Injectable()export class LocalStrategy extends PassportStrategy(Strategy) { constructor(private authService: AuthService) { super({ usernameField: 'username', passwordField: 'password' }); } async validate(username: string, password: string, done: CallableFunction) { const user = await this.authService.validateUser(username, password); if (!user) { throw new UnauthorizedException(); } return done(null, user); }} local-auth.guard.ts import { Injectable } from "@nestjs/common";import { AuthGuard } from "@nestjs/passport";@Injectable()export class LocalAuthGuard extends AuthGuard('local') { async canActivate(context): Promise<boolean> { const can = await super.canActivate(context); if (can) { const request = context.switchToHttp().getRequest(); console.log('login for cookie'); await super.logIn(request); } return true; }} users.service.ts import { Injectable } from '@nestjs/common';import { InjectRepository } from "@nestjs/typeorm";import { Users } from "../entities/Users";import { Repository } from "typeorm";import * as bcrypt from 'bcryptjs';@Injectable()export class UsersService { constructor( @InjectRepository(Users) private usersRepository: Repository<Users>, ) { } async findByUserName(username: string) { return this.usersRepository.findOne({ where: { username }, select: ["id", 'username', 'password'], }); } async signUp(username: string, password: string) { console.log("@@ = ", password); const salt = await bcrypt.genSalt(); const hashedPassword = await bcrypt.hash(password, salt); const user = await this.usersRepository.findOne({ where: { username } }); if(user) { throw new Error('이미 존재하는 사용자입니다'); } const returned = await this.usersRepository.save({ username, password: hashedPassword, }); console.log("successed = ", returned); return true; }} users.controller.ts import { Body, Controller, ForbiddenException, NotFoundException, Post, UseGuards, UseInterceptors} from "@nestjs/common";import { UsersService } from "./users.service";import { ApiOperation, ApiTags } from "@nestjs/swagger";import { JoinRequestDto } from "./dto/join.request.dto";import { User } from "../common/decorator/user.decorator";import { LocalAuthGuard } from "../auth/local-auth.guard";import { UndefinedToNullInterceptor } from "../interceptors/undefinedToNull.interceptor";@ApiTags('USERS')@UseInterceptors(UndefinedToNullInterceptor)@Controller('api/users')export class UsersController { constructor(private usersService: UsersService) {} @ApiOperation({ summary: '로그인' }) @UseGuards(LocalAuthGuard) @Post('login') login(@User() user) { return user; } @ApiOperation({ summary: '회원가입' }) @Post('signup') async join(@Body() data: JoinRequestDto) { const user = this.usersService.findByUserName(data.username); if (!user) { throw new NotFoundException(); } const result = await this.usersService.signUp( data.username, data.password, ); if(result) { return 'ok'; } else { throw new ForbiddenException(); } }}
-
미해결
mmdet import 에러
교수님 강의대로 설치하고 했는데, 커널 리스타트의 문제가 아닌 거 같아서 질문 글 남깁니다.. 이런 부분은 어떻게 해결 해야 되나요?? 강의 : 딥러닝 컴퓨터 비전 완벽 가이드 / 권철민 교수님
-
미해결홍정모의 따라하며 배우는 C언어
unsigned int ui = 3000000000U 에서
unsigned int ui = 3000000000U 에서, 뒤에 U를 붙이는 이유는 무엇인가요? 다른 자료형들도 전부 char이면 c, short면 s를 붙이나요?
-
미해결웹 게임을 만들며 배우는 React
이미 열었던 셀 체크를 할 때 CODE.OPENED 로 0인지 검사하는게 아니라 0 이상인지 검사하면 더 좋은 것이 아닌지 궁금합니다.
안녕하세요, 제로초님. 강의 내용이 너무 쏙쏙 들어와서 재밌게 공부하고 있습니다. 궁금한 부분이 checkAround() 함수의 초반 검사부, 그리고 주변 칸을 여는 near checkAround를 실행할때에 열린칸인지 아닌지 검사하는 부분에서 어떠한 칸을 클릭했을때에 그 옆에 칸이 지뢰가 없는 빈칸이지만 이미 클릭했는데 주변에 지뢰가 있어서 숫자가 입력된 칸인 경우 checkAround가 다시 실행되면 안되므로 CODE.OPENED 인지 아닌지가 아니라 >= 0 인지 아닌지로 구분하는 것이 더 좋지 않은가 하여 질문드립니다. 강의에 나온 조건문을 보던 중 지뢰찾기 강의 초반에 0 이상이면 다 OPENED로 나중에 사용할 예정이라고 하셨는데 이 때가 등장할 때가 아닌가 싶었습니다!
-
미해결스프링부트 시큐리티 & JWT 강의
soruce
안녕하세요 강의 잘 보고 있습니다. 다름이 아니라 source 넣는 부분에서 오류가 나던데 찾아봐도 해결책을 못찾겠네요 ㅠㅠ 왜그런거죵
-
미해결예제로 공부하는 Java 100 문제풀이 Part.1
노트패드 오류 한글을 출력하면 글자마다 띄어쓰기가 돼요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이런 식으로 숫자와 영어에는 아무 문제가 없는데, 한글에서만 저렇게 한 글자씩 띄어쓰기가 됩니다. 왜이러는 걸까요...? 구글에 쳐봐도 저와 같은 사례가 없네요..
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
drift package 문의 드립니다.
dependency_overrides: path: ^1.8.1 이후 아래와 같은 오류가 발생하고 있습니다. Because star_diary depends on drift >=1.1.0 which requires SDK version >=2.15.0 <3.0.0, version solving failed. pub get failed (1; Because star_diary depends on drift >=1.1.0 which requires SDK version >=2.15.0 <3.0.0, version solving failed.) exit code 1
-
미해결컴퓨터, 웹, 코딩, 프로그래밍의 시작 - Web1
동영상 소스코드 입력 후 저장하여 웹에서 동영상이 재생이 안되어
동영상 소스코드 입력 후 저장하여 웹에서 동영상이 재생이 안되어 주소창에 127.0.01/index.html 이나 localhost가 안뜨고 페이지를 열 수 없다고 적혀있는데요 ..왜 그럴까요? file:///Applications/mampstack-8.1.2-0/apache2/htdocs/INDEX.html 는 문제 없이 잘 뜨고 web 폴더에 있는 파일은 htdoc 폴더에 이미 복사하여 붙여놨습니다.
-
해결됨XD UI 디자인 + Clone Coding 인터렉티브 반응형웹 포트폴리오!
강의 1분 30초
1분 30초부터 시작하는 html 내용들을 제가 직접써야하나요 ? 이건 어느 폴더(다운 받은 수업 폴더 중 )에 있는 건가요
-
미해결스프링 시큐리티
remember_me는 각자의 사이트에 해당하는 것입니까?
remember_me는 각자의 사이트에 해당하는 것입니까? - 네이버 remember_me - 쿠팡 remember_me - 구글 remember_me 다 각자 다른 remember_me를 사용하고 있는 건가요 아니면 remember_me를 여러 사이트에서 재활용해서 사용하는 건가요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
배포 후 log out 쿠키 삭제
안녕하세요. 현재 제로초님과 같은 코드로 passport-local로 로그인과 로그아웃을 구현하였습니다. 배포 후 https환경에서 log out하였을때 브라우저 상에서 쿠키가 삭제되지 않는것 같아서 질문드립니다 ㅠ 프론트와 백엔드는 같은 도메인을 사용하고 있고 서브도메인만 다른 상황입니다 ! (프론트: dimelo.io, 백엔드: api.dimelo.io) (https://stackoverflow.com/questions/13758207/why-is-passportjs-in-node-not-removing-session-on-logout 여기 글을 보고 req.session.destroy(function() { res.clearCookie('connect.sid'); }); 이렇게 해보았지만 그래도 안됐습니다 ...)
-
미해결리버싱 이 정도는 알아야지
MessageBoxA() 호출주소 관련 질문있습니다!
안녕하세요! 강의 잘 들었습니다 messageboxa()호출 주소 관련 질문이 있어 글 남깁니다! 제가 호출 주소를 확인 했을 때는 0x76133670라고 나와있었는데 그럼 Memory Map에서 어디를 찾아봐야 하는지 잘 모르겠습니다. 이렇게 보이는데 그럼 저 761~로 시작하는 부분이 맞는걸 까요? 아직 리버싱에 해당 지식이 없어서 그냥 단순히 761로 똑같이 시작해서 추측해봤습니다.
-
미해결초보를 위한 쿠버네티스 안내서
mac m1 사용중 입니다. minikube wordpress 접속 오류
mac m1 여서 minikube start driver=docker 설정 후 실행했습니다 . wordpress 접속이 안됩니다. minikube service wordpress 로 1번째 그림에서 연결이 안됩니다. minikube service --url wordpress 는 1번 그림돠 비슷한 상태입니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
store를 사용하면 기존에 사용하던 props와 emit을 사용할 필요가 없는건가요?
이번강의 보다가 문득 든 생각이, store를 사용하면 기존에 props로 하위 컴포넌트에 데이터를 내려주고, 하위컴포넌트에서 event를 발생시켜서 상위 컴포넌트에서 data를 수정하는 과정이 필요가 없는거 아닌가 생각이 들어서요.
-
미해결기초부터 따라하는 디지털포렌식
CTF 문제 다운로드 질문 드립니다.
CTF문제 설치 도중에 서버가 불안정해서인지 자꾸 중단이 됩니다. 혹시 문제파일 공유 가능할까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
HandlerMove lock 관련 질문 드립니다.
락이 없어도 정상 작동을 하지 않나요? 1) PlayerInfo info , S_Move resMovePacket , 매개변수 기반으로 만들어 지고 있으니 safe 2) Broadcast 안에 이미 락이 있으니 safe 3) C_MoveHandler 에서 player , room 참조를 한번더 받았으니 크래쉬로 부터 안전 서버 프로그래밍 에선 락이 제일 어려운거 같습니다.