묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
_size - 2 질문
왜 _size - 2 를 조건문으로 놓나요 ? -2가 뭘 의미하는지 잘 모르겠어요 if (y == _size - 2) // 기존 끝 벽은 남겨둬야하니까 끝 까지 도달하면 continue { _tile[y][x + 1] = TileType::Empty; continue; } if (x == _size - 2) { _tile[y + 1][x] = TileType::Empty; continue; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Address를 분리하는 이유
@Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); // Best Practice }@Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수 입니다.") private String name; private String city; private String street; private String zipcode; }@GetMapping("/members/new") public String createForm(Model model) { model.addAttribute("memberForm", new MemberForm()); return "members/createMemberForm"; }@PostMapping("/members/new") public String create(@Valid MemberForm form, BindingResult result) { if (result.hasErrors()) { return "members/createMemberForm"; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/home"; } [1번째 코드블럭] Address를 따로 분리하면, [2번째 코드블럭] MemberForm을 만들어야만 하고, [3번째 코드블럭] createMemberForm.html 에 보낼 때 MemberForm객체를 보내어, [4번째 코드블럭]사용자에게 입력받은 정보를 다시 MemberForm에 담아 가져온 후, 값을 하나씩 꺼내어 Member객체에 담아 join 시키는데, 저의 관점에서는 이점이 보이지 않는다고 생각이 듭니다. [질문1]Address를 따로 객체로 만들어서 빼 둔 이유가 궁금합니다. [질문2]그렇게 따로 분리한데는 그에 따른 이득이 있을텐데, 그 경우도 궁금하구요.[질문3]주소정보(3개-city,street,zipcode)가 아닌 훨씬 많은 경우엔 더 편해지나요? 그런 예시가 딱 떠오르지가 않아서 혹시 실무에서의 예시가 있으시면 알려주세요.[질문4]추가적으로 계좌정보 (은행, 계좌번호, 예금주)를 입력받아 MEMBER를 만들 경우에 Address를 만든 것 처럼 동일하게 만들면 되나요?
-
미해결스프링 핵심 원리 - 기본편
자체 Test 중 싱글톤 확인 안되는 것 같습니다.
싱글톤과 Configuration이 무관하다는 글을 읽고 Test를 하던 중에 다음과 같이 짜봤습니다. (@Bean만 달려도 Singleton 보장이 된다) Test 클래스에 작성중입니다. interface Example { String getMsg(); } static class TestMessage { private String msg = "No Setter String"; public TestMessage(){ System.out.println("msg = " + msg); System.out.println(this); } public String getMsg() { return this.msg; } } static class ChildExample implements Example { private TestMessage testMessage; @Autowired public ChildExample(TestMessage testMessage) { this.testMessage = testMessage; } @Override public String getMsg() { return this.testMessage.getMsg(); } }이렇게 세팅을 한 후 다음과 같이 Configuration 클래스를 만들어 봤습니다.static class SingletonAndConfigurationAnnotationTest { @Bean public TestMessage testMessage() { return new TestMessage(); } @Bean public Example example() { return new ChildExample(new TestMessage()); } }그리고 다음과 같은 테스트 코드를 작성해봤습니다.@Test @DisplayName("안녕안녕") void testA() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonAndConfigurationAnnotationTest.class); TestMessage bean1 = ac.getBean(TestMessage.class); ChildExample bean2 = ac.getBean(ChildExample.class); Assertions.assertThat(bean1).isSameAs(bean2.testMessage); }저는 TestMessage 가 우선 싱글톤으로 관리가 되므로, ChildExample 에는 그 싱글톤 TestMessage 객체가 의존성 주입이 될 것이라고 생각을 했습니다. 그리고 Configuration Annotation의 유무 차이를 실험해보려 했는데 실험 해보기도 전에 저 테스트 코드가 Fail을 하네요.. 아무리 생각해도 왜 두 객체가 다른지 모르겠습니다. 싱글톤으로 관리가 되어서 두 TestMessage는 같아야 하지 않나요? 로그에서도 다른 모습이 확인됩니다. (Configuration 무관하다 하셨지만 혹시 몰라 달아봤는데도 fail이 뜹니다)11:34:02.853 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'testMessage' msg = You can't edit this com.example.basicprinciple.MyTest$TestMessage@5bf8fa12 11:34:02.858 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'example' msg = You can't edit this com.example.basicprinciple.MyTest$TestMessage@b2c5e07왜 둘이 다른지 도움을 주실 수 있으실까요?2. 또한 ComponentScan 에 관해서도 궁금한 점이 있습니다. @ComponentScan( basePackages = "com.example.basicprinciple" ) public class AutoAppConfig { } 강의에서 위와 같이 @ComponentScan을 설정해주셨습니다. 다만, 저런 방식이면 ComponentScan이 꼭 필요한가 싶어서 문의드립니다. 일반적으로 @controller, repository 등의 설정을 해놔도 다 Component로 이해를 하는데, 혹시 비즈니스 로직을 수행하는 함수들 외의 도움을 주는 Component들을 스캔하기 위함일까요? 3. Configuration 과 Singleton이 무관하다고 해주신 것 같습니다. 혹시 강의 중 설명해주신 CGLIB을 따로 형성해서 싱글톤 관리가 되게 해주는건 @Bean 인걸까요? 만약 그렇다면, @Bean 함수의 묶음을 CGLIB 클래스로 만드는걸까요? class XXCGLIB extends AppSprinfConfig{ // 내가 만든 Config의 자식 ... @Override @Bean public Member membeRepository(){ if(ApplicationContext has MemoryMemberRepository){ return MemoryMemberRepository from Current Bean Container }else{ build MemoryMemberRepository from My Class return MemoryMemberRepository } } }@Configuration 내부에 있는 클래스들이 다음과 같은 클래스로 바뀌어서 등록될 것으로 보인다고 강의안에서 설명해주셨는데, 저 묶음을 @Configuration으로 가져오는게 아니라면 @Bean들을 가지고 알아서 묶는건지 궁금합니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
MSSQL vs AWS
안녕하세요 루키스님!!이번에 게임서버를 기반으로 생존형 멀티게임을 만들게 됐는데요!어떤 데이터베이스를 사용할까를 고민하고 있습니다!! 루키스님에게 배운 MSSQL을 쓸까 아니면 AWS의 데이터베이스를 쓸까 고민이 됩니다!(RPG 처럼 많은 양의 정보가 들어가는 게임은 아니고 기본적인 유저의 내용만을 저장할 것 같아 난이도는 그렇게 높지 않을 것 같지만)나중에 큰 게임 회사에 가서 게임 개발/유지/보수를 맡게 될 때 어떤 DB를 쓰는 것이 저에게 더욱 도움이 될까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버 종료 시 오류
서버 종료시 Execution failed for task ':ServletApplication.main()'.> Build cancelled while executing task ':ServletApplication.main()' IntelliJ 무료 버전스프링 부트 버전: 2.7.6자바: 11JDK: 11 버전스프링 입문 강의 때 JDK 11 버전 다운 받았고 해당 플젝은 이와 같은 오류 메세지 없이 잘 정지됩니다 ㅠ질문 게시판에서 같은 질문을 찾아서 Junit4 코드도 추가해봤었는데 계속 같은 오류가 발생합니다.Gradle로 실행해서 발생하는 어쩔 수 없는 문제인가요..?
-
해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
패키지 생성 후 액티비티 추가했을 때 Manifest파일의 액티비티 경로 자동 변경
제가 auth패키지를 만들고 그 아래에 여러 Activity를 만들었는데 Manifest 파일의 액티비티 경로들이 1번처럼 자동으로 바뀌지 않아서 항상 2번처럼 고쳐야하는데 혹시 자동으로 바꿀 수 있는지 방법이 있을까 싶어 질문 드립니다!
-
미해결처음 시작하는 Infrastructure as Code: AWS & 테라폼
terraform apply 시
안녕하세요, 좋은 강의 감사드립니다. 다름아니라, 강의실습을 따라하던 중(11:51)강의에서는 별 다른 에러없이 import가 성공하나, 저는 에러가 떠서 문의드려요!s3.tf를 다시 생성하고,terraform apply 수행이미 만들어져있기때문에 생성 불가 에러메시지terraform import 시도 시, 강의와 달리 missing required/Unsupported argument라는 에러 발생 놓치고 있는 부분이 있다면 알려주시면 감사하겠습니다!
-
미해결ASP.NET core Blazor 디테일 강의 - 초급편
button click에 연결한 함수 실행시, 다른 태그에 연결한 동일 함수가 실행되는 이유.
<h5>@AddStr("1234")</h5><h6>@AddStr("5678")</h6><p>P 태그</p><span>SPAN 태그</span><button @onclick="@(e => AddStr("아멘"))">눌러보기</button> 상기와 같이 태그를 작성한 경우,실행 후 button을 클릭하면 h5, h6에 연결한 함수들 까지 같이 실행되어 Console에 찍힙니다. 그 이유를 모르겠네요. 설명 부탁드립니다.물론 함수는 아래와 같이 정의했습니다.private string AddStr(string p1) { string strget = p1 + " 대한민국 ^^"; Console.WriteLine(strget); return strget; }
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
로그인 관련 질문드립니다
강의에는 passport-local로 구현을 하셨는데jwt로 구현하려면 어떻게 해야하나요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
씬 관리 질문이 있습니다.
안녕하세요!로드맵 강의를 수강하고 현재 게임을 직접 만들고 있습니다.캐릭터를 선택창이나 로그인화면 아이템샵 메인로비 등이 있는 로비 화면을 현재 만들고 있는데요현재는 기능별로 Scene을 새로 계속 생성하여 만들고 있습니다.근데 UI 데모파일들을 몇개 보면 모두 한 씬에 레이아웃들을 만들어놓고 SetActive 함수로 UI를 제어하는 경우가 많았습니다.그래서 Scene을 계속 만드는 방식과 하나의 Scene에 레이아웃을 각각 만들어놓고 SetActive함수로 제어하는 방식 두 방식중에 어느 것이 더 효율적인가요? 각각에 장단점이 있을까요?실제로 현업에서는 어떤 방식을 주로 쓰는지도 궁금합니다!바쁘시겠지만 답변 부탁드리겠습니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
No message found under code 'greeting.message' for locale 'null'. 이랑 한글깨짐
진짜 수업이랑 똑같이 따라갔는데 { "timestamp": "2022-11-30T22:35:23.776+00:00", "message": "No message found under code 'greeting.message' for locale 'null'.", "details": "uri=/hello-world-internationalized" }처음엔 이렇게 오류가 뜨길래 구글링해서@Bean(name="messageSource") public ResourceBundleMessageSource bundleMessageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); return messageSource; } 이 빈 옵션을 추가하고 나니까 해결이 되었어요..리소스번들이 문제였던거같은데강의 영상에서는 properties파일들이알아서 리소스 번들로 묶이던데 저는 ide를 vscode로 써서 그런가 그렇게 되지가 않아서 이런 오류가 뜬건가요,,?혹시 위에 오류가 떴었던 이유를 알 수 있을까요,,? 이해가 안가서ㅠㅠ그런데 프랑스어랑 영어는 헤더에서 value바꾸니까 정상적으로 작동했는데 안녕하세요만 깨져서 저렇게 나오네요..한글이 다 저런가 싶어서 user예제에 아이디 1,2,3초기화 시켜둔 name을 한글로 바꿔봤는데 그건 또 안깨지고 잘 나오더라구요..
-
미해결빅데이터분석기사 실기대비 (R 활용)
출제예상문제풀이 1번 문제 질문입니다
df1 %>% filter(age >= 80) %>% select(crim) %>% summarize(avg=mean(crim))select(., crim)에서 다음과 같은 에러가 발생했습니다:사용되지 않습니다:사용되지 않은 인자 (crim)select부분에서 자꾸 오류가 나는 거 같은데 왜 그러는 걸까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
코드 자동 정렬
코드 자동 정렬 단축키(ctrl+alt+L)를 사용해도 MainLayout(title: '',children: [])=> MainLayout( title: '',children: []) 이런 방식으로 바뀌면 좋겠는데단축키를 눌러도 영상처럼 변형이 안됩니다.혹시 다른 option이 있는 건가요??
-
미해결홍정모의 따라하며 배우는 C언어 (부록)
17.12) access violation
#pragma once #include <stdbool.h> #define TSIZE 45 #define MAX_SIZE 4 // array size typedef struct element { char name[TSIZE]; } Item; typedef struct queue { int front; int rear; int n_items; Item items[MAX_SIZE]; } Queue; void Init_queue(Queue* pq); bool QueueIsFull(const Queue* pq); bool QueueIsEmpty(const Queue* pq); int QueueItemCount(const Queue* pq); bool Enqueue(Item item, Queue* pq); bool Dequeue(Item* pitem, Queue* pq); void EmptyQueue(Queue* pq); void TraverseQueue(Queue* pq); void print_item(Item item); #include "ArrayQueue.h" #include <stdio.h> #include <assert.h> void Init_queue(Queue* pq) { pq->front = 0; pq->rear = 0; pq->n_items = 0; } bool QueueIsFull(const Queue* pq) { return (pq->rear + 1) % MAX_SIZE == pq->front; } bool QueueIsEmpty(const Queue* pq) { return pq->front == pq->rear; } int QueueItemCount(const Queue* pq) { return pq->n_items; } bool Enqueue(Item item, Queue* pq) { if (QueueIsFull(pq)) { printf("Queue is Full.\n"); return false; } pq->rear = (pq->rear + 1) % MAX_SIZE; pq->items[pq->rear] = item; pq->n_items++; return true; } bool Dequeue(Item* pitem, Queue* pq) { if (QueueIsEmpty(pq)) { printf("Queue is Empty.\n"); return false; } pq->front = (pq->front + 1) % MAX_SIZE; *pitem = pq->items[pq->front]; pq->n_items--; return true; } void EmptyQueue(Queue* pq) { Init_queue(pq); } void TraverseQueue(Queue* pq) { for (int i = pq->front; i != pq->rear; i = (i + 1) % MAX_SIZE) print_item(pq->items[(i + 1) % MAX_SIZE]); } void print_item(Item item) { printf('%s ', item.name); } #include <stdio.h> #include <string.h> #include "ArrayQueue.h" Item get_item(const char* name); void print_queue(Queue* pq); int main() { Queue queue; Item temp; Init_queue(&queue); Enqueue(get_item("Jack"), &queue); print_queue(&queue); Enqueue(get_item("Henry"), &queue); print_queue(&queue); Enqueue(get_item("Stan"), &queue); print_queue(&queue); Enqueue(get_item("Butters"), &queue); // capacity 4/3 fail print_queue(&queue); if (Dequeue(&temp, &queue)) printf("Item from queue : %s\n", temp.name); print_queue(&queue); if (Dequeue(&temp, &queue)) printf("Item from queue : %s\n", temp.name); print_queue(&queue); if (Dequeue(&temp, &queue)) printf("Item from queue : %s\n", temp.name); print_queue(&queue); if (Dequeue(&temp, &queue)) printf("Item from queue : %s\n", temp.name); print_queue(&queue); printf("====== Circulation Test ======"); Init_queue(&queue); for (int i = 0; i < 10; ++i) { Enqueue(get_item("Hello"), &queue); print_queue(&queue); if (Dequeue(&temp, &queue)) printf("Item from queue : %s\n", temp.name); print_queue(&queue); } return 0; } Item get_item(char* name) { Item new_item; strcpy(new_item.name, name); return new_item; } void print_queue(Queue* pq) { printf("Front : %d, Rear : %d, Size %d\n", pq->front, pq->rear, pq->n_items); printf("Queue : "); if (QueueIsEmpty(pq)) printf("Empty"); else TraverseQueue(pq); printf("\n\n"); } 순서대로 헤더, 헤더함수파일, 메인파일 입니다 디버깅시, TraverseQueue함수 내의 print_item 함수가 실행되는 순간 access violation이 뜹니다access violation 전까지는 값들 제대로 다 연산이 되다가갑자기 print함수에서 저러니까 도저히 감이 안잡힙니다방법이 없어 도움을 구합니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이렇게 풀면 왜 안될까요?
안녕하세요 선생님. 문제를 풀다가 제 코드대로 풀면 왜 안 되는지 궁금해서 질문 드립니다.import java.util.Scanner; public class J2_10 { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int N = kb.nextInt(); int[][] arr = new int[N + 1][N + 1]; int cnt = 0; for (int i = 1; i < N; i++) { for (int j = 1; j < N; j++) { arr[i][j] = kb.nextInt(); } } for (int i = 1; i < N; i++) { for (int j = 1; j < N; j++) { boolean isBig = true; if (arr[i - 1][j] > arr[i][j]) isBig = false; else if (arr[i][j - 1] > arr[i][j]) isBig = false; else if (arr[i + 1][j] > arr[i][j]) isBig = false; else if (arr[i][j + 1] > arr[i][j]) isBig = false; if (isBig) cnt += 1; } } System.out.println(cnt); } }
-
미해결처음 만난 리액트(React)
출력 메시지 관련
정말 기초적인 질문일수도 있는데, 섭씨 온도를 아무리 올려봐도 출력되는 메시지가 '물이 끓지 않습니다'로 나옵니다.TemperatureInput.jsxconst scaleNames = { c: '섭씨', f: '화씨', } function TemperatureInput(props) { const handleChange = (event) => { props.onTemperatureChange(event.target.value); } return ( <fieldset> <legend> 온도를 입력해주세요 (단위 : {scaleNames[props.scale]}) : </legend> <input value = {props.temperature} onChange = {handleChange} /> </fieldset> ) } export default TemperatureInput;Calculator.jsximport React, {useState} from "react"; import TemperatureInput from "./TemperatureInput"; function BoilingVerdict(props) { if (props.celcius >= 100) { return <p>물이 끓습니다.</p> } return <p>물이 끓지 않습니다.</p> } function toCelsius(fahrenheit) { return ((fahrenheit - 32) * 5) / 9; } function toFahrenheit(celcius) { return (celcius * 9) / 5 + 32; } function tryConvert(temperature, convert) { const input = parseFloat(temperature); if(Number.isNaN(input)) { return ""; } const output = convert(input); const rounded = Math.round(output * 1000) / 1000; return rounded.toString(); } function Calculator(props) { const [temperature, setTemperature] = useState(""); const [scale, setScale] = useState("c"); const handleCelsiusChange = (temperature) => { setTemperature(temperature); setScale("c"); } const handleFahrenheitChange = (temperature) => { setTemperature(temperature); setScale("f"); } const celsius = scale === "f" ? tryConvert(temperature, toCelsius) : temperature; const fahrenheit = scale === "c" ? tryConvert(temperature, toFahrenheit) : temperature; return ( <div> <TemperatureInput scale = "c" temperature = {celsius} onTemperatureChange = {handleCelsiusChange} /> <TemperatureInput scale = "f" temperature = {fahrenheit} onTemperatureChange = {handleFahrenheitChange} /> <BoilingVerdict celsius = {parseFloat(celsius)} /> </div> ) } export default Calculator;어디서 잘못된걸까요? 개발자 도구에서 component를 확인해봐도 scale, temperature 값은 정확하게 들어가는 것 같습니다.
-
미해결스프링 핵심 원리 - 기본편
LogDemoService에 대해 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]항상 친절한 답변 감사드립니다.비슷한 질문이 있어서 확인해보고 생각해보았는데, LogDemoController에 있는 ObjectProvider.getObject()는 MyLogger빈을 생성하고LogDemoService에 있는 ObjectProvider.getObject()는스프링컨테이너에 이미 생성된 MyLogger빈을 반환한다고 하셨는데, 그 이유가 같은 http요청에 대해서는 http요청이 끝나기 전까지 동일한 request scope bean이 사용되기때문인가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
다른 라이브러리 적용 질문
안녕하세요 선생님. 달력 컴포넌트를 ant말고 react FullCalendar로 쓰고 싶어서 설치해서 적용하려고 하니까 자꾸 에러가 나서 질문 드립니다. ./node_modules/@fullcalendar/common/main.css Global CSS cannot be imported from within node_modules. Read more: https://err.sh/next.js/css-npm Location: node_modules\@fullcalendar\common\main.js 이런 에러가 떠서 단순히 fullcalendar 폴더의 위치를 node_modules바깥으로 빼서 import하면 되겠거니 했는데 그렇게 했더니 fullcalendar파일 설정에서 충돌한다고 뜨는게 많아서 이런 방법은 불가능할것 같고...어떻게 다른 라이브러리를 적용해야 할지 몰라서 질문 드립니다ㅠㅠ
-
미해결
컴포넌트 스캔(AutoAppConfigTest 오류)
핵심원리 - 기본편의 6.컴포넌트 스캔(컴포넌트 스캔과 의존관계 자동 주입시작하기)에서 AutoAppConfig를 생성하여 AutoAppConfigTest파일까지 만들어 실행하는 도중 오류가 나는데 왜 나는지 모르겠습니다.추가로 1.2달 동안 일이 있어 쉬다가 오랜만에 intellij에 접속하니 대부분의 파일의 import문에서 org.springframework..부분에서 전부 빨간줄이 떠서 Gradle클릭 후 '모든 Gradle프로젝트 다시로드'를 클릭하여 해결했는데 이것 때문인지 궁금합니다. 사진은 테스트파일 오류사진입니다.
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
소스 부탁드립니다. blog_list.html
선생님 안녕하세요너무 쉽게 잘 설명해주셔서 늘감사하며 공부하고 있습니다. 다른게 아니라, 영상 1분 38초 에 보면blog_list.hml을 복사해서붙여 넣으시는데부트스트랩 강좌를 보지 않아서 해당 소스가 없습니다 저와 같이 부트스트랩 강좌를 보지 않은 수강생을 위해서, 코드 소스 주시면 좋을것 같습니댜