inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

계층형 아키텍처와 헥사고날 아키텍처는 정말 본질적으로 많이 다른 것일까?

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

최근에 제가 고민했던 부분의 토비님의 의견이 궁금해서 질문드립니다. “계층형 아키텍처와 헥사고날 아키텍처는 정말 본질적으로 다른 걸까?” 예를 들어, 계층형 아키텍처에서도 인터페이스를 통해 상위 계층이 하위 계층을 의존하도록 설계하면 DIP(Dependency Inversion Principle)를 지킬 수 있습니다. 그렇게 하면 헥사고날 아키텍처가 지향하는 의존성 역전 과 사실상 동일한 구조가 만들어지지 않을까요? 그렇다면 DIP를 잘 구현한 계층형 아키텍처는 헥사고날 아키텍처와 다르지 않다 고도 볼 수 있을 것 같습니다. 이 생각대로라면, 우리가 그동안 “계층형 아키텍처”라고 부르며 개발하던 많은 구조들이 사실상 헥사고날 아키텍처였던 것 아닌가? 라는 생각도 들었습니다. 만약 두 아키텍처가 여전히 다르다고 본다면, 그 차이는 폴더 구조나 패키지 구성 방식 처럼 물리적인 형태에서 오는 걸까요? 하지만 두 아키텍처 모두 논리적이고 추상적인 설계 철학 을 이야기하는 것인데, 물리적 구조로만 구분하는 건 이상하다고 느껴집니다. 결국 저는, 잘 설계된 아키텍처라면 헥사고날이든 계층형이든 최종 목표는 동일하다 , 라는 생각이 들었습니다. 즉, SRP(Single Responsibility Principle) 를 지키고, 외부 기술의 변화가 도메인에 영향을 주지 않아야 하며 (헥사고날), persistence 계층이 바뀌더라도 핵심 비즈니스 로직은 변하지 않아야 한다 (계층형), 는 점에서 둘의 지향점은 같다고 느낍니다. 혹시 제가 놓치고 있는 중요한 관점이 있을까요? 토비님께서는 이 두 아키텍처를 어떻게 구분하시고, 어떤 기준을 중요하게 보시는지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
  • 헥사고날
  • 레이어드
develop 댓글 2 좋아요 4 조회수 1202

21. 화염구 13:51 BaseCanvas.cs 에서 Start() 문 SelectCard() 오류 날 경우

미해결

[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기

SelectCard()를 시작부터 작동하도록 넣었을 때, 오류가 발생하였습니다. 그 전에는 강의 내용과 동일한 오류를 내면서 강의 내용대로 따라왔는데 해당 구간의 오류를 이해해보려다가 임시 해결책으로 대체하였습니다. NullReferenceException: Object reference not set to an instance of an object CardSelector.Initialize () (at Assets/Packages/06.Script/UI/CardSelector.cs:17) Base_Canvas.SelectCard () (at Assets/Packages/06.Script/UI/Base_Canvas.cs:61) Base_Canvas.Start () (at Assets/Packages/06.Script/UI/Base_Canvas.cs:45) 이런 오류가 발생하였습니다. 다음과 같이 조치를 취해서 정상 작동하고 있으나 혹시나 동일한 이슈가 발생하셔서 시작부터 레벨업을 못 하시는 분들이 계실까봐 글 남깁니다. 저는 Update()문에다가 레벨업해서 카드 고르는 메서드를 별도로 입력해두었습니다. 그리고 Start() 문에 있는 SelectCard() 메서드를 주석처리하였습니다. private void Update() { TimerText.text = Util_UI.FormatTime(MANAGER.SESSION.GameTime); if (Input.GetKeyDown( KeyCode.Space )) { SelectCard(); } } 혹시나 이 이슈를 이해하고 해결하신 분이 계신다면 꼭 좀 답변 부탁드립니다...

  • C#
  • unity
  • 유니티6
Choi1997 댓글 2 좋아요 0 조회수 136

사전 렌더링과 getServerSideProps

해결됨

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

안녕하세요, 강의 잘 듣고 있습니다. 강의를 들으며 이해하지 못한 부분들이 있습니다. NextJS는 페이지 요청을 받았을 때 기본적으로 사전 렌더링(서버에서 JS 렌더링)을 한다고 이해하고 있었는데, 그러면 getServerSideProps함수를 선언하지 않아도 사전 렌더링이 진행되는거 아닌가요? 그런데 본 강의에서는 SSR을 진행하기 위해서는 getServerSideProps를 선언한다고 나와있는데, 그러면 SSR=기본적 사전 렌더링이 아닌건가요? 사전 렌더링은 기본적으로 되는게 아니라 명시적으로 getServerSideProps를 선언해야 가능한건가요? 사전 렌더링은 초기 접속 요청 시에만 진행되는게 맞을까요? 페이지 이동 시에는 진행되지 않나요? 따라서 이 페이지 이동 시에 사전 렌더링을 진행하기 위해서 getServerSideProps를 명시적으로 선언하려는 것인가요? (그렇다면 1번질문 해결) 감사합니다.

  • react
  • typescript
  • next.js
학생 댓글 2 좋아요 0 조회수 108

intelli J 실행오류

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

intelli J가 잘 설치되었으나 실행이 안되는 되요.

  • java
  • 객체지향
김선미 댓글 2 좋아요 0 조회수 148

@Autowired 동작 범위 질문

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 스프링 빈 등록에는 컴포넌트 스캔과 @Bean을 통한 수동 등록이 있다고 배웠습니다. @Autowired 를 통한 DI는 스프링 빈으로 등록된 객체에서만 동작한다고 하셨는데, configuration에서 @Bean으로 등록하든, @Component계열 어노테이션으로 등록하든 스프링 빈으로만 등록되어 있다면 @autowired가 사용 가능한 것 인가요?

  • java
  • spring
  • mvc
  • spring-boot
남미미미 댓글 2 좋아요 0 조회수 115

이유가 궁금합니다 (DI 방법 3가지 !)

미해결

옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트

@Autowired 의 방법이 1. 세터 주입방식 2. 필드 주입방식 생성자 주입방식 으로 바꼈다고 하시는데 2번에서 3번으로 넘어간 이유 한참 고민해봤는데 1번의 장점을 가져올려고 하지 않았나?? 아무나 접근할수 있다는 단점도 되지만, 테스트나 이런거할때 접근이 쉬우니까 테스트도 편하다? 근데 2번은 private이라 접근이 불편하다? 힘들다? 단점이 있어서 그 단점을 보완하는거 아닌가 선생님 답변이 궁금합니다

  • java
  • spring
  • rest-api
  • spring-boot
  • dbms/rdbms
이DH 댓글 2 좋아요 1 조회수 178

19. 스킬 구슬 강의가 몇 강 이후에 다시 촬영된 건지 알고 싶습니다.

미해결

[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기

SkillFrame.cs 자료와 Base_Canvas.cs 자료는 확인할 수 있었습니다. 그러나 SkillFrame.cs의 Ienumerator CooltimeCoroutine(CardDB card, int Level) 메서드에서 메서드 지역 변수로 float cooltime을 초기화하고 설정해줄때 (9:32 부분) card.baseCooldown과 card.cooldownPerLevel 부분이 누락되어서 테스트를 해볼 수가 없네요... CardDB 스크립트도 참조되었으면 좋았을텐데 아쉽습니다..

  • C#
  • unity
  • 유니티6
Choi1997 댓글 3 좋아요 0 조회수 141

cursorAI에 rule 생성 시 rule type이 안 나오는 현상 발생

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요, cursor에서 설정 > rules & memories 선택 > Project Rules에서 +Add Rule 선택 > project-structure.mdc 생성하면 강사님 화면처럼 rule type 선택할 수 있는 창이 안 뜹니다. 이유가 뭔지 잘 모르겠습니다 ㅜ

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
산독기 댓글 3 좋아요 0 조회수 220

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

newPos를 클릭지점으로 보면 되는건가요? 그럼 to는 목표지점인데 to라는 오브젝트 지점에 클릭(newPos지점) 한거 아닌가요? 그럼 to지점과 newPos가 겹쳐져야 되는거 아닌가요? 그런데 결과는 newPos값이 to보다 넘어버리네요 from하고 to, newPos가 인게임 내에서 어떤걸 의미하는지 모르겠네요

  • C#
  • unity
Qwe Asd 댓글 3 좋아요 0 조회수 143

선생님 질문있습니다 !

미해결

옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트

선생님은 보니까 디버그창?? 실행창?에 글자가 나오는데 저는 이렇게 글자가 깨지게 나오는데 왜그런걸까요...? ㅠ

  • java
  • spring
  • rest-api
  • spring-boot
  • dbms/rdbms
이DH 댓글 2 좋아요 1 조회수 99

useEffect 비동기 관련 질문

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

비동기가 되기 때문에 콘솔로그를 쓰면 안된다에대한 질문입니다. 위(setCount 내부)에는 count + value를 했고 아래 콘솔로그는 count로 예시를 보여주셨습니다. 궁금한건 아래 콘솔로그에도 +value를 달면 렌더링 결과는 똑같이 나오는거 아닌가요? 물론 실질적인 값은 동일하지 않더라도 이렇게 되면 렌더링 되는 결과는 같은거 아닌가요?

  • javascript
  • react
  • node.js
최동혁 댓글 2 좋아요 0 조회수 104

21버전이 없어요 ㅠ

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 버전을 21로 설정하고 벤더를 말씀하신 오라클 오픈 JDK를 누르면 강제로 24로 버전이 바껴요 21로 되어 있는건 아예 없고 24밖에 없어요.. 어떻게 해야하나요?

  • java
  • 객체지향
강이 댓글 2 좋아요 0 조회수 361

expo location foreground, background

미해결

React Native with Expo: 제로초에게 제대로 배우기

만약 배달앱을 만든다고하면, 앱을 켤 때, foreground, background 모두 권한을 받아두는 식으로 개발하나요 ?

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
정채진 댓글 2 좋아요 0 조회수 121

npm run android 시 build app 우선 실행

해결됨

React Native with Expo: 제로초에게 제대로 배우기

저는 npm run android 하면 빌드앱이 우선으로 실행되고, expo go 로 계속 switch 해야하는데요 혹시 expo go 로 디폴트로 시작하게는 못하나요 ?

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
정채진 댓글 1 좋아요 0 조회수 97

userDataList Json으로 저장

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

UserDataManager.cs에 모든 IUserData를 모아둔 userDataList가 존재하는데 해당 리스트를 Json으로 만들어서 파일로 저장하고 싶습니다. 이유는 모은 데이터를 한 개의 Json 파일로 관리하고 싶기 때문인데, 계속 시도 중인데 실패를 하네요... 아니면 userDataList를 Json화 시켜 저장하는 방법 말고 다른 방법이 있을까요?

  • C#
  • unity
  • 객체지향
moonfgg 댓글 2 좋아요 0 조회수 131

클라이언트 컴포넌트 사전 렌더링

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

클라이언트 컴포넌트는 서버에서 사전렌더링이 된다고 했는데 이 의미가 하이드레이션 하는부분만 제외하고 html로 렌더링해준다는 말인가요? 서버는 <div data-nextjs-client-component="..."></div> 같은 placeholder 만 내려주고 서버에서 HTML로 렌더링되지 않는다는 말도 있어서 헷갈립니다ㅠㅠ!!

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
Subin Ryu 댓글 2 좋아요 0 조회수 69

given when then

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @Test @DisplayName("상품주문_재고수량초과") public void orderOverStock() throws Exception { //given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); int orderCount = 11; //when //then Assertions.assertThrows(NotEnoughStockException.class, () -> orderService.order(member.getId(), item.getId(), orderCount)); } 촬영 시점과 달리 assertThrows로 변경되며 given, when, then이 참 모호해진 것 같습니다. 제가 이해한 바에 따르면, 변수 설정은 given, 메서드 호출은 when, 결과와 검증은 then에서 수행하는 것 같은데 위 코드와 같은 경우는 어떻게 분리해야 할까요? when은 위와같이 비워두는게 맞을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
JongYun Won 댓글 1 좋아요 0 조회수 100

sleep과 yield 차이점

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

이 둘을 이해하는데 조금 어려워서 차이점 질문 겸 이렇게 이해하고 있는게 맞는지 또는 이해해도 되는지 질문드립니다. sleep()과 ,yield() 공통점 : 둘 다 실행되면 다른 스레드에게 실행을 양보함 sleep()과 ,yield() 차이점 sleep(ms) : 실행되면 주어진 시간동안 TIMED_WATING 상태가 된다. sleep이 실행된 스레드는 실행 스케쥴링에서 아예 빠진다. 따라서 해당 시간동안 전혀 실행되지 않는다. yield() : 호출되어도 계속해서 RUNNABLE 상태를 유지한다. yield()가 호출되면 해당 스레드는 sleep과 달리 스케쥴링에 대기상태 로 들어간다. 이 말은 스케쥴링에 있기 때문에 다시 곧바로 실행 될 수 있다. 예를들어 1000ms를 기준으로 비교하면 sleep()을 호출한 스레드는 1초동안 아무것도 못하지만, yield를 호출한 스레드는 1초동안 다른 얼마든지 곧바로 실행 될 수도 있고 몇번이든 실행 될 수 있다. 이렇게 차이점을 이해했습니다. 이게 맞는지 이렇게 이해해도 되는지 궁금합니다 감사합니다.

  • java
  • 객체지향
  • 동시성
  • multithread
yoon6669 댓글 1 좋아요 0 조회수 92

XR Controller 관련 문의

해결됨

두고두고 써먹는 유니티 VR

XR Origin의 LeftHand Controller와 RightHand Controller가 없어서 직접 오브젝트 추가해서 만들고 Inspector에 하나하나 추가하고 있는데, XR Controller (Action-based) 가 없습니다. 어떻게 해결해야 하나요? 그리고, XR Interaction Toolkit에 Starter Assets이랑 XR Device Simulator가 다 잘 깔려있는데 왜 Hierarchy에 XR Origin 생성했을때 자동으로 LeftHand Controller와 RightHand Controller 가 생성되지 않는걸까요

  • unity
  • VR/AR
  • 유니티-vr
xxxdep 댓글 1 좋아요 0 조회수 147

인기 태그

인프런 TOP Writers

주간 인기글