다시 강의를 보니 드는생각..
미해결
스프링과 JPA 기반 웹 애플리케이션 개발
이메일 인증요청시간을 1시간으로 잡으셨는데 인증할때마다 마지막인증요청 시간을 업데이트 쳐줘야 하는거 아닌가요 ??? (/resend-confirm-email) 이 메서드를 실행 정상 했을때 마다
- java
- spring
- spring-boot
- jpa
- thymeleaf
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링과 JPA 기반 웹 애플리케이션 개발
이메일 인증요청시간을 1시간으로 잡으셨는데 인증할때마다 마지막인증요청 시간을 업데이트 쳐줘야 하는거 아닌가요 ??? (/resend-confirm-email) 이 메서드를 실행 정상 했을때 마다
미해결
package bufferTest; import java.util.Scanner; public class BufferTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String a = scan.next(); String[] arr1 = {"a"}; System.out.println(System.identityHashCode(a)); System.out.println(System.identityHashCode(arr1[0])); } } 왜 arr[0]과 a의 주소 값이 다른가요..??? 답변 주시면 정말 감사하겠습니다!
미해결
Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
dto랑 이미지 파일을 dio로 이용하여 post 하려는데 뭘해도 400, 415 등등 에러가 나옵니다 혹시 이유를 알 수 있을까요?... 수업내용이 아닌 질문 죄송합니다. Future<void> postUser(UserInfo userDto, XFile? imageFile) async { try { // Dio 인스턴스 생성 Dio dio = Dio(); // 멀티파트 요청 생성 FormData formData = FormData(); // Add userDto as a JSON part formData.fields.add(MapEntry('userDto', jsonEncode(userDto.toJson()))); // Add image file if (imageFile != null) { formData.files.add(MapEntry( 'image', await MultipartFile.fromFile(imageFile.path), )); } // Dio를 사용하여 POST 요청 보내기 Response response = await dio.post( 'http://43.200.217.158:8080/bookstore-0.0.1-SNAPSHOT/user', data: formData, options: Options( headers: { "Content-Type": "multipart/form-data", }, ), ); // 응답 확인 if (response.statusCode == 200) { print("User Data sent successfully"); } else { print('response.statusCode: ${response.statusCode}'); throw Exception("Failed to send data"); } } catch (e) { print("Failed to send post data: $e"); } } ------------------------------------------------------------------------------- 서버 코드 스프링 @PostMapping(value = "/user", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}) public ResponseEntity<ApiResponse> save(@RequestPart UserDto userDto, @RequestPart MultipartFile image) { try { log.info("유저 생성 입장!!"); Long save = userService.save(userDto, image); return ResponseEntity.status(HttpStatus.OK).body(new ApiResponse("Created", "유저 생성 성공", save)); } catch (Exception e) { log.error("e={}", e); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ApiResponse("NotFound", "유저 생성 실패", null)); } }
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
response.data ['response']['body']['items'].map((e)=>StatModel.fromJson(json: e)) 위의 코드를 사용하여 가져온 미세먼지 데이터를 StatModel의 인스턴스로 만들 때, 아래와 같은 에러가 간헐적으로 발생합니다. [ERROR:flutter/runtime/dart_vm_ initializer.cc (41)] Unhandled Exception: type 'String' is not a subtype of type 'int' of 'index' hot Restart를 계속 누르다 보면 해결되다가도, 강의를 진행하다 다시 hot Restart를 눌러야 하는 상황이 발생하면 이 에러가 반복적으로 발생합니다. 해결방법을 알고싶습니다.
해결됨
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RestaurantCard에서 factory를 생성하지 않고 parse된 item을 RestaurantCard 타입으로 넣어주는건 안 좋은 방법일까요 ??
해결됨
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
api란 개념을 잘 모르겠습니다. 그냥 controller에서 mapping하는 것이 api 인가요? 1편에서 만들었던 @GetMapping("/members/new") public String createForm(Model model) {...} 이런 코드들도 각각 api라 하는 것인가요?
해결됨
Flutter 중급 1편 - 클린 아키텍처
강의를 수강하며 클린 아키텍쳐라는 개념을 처음 사용하다보니 미숙한 부분이 많다보니 질문이 많아지는 것 같습니다.^^; 페이지간 이동이 아닌, 하나의 페이지안에서 일부 위젯들만 변경되거나 노출/숨김되는 경우, 그러나 기능적으로는 분명한 차이가 있을 때, 뷰/뷰모델 작성은 어떻게 나누어서 하면 될까요? 간단한 예를 들어보면 같은 배경에서 중앙에 배치 되는 위젯들만 PageScroll 또는 숨김/노출되는 상황입니다. 첫 진입 -> 중앙에 시작 버튼 노출 시작버튼 클릭 시 -> 시작 버튼 숨김/ 중앙에 비디오 선택창 노출 비디오 선택 시 -> 비디오 선택창 숨김/비디오 플레이어 노출 비디오 종료 시 -> 비디오 플레이오 숨김/ 다시보기 버튼 노출 위젯의 배치로만 보았을 때는 1개의 view에 여러개의 component가 있는 형태이지만, 기능적으로 구분하면 시작/비디오선택/비디오플레이/다시하기 이런식으로 4개의 view로도 구분할 수 있는 것 같아보입니다. 강사님께서는 이럴 경우 어떤식으로 코드를 작성하시는지 궁금합니다.
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
"완성된 Pagination 로직 실행해보기" 강의에서 Scroll 위치를 찾기 위해서 반영한 ScrollController에서 Listener를 등록해도 스크롤 할때 동작을 하지 않아서 문의드립니다. - 리스너를 등록해도 스크롤 시 print('run') 이 동작을 안합니다..
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
이제는 promise chain이나 async await 문으로 콜백함수를 처리해야 하는 것으로 보입니다. 다음과 같이 코드를 수정해서 돌아가는 것을 확인했으니 활용하시면 좋을 것 같아요! // index.js app.post('/login', (req, res) => { // 이메일이 DB에 있는지 확인 User.findOne({ email: req.body.email }) .then (async (user) => { if (!user) { throw new Error("제공된 이메일에 해당하는 유저가 없습니다.") } // 비밀번호가 일치하는지 확인 const isMatch = await user.comparePassword(req.body.password); return { isMatch, user }; }) .then(({ isMatch, user }) => { console.log(isMatch); if (!isMatch) { throw new Error("비밀번호가 틀렸습니다.") } // 로그인 완료 return user.generateToken(); }) .then ((user) => { // 토큰 저장 (쿠키, localstorage ...) return res.cookie("x_auth", user.token) .status(200) .json({ loginSuccess: true, userId: user._id }); }) .catch ((err) => { console.log(err); return res.status(400).json({ loginSuccess: false, message: err.message }); }) }); // User.js userSchema.pre('save', function( next ) { // 비밀번호 암호화 const user = this; if(user.isModified('password')) { bcrypt.genSalt(10, function(err, salt) { if (err) { return next(err); } bcrypt.hash(user.password, salt, function(err, hash) { if (err) { return next(err); } user.password = hash; return next(); }); }); } else { return next(); } }); userSchema.methods.comparePassword = function(plainPassword) { // 암호화된 비밀번호와 같은지 체크 const user = this; return bcrypt.compare(plainPassword, this.password) } userSchema.methods.generateToken = function() { // jwt 생성 user = this; const token = jwt.sign(user._id.toJSON(), 'secretToken'); user.token = token; return user.save(); }
해결됨
Flutter 앱 개발 실전
안녕하세요. CartService 강의에서 CartService의 cartItemList를 굳이 const 로 선언하는 이유가 있는지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
지난 강의 JPA 활용 1편을 듣고왔는데요, API를 개발하는 이유와 의미가 무엇인가요?
미해결
Flutter로 SNS 앱 만들기
강의 영상처럼 logger를 했을때 Instance of FeedModel이 안찍힙니다.. 혹시 몰라서 진행해 봤는데 feed_screen.dart에서 feedList[0]부분에서 오류가 납니다. Firestore에 feed 있는 상태, 없는 상태 둘다 해봤는데도 log가 안찍힙니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Launching lib\main.dart on sdk gphone64 x86 64 in debug mode... Running Gradle task 'assembleDebug'... Warning: The plugin video_player_android requires Android SDK version 34. For more information about build configuration, see https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. One or more plugins require a higher Android SDK version. Fix this issue by adding the following to C:\Users\kimseongmin\Desktop\vid_player\android\app\build.gradle: android { compileSdkVersion 34 ... } 위 에러로 인해 app\build.gradle에 상기 내용을 적었는데도 불구하고 에러가 나는 이유가 무엇일까요?
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요. 정말 좋은강의 감사드립니다. 제가 지금 첫번째로 듣고있는중이라 정확히 모든걸 이해하면서 듣진 못하고있는데 장바구니에서 결제하기 눌러서 결제 완료하고 주문탭가면 방금 주문한 내역이 반영되지 않고 리프레쉬한번 해야 반영이 되는데 리프레쉬 안하고 바로 주문탭에 반영시키는 방법 생각해보다가 그냥 basket_screen.dart에서 결제하기 버튼을 눌렀을때 onPressed: () async { final resp = await ref.read (orderProvider.notifier).postOrder(); if(resp){ await ref.read (orderProvider.notifier).paginate(forceRefetch:true); context.goNamed(OrderDoneScreen.routeName); }else{ ScaffoldMessenget.of~~ } } 위와 같은식으로 그냥 버튼 누르고 바로 paginate(forceRefetch:true);을 통해 강제로 데이터 한번 갱신해버리는식으로 했는데 이렇게하면 안좋은게 있을까요..? 만약 안좋다면 어떤식으로 해야 주문탭에 바로 반영이 되게 할 수 있을까요 ㅜㅜ 주문탭에 옵티미스틱 리스폰스 코드를 어떻게 만들어서 어디에 적용시켜야할지 잘 모르겠습니다 ㅜㅜ
해결됨
Flutter로 SNS 앱 만들기
안녕하세요 섹션 6, 사용자 정보, 게시글정보를 Model 클래스로 관리 영상에서 영상 따라서 마지막에 삭제할 것 삭제하고 다시 게시물 등록해서 firestore과 storage에 정상적으로 데이터 들어가나 해봤는데 storage에는 feeds 폴더 안에 데이터가 들어오는데 firestore에는 users 컬렉션만있고 feeds 컬렉션이 안뜹니다.. 비슷한 질문 올리신 분 계셔서 참고해봤는데 코드에는 이상이 없는 것 같아서 질문합니다.
미해결
[2025 리뉴얼]플러터플로우로 코딩 없이 한달 안에 앱 만들기
안녕하세요 좋은강의보고 배우며 어려가지 만들고 있습니다. 혹시 custom Actions같은 부분에서도 질문이 가능할까요? Return Value에 대한 질문 입니다. flutterflow를 이용해서 아두이노와 ble통신하는 기능을 만들고 싶은데요.. 다른 pubdev에서 가져온 라이브러리의 타입을 따로ReturnValue로 지정하는 방법이 있을까요?? 답변이 어렵다면 혹시 추후에 custom Code에 대한 강의 추가도 계획에 있을까요??
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
다트패드 에서 도움말 팝업이 안뜨네요 (첨부사진 하얀 박스) 뭐가 문제인가요 컴퓨터는 IBM 컴퓨터 이구요
해결됨
[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
안녕하세요? 현재 7장까지 잘 따라하다가, 프로필 이미지가 정상 업로드 된거 같은데 홈화면에서 제대로 표시가 안되어 무엇이 문제인지 찾고 있습니다. 샘플소스가 있다면 관련 부분 비교해 보고 싶은데 개남님 github 찾아봐도 bookreview 프로젝트가 안보이드라고요. 전체 full 소스 받아볼수 있다면 관련 부분 비교해 보고 싶습니다.
미해결
개요 로그인 성공 후 인덱스 페이지로 넘어갑니다. 인덱스 페이지에는 "테스트 버튼" 이라는 버튼을 클릭하면, test 로드하는 api 를 호출하도록 했습니다. 그러나 api 요청만 진행되고, 페이지는 바뀌지 않습니다. 개발자도구 메시지에 해당 페이지의 html 코드만 출력됩니다. 참고자료 index.html <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>인덱스 페이지</title> <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script> </head> <body> <h1>환영합니다!</h1> <p>성공적으로 로그인하셨습니다.</p> <button id="logoutButton">로그아웃</button> <button id="testButton">테스트 버튼</button> <script> $(document).ready(function() { // 로그아웃 버튼 이벤트 $('#logoutButton').click(function() { // 로컬 스토리지에서 토큰 제거 localStorage.removeItem('accessToken'); // 로그인 페이지로 리다이렉션 window.location.href = '/login'; }); // 테스트 버튼 이벤트 $('#testButton').click(function() { // 로컬 스토리지에서 토큰 가져오기 const token = localStorage.getItem('accessToken'); if (token) { $.ajax({ url: '/api/test', // 요청할 서버의 URL type: 'GET', // HTTP 메서드 beforeSend: function(xhr) { // 요청 헤더에 토큰 추가 xhr.setRequestHeader('Authorization', token); }, success: function(data) { // 요청 성공 시 로직 console.log("테스트 요청 성공:", data); alert("테스트 요청 성공"); }, error: function(xhr, status, error) { // 요청 실패 시 로직 console.error("테스트 요청 실패:", xhr.responseText); alert("테스트 요청 실패"); } }); } else { alert("토큰이 없습니다. 다시 로그인해주세요."); } }); }); </script> </body> </html> 보이는 것처럼 로컬 스토리지에서 토큰을 가져온 후 요청 헤더에 다시 담아서 전송합니다. JwtAuthorizationFilter @Override protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) throws ServletException, IOException { // 헤더에서 토큰 추출 log.info("헤더에서 토큰 추출"); String tokenValue = jwtUtil.getJwtFromHeader(req); log.info("토큰 : " + tokenValue); if (StringUtils.hasText(tokenValue)) { // 토큰 유효성 검사 if (!jwtUtil.validateToken(tokenValue)) { log.info("Token Error"); return; } Claims info = jwtUtil.getUserInfoFromToken(tokenValue); try { setAuthentication(info.getSubject()); } catch (Exception e) { log.error(e.getMessage()); return; } } else { log.info("토큰이 없습니다."); } filterChain.doFilter(req, res); } // 인증 처리 public void setAuthentication(String loginId) { log.info("인증 성공"); SecurityContext context = SecurityContextHolder.createEmptyContext(); Authentication authentication = createAuthentication(loginId); context.setAuthentication(authentication); SecurityContextHolder.setContext(context); } // 인증 객체 생성 private Authentication createAuthentication(String loginId) { log.info("인증 객체 생성"); UserDetails userDetails = userDetailsService.loadUserByUsername(loginId); return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); } 이렇게 JwtAuthorizationFilter 가 있을 때 헤더에서 토큰이 추출되는 거까지 로그에 다 출력되고, 인증 객체까지 생성되는 걸 확인했습니다. Console 2024-02-26T14:31:24.699+09:00 INFO 59767 --- [nio-8081-exec-3] JWT 검증 및 인가 : 토큰 : eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0NiIsImF1dGgiOiJPV05FUiIsImlhdCI6MTcwODkyNDY0NiwiZXhwIjoxNzA4OTI4MjQ2fQ.TLjHCc1_ZtTbzGb-2c0ueLmxgCyxQf1rUQs4DkqMv_c 2024-02-26T14:31:24.706+09:00 INFO 59767 --- [nio-8081-exec-3] JWT 검증 및 인가 : 인증 성공 2024-02-26T14:31:24.706+09:00 INFO 59767 --- [nio-8081-exec-3] JWT 검증 및 인가 : 인증 객체 생성 Hibernate: /* <criteria> */ select u1_0.id, u1_0.email, u1_0.login_id, u1_0.password, u1_0.role from users u1_0 where u1_0.login_id=? 2024-02-26T14:31:24.722+09:00 INFO 59767 --- [nio-8081-exec-3] TestController : test controller 로그를 보면 test controller 를 호출하는 거까지 확인할 수 있었습니다. 그러나 페이지는 로드되지 않고, 메시지에 html 코드만 출력이 됩니다. 자료 Test.html <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script> <title>Test Page</title> </head> <body> <h1>This is a test page.</h1> </body> </html> 정리 로그인 성공 후 인덱스 페이지로 넘어감 해당 인덱스 페이지에서 test 페이지로 넘어가고자 함 인가 필터 모두 거치고, 토큰 값이 전달되는 거까지 확인했음 test controller 까지 요청되지만, 정작 페이지는 불러와지지 않음 대체 제가 뭘 놓친 걸까요 ㅠㅠㅠㅠ 이거때문에 며칠 동안 머리 싸매고 있습니다,,, 제발 도와주세요,,,
미해결
[플러터 상태관리] Bloc 마스터 코스 기초부터 응용까지!
안녕하세요 혹시 이 강의 후속작인 [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter 대시보드 강의에서는 cubit이 아닌 bloc에 대해서 다루고 있는지 궁금합니다!