묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
minSdk 입력 방법이 바뀐걸까요?
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.byjun0302.flutter_blogweb_app" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutterVersionCode.toInteger() versionName = flutterVersionName }제 build.gradle 의 defaultConfig 에는 minSdk 적는 부분이 이렇게 나와있는데 뭔가 바뀐 것 같아 질문드립니다
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
findById, findAll 테스트 질
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]serviceImpl 테스트코드를 짜다가 궁금한 점이 생겨서 질문 남깁니다 !객체를 save메서드로 저장하고findById로 조회한 객체와 findAll로 조회한 리스트에서 .get(0)을 한 객체는 왜 주소값이 다른가요 ??.equals()로 코드를 짰는데 코드자체가 잘못된걸까요 ??객체만 같은걸 주고 주소는 다르게 반환되나요 ..??객체가 같으면 주소도 같은걸로 알고있었는데 헷갈립니다 ㅜㅜ!
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
강의 다 듣고 수료증 받을 수 있죠?
강의 다 들으면 수료증 받을 수 있죠?제출해야되서요..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
DB에서 데이터가 삭제되지 않습니다.
안녕하세요 강사님. 강사님의 강의를 들으면서 혼자 프로젝트를 진행 중인데 혹시 이런 에러상황도 있을 수 있는지 여쭤보고 싶어서 질문남깁니다. 웹 사이트에서 특정 데이터 값을 삭제를 진행했고, 서버에서도 삭제가 잘 되었다는 로그와 함께 에러없이 삭제 완료되었는데, DB에서 그 값을 검색하면 그대로 남아있는 경우엔 어떻게 해결해야할까요? 삭제를 할때, 테이블의 PK값으로 해당 데이터를 삭제하는 것이 아니고 레코드의 PK말고 다른 값들을 찾아서 그 값이 있으면 데이터를 삭제하라고 로직을 짰거든요.그리고 처음에 기능을 완료했을땐, 잘 삭제가 되었는데 나중에 다시 테스트 진행하니 갑자기 DB에서 삭제가 되지않고 있습니다. // 권한 거부 확인 버튼 클릭 이벤트 핸들러 $(document).on('click', '#confirmRevokePermissionButton', function() { const selectedPermission = $('#permissionSelect').val(); const selectedUsers = $('.user-checkbox:checked').map(function() { return $(this).val(); }).get(); const projPK = $('#projectSettingForm').data('proj-pk'); if (selectedPermission && selectedUsers.length > 0) { $.ajax({ url: `/projMgmt/setting/${projPK}/revokePermission`, type: 'DELETE', data: JSON.stringify({ userPKs: selectedUsers, perPK: selectedPermission }), contentType: 'application/json', success: function(response) { Swal.fire({ icon: 'success', title: '권한 삭제 완료', text: '권한이 성공적으로 삭제되었습니다.', confirmButtonText: '확인' }).then((result) => { if (result.isConfirmed) { loadSetting(projPK); $('#permissionModal').modal('hide'); } }); }, error: function(xhr, status, error) { let errorMessage = '권한 삭제 중 오류가 발생했습니다.<br>'; if (xhr.responseText) { errorMessage += xhr.responseText; } Swal.fire({ icon: 'error', title: '권한 삭제 실패', html: errorMessage, confirmButtonText: '확인' }); } }); } else { Swal.fire({ icon: 'warning', title: '선택 없음', text: '권한을 선택해주세요.', confirmButtonText: '확인' }); } });이렇게 서버로 코드를 보내고 있고,@DeleteMapping("/setting/{projPK}/revokePermission") @ResponseBody public ResponseEntity<String> revokePermissions(@PathVariable Long projPK, @RequestBody Map<String, Object> requestBody) { try { List<Long> userPKs = ((List<?>) requestBody.get("userPKs")).stream() .map(Object::toString) .map(Long::valueOf) .toList(); Long perPK = Long.valueOf(requestBody.get("perPK").toString()); for (Long userPK : userPKs) { log.info("revokePermission projPK: {}, userPK: {}, perPK: {}", projPK, userPK, perPK); userPermissionService.revokePermission(projPK, userPK, perPK); } return ResponseEntity.ok("권한 거부 완료"); } catch (IllegalStateException e) { return ResponseEntity.status(HttpStatus.CONFLICT).body(e.getMessage()); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("권한 거부 중 오류가 발생했습니다: " + e.getMessage()); } }서버에서 값을 받으면@Override @Transactional public void revokePermission(Long userPK, Long projPK, Long perPK) { List<UserPermission> userPermissions = userPermissionRepository.findByUser_UserPKAndProject_ProjPKAndPermission_PerPK(userPK, projPK, perPK); if (userPermissions.isEmpty()) { throw new IllegalStateException("해당 사용자는 부여된 권한이 없습니다."); } userPermissionRepository.deleteAll(userPermissions); log.info("Deleted permissions for userPK: {}, projPK: {}, perPK: {}", userPK, projPK, perPK); }보내진 값을 확인하고 값이 있으면 그 값을 삭제하고 값이 없으면 에러 메시지를 발송되게 해놨습니다. 추가로 작성하자면, 체크된 사용자를 권한삭제 버튼을 클릭했을 때권한선택창이 뜨고 수정 권한 삭제를 클릭하면, 완료되었다는 알림창이 뜨고 서버쪽에서는이렇게 로그가 발송되지만, DB에 찾아보면 여전히 값이 남아있는 것이 확인이 됩니다.
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
윈10 docker-server 문제로 실행 안될경우 참고.
실행시 마지막에 ...access permission. 에러시 아래 참고※ 윈도우 10022포트 확인하여 아래 적용 후 1번 시작- 10022포트 막혀있는지 확인: netsh interface ipv4 show excludedportrange protocol=tcp- winnat 정지: net stop winnat- 10022포트 허용: netsh int ipv4 add excludedportrange protocol=tcp startport=10022 numberofports=1- winnat 시작: net start winnat
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
데이터베이스 생성 Resources 폴더를 써도 될까요?
현재 강의를 듣고나서 이를 바탕으로 저만의 시스템을 만들어보려고 합니다.강의 스킬시스템윈도우 영상에서 AssetDatabase.CreateFolder("Assets/Resources", "Database");와 같이 Resources 폴더를 생성하고 그 안에 SO를 차곡차곡 넣어주는데, 제가 어드레서블을 사용할 예정이라 Resources 폴더를 만들지 않고 필요한 리소스들을 어드레서블을 통해 관리할려고 했습니다.그런데, 이 강의에서 보면 리소스폴더에 SO 파일만 넣어주니깐 용량이 거의 있지도 않은 수준이던데 이렇게 강의처럼 에디터에서 생성한 SO만 들어간다면 리소스폴더를 사용해도 무방할까요? 혹은 애초에 굳이 리소스 폴더가 필요한지도 궁금합니다. 강의에선 특별히 Resources.Load 함수를 사용하지 않더라구요.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
MSA - 각 마이크로 서비스마다 별도의 DB사용 질문
#질문 배경#user-service , catalog-service , order-service 까지 실습을 하고 확인해보니 아래 사진들과 같이 각 서비스마다 다른 DB를 사용하는 것을 알게되었습니다. 마이크로 서비스들을 공통적으로 yml 파일에다 DB명을msauser 라고 명명해 헷갈렸지만 말이죠.#질문#: 강의내용을 들어보고 생각해봤는데 실제로 마이크로 서비스를 배포할때 mysql같은 RDB를 각 마이크로 서비스들(3개라고 가정)이 사용한다고 가정하면 각 마이크로 서비스들이 사용할 DB 3개를 만들어줘야 한다고 이해하고 있습니다. 맞나요? (+ 다른 DB지만 메시징큐로 각 서비스들끼리 통신) 그런데 시스템에 DB의 양이 적다면 DB 1개만 만들고 각 마이크로 서비스들이 하나의 DB를 접근하게 구현하기도 하나요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장 부탁드립니다
안녕하세요!혹시 강의 기한 연장 부탁드려도 될까요?바빠서 실전강의를 다 듣지 못하고 시험을 치뤘다가 불합격이 나서요ㅠ
-
해결됨Flutter 앱 개발 실전
디자인 시스템은 어떻게 구현을 해서 개발을 해야할까요?
현재 강의를 보면서 강사님의 코드 스타일을 넘어서 디자인 시스템도 따라하고 싶다는 생각이 들었는데 강사님은 디자인 시스템을 어떻게 구현하시고 계신가요? 어떤 플러그인을 사용해서 디자인 시스템을 구현하고 자신만의 방법이 있는 지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HellospringApplication을 실행하고, 중지 했을때 에러가 나옵니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 초반에 HellospringApplication의 main 을 실행했을떄 다른거는 다 잘나오는데, stop을 했을경우 위와같이 에러가 나옵니다ㅠㅜ 혹시 그냥 중지해서 나오는걸까요? 아니면 어떤 부분이 잘못된건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/841da1ae2ec74165b99aa019fa32659e예제 1 출력 마지막 단에 공백이 같이 출력되는 거 때문에 틀리는 거 같습니다. 그런데 왜 공백이 함께 출력되는지 이유를 모르겠습니다. 그리고 코드에서 수정해 주실만 한 사항 있으시면 알려주세요.
-
미해결홍정모의 따라하며 배우는 C언어
메뉴가 두 개씩 떠요
#define CRTSECURE_NO_WARNINGS#include <stdio.h>int main(){ int n, i; char c; while (1) { printf("Enter the leter of your choice: \n"); printf("a. avengers\tb. beep\n"); printf("c. count\tq. quit\n"); scanf("%c", &c); if (c == 'a') printf("Avengers assemble!\n"); else if (c == 'b') printf("\a"); else if (c == 'c') { printf("Enter an integer: "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("%d\n", i); } } else if (c == 'q') break; } return 0;}
-
미해결면접과 취업을 부르는 '퍼블리셔 개인 포트폴리오 홈페이지' 제작
웹 호스팅 후 문제
안녕하세요 선생님카페24로 웹 호스팅을 완료했는데 문제가 생겨 글 남깁니다.제 포트폴리오에 scrolla.js를 적용했는데요 비주얼 스튜디오 라이브 서버에서는 정상 작동되는데cafe24로 호스팅한 사이트에서는 작동이 안돼요라이브 서버에서는 정상적으로 작동하는데 웹 호스팅 했을 때 작동이 안되는 경우도 있나요?있다면 어떤 경우인지 알 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4949 반례부탁드립니다.(질문을 잘못하여 재질문입니다.)
우선 제 로직은 // stk이 비어있는 경우 // ch가 열린 괄호인 경우 // push(ch); // ch가 닫힌 괄호인 경우 // push(ch); break; // stk이 비어있지 않은 경우 // ch가 열린 괄호인 경우 // top()이 닫힌 괄호인 경우 && 형태가 다름 // top()이 닫힌 괄호인 경우 && 형태가 같음 // top()이 열린 괄호 && 형태가 다름 // top()이 열린 괄호 && 형태가 같음 // ==> 위의 4경우 모두 push(ch); // ch가 닫힌 괄호인 경우 // top()이 닫힌 괄호인 경우 && 형태가 다름 // top()이 닫힌 괄호인 경우 && 형태가 같음 // ==> 위의 2경우 모두 push(ch); // top()이 열린 괄호인 경우 // 형태가 다른 경우 // break; // 형태가 같은 경우 // pop(); // stk이 비어있는 경우 // yes // stk이 비어있지 않는 경우 // no입니다.#include <bits/stdc++.h> using namespace std; int main(){ string input; getline(cin,input); string ret; while(input!="."){ stack<char> stk; for(int i=0;i<input.size();i++){ char ch=input.c_str()[i]; if(ch!='('&&ch!=')'&&ch!='['&&ch!=']') continue; // stk이 비어있는 경우 if(stk.empty()){ // ch가 열린 괄호인 경우 if(ch=='('||ch=='['){ // push(ch); stk.push(ch); } // ch가 닫힌 괄호인 경우 else{ // push(ch); break; stk.push(ch); break; } } // stk이 비어있지 않은 경우 else{ // ch가 열린 괄호인 경우 if(ch=='('||ch=='['){ // top()이 닫힌 괄호인 경우 && 형태가 다름 // top()이 닫힌 괄호인 경우 && 형태가 같음 // top()이 열린 괄호 && 형태가 다름 // top()이 열린 괄호 && 형태가 같음 // ==> 위의 4경우 모두 push(ch); stk.push(ch); } // ch가 닫힌 괄호인 경우 else{ // top()이 닫힌 괄호인 경우 && 형태가 다름 // top()이 닫힌 괄호인 경우 && 형태가 같음 // ==> 위의 2경우 모두 push(ch); if(stk.top()==')'||stk.top()==']'){ stk.push(ch); } // top()이 열린 괄호인 경우 else{ // 형태가 다른 경우 if(stk.top()=='('&&ch==']'){ // break; break; } else{ // 형태가 같은 경우 // pop(); stk.pop(); } } } } } // stk이 비어있는 경우 if(stk.empty()){ // yes ret+="yes\n"; } // stk이 비어있지 않는 경우 else{ // no ret+="no\n"; } getline(cin,input); } printf("%s",ret.c_str()); return 0; }거의 대부분의 반례를 넣어도 통과가 됩니다. 어디서 잘못되었나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
새로운 switch문 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]새로운 switch 문을 작성 했는데 오류가 나네요switch 문 전체가 빨간줄로 에러가 뜨는데 이유좀 알려주세요package reEx1; import java.util.Scanner; public class Switch_01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("등급을 입력하세요:"); int grade = scanner.nextInt(); int coupon = switch (grade) { case 1 -> 1000; case 2 -> 2000; case 3 -> 3000; default -> 500; }; } }
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
@Bindable VS @Environment + @Bindable
안녕하세요. 강의 잘 듣고 있습니다.첫번째 질문.다름이 아니라, 처음에 회원가입 기능을 구현할 때, ViewModel을 @Observable을 통해 관찰 가능한 상태로 두고, ViewModel을 다루는 가장 상위 View인 ContentView에서 @State로 선언하는 것까지는 이해가 됩니다.ContentView의 하위 뷰들 중에서,로그인과 관련한 뷰는Login - EnterEmail - EnterPassword - EnterName - EnterUserName - Complete인데,강사님께서 코드로 작성해주신 간접적으로 접근하는 방법 말고, @Environment(SignupViewModel.self) var signupViewModel var body: some View { @Bindable var signupViewModel = signupViewModel 처음 설명해주신 직접적인 접근 방식을 활용했습니다.@Bindable var signupViewModel: SignupViewModel var body: some View{와 같이, ViewModel에 read-write가 가능하기 위해 @Bindable을 사용한다는 사실은 알고 있습니다.하지만 문제는 아래와 같이 입력한 결과에 대해서 출력도 잘 하는데, @Bindable을 적용하였을 때, 마지막 CompleteView에서 아래의 완료 버튼을 눌렀을 때 MainTabView으로 넘어가지 않은 문제가 생겼습니다.기존Auth.auth().currentUser 을 사용했을 때, swiftUI에서 변화를 감지 못하기 때문에, 알려주신대로 ViewModel 내부에서 var currentUserSession: FirebaseAuth.User? 프로퍼티를 만들어 했는데.. 왜 이러한 문제점이 생기는걸까요?if signupViewModel.currentUserSession != nil{ MainTabView() } else { LoginView() .environment(signupViewModel) }물론, 강사님이 알려주신 방법대로 하면 잘 넘어갑니다 ^^.두 번째 질문간접적인 방법 .environment를 사용했을 때, 오류가 떠서 CANVAS를 끄고 작업을 하셨는데 오류를 없앨수 있는 방법이 있을까요?1) 최상단 InstagramCloneApp에 ViewModel을 적용?2) environment로 설정되는 모든 뷰의 #Preview에 .enivronment() 적용?긴 글 읽어주셔서 감사합니다 😃 답변 기다리겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 사용법 질문드립니다.
강의 내용하고 교안이 내용이 겹치지 않은 것 같은데 혹시 강의들으면서 교안을 보는게 아니라교안은 따로 공부하고 강의도 따로 보는건가요?강의는 블로그를 보시면서 하시는 것 같아서 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 메서드 타입 추론
[질문 내용]제네릭 메서드 편에서, 제네릭 메서드의 타입 추론을 활용하면 메서드 호출 전에 제네릭 타입을 알려주지 않아도 컴파일 오류가 발생하지 않는 것을 학습했습니다.Q. 실무에서도 제네릭 타입 추론을 믿고 타입을 작성하지 않는 것이 좋은 코드 작성 습관인가요?저는 앞의 변수 선언의 자료형에서 알 수 있기에 작성하지 않아도 괜찮다고 생각했습니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
java언어 기출문제의 변형 질문드립니다
동영상은 17분 30초쯤 해당됩니다.여기서class X에method2()를 하면 본인 classX가 아니라 classY의 method2()로 간다고 하셨는데그럼 만약 classX에 metho2()가 this.method2()로 바뀌면 classX의 method2()로 가는 건가요?감사합니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
9분 12초 내용입니다.
코드 시작할때 부모의 car을 먼저 부르고 그다음 자식것을 호출하는것은 잘 알겠습니다.만약에 스타트 엔진이라는 메서드가 자식에게도 있었다면오버라이딩이 우선, 재정의된 자식것이 출력 -> 다음코드진행위의 car처럼 부모것을 부르고, 자식것을 출력 -> 출력 (이게 성립되려면 스테틱이 붙어서 하이딩이 되어야 하는지..?)답변 요청드립니다!