정리부분 동영상이 중간에 끊긴거 같아요!
미해결
정보전략계획(ISP) 수립 실무
00:57넘어갈때 내용의 흐름이 끊긴거 같은데 확인 부탁드립니다.
- 서비스-기획
- 소프트웨어-설계
- isp
- 컨설팅
- 정보전략계획
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
정보전략계획(ISP) 수립 실무
00:57넘어갈때 내용의 흐름이 끊긴거 같은데 확인 부탁드립니다.
해결됨
제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
강의 정말 잘 들었습니다! 비즈니스 로직에 대한 관점이 보다 명확해진 것 같아요. 한 가지 궁금한 점이 있습니다. "리팩터링 후의 메서드를 보면 입력받는 인자 targetStore 도 달라진 걸 볼 수 있죠" 와 같은 말씀을 해주셨는데 여기서 새롭게 나오게된 개념인 targetStore, usePoint 인자들에 대한 처리 가 리팩토링 전과 후 layer들 사이에서 어떻게 바뀌게 되는지 조금 더 자세한 내용이 궁금합니다! 리팩토링 전 리팩토링 후 businessPay()메서드에서 pay 라는 비즈니스 로직을 처리하기 위해 요청에 대한 정보 를 리팩터링 하기 전의 코드에서는 payRequest 로 presentation layer 에서 전달받고 있는 것 같아요. (저도 이렇게 하고 있었습니다) 리팩터링 후의 코드에서는 targetStore, usePoint를 인자로 입력받고 있는걸 볼 수 있었어요. 여기서, 새롭게 나오게된 targetStore, usePoint 객체들을 클라이언트로부터 전달되는 presentation layer 에서 바로 전달받는 것을 기대하셨는지 아니면 리팩토링 전과 같이 payRequest 로 controller에서 전달 받은 뒤 다른 layer (business 혹은 presentation) 에서 dto 로 변경한 뒤 businessPay() 메서드를 호출하여 인자를 입력해주는 것을 기대하셨는지 아니면 다른 방법으로 진행이 되는지 가 궁금합니다!
미해결
readable_code::CMake - Fancy하게 C++ Project 만들기
gtest/configurate_package.cmake 에 project(GTest...) 를 넣으면 GTest 가 설치되지도 않았는데 find_package() 에서 있는 걸로 처리되어서 install 이 안되고 있습니다. 혹시 제가 놓친 부분이 있을까요?
해결됨
제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
안녕하세요. 제미니님 이번에도 좋은 강의를 제공해주셔서 감사합니다. 모듈 분리에서 궁금한 내용이 있는데요. 제미니님이 제공해주신 PaymentAPI 와 DB 모듈을 별도로 했다고 했을 때 API 규격에 맞게 DB 모듈이 구현이 되어야 한다고 생각하고 있습니다. 즉, 해당 PaymentAPI 에서 제공하는 DB 접근에 대한 인터페이스를 DB 모듈이 구현하는 의존성 역전 원칙을 적용 한 상황입니다. 하지만, 이 상황에서 단방향 모듈 참조를 하게 된다면 DB 모듈은 PaymentAPI 가 제공하는 인터페이스의 유무를 알 수가 없게 되는데요. 저는 위 문제에 대한 해결방법으로 두 가지가 떠오릅니다. 모듈 분리 시 API 모듈에 인터페이스를 만들고 DB 모듈 교체에 따른 새로운 구현체를 구현 한다.(모듈 교체에 따라 이전 모듈에 대한 클래스 참조가 사라져 컴파일에러가 발생하게 되고 주석처리가 필요하다) 모듈 교체 시 이전 모듈에서 사용했던 인터페이스를 하위 모듈에서 똑같이 생성해주고 동일한 인터페이스를 참조 하도록 하여 상위 모듈에는 변화를 주지 않는다. (변화가 최소화되지만 인터페이스가 많을 수록 구현도가 올라간다. 인터페이스를 동일하게 만들거라는 보장이 되어야 한다.) 1번 코드 paymentAPI { // implementation 'project:paymentDB' // implementation 'project:paymentDB2' interface CommandPort { fun save(command: PaymentCommand) } class PaymentDBImplV1 : CommandPort { override fun save(command: PaymentCommand) { paymentDB.saveV1(command); // paymentDB2 모듈 사용 시 주석 처리 } } class PaymentDBImplV2 : CommandPort { override fun save(command: PaymentCommand) { paymentDB2.saveV2(command); // paymentDB1 모듈 사용 시 주석 처리 } } } paymentDB { implementation 'A.DB' } paymentDB2 { implementation 'B.DB' } 2번 코드 paymentAPI { // implementation 'project:paymentDB' // implementation 'project:paymentDB2' class PaymentAPILogic(val paymentDB: CommandPort){ fun save(command: PaymentCommand) { paymentDB.save(command); // paymentDB2 모듈 사용 시 주석 처리 } } } paymentDB { implementation 'A.DB' interface CommandPort { fun save(command: PaymentCommand) } class PaymentCommandImpl : CommandPort { override fun save(command: PaymentCommand) { DB.save(command); } } } paymentDB2 { implementation 'B.DB' interface CommandPort { fun save(command: PaymentCommand) } class PaymentCommandImpl : CommandPort { override fun save(command: PaymentCommand) { DB.save(command); } } } 간단하게 코드를 작성하면 위와 같은 형태가 될 것 같습니다. 제미니님은 어떠한 방향으로 설계를 하시는지 혹은 제 질문에서 제가 잘 못 이해한 부분이 있어 이러한 방법으로 사고가 흘러가는지 말씀을 들어보고 싶습니다. 마지막으로 유튜브 및 인프런에서 귀한 지식과 귀한 시간을 제공해주셔서 항상 감사합니다!
미해결
readable_code::CMake - Fancy하게 C++ Project 만들기
안녕하세요. 강의를 보면서 따라 하고 싶은데 cmake 설치 및 버전, 파일 구조등에 대한 정보를 찾을 수 없어서 문의 드립니다.
미해결
정보전략계획(ISP) 수립 실무
프로젝트 시간이 부족한데요 환경분석과 협황분석을 동시에 해도 되나요?
미해결
readable_code::CMake - Fancy하게 C++ Project 만들기
26분 45초에 다른 메시지를 보고 되었다고 오해하신거 같아요 ^[a-z]{3}.txt$ abc.txt도 되지 않고 a3.txt도 되지 않는데 어떨때 True인가요?
해결됨
대규모 시스템 설계 Part 1
single cluster 큰 장애 복구는 다른 클러스터로 우회한다고 하셨는데 single cluster는 클러스터가 1개 아닌가요 ??
미해결
대규모 시스템 설계 Part 1
안녕하세요. 우선 part 1 좋은 강의 감사합니다~ part 2 강의 오픈은 언제쯤 되는지 궁금하고 무엇을 다룰 예정이신지도 궁금합니다.