묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실무에 바로 적용하는 AWS 배포
2.6 Auto Scaling 실습 질문
안녕하세요~2.6강 Auto Scaling 실습에서 만든 launch template는 직전 실습에 사용했던 Nginx 웹서비스가 동작하던 EC2랑은 별개의 인스턴스로 동작하는 건가요?launch template에 웹서비스 없이 그냥 시간에 맞춰서 Scaling-Out 되는 확인만 하는것이 맞는지요?만약 처음 Nginx 웹서버를 설치한 EC2인스턴스에 Auto Scaling을 적용한다면 어떻게 해야하는 건가요?확인 부탁드립니다.감사합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
23년 3회 쿼리문제 질문입니다!
12:43에서 나온 쿼리 문제의 답 4, 3, 1을 꼭 세로로 나열해야 되나요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
CertificationServiceTest에서 MailSender 인터페이스가 아닌 FakeMailSender를 이용하는 것
현재 CertificationServiceTest를 할 때 MailSender를 주입받는 것이 아닌 FakeMailSender를 주입받아서 테스트를 진행하는데MailSender를 만든 이유가 의존성을 역전시키기 위해서 만든 것인데 FakeMailSender를 사용하게 되면 의존성 역전 원칙이 적용된 것이 아니지 않나요???FakeMailSender는 mock으로 사용하고 있지만 구현체이니까 MailSender를 사용해야 되는 것이 아닌가요??그냥 테스트 목적으로 필드 값들이 잘 전달되는지 확인하기 위해서 사용하기 때문에 상관이 없는 건지 궁금합니다. MailSender 인터페이스를 이용한다면 검증 부분에서 다운 캐스팅을 해줘야 하기 때문에 사용하지 않은 건가요???
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
안녕하세요 private메소드에 대해서 질문 있습니다.
제가 헷갈려서 질문드려요!private 메소드를 만들게 된다면 무언가 책임이 이상하거나 설계가 잘못되었다는 신호로 알고 있는데요 private static void checkIfGameIsOver() { boolean isAllOpened = isAllCellOpened(); if (isAllOpened) { gameStatus = 1; }}만약 이런 메서드를 테스트 한다고 하면 어떻게 해야하는건가요?! private메소드를 현업에서도 사용하시는지 궁금합니다.그리고 제가 어디를 잘못알고 있는지도 궁금해요!
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
7-3 python을 위한 도커 강의에서 질문드립니다.
vscode에 select kernel을 누르면 아무 kernel도 뜨지 않습니다. 강의에는 Python Environments... 이 뜹니다.
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
이번 피그마 업테이트로 인해 인터페이스가 달라진 듯 합니다.
특히, 컨포넌트 세부 설정 부분이 달라진 것과 상단에 있던 버튼들이 하단으로 나오면서, 바뀐 부분이 있는데요. 이 부분에 대한 업데이트는 언제 진행이 될 지 여쭤봅니다.
-
해결됨Windows 시스템 프로그래밍 - 기본
세마포어 예제중 형변환에 대한 질문
ThreadSemaphore의 매개변수는 LPVOID인데이것은 void*를 의미 한다고 알고 있습니다. 어떻게 int로 변환이 가능한 것인가요?? 추측은 데이터 값이 가지고 있는 비트 그 자체를 형식만 주소로 변경된 데이터 값을 다루는 것 같은데 맞게 이해 했는지 모르겠습니다!
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
kaggle gpu images 설치시 Error가 발생합니다.
kaggle gpu images 설치시 Error가 발생합니다. docker login -u username으로 login 후에도 동일하게 안됩니다.Error response from daemon: pull access denied for kaggle-gpu-images, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
compareAndSet()에 대해 질문 있습니다.
private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; do { getValue = atomicInteger.get(); log("getValue: " + getValue); result = atomicInteger.compareAndSet(getValue, getValue + 1); log("result: " + result); } while (!result); return getValue + 1; }getValue = atomicInteger.get(); 에서 조회한 값이 compareAndSet() 연산을 할때 바뀌지 않아야 바꿀려고 한 값으로 바꾸고 true를 반환한다고 이해했습니다.궁금한 부분은 getValue = atomicInteger.get(); 여기서 값을 조회하거나 중간에 스레드가 바꾼 값을 조회 한다는걸 compareAndSet()에서 구분을 할 수 있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 질문있습니다 :)
안녕하세요 선생님 🙂 펜윅트리로 넘어가기 전에 그동안 풀어봤던 문제들을 전부 새롭게 풀어보고 넘어가는 것이 맞다고 판단하여 풀어보고 있습니다 ㅎㅎ 아래 링크의 25번째 줄의for (int j = temp1; j <= temp2; j++)가for (int j = temp1; j < temp2; j++)로 바뀌어야 하는 이유를 잘 모르겠습니다. 도식화해봤는데도 마지막 인덱스가 왜 빠져야 하는지 모르겠네요 ㅠㅠhttp://boj.kr/b919bf16cf104e609582bd04735b2f6a
-
미해결김영한의 실전 자바 - 중급 1편
[ PDF 수업 자료 오타 ] 예외 계층2 - 활용 수업자료 오타
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 : 김영한의 실전 자바 - 중급 1편목차 : 예외 계층2 - 활용PDF : 10. 예외 처리2 - 실습.pdf오타 위치 : 23Page ( 예외 계층2 - 활용 : MainV3 -코드 변경 )내용 : throws 되는 예외는 NetworkClientExceptionV2 이 아닌 NetworkClientExceptionV3 으로 제공되어야 합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
타임라인함수를 이용한 캐릭터 강제이동
텔레포트를 구현할 때 네트워크 동기화 문제 때문에 CharacterMovementComponent를 확장하는 방식으로 구현해야 한다고 했는데 그러면 타임라인 함수를 사용하여 캐릭터를 특정 위치로 서서히 이동 시키는 기능도 CharacterMovementComponent를 확장하는 방식으로 만들어야 할까요?
-
미해결김영한의 실전 자바 - 기본편
매개변수로 전달 되는 방식
[질문 내용]soundAnimal , flyAnimal 메서드 같은 경우 bird가 매개변수로 전달될 때 정의된 매개변수 타입에 따라 자동으로 업캐스팅이 된다고 이해하는 것이 맞을까요?
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. package generic.ex4; // 클래스 옆에 <> 넣으면 제네릭 타입 public class GenericMethod { public static Object objMethod(Object obj) { System.out.println("Object print: " + obj); return obj; } // 메서드 안에 <> 넣으면 제네릭 메서드 public static <T> T genericMethod(T t) { System.out.println("Generic print: " + t); return t; } public static <T extends Number> T numberMethod(T t) { System.out.println("bound print: " + t); return t; } }여기 public static <T> T genericMethod(T t) 코드를 보면 static일 때 사용이 가능한데 강의 자료에서 여기 static일 땐 사용이 불가능하다는 말이 이해가 잘 안 갑니다. 둘의 차이점이 무엇인가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
CPU와 스레드간 상호작용에 대해 질문 있습니다.
CPU 코어와 메모리가 동작하는 이미지가 자주 나왔는데요헷갈리는 부분이 있어서 질문 합니다.스레드, 프로세스, 메모리 등 여러 개념들이 존재하지만 CPU와 직접적으로 통신(?) 하는 주체는 스레드라고 이해를 해도 될까요?1번이 맞다면 스레드는 본인이 실행한 코드 한줄 한줄을 CPU로 보내고 CPU는 해당 코드 한줄을 해석하고 그에 따라서 프로세스에 할당된 메모리 영역(힙, 데이터, 코드)이나 스레드에 할당된 메모리 영역(스택)에 접근해서 데이터를 읽거나 저장한다 라고 이해를 해도 될까요?Java의 thread는 OS의 kernel thread와 1:1로 mapping 되는걸로 알고 있는데 그러면 CPU는 kernel thread와 통신 한다고 이해하면 될까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
이게 데이터베이스 강의인걸로아는데
자바 고급편끝나고 데이터베이스 강의를 따로 내신다고하셔서요 무슨차이가있나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
문자열 슬라이싱
Step 뛰어 넘는다고 알려주셨는데 첫 문자도 출력하나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Retrieving array size but no array was provided 오류가 발생합니다.
property.arraySize이 문제인것 같은데private void DrawSkillDatas(){// Skill의 Data가 아무것도 존재하지 않으면 1개를 자동적으로 만들어줌if (skillDatasProperty.arraySize == 0){// 배열 길이를 늘려서 새로운 Element를 생성skillDatasProperty.arraySize++;// 추가한 Data의 Level을 1로 설정skillDatasProperty.GetArrayElementAtIndex(0).FindPropertyRelative("level").intValue = 1;}if (!DrawFoldoutTitle("Data"))return;EditorGUILayout.PropertyField(isAllowLevelExceedDatasProperty);// Level 상한 제한이 없다면 MaxLevel을 그대로 그려주고,// 상한 제한이 있다면 MaxLevel을 상한으로 고정 시키는 작업을 함if (isAllowLevelExceedDatasProperty.boolValue)EditorGUILayout.PropertyField(maxLevelProperty);else{// Property를 수정하지 못하게 GUI Enable의 false로 바꿈GUI.enabled = false;var lastIndex = skillDatasProperty.arraySize - 1;// 마지막 SkillData(= 가장 높은 Level의 Data)를 가져옴var lastSkillData = skillDatasProperty.GetArrayElementAtIndex(lastIndex);// maxLevel을 마지막 Data의 Level로 고정maxLevelProperty.intValue = lastSkillData.FindPropertyRelative("level").intValue;// maxLevel Property를 그려줌EditorGUILayout.PropertyField(maxLevelProperty);GUI.enabled = true;}EditorGUILayout.PropertyField(defaultLevelProperty); for (int i = 0; i < skillDatasProperty.arraySize; i++){var property = skillDatasProperty.GetArrayElementAtIndex(i);var isUseCastProperty = property.FindPropertyRelative("isUseCast");var isUseConcentrateProperty = property.FindPropertyRelative("isUseConcentration");var chargeDurationProperty = property.FindPropertyRelative("chargeDuration");var chargeTimeProperty = property.FindPropertyRelative("chargeTime");var needChargeTimeToUseProperty = property.FindPropertyRelative("needLeastChargeTime");var perfectDamageChargeTimeProperty = property.FindPropertyRelative("perfectDamageChargeTime");var perfectDamageChargeTimeDetectionProperty = property.FindPropertyRelative("perfectDamageTimeDetection");EditorGUILayout.BeginVertical("HelpBox");{// Data의 Level과 Data 삭제를 위한 X Button을 그려주는 Foldout Title을 그려줌// 단, 첫번째 Data(= index 0) 지우면 안되기 때문에 X Button을 그려주지 않음// X Button을 눌러서 Data가 지워지면 true를 return함if (DrawRemovableLevelFoldout(skillDatasProperty, property, i, i != 0)){// Data가 삭제되었으며 더 이상 GUI를 그리지 않고 바로 빠져나감// 다음 Frame에 처음부터 다시 그리기 위함EditorGUILayout.EndVertical();break;}EditorGUI.indentLevel += 1;if (property.isExpanded){// SkillData Property 내부로 들어감 -> Property == level field;property.NextVisible(true);DrawAutoSortLevelProperty(skillDatasProperty, property, i, i != 0);// Level Upfor (int j = 0; j < 2; j++){property.NextVisible(false);EditorGUILayout.PropertyField(property);}// PrecedingAction// Toggle Type일 때는 PrecedingAction을 사용하지 않을 것이므로,// Instant Type일 때만 PrecedingAction 변수를 보여줌property.NextVisible(false);if (useTypeProperty.enumValueIndex == (int)SkillUseType.Instant)EditorGUILayout.PropertyField(property);// Action And Settingfor (int j = 0; j < 8; j++){// 다음 변수의 Property로 이동하면서 그려줌property.NextVisible(false);EditorGUILayout.PropertyField(property);}// Castproperty.NextVisible(false);if (IsDrawPropertyAll && !isUseConcentrateProperty.boolValue)EditorGUILayout.PropertyField(property);elseproperty.boolValue = false;property.NextVisible(false);if (isUseCastProperty.boolValue)EditorGUILayout.PropertyField(property);// Chargeproperty.NextVisible(false);if (IsDrawPropertyAll && !isUseCastProperty.boolValue)EditorGUILayout.PropertyField(property);for (int j = 0; j < 5; j++){property.NextVisible(false);if (isUseConcentrateProperty.boolValue)EditorGUILayout.PropertyField(property);}// 최대 chargeTime 값을 chargeDuration 값으로 제한chargeTimeProperty.floatValue = Mathf.Min(chargeTimeProperty.floatValue, chargeDurationProperty.floatValue);// 최대 needChargeTime 값을 chargeTime 값으로 제한needChargeTimeToUseProperty.floatValue = Mathf.Min(chargeTimeProperty.floatValue, needChargeTimeToUseProperty.floatValue);perfectDamageChargeTimeProperty.floatValue = Mathf.Clamp(perfectDamageChargeTimeProperty.floatValue,needChargeTimeToUseProperty.floatValue,chargeTimeProperty.floatValue);// Effectproperty.NextVisible(false);EditorGUILayout.PropertyField(property); //// EffectSelector의 level 변수를 effect의 최대 level 제한함for (int j = 0; j < property.arraySize; j++){var effectSelectorProperty = property.GetArrayElementAtIndex(j);// Selector의 level Property를 가져옴var levelProperty = effectSelectorProperty.FindPropertyRelative("level");// Selector가 가진 effect를 가져옴var effect = effectSelectorProperty.FindPropertyRelative("effect").objectReferenceValue as Effect;var maxLevel = effect != null ? effect.MaxLevel : 0;var minLevel = maxLevel == 0 ? 0 : 1;levelProperty.intValue = Mathf.Clamp(levelProperty.intValue, minLevel, maxLevel);}}파란색인 부분에서 계속 걸리는데 무슨 문제인지 모르겠습니다. 파란색 뒷부분은 너무 길어져서 잘랐습니다.skillDatasProperty를 가져오는거라 Skill의 skillDatas가[SerializeField]private SkillData[] skillDatas;배열인것도 확인을 하였지만if (property.isArray){int size = property.arraySize;Debug.Log("사이즈 :" + size);}else{Debug.LogError("이 속성은 배열 또는 리스트가 아닙니다.");}이걸로 확인하니 배열이 아니라고 오는데 어떻게 배열이 아니게 된건지 모르겠습니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
PDF 자료를 혹시 어디서 받아야 할까요?
제가 못 찾는건지 어디에 업로드 되어 있는지 몰라서요..대시보드 등 찾아봤는데 잘 모르겠어서요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
H2 DB에선 컬럼 순서를 임의로 바꿀 순 없겠죠...?
강의 영상에선 깔끔하게 DTYPE 먼저 나오고 ID 순서로 나오는데 실제 실습을 하면 뒤죽박죽이네요...