inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

형 JobLauncherController 구성 질문

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 여기부분에서 사실상 JobLauncherController 에서 applicationContext 는 실제로 사용되지않는데 이전 강의에서 job이 bean으로 등록된다는걸 우리가 실제로 확인해보라고 넣은 큰 그림인거야 후훗? 😏

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
메롱시티 댓글 3 좋아요 1 조회수 106

IO.println(String.format("Hello and welcome!"));

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 선생님 이렇게 만들어지는데 괜찮은걸까요? [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • 객체지향
가진빵다내놔 댓글 2 좋아요 0 조회수 190

companion object

미해결

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요 강사님 그 정적 팩토리 매서드는 강의에서 data class dto 측에 써 주셨는데 현업에서는 주로 dto에 쓰는 게 컨벤션인 가요?

  • java
  • spring
  • kotlin
  • spring-boot
  • 리팩터링
KMC 댓글 2 좋아요 0 조회수 102

device선택시

해결됨

누구보다 빠르게 배우는 Springboot + Flutter RestAPI 게시판 만들기

디바이스 선택시 Chrome(web)과 저의 실물 핸드폰 연결해서 했더니 안드로이드 스튜디오 코드는 잘 돌아갑니다. 하지만 BoardViewModel.dart 코드에서 설정한 url그대로 따라 쳤는데 swagger ui에서 계속 화면처럼 response body가 비어있습니다.. 계속나와서 혹시 전체 소스코드 공유 안될까요??

  • flutter
  • java
  • kotlin
  • spring-boot
  • jpa
boll1235 댓글 3 좋아요 0 조회수 113

노션에 cors 문서가 안보입니다!

해결됨

누구보다 빠르게 배우는 Springboot + Flutter RestAPI 게시판 만들기

(사진)

  • flutter
  • java
  • kotlin
  • spring-boot
  • jpa
boll1235 댓글 2 좋아요 0 조회수 78

레디스 설명시작 부분 인코딩깨짐 문제

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

오타라기 보다는 인코딩이 깨져 보여서 신경이 쓰여서 3장. 작전2: NoSQL 읽고 쓰기 (무법지대 NoSQL, 새로운 처형 방식의 시작 ☠ ) 에서 중간 레디스 설명 시작 부분이야

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
hidongmin37 댓글 2 좋아요 1 조회수 82

서버컴포넌트의 파라미터 전달문제.

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요...강의 잘 보고있습니다. 일단 로그인을 합니다.. 그런데 이때 각 소속회사별로 로그인을 합니다. (A회사로 로그인을 하면... 다음부터는 A회사의 정보만 조회를 해야 합니다.) 그런 경우 공지사항 계시판이 메인화면에 있는데.이때 공지 화면의 내용은 당연히 A회사의 공지사항만 나와야 하는데.. 서버 컴포넌트에 파라미터를 넘겨야 하는데. 어떻게 넘겨야 할까요? zustand같은 전역상태도 사용 못하고.. 쿠키를 이용해야하나요? 현재는 http:url/index?blngcocd=999 이런식으로 소속회사를 달고 다나는데... 이건 아닌거 같아서요?

  • react
  • typescript
  • next.js
  • 카카오공채-개발
shoncg 댓글 1 좋아요 0 조회수 72

ExitCode 질문

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 5장. 작전2: Run Squad 장악 작전 공부중인데, Process finished with exit code 0 이라는 문구 자체가 나오질 않아. 혹시나 싶어서 새 프로젝트 만들어서 시도해봐도 마찬가지고,, 윈도우 11, java 17에 org.springframework.boot:spring-boot-starter-batch:3.5.7 환경에서 개발중인데 혹시 버전이나 OS 문제일까?? 아니면 뭔가 설정을 빼먹은건지 모르겠네.. 혹시 몰라서 application.yaml 설정도 첨부해 spring: application.name: demo output.ansi.enabled: always datasource: url: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 driver-class-name: org.h2.Driver username: sa password:

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
djccnt15 댓글 2 좋아요 1 조회수 75

6-7 강의에서

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

package section06_Sorting_Searching_failed.no07_coordinates_sorting; import java.util.*; public class Main { public int[][] solution(int n, int[][] arr) { for (int i = 1; i < n; i++) { int tmpX = arr[i][0]; int tmpY = arr[i][1]; int j; for (j = i-1; j >= 0; j--) { if (arr[j][0] > tmpX) { arr[j+1][0] = arr[j][0]; arr[j+1][1] = arr[j][1]; } else { break; } } arr[j+1][0] = tmpX; arr[j+1][1] = tmpY; } for (int i = 1; i < n; i++) { int tmpX = arr[i][0]; int tmpY = arr[i][1]; int j; for (j = i-1; j >= 0; j--) { if (arr[j][0] == tmpX && arr[j][1] > tmpY) { arr[j+1][1] = arr[j][1]; } else { break; } } arr[j+1][1] = tmpY; } return arr; } public static void main(String[] args) { Main m = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][2]; for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { arr[i][j] = sc.nextInt(); } } int[][] result = m.solution(n, arr); for (int i = 0; i < n; i++) { for (int j = 0; j < 2; j++) { System.out.print(result[i][j] + " "); } System.out.println(); } } } 저는 이렇게 하니 오답이라 뜨고 여기서 main 메서드에 출력방식만 for (int i = 0; i < n; i++) { System.out.println(result[i][0] + " " + result[i][1]); } 이렇게 바꾸니 정답이라고 뜨는데 왜 그런가요?

  • java
  • 코딩-테스트
커디널스 댓글 1 좋아요 0 조회수 68

Method1에서 Student 객체

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 이 부분에서 Student student를 선언하고 new Student();를 안했는데 어떻게 바로 .name같은 거를 사용할 수 있는 건가요? 다른 부분에서는 꼭 객체를 먼저 생성해야 접근을 할 수 있는데 이 함수에서는 왜 가능한건가요? static void initStudent(Student student, String name, int age, int grade) { student.name = name; student.age = age; student.grade = grade; }

  • java
  • 객체지향
s0_8h 댓글 1 좋아요 0 조회수 101

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

강의 따라서 프로젝트를 진행하다가 '출근 가능/불가능 확인 로직'에서 문제를 발견했습니다. 이것저것 시도하다가 드디어 해결해서 과정 공유해봅니다. 기존 코드 /// 기존의 initState() @override void initState() { super.initState(); // (아마도) 이 시점에서 오류 발생 ↓ Geolocator.getPositionStream().listen((eventPosition) { // 목적지 위치 var start = defaultLatLng; // 현재 위치 var end = LatLng(eventPosition.latitude, eventPosition.longitude); /// 거리 구하기 var distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); /// 거리가 `boundary` 내부에 들어오는지 확인 setState(() => mayChoolCheck = distance <= boundary); }); } /// 위젯 빌드 @override Widget build(BuildContext context) { /// AppBar: 제목 & 액션 버튼1 var appBar = AppBar( title: Text( '오늘도 출근', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.w700), ), centerTitle: true, // 안드로이드 설정 actions: <Widget>[ /// 원래 위치로 돌아오기 버튼 IconButton( onPressed: returnToMyLocation, icon: Icon(Icons.my_location), color: Colors.blue, ), ], ); return Scaffold( backgroundColor: Colors.white, appBar: appBar, /// 권한 요청을 위한 빌더 body: FutureBuilder<void>( future: checkPermission(), // 위치 권한 묻기 대화상자는 이 시점에 생성됨 builder: (context, snapshot) { if (snapshot.hasError) { return Center(child: Text('${snapshot.error}')); } // 이하 위젯 생성 코드... }, ), ); } /// Future<void> checkPermission() async { /// 위치 서비스 활성화 여부 var isLocationServiceEnabled = await Geolocator.isLocationServiceEnabled(); /// 활성화되지 않았다면 에러 발생 (앱이 현재 위치를 사용할 수 없으므로) assert(isLocationServiceEnabled, '위치 기능을 활성화하지 않았습니다.'); /// 권한 상태 확인 var checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } /// 시뮬레이션 상 `checkedPermission`이 위치 권한 허용 상태가 아니면 에러 유도 assert( checkedPermission == LocationPermission.always || checkedPermission == LocationPermission.whileInUse, '위치 권한을 허용해주세요.', ); } 오류 추적 오류의 원인은 'User denied permissions .. device's location.' 즉, 사용자가 위치 권한을 아직 허용하지 않은 시점에 위치 권한이 필요한 함수를 호출하려고 함. [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: User denied permissions to access the device's location. E/flutter (13339): #0 GeolocatorAndroid.getPositionStream.<anonymous closure> (package:geolocator_android/src/geolocator_android.dart:201:9) E/flutter (13339): #1 Stream.handleError.<anonymous closure> (dart:async/stream.dart:961:16) E/flutter (13339): #2 HandleErrorStream.handleError (dart:async/stream_pipe.dart:303:17) ... #0 에서 이미 getPositionStream().<anonymous closure> 로 추적한 걸로 보아, Geolocator.getPositionStream() 함수 호출 시점에 오류 발생한 것이 분명함. 문제의 원인과 해결책 (일부 ChatGPT의 도움을 받음) 문제의 가장 중요한 핵심은, 처음 앱 실행 시 위치 권한 확인 로직이 완전히 끝나기 전에 위치 권한 허용 이 이루어지지 않으므로, 앱 재시작 이전까지 '사용자 현재 위치 추적 기능'이 활성화되지 않고, 추가로 관련 함수에서 오류 발생 가능성이 있음. 그러므로 checkPermission() 함수는 initState() 에서 최초 한 번만 실행하고, Geolocator.getpositionStream() 함수는 따로 분리하여 checkPermission() 이 정확히 끝난 시점에 실행되도록 로직을 변경함. 1. checkPermission() 의 리턴 타입을 Future<void> 에서 Future<bool> 로 변환 /// 위치 권한 확인 및 부여 함수 Future<bool> checkPermission() async { /// 위치 서비스 활성화 여부 var isLocationServiceEnabled = await Geolocator.isLocationServiceEnabled(); assert(isLocationServiceEnabled, '위치 기능을 활성화하지 않았습니다.'); /// 권한 상태 확인 var checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } /// 위치 권한 허용 여부를 리턴 return checkedPermission == LocationPermission.always || checkedPermission == LocationPermission.whileInUse; } 2. initState() 에서 checkPermission() 과 addSubscription() 함수를 차례로 실행 ( .then() 메소드 활용) @override void initState() { super.initState(); checkPermission().then((permitted) { if (permitted) addSubscription(); }); } /// addSubscriptsion 함수 void addSubscription() { /// 리스너 함수: 출근체크 가능 여부 확인하기 Geolocator.getPositionStream().listen((eventPosition) { // 목적지 위치 var start = defaultLatLng; // 현재 위치 var end = LatLng(eventPosition.latitude, eventPosition.longitude); /// 거리 구하기 var distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); /// 거리가 `boundary` 내부에 들어오는지 확인 setState(() => mayChoolCheck = distance <= boundary); }); } 3. 위젯 재빌드 시 FutureBuilder 의 future 함수 재호출을 방지하기 위해 비동기 결과를 미리 필드로 빼놓기 ChatGPT는 이를 'Cashing Future' 라고 부른다고 함. (이 코드 부분에 중요한 로직이 하나 빠져서 방금 재수정했습니다.) /// 권한 확인 여부 리턴 값 late final Future<bool> permissionFuture; @override void initState() { super.initState(); /// checkPermission()의 결과를 값으로 저장 permissionFuture = checkPermission().then((permitted) { if (permitted) addSubscription(); return permitted; }); } /// 위젯 빌드 @override Widget build(BuildContext context) { /// AppBar: 제목 & 액션 버튼1 var appBar = AppBar(...); return Scaffold( backgroundColor: Colors.white, appBar: appBar, /// 권한 요청을 위한 빌더 body: FutureBuilder<bool>( future: permissionFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting || !snapshot.hasData) { return ColoredBox( color: Colors.blue, child: Center(child: CircularProgressIndicator()), ); } /// snapshot.data가 false 값인 경우는 사용자가 위치 권한 요청을 거부했을 때 if (snapshot.hasError || snapshot.data! == false) { return Center(child: Text('위치 권한을 허용해주세요.\n${snapshot.error}')); } /// 이하 위젯 생성 코드 ... }, ), ); } 이렇게 했을 때 앱 삭제 후 다시 빌드 했을 때, 그리고 재시작 했을 때도 정상적으로 잘 작동했습니다. 코드가 많이 훼손된 느낌도 들긴 하지만.. 나름대로 공부가 돼서 기분은 좋네요. 주저리주저리 쓰느라 정신 없었는데.. 잘 이해가 안 되거나 하고 싶은 피드백이 있다면 꼭 말씀해주세요! 아무쪼록 끝까지 읽어주셔서 감사합니다.

  • flutter
  • 클론코딩
  • geolocator
  • googlemaps
Ryu 댓글 1 좋아요 0 조회수 76

게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 생성 로직에서 만약 오류 발생시에 db는 롤백이 되는데 만약 redis에 저장된 게시글수가 이미 증가됐다면 감소를 시켜야 하는데 어떻게 처리하는게 좋을까요

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
songso0412 댓글 2 좋아요 0 조회수 119

6-6. 장난꾸러기 질문 있습니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

package section06_Sorting_Searching.no06_fail; import java.util.*; public class Main { public int[] solution(int n, int[] arr) { int [] answer = new int[2]; for (int i = 0; i < n-1; i++) { if (arr[i] > arr[i+1] && answer[0] == 0) { // 첫번째 바뀐 지점 answer[0] = i+1; } else if (arr[i] > arr[i+1] && answer[0] != 0) { // 두번째 바뀐 지점 answer[1] = i+2; break; } if (i == n-2) answer[1] = answer[0] + 1; // 서로 인접한 상태에서 바꼈을때 } return answer; } public static void main(String[] args) { Main m = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } for (int x : m.solution(n, arr)) System.out.print(x + " "); } } 코드를 위와 같이 작성했는데 틀렸다고만 나와서 왜 틀렸는지 아무리 생각해봐도 잘 모르겠어서 질문합니다.

  • java
  • 코딩-테스트
커디널스 댓글 1 좋아요 0 조회수 66

강의오류문의

해결됨

[JSP부터 스프링부트까지]포기없는 SpringBoot로 가는길

8. DB에 요청하여 데이터 update와 delete하기 이강좌가 런닝타임이 1시간이 넘는다라 표기됬음에도16분정도 시청하면 화면이 검게 변하면서 재생이 검은화면만 계속나오는데 강좌오류인가요? 아니면 표기상 미스가 난건가요??? 내용상 뒷부분이 끊겼는지 궁금해지네요

  • java
  • jsp
  • tdd
  • spring-boot
  • jpa
pcdo.omco 댓글 2 좋아요 0 조회수 77

강의 자료를 제공해주실 수는 없을까요?

미해결

스프링 부트와 리액트로 구현하는 보안 JWT 로그인

동영상 화면만 보면서 강의 자료를 확인하기에는 제가 원하는 부분을 실시간으로 확인하기가 어려운 점도 있고, 이후 복습하기도 어렵습니다. 강의 자료를 제공해주신다면 학습 하는 데에 시간을 많이 아낄 수 있을 것 같습니다.

  • react
  • java
  • aws
  • spring-boot
  • spring-security
댓글 2 좋아요 0 조회수 161

수강 기간 연장 신청 요청드립니다.

해결됨

Flutter 앱 개발 기초

기초 와 실전을 같이 듣고 있습니다. 한번 더 듣고 싶어서 기간 연장을 요청드립니다.

  • flutter
썬슈 댓글 2 좋아요 1 조회수 79

수강기간 연장 부탁드립니다.

해결됨

Flutter 앱 개발 기초

오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 🙂 수강기간 연장 부탁드립니다.

  • flutter
devyeon22 댓글 2 좋아요 1 조회수 87

수강기간 연장 부탁드립니다.

해결됨

Flutter 앱 개발 기초

오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 🙂 수강기간 연장 부탁드립니다.

  • flutter
devyeon22 댓글 2 좋아요 1 조회수 88

강의자료 다운로드시 발생하는 오류

해결됨

[Live 챌린지] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)

강의자료 다운로드시 위의 메시지로 다운이 되질 않습니다.

  • react
  • next.js
  • cursor
  • 프롬프트엔지니어링
  • 바이브코딩
임형석 댓글 2 좋아요 0 조회수 133

인기 태그

인프런 TOP Writers

주간 인기글