묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 시작은 프리캠프
파이널 과제 질문입니다.
파이널 과제중 질문입니다.비밀번호가 공란일 때 는 오류가 안떠서 문의드려요 ㅠㅠ에러문구가 아예 안뜨나 싶기도 했는데일치하지 않는건 떠서 문의드립니다.ㅠㅠ
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
서버 관련 문의
안녕하세요 루키스님. 양질의 클라이언트 강의 너무도 잘 듣고 있습니다.서버 공부도 해보고 싶은데 제가 데디케이티드 서버를 띄운 다음 클라이언트 접속 시키는 것까지는 완료를 했습니다.이제 서로 총을 쏘고 맞았을 때 데미지가 서버에 반영되고 처리되는 부분을 학습하고 싶은데 루키스님 서버 강의 중에 추천해주실만한 것들이 있을까요? 아님 혹시 이와 관련한 키워드나 자료가 있다면 알려주시면 너무나 큰 도움이 될 것 같습니다.
-
해결됨스프링 시큐리티
rememberme token key에 관한 질문입니다.
안녕하세요 선생님 질문이 있습니다.TokenBasedRememberService#processAutoLoginCookie 과정에서String expectedTokenSignature = makeTokenSignature(tokenExpiryTime, userDetails.getUsername(), userDetails.getPassword()); if (!equals(expectedTokenSignature, cookieTokens[2])) { throw new InvalidCookieException("Cookie token[2] contained signature '" + cookieTokens[2] + "' but expected '" + expectedTokenSignature + "'");위와 같이 해당 RemeberService가 생성되었을시 주입받은 key를 가지고 md5 방식으로 tokenSignature를 만드는것을 확인하였습니다. 이것을 받아온 rembemer me token하고 비교하는 것을 확인하였습니다. 질문이 2개입니다.1) 이 과정을 거쳐서 만든 RememberMeAuthenticationToken 은 왜 아직 ProviderManager.authenticate를 거치지도 않았는데 authenticated=true인것 인가요? 2) 위의 인증객체(RememberMeAuthenticationToken )를 인증할때 RememberMeAuthenticationProvider#authenticate에서 key값을 추가적으로 비교하는 이유가 다른 질문을 찾아보니 "그리고 RememberMeServices 인터페이스를 커스텀하게 자체 기능을 구현할 수 있기 때문에 이 때에도 위와 같은 인증단계의 규칙을 거치게 함으로서 상호간 key 가 일치하지는 여부를 체크하기 위함이기도 합니다."하셨는데 key가 달라도 MD5digest해서 나온 값이 같을 수도 있어서 추가적으로 검증한다고 이해하면 되나요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
UNION 해커랭크 문제풀이(난이도 상)
SELECT * FROM Functions WHERE x = y GROUP BY x HAVING COUNT(x) = 2 UNION SELECT p1.x, p1.y FROM Functions AS p1 INNER JOIN Functions AS p2 ON (p1.x = p2.y AND p2.x = p1.y) WHERE p1.x < p1.y ORDER BY x처음에 ORDER BY p1.x으로 작성했었는데 오류가 나더라고요. UNION 위에 작성한 쿼리를 Alias 없이 작성해서 안 되는 거죠..?이렇게 Alias가 없는 쿼리와 있는 쿼리를 같이 쓸 때는 ORDER BY 뒤에 Alias를 사용하지 않는 컬럼명을 붙여준다고 생각하면 맞을까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RestaurantRatingProvier를 Riverpod 2.0으로 마이그레이션 어떻게 할수 있을까요??
코팩님이 riverpod 2.0 강의 영상을 올리셔서 2.0으로 마이그레이션하려는데, RestauranRatingStateNotifier가 StateNotifier<CursorPaginationBase>를 extend하고 있는데 이걸 어떻게 riverpod 2.0으로 마이그레이션 할수 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
insert 할때 개인적인 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님은 값 넣으실때 예를들어14:25 같이member.getFavoriteFoods().add("치킨");member.getFavoriteFoods().add("족발");member.getFavoriteFoods().add("피자");이렇게 넣으시는데HashSet<String> food = new HashSet<>();food.add("치킨");food.add("족발");food.add("피자");member.setFavoriteFoods(food);이렇게 넣어도 똑같이 들어가는데 뭘로 써도 상관없는건가요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿
웹 서블릿에서 발전한것이 getmapping 과 postmapping 인 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
메인메소드가 실행이안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]메인 메소드가 실행이되질않아요
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
footer{clear:both;} 하지 않고 .items{ overflow: hidden; } 해도 됩니까?
footer{clear:both;} 하지 않고 .items{ overflow: hidden; } 해도 footer부분이 보이는데 이렇게 해도 됩니까?
-
미해결인공지능 기초수학
강의교안 부탁드립니다
안녕하세요?오늘부터 공부하려고 합니다. 강의 교안 부탁드립니다.sekwon@0to1partners.com입니다~ 감사합니다
-
미해결Spring Boot JWT Tutorial
POST http://localhost:8080/api/authenticate 를 실행할 때의 username과 password
POST http://localhost:8080/api/authenticate Content-Type: application/json { "username": "admin", "password": "admin" }의 내용은 data.sql에는 없는데 왜 해당 username과 password로 /api/authenticate 를 호출했을 때만 token값이 정상적으로 반환되는 걸까요?data.sql 내용은 아래와 같습니다. (https://github.com/SilverNine/spring-boot-jwt-tutorial/blob/master/src/main/resources/data.sql의 내용) INSERT INTO USER (username, password, nickname, activated) VALUES ('admin', '$2a$08$lDnHPz7eUkSi6ao14Twuau08mzhWrL4kyZGGU5xfiGALO/Vxd5DOi', 'admin', 1); INSERT INTO USER (username, password, nickname, activated) VALUES ('user', '$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC', 'user', 1); INSERT INTO AUTHORITY (AUTHORITY_NAME) VALUES ('ROLE_USER'); INSERT INTO AUTHORITY (AUTHORITY_NAME) VALUES ('ROLE_ADMIN'); INSERT INTO USER_AUTHORITY (USER_ID, AUTHORITY_NAME) VALUES (1, 'ROLE_USER'); INSERT INTO USER_AUTHORITY (USER_ID, AUTHORITY_NAME) VALUES (1, 'ROLE_ADMIN'); INSERT INTO USER_AUTHORITY (user_id, authority_name) values (2, 'ROLE_USER'); <추가1>SecurityConfig.java에서 @Bean으로 설정해 놓은 PasswordEncoder와 관련이 있나 싶어서@Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }https://bcrypt-generator.com/ 와 같은 사이트에서 이렇게 해당 문자열과 admin이 같다고 나왔습니다. 이것을 통해 UserService.java의 signup메서드를 보면 password 속성에 해당하는 문자열을 BCryptPasswordEncoder로 인코딩 한 값을 User entity의 password로 입력해 준다는 것을 알 수 있었습니다.@Transactional public UserDto signup(UserDto userDto) { if (userRepository.findOneWithAuthoritiesByUsername(userDto.getUsername()).orElse(null) != null) { throw new DuplicateMemberException("이미 가입되어 있는 유저입니다."); } Authority authority = Authority.builder() .authorityName("ROLE_USER") .build(); User user = User.builder() .username(userDto.getUsername()) .password(passwordEncoder.encode(userDto.getPassword())) .nickname(userDto.getNickname()) .authorities(Collections.singleton(authority)) .activated(true) .build(); return UserDto.from(userRepository.save(user)); }다만 아직도, /api/authenticate호출로 인해 AuthController의 authorize가 실행될 경우 message body에 담아 보낸 password 속성값의 평문을, DB의 User 테이블에 저장되어 있는 password 값과 동일한지 비교하기 위해 BCryptPasswordEncoder를 사용해 Bcrypt encrypted hash값으로 만드는 부분이 어디인지를 모르겠습니다. (data.sql에서 직접 Bcrypt encrypted hash로 입력한 문자열의 경우 signup메서드를 거치지 않고 DB의 User 테이블에 값을 바로 입력한 것인데 AuthController의 authorize가 호출될 경우 /POST http://localhost:8080/api/authenticate 에 실어서 보낸 password 평문 내용을 어디서 어떻게 Bcrypt encrypted hash로 변환해 User테이블의 Bcrypt encrypted hash 값과 비교하는 것인지 생각해 보다가 여기에 이르렀습니다.) <추가2>AuthController의 authorize메서드 동작 과정을 따라가다 보면 CustomUserDetailsService의 loadUserByUsername메서드를 실행하는데, @Override @Transactional public UserDetails loadUserByUsername(final String username) { return userRepository.findOneWithAuthoritiesByUsername(username) .map(user -> createUser(username, user)) .orElseThrow(() -> new UsernameNotFoundException(username + " -> 데이터베이스에서 레코드를 찾을 수 없습니다.")); }여기에서 createUser를 보면private org.springframework.security.core.userdetails.User createUser(String username, User user) { if (!user.isActivated()) { throw new RuntimeException(username + "해당 사용자가 활성화 되어 있지 않습니다."); } List<GrantedAuthority> grantedAuthorities = user.getAuthorities().stream() .map(authority -> new SimpleGrantedAuthority(authority.getAuthorityName())) .collect(Collectors.toList()); return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), grantedAuthorities); } spring security의 User클래스 객체를 생성해 반환하고 있고org.springframework.security.core.userdetails.User의 내용을 보면 public static final class UserBuilder 클래스 안에 private Function<String, String> passwordEncoder = (password) -> password;와 같은 내용이 있으며,public UserBuilder passwordEncoder(Function<String, String> encoder) { Assert.notNull(encoder, "encoder cannot be null"); this.passwordEncoder = encoder; return this; }와 같은 내용이 있는 것을 발견했습니다. 그렇다면 SecurityConfig에서 BCryptPasswordEncoder를 @Bean으로 설정해 놓았기 때문에 spring 컨테이너가 해당 PasswordEncoder를 프로젝트의 대표 PasswordEncoder??로 지정해 놓고 org.springframework.security.core.userdetails.User의private Function<String, String> passwordEncoder = (password) -> password;에서도 자동으로 주입받아 org.springframework.security.core.userdetails.User 객체를 만들 때 사용한 것이라고 보면 될까요? 사실 org.springframework.security.core.userdetails.User 내용을 계속 보고 있지만 아직도 CustomUserDetailsService의 createUser메서드와 같은 곳에서 아래와 같이 return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), grantedAuthorities);새로운 User객체 생성시 위와 같은 매개변수들을 전달해 줬을때 어떻게 PasswordEncoder가 적용되는 것인지 이해가 잘 되고 있지 않습니다. 영어 문해력의 문제인지, springframework내부의 클래스들은 동작 방식 이해가 좀 어렵더라고요.. 좀더 파고들어 본다한들 지금 수준에서 이해할 수 있을지 모르겠어서 도움을 구합니다.<추신>https://github.com/SilverNine/spring-boot-jwt-tutorial/blob/master/src/main/resources/data.sql 에서 INTO USER (username, password, nickname, activated) VALUES ('user', '$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC', 'user', 1);의 password 입력값이 수정되어야 할것 같습니다. 'user'문자열의 Bcrypt encrypted hash와 매치가 되지 않네요.
-
해결됨디자인 시스템 with 피그마
피그마 토큰과 오토레이아웃 spacing 적용
토큰 플러그인에서 무조건 spacing을 적용해야지 json파일에 반영이 되는걸까요? 토큰에서 spacing 적용 후 -> 오토레이아웃에서 직접 입력으로 변경할 경우 플러그인 상에선 반영이 안되어서요. 컬러랑 타이포는 플러그인과 피그마가 연동이 잘 되는 것 같은데 spacing은 연동이 안되는 것 같아서 질문 드립니다!
-
미해결
파워쿼리에서 중복 제거하기
위 그림에서 사용자 지정 에서 중복 삭제를 하면,1,4,6행이 남게 되는데,3,5,7행이 남도록 설정이 가능 할까요?
-
미해결홍정모의 따라하며 배우는 C++
디버거가 이상하게 작동해요.
Copy Constructor 설명해주시는 부분 코드를 따라치고 디버거를 돌려봤는데요.이렇게 Something something;에서 Step into (F11)를 누르면 클래스로 들어가져야 하는데 그러지 않고이런 화면이 뜨는데 왜 그런 걸까요...?마찬가지로 print(something);에서 Step into를 누르면또 이런 화면이 뜨면서 안으로 안들어가져요...어떻게 하면 이 문제가 해결되는지 혹시 알려주실 수 있을까요?
-
미해결데이터 분석 SQL Fundamentals
postgre와 dbeaver
박사님 안녕하세요? 수업 전에 postgre , dbeaver sql을 깔다가 의문이 들어 질문을 드립니다.두개의 rdbms를 설치하는 이유가, dbeaver에서 쿼리를 사용해서 분석하고 싶은 자료가 postgre 상에 있어 포트키를 사용해서 데이터를 받아 와야 하기 때문에 그런건가요?즉, postgre는 회사(혹은 데이터를 받아오고 싶은곳)의 자료가 있는 곳이며, dbeaver는 그 자료를 받아와서 분석하기 위한 툴인가요? 제가 빅쿼리, mysql 는 사용해 봤는데 앞서 두개는 처음 사용해보고, 주로 엑셀 파일을 다운받아서 사용해서 어디에 연결시켜 가져오는 건 익숙치 않아 질문드립니다.
-
미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
go 표준 코드 컨벤션이 있나요?
안녕하세요.강의를 듣다 보면 함수 네이밍 규칙에도 어떤 부분은 스네이크, 어떤 부분은 카멜케이스로 작성되는데 디렉토리 명 네이밍 규칙이나 .go 파일, 패키지, go.mod에 있는 모듈 네이밍 규칙 등 현업에서 사용할 만한 코드 컨벤션 정리 글 중 강사님이 추천하시는 참고할 만한 글이 있을까요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
호텔 고객 수요 예측
안녕하세요.궁금한 점이 있는데 여쭤볼 수 있는 분이 없어서 이렇게 작가님께 질문드려요.저는 프로그래밍에 관심이 있어서 독학을 하고 있는 학생이자, 현재는 부모님께서 운영하시는 호텔일을 도와드리고 있어요.부모님 호텔 일을 도와드리다보니 데이터사이언스라는게 정말 실무에서 유용한 학문이라는 생각이 들더라고요. 그동안은 정성적인 경험에만 의존했다면 이제는 조금도 정량적인 분석 및 기획이 필요한 시기라고 생각을 했어요.그렇게 자연스럽게 작가님의 강의를 접하게 되었고 수강하게되었어요. 호텔 고객 수요 예측을 진행하고 싶은데 이를 위해서는 주로 실무에서 어떤 방법을 사용하고 있을까요?
-
해결됨객체 지향 프로그래밍 입문
추상화 예제의 추상화하지 않은 구현 부분에서 질문있습니다.
2분 55초의 CloudFileManager 클래스의 DropboxClient dc = ...; List<DbFile> dbFiles = db.getFiles(); 해당 부분의 db.getFiles() 이 dc.getFiles()인가요? 혹시 오타인지 궁금해서 여쭤봅니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
쓰레드 관련 질문
선생님께서 말씀하시는 쓰레드가,노트북 구매할 때 나오는 4코어 8쓰레드에서의 쓰레드와는 다른 것인가요?
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
firebase에 upload 에러가 발생했습니다
안녕하세요 교수님.진행 중에 에러가 발생하여 질문 남겼습니다.파이어베이스에 업로드를 하려고 했는데Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0.이러한 메세지가 뜨면서 진행이 되지 않습니다.구글링을 통해서 찾아본 결과로android/app/main/res/AndroidManifest.xml에<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />를 추가해봤는데요 해결이 되지 않았습니다.firebase와 연동이 안 되어있나 싶어서 찾아봤는데I/FirebaseApp( 4142): Device unlocked: initializing all Firebase APIs for app [DEFAULT] 이렇게 나오면서 연동은 되어있는 것 같았습니다.다만 앱의 tab_page / profile 화면에서 이메일 인증은 진행하지 못 했습니다.한 번 오류가 나서 처음부터 다시 진행하였는데 비슷한 에러가 발생하는 것 같아서 질문 남겼습니다.wyongjae/instagram_clone_test at master (github.com)도움이 될까 싶어 깃허브에 파일 올려두었습니다.감사합니다!