묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
데코레이터 패턴, before 가 O(2^n) 인 이유
백기선님 안녕하세요.수강중 질문 사항이 있어 글 남깁니다.7분 구간에서 코드 증가량을 빅오로 비유하시며 before를 O(2^n) 로 설명하셨는데,2^n 판단의 전제를 더 설명해 주실 수 있을까요? 또 실무에서 패턴 선택 시, 중요하게 생각하시는 부분이 있으신지 궁금합니다. 마지막으로 자막에서 O(n) 을 “5에 n” 으로 표시하고 있어 제보드립니다. 확인 부탁드립니다 감사합니다:)
-
미해결얄코의 떠먹여주는 객체지향 디자인 패턴
3-layer 에서의 파사드 패턴적용
안녕하세요. 강의 잘 들었습니다! 저는 SpringBoot를 주력으로 백엔드 개발을 하고있는데요. 주로 3-layer로 이루어진 계층형 아키텍처를 사용하고 있습니다. 이때, Controller에서 Service를 호출한 후 서비스 계층에서 비즈니스 로직을 처리한 후 결과만을 Controller에 리턴해주게 될텐데요! 이런 경우에 Controller에서 하나의 Service 클래스에 비즈니스 로직의 실행을 위임하는 것을 파사드 패턴이라고 볼 수 있을까요?
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
[프론트엔드 문서화 관련 질문]
안녕하세요, 제로초님.프론트엔드 문서화 관련하여 질문을 드릴 게 있습니다.저희 회사에서 단기간에 규모가 큰 프로젝트를 진행하다보니 AI의 도움을 빌려 만들기는 만들었는데 문서화가 제대로 되지 않은 상태입니다.최근 한 명의 백엔드 개발자가 프론트엔드도 함께 개발을 하게 되어 문서화의 필요성을 느끼고 있는데, 문서화에 대한 경험이 없어 제로초님께 여쭤봅니다.현재 폴더 구조는 FSD를 채택하여 개발 중입니다.구상중인 것은 Slice 단마다 문서를 만드려고 하는데,해당 Slice에 포함된 파일의 사용 방식(API input값, output 값 등)에 대해 작성하고, store(zustand)에 저장된 값을 적고, ui에서 필요한 정보값들에 대해서도 적어보려고 합니다.이렇게 모든 폴더에 정리하게 된다면 못해도 50개가 넘는 문서가 만들어지게 될텐데, 괜찮은 방법인지 확신하지 못하겠네요.(현재 회사에 있는 개발자분들은 딱히 관심이 없어보이십니다ㅠ)제로초님이라면 해당 문서에 어떤 내용을 담으실지 궁금합니다.그리고 프로젝트 전체를 소개하는 문서에는 Tech Stack, 프로젝트 구조 이외에 어떤 항목을 넣는 것이 좋을지도 궁금합니다.이 수업에서 배운 디자인패턴에 대해서도 작성하는 것이 좋을까요?
-
미해결마이크로서비스 디자인 패턴 완벽 가이드
섹션 2 - 12강 강의 제목 관련 질문있습니다.
안녕하세요. 강의 재밌게 잘 듣고있습니다.섹션 2 - 12 목차가 Modular Monolithic Architecture 소개로 되어있는데, 실제 강의 내용이 Layered Architecture 관련 내용인 것 같습니다. 목차 명이 의도하신 것이 맞는지 궁금해서 질문드립니다!
-
미해결스프링 핵심 원리 - 고급편
실무 멀티스레딩에 대한 궁금증
=========================================[질문 내용]안녕하세요, 영한님? 영한님의 자바와 스프링 전편의 로드맵을 수강 중인 개발자입니다. 항상 영한님의 강의를 들으며 스텝업하는 부분이 있기에 너무 감사하단 인사를 먼저 드리고 싶습니다. 본격적인 질문은 스레드 로컬을 포함한 멀티 스레딩 관련 내용입니다. 영한님의 유튜브 영상 중 초보 개===============================[질문 내용]안녕하세요, 영한님? 영한님의 자바와 스프링 전편의 로드맵을 수강 중인 개발자입니다. 항상 영한님의 강의를 들으며 스텝업하는 부분이 있기에 너무 감사하단 인사를 먼저 드리고 싶습니다. 영한님의 유튜브 영상 중 고민 많은 개발자가 찾아왔다 를 보고 저 역시 처음부터 높은 목표를 가지지 않고 당장 입사 가능한 회사에 들어가 1년간 업무를 해봤습니다. 그래서 그런지 몰라도 이전 회사에선 영한님 강의에서 배운 내용들을 10% 조차 적용하지 못해봤던 것 같고 그 부분에 회의를 조금 느낀 것인지 안주하지 않겠다는 생각을 가지고 퇴사 후 교육을 듣게 되었던 것 같습니다. 본격적인 질문은 스레드 로컬을 포함한 멀티 스레딩 관련 내용입니다. 자바 고급편에서 다뤄주신 executorService나 이번의 스레드 로컬과 같은 멀티스레드 관련 지식을 적용할만한 코드가 이전 회사에선 없었습니다. 기껏해야 비동기 API 구성시 Future를 사용한 것 정도일까요? 그래서 궁금해졌습니다. 스프링 부트에서는 기본적으로 대부분의 컴포넌트가 싱글톤 스코프로 관리되기 때문에, stateless하게 설계하면 일반적으로 스레드 안전성 문제가 드물다고 알고 있습니다.다만 실무에서는 의도치 않게 stateful한 코드가 들어가는 경우가 자주 발생하곤 하는데요.(그게 실수가 되었건 불가피하건 말이죠)> 실제로 규모가 있는 서비스 회사에서는 이런 문제를 사전에 방지하기 위해 클래스/컴포넌트 설계 가이드나 명세 단계에서 thread-safe 설계를 강제하는 편인가요?아니면 설계 때보단 코드 리뷰나 테스트 중 문제 발견 후 사후적으로 수정·보완하는 프로세스를 거치나요?
-
미해결스프링 핵심 원리 - 고급편
안녕하세요 질문있습니다
안녕하세요.InterfaceProxyConfig 에서 Controller를 등록할때 파리마터로 LogTrace를 받고 해당 LogTrace를 ProxyAppication에 @Bean으로 등록하는데 이 경우 Controller에 LogTrace가 자동으로 들어가는건가요? 이것도 스프링이 해주는거라면 어떻게하는지 궁금합니다만약 리플렉션이라면 @Bean에등록된 모든 빈들을 찾아서 컨트롤러 인자에 자동으로 넣어주는걸까요?
-
미해결스프링 핵심 원리 - 고급편
AspectV3 aop 실행 순서 문의 드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. aspect3 로 test 를 돌렸을 때 자꾸 트랜잭션 aop 가 먼저 실행 되길래 무엇이 잘못인지 보다가 doTransaction 이걸 -> dioTransaction 로 작성을 했길래 수정을 하고 실행 했더니 log 가 먼저 나오는걸 확인할수 있었습니다. 메서드 이름으로 실행 순서가 변경 되는 매커니즘도 있나요 ?
-
미해결스프링 핵심 원리 - 고급편
MDC vs AOP 중에 고민중입니다.
안녕하세요. 서비스 운영을 하는데 로그와 관련되어서 고민이 있어서 질문드립니다.강사님처럼 로그에 레벨을 두어 AOP방식으로 로그를 출려하는 방법과, MDC를 사용해서 로그를 출력하는 방법을 두고 어느 기술을 사용할 지 고민중입니다. AOP는 가독성이 좋고 MDC는 성능이 좋다고 알고 있는데 어떤 방식을 추천하시나요?
-
미해결얄코의 떠먹여주는 객체지향 디자인 패턴
파사드 패턴과 템플릿 메서드 패턴의 차이
파사드 패턴은 다수의 서브시스템을 하나로 묶는 패턴으로 이해했습니다. 클라이언트의 클래스의 함수에서 서브시스템에 해당하는 개체들의 함수를 호출하여 구현하는 거 같은데요, 어떻게 보면 템플릿 메서드 패턴과 사실상 똑같은거 아닌가요? 두 패턴의 뚜렷한 차이가 있는데 제가 이해를 잘 못한건지 질문드립니다.
-
미해결마이크로서비스 디자인 패턴 완벽 가이드
실습 환경 구축에 대한 질문
제공되는 예제 파일에 대한 실행에 관련 질문을 해 주실 때는, 자신이 사용하는 운영체제(OS), 운영체제 버전, JDK 버전, IDE와 같은 개발 도구의 버전 등을 상세알려 주시면, 답변을 드리는데 도움이 됩니다. 안녕하세요. 현재 "마이크로서비스 디자인 패턴 완벽 가이드" 수강 중인 수강생입니다. 기존에 진행하셨던 "Spring Cloud로 개발하는 마이크로서비스 애플리케이션"는 수강 하지 않은 상태로 현재 과정을 수강 중인데 실습 시 사용하는 환경 및 프레임워크 설정 방법 등을 설명한 가이드 및 자료가 따로 있는지 문의 드립니다!
-
미해결얄코의 떠먹여주는 객체지향 디자인 패턴
강의 전부 수강했는데 퀴즈 활성화가 안되는 것 같습니다.
올라온 강의들을 전부 수강한 상태에서, 퀴즈를 풀려고 하는데 수강하지 않은 수업이 있다는 화면이 나오네요. 이유를 알려주시면 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 고급편
순환참조
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 부트 2.6이상 사용중이라 순환 참조를 기본적으로 금지하는 구조인데spring.main.allow-circular-references=true이 옵션을 넣으면 되긴 합니다.다만, ObjectProvider 를 사용하면 아래와 같이 문서가 작성되어위 옵션을 제거해서 다시 테스트 했는데 circular 예외가 발생하더라구요... 이 부분에서 순환이 안생겨서 옵션이 없어도 되어야 되는데 안되는 느낌이라 제가 잘 못 이해한거지... 답변 부탁드립니다.ㅜㅜ
-
미해결스프링 핵심 원리 - 고급편
this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이
@Before("allMember() && this(obj)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); } @Before("allMember() && this(hello.aop.member.MemberService)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); } @Before("allMember() && this(MemberService)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); }this를 단독으로 사용할 때 에는 이해가 되는데, 파라미터 파인딩에서는 왜 obj만 허용이 되나요?allMember() 조건 이후에 MemberService타입만 받고 싶을 수도 있을거 같은데...즉 allMember()의 this가 반드시 MemberService일거란 보장이 없지 않나요?
-
미해결스프링 핵심 원리 - 고급편
빈 후처리에 등록 질문 있습니다.
//프록시 대상이면 프록시를 만들어서 반환 ProxyFactory proxyFactory = new ProxyFactory(bean); proxyFactory.addAdvisor(advisor); Object proxy = proxyFactory.getProxy();위 코드에서 반환 타입이 오브젝트인데, 컨트롤러나 서비스에서 빈 주입받을때 스프링에서 빈 타입을 기준으로 주입되는걸로 아는데, 어떻게 오브젝트 타입이 반환되어도 정상적으로 각각의 빈들을 주입받을 수 있나요?제 생각엔 결국엔 등록된 빈 프록시는 전부 오브젝트 타입이라는 결론인데, 제 생각이 틀렷을까요?
-
미해결스프링 핵심 원리 - 고급편
AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.
```@Import(AppV1Config.class) : 클래스를 스프링 빈으로 등록한다. 여기서는 AppV1Config.class 를스프링 빈으로 등록한다. 일반적으로 @Configuration 같은 설정 파일을 등록할 때 사용하지만, 스프링 빈을등록할 때도 사용할 수 있다. 위 내용에서 AppConfig는 이미 @Configuration 인데, 클래스를 스프링 빈으로 등록한다는게 무슨말이에요?
-
미해결스프링 핵심 원리 - 고급편
ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?
ThreadLocal사용시 remove가 필요한 이유가 was서버는 http요청이 끝나도 객체 생명주기가 끝나는게 아닌 쓰레드풀을 재사용하기 때문에 remove를 해야 해야 하는걸로 이해 했습니다. 물론 강의 예시에선 로그를 찍어야 하기 때문에 전역변수를 사용하는게 맞지만 만약에 ThreadLocal을 메서드 내에서 지역변수로 사용해도 되는 경우가 있다면 굳이 remove를 할 필요가 없을까요?
-
미해결마이크로서비스 디자인 패턴 완벽 가이드
k8s 를 고려한 개발은 어떻게 진행하나요?
안녕하세요. 강의 흥미있게 듣고있습니다.궁금한 점이 있는데, 스프링 클라우드에서 제공하는 api-gateway 나 config server, discovery 등 k8s 로 배포하게 되면 각각 대체할 수 있는 서비스 들이 존재하는데,실제 실무에서 개발할때는 어떤식으로 진행하는지 궁금합니다.스프링 클라우드로 개발한 후 k8s에 맞게 변경하나요? 아니면 처음부터 k8s 에 겨냥해서 개발을 진행하나요?
-
해결됨스프링 핵심 원리 - 고급편
@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부
AI가 만든 질문들을 풀던 도중 아래와 같은 문제가 나왔습니다.AI가 만든 질문 : 스프링의 자동 프록시 생성기는 @Aspect 어노테이션이 붙은 빈에 대해 어떤 역할을 수행할까요?참고로 정답은 : 빈을 어드바이저로 변환 이었습니다.@Bean fun advisor3(trace: LogTrace) : Advisor { // pointcut val pointcut = AspectJExpressionPointcut() // noLog라는 메서드에는 advice를 적용하지 않는다. pointcut.expression = ("execution(* com.example.demo.advanced.app..*(..)) && !execution(* com.example.demo.advanced.app..noLog(..))") // advice val advice = LogTraceAdvice(trace) return DefaultPointcutAdvisor(pointcut, advice) }강의중에 나온것 처럼 의도적으로 Advisor를 Bean에 등록하면 스프링 컨테이너에 Adivisor가 bean으로 등록되는건 알겠습니다.@Aspect class LogTraceAspect( private val trace: LogTrace ) { @Around(" execution(..something 이부분은 생략합니다 )") fun execute(joinPoint: ProceedingJoinPoint): Any? { .. } } 그런데 위 코드처럼@Aspect 어노테이션을 사용해도 advisor가 스프링 컨테이너에 bean으로 저장되는건가요?어드바이저 빌더 내부에 저장만 되는건지 혹은 bean으로 저장도 되는건지 궁금합니다.감사합니다.
-
미해결스프링 핵심 원리 - 고급편
ThreadLocal 사용시 부작용이 있을수 있을까요? (ThreadLocal.remove()를 잘한다고 해도..)
안녕하세요ThreadLocal 에 관련된 질문입니다.------- 가정 -------Component A가 ThreadLocal을 사용합니다. ( myThreadLocal = ThreadLocal<Long>)Component B가 ThreadLocal을 사용합니다. ( otherThreadLocal = ThreadLocal<Long>)질문1. JVM 내부에는 2개의 ThreadLocal 객체가 생성되는게 맞을까요?2. 그러면 톰켓에서 시동시 만드는 스레드풀에 있는 200개 스레드 모두에 말씀하신 "스레드 내부의 저장소" (ThreadLocalMap with 2개의 key)가 생성이 될 것 같은데 맞을까요?3. 만약 2번이 맞다면, 코드 이런 저런곳에서 LocalThread를 사용하게 되면 3.1 시동시에 좀 더 오래걸릴것 같은데, 혹시 시동시 부하가 걸리는가 3.2 시동시 부하가 걸리지 않는다고 해도, 부작용이 있을수 있는가?4. ProtoType의 Bean을 동적으로 만들고 그 Bean이 내부에서 ThreadLocal을 사용한다면 다른 Thread의 저장소(ThreadLocalMap)에서는 그 ThreadLocal의 저장공간이 없을것 같은데 맞을까요?감사합니다.
-
해결됨Python을 위한 디자인 패턴
노션링크
conceptual_singleton.py강사님 싱글톤패턴 드롭다운 코드예시 9:25 이부분 코드 예시가 펼쳐져 있지않아서 볼수가없네요.팩토리패턴 예시도 강의영상에서는 펼쳐져있지않네요.노션링크를 보면서 학습해야할 것같은데 어디있는지 모르겠습니다 ㅠ