묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결견고한 결제 시스템 구축
주문, 결제 로직에 대해서 질문이 있습니다.
이커머스를 기반으로 가정하고 사용자의 결제가 진행되는 과정을 정리했을 때 다음과 같이 고려해볼 수 있을 것 같습니다. 단일 구매 혹은 장바구니를 통해 결제 페이지로 이동결제 페이지에서 사용자가 필요한 데이터를 작성한 후 결제하기 버튼을 클릭백엔드 서버는 해당 결제 요청으로부터 PSP에게 결제 진행을 요구하기 위해서 요청을 보내고 토큰과 같은 형태로 받아옴토큰을 사용자에게 반환한 후 사용자가 결제를 진행결제가 성공적으로 진행되었을 경우 백엔드 서버는 결제 승인 요청을 PSP로 전송결제 승인 응답이 돌아오면 결제 완료이커머스는 상품의 유효성 검증은 2번과 3번 모두 검증한다고 해도 재고 감소와 같은 로직 및 주문 번호를 생성하는 로직은 어느 시점에 두어야 될 지 고민이 됩니다.재고 수량의 감소를 3번에서 진행하는 것으로 고려하고 있는데 이와 같은 경우 결제 페이지로 사용자가 결제에 필요한 데이터를 입력하고 재고가 부족하다는 입력을 받을 수 있어서 사용자 경험 측면에서 안좋을 수 있다고 생각이 되긴 합니다. 하지만 2번에서 진행할 경우 재고를 결제 페이지로 이동할 때 감소시켜야 하기 때문에 실제로 결제가 이루어지지 않을 수 있는 많은 상황이 있을 수 있기 때문에 이 또한 고려해야 되는 부분이라고 생각합니다. 어떤 시점에 재고를 감소시키는 것이 좋을지 의견을 듣고 싶습니다. 추가적인 질문으로 현재 강의에서 진행하고 있는 결제 이벤트를 DB에 반영하는 시점이 정확히 어떤 시점인지 헷갈립니다. NOT_STARTED 상태로 저장되는 시점이 결제 페이지로 이동하는 시점인지 아니면 결제 구매 버튼을 누른 시점인지 알려주시면 감사하겠습니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
라이브 강의 질문
안녕하세요. 루키스님다름이 아니라, 제가 3~4월 라이브 강의, 5월 라이브 강의를 신청해서 수강한 학생입니다. 복습을 하고 싶어서 영상을 찾고 있는데, 영상을 찾을 수가 없더라구요.혹시 영상 어디서 볼 수 있는지 알 수 있을까요??
-
미해결생초보를 위한 파이널컷 프로
인서트 제네레이터 갭적용부분
그런데 파이널컷에서 insert generator 를 보면 저는 gap위에 placeholder이라고 되어있고 클릭시 색상대신 대체화면?들이 들어있구요.. 어떻게 적용하고 사용하는지 잘 모르겠습니다 ㅠㅠ
-
해결됨소프트웨어 업데이트 : Re-Programming 과정에 대한 이해
JTAG port와 Debug port의 차이가 궁금합니다
안녕하세요. 첫 강의를 수강했는데 JTAG port와 Debug port 두 용어가 같은 맥락인 것 같은데 어떤 차이가 있는지 궁금합니다. Debug port가 좀 더 포괄적인 개념인가요? (Debug port의 한 종류로서 JTAG 포트가 존재하는 것인가요?)
-
미해결견고한 결제 시스템 구축
주문 번호 생성 방식 관련 질문 있습니다
현재 주문 번호를 생성하는 방식은 결제 페이지로부터 들어오는 데이터들을 이용해서 그것을 String 형태로 변형해줌으로써 모든 요청들이 같은 형태의 String Key값을 가지게 되고 그것을 주문 번호로 사용하는 것으로 이해했습니다!주문 번호의 경우 쿠팡이나 다른 이커머스사들을 확인해보면 숫자 혹은 거기에 문자정도로 생성되어 있고 결제 완료시 주문 번호를 확인해볼 수 있습니다.이와 같은 방식으로 주문 번호를 생성하려면 위와 같은 방식이 아닌 별도의 로직을 통해서 주문 번호를 생성해야되며, 요청이 1번만 처리되기 위해서 Unique한 값으로 생성되어야 됩니다.현재 제가 진행하고 있는 프로젝트에서는 결제 페이지로 사용자가 진입했을 때 주문 번호를 특정 로직을 통해 Unique한 값으로 생성해주고 DB를 확인하고 Redis에 기록하는 절차를 진행하여 멱등성을 보장하고 있습니다. 이와 같이 진행하다 보니 주문 번호를 생성하기 위해서 DB에 쿼리를 1회 이상 날리는 상황이 발생하게 되는데 이와 같이 진행하는 것은 안좋은 형태일까요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
이더넷 질문 드립니다.
Ethernet 헤더 분석 및 LSO 이슈 강의에서 고급 네트워크 설정을 따라하려고하는데 이더넷이 없어요 .. 혹시 VMware에서 하신걸까요 .. 아니면 BIOS에서 제가 잘못한걸까요.. 답변 부탁드릴게요 !
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
8080로 설정 후 8080 포트 접속이 안되는데, 8081이 접속됩니다.
아래 이미지는 도커 실행 후 docker ps 명령어로 docker 가 잘 실행중인지 확인한 것인데요,, 이후 브라우저에서 "http://127.0.0.1:8080/" 로 접속하면 사이트에 연결할 수 없음으로 나오는데 "http://127.0.0.1:8081"로 접속하면 로그인 창이 열리고 있습니다... 임시 비밀번호로 로그인도 잘 되고요.. 혹시 원인을 알 수 있는 방법이 있을까요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
컴퓨터 메모리 용량
16비트가 64KB라고 하셨는데 이점이 이해가 잘 안돼요.8비트가 1바이트이고 1024바이트가 1KB라고 하셨는데 왜 16비트가 64kb인지 모르겠어요. 그리고 용량과 단위의 차이라고 하셨는데 용량일때의 바이트와 단위일때의 바이트가 뭐가 다른지도 모르겠어요
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
수업 자료 관련 질문 있습니다.
혹시 강의에서 작성하신 스크립트는 수업 자료에 포함되지 않나요?
-
해결됨[코드캠프] 입문자를 위한 Javascript 알고리즘 이론+실습
오타
https://dingco.notion.site/78c13cff9abd4bbea4a8e4692db6c66dsolution("marco", 970219); // marco971204에서 marco971204 ->marco970219
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
필드위치로 커서 옮기기
제가 모르는 것일수도 있는데_필드위치로 커서 옮기기 파트에서 수업파일은 어디에 있을까요?
-
해결됨[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
빌드 시 에러 문의
안녕하세요 빌드 시 아래 에러가 발생하는데 혹시 해결 방법을 알고 계실까요?Error C2338 static_assert failed: 'error STL1001: Unexpected compiler version, expected MSVC 19.40 or newer.' 구글링을 해보고 있긴 한데 혹시 해결 방법을 알고 계실까 하여 문의 드립니다.
-
미해결파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편
포트원 UI가 바뀌면서 포트원 404에러가 발생합니다.
안녕하세요. 강의 잘 듣고 있습니다.가이드 주신대로 포트원 회원가입을 하고, 테스트 채널을 추가했습니다.PORTONE_SHOP_ID 를 변경하여 결제를 생성해도포트원 404 에러가 발생합니다.포트원에서 UI가 업데이트 되었습니다.그래서 대표설정을 찾지 못하였습니다.이 부분 같이 고민해주실 수 있을까요? https://github.com/pyhub-kr/course-django-payment-basic/tree/10c6d065e401ce6a9daa262d1906d10f2f9e69c3여기 깃허브를 클론한 뒤 제 .env파일을 넣어서 테스트해도 포트원 404 에러가 발생합니다.
-
미해결
프로젝트 관련해서 궁금한게 있습니다.
여기서 모집하는 프로젝트 같은 경우 직장인이 사이드 프로젝트 느낌으로 참여할 수 있는 프로젝트들도 있나요?예를 들어 주말에만 작업이 가능하다거나 해도 상관이 없는 식으로요.저같은 경우엔 가끔 주말에 근무가 생길 때가 있지만 그건 뭐... 제가 알아서 다른날 비는 시간 최대한 끌어다 써서 메꾸는 그런 식으로...
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의에서의 회원가입 테스트를 JUnit5 방식으로 바꾸면 이게 맞을까요?
@ExtendWith(SpringExtension.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); Member joinedMember = memberRepository.findOne(savedId); //then assertThat(member).isEqualTo(joinedMember); } 이렇게 진행하면 될까요?
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
오류문의
다른 컴퓨터에서 해보고있는데 또 똑같은오류가 발생하는거 같아 문의드립니다. 이전 컴퓨터에서는 해당오류 해결하였는데다른컴퓨터에서는 똑같이 발생합니다. lim.invok(prompt_text) 실행시 발생 RateLimitError Traceback (most recent call last) Cell In[21], line 1 ----> 1 response = llm.invoke(prompt_text) File c:\Users\hyunn\AppData\Local\pypoetry\Cache\virtualenvs\qa-bot-uxQSWlcO-py3.11\Lib\site-packages\langchain_core\language_models\chat_models.py:276, in BaseChatModel.invoke(self, input, config, stop, kwargs) 265 def invoke( 266 self, 267 input: LanguageModelInput, (...) 271 kwargs: Any, 272 ) -> BaseMessage: 273 config = ensure_config(config) 274 return cast( 275 ChatGeneration, --> 276 self.generate_prompt( 277 [self._convert_input(input)], 278 stop=stop, 279 callbacks=config.get("callbacks"), 280 tags=config.get("tags"), 281 metadata=config.get("metadata"), 282 run_name=config.get("run_name"), 283 run_id=config.pop("run_id", None), 284 **kwargs, 285 ).generations[0][0],... (...) 1049 retries_taken=options.get_max_retries(self.max_retries) - retries, 1050 ) RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
ProductSearchImpl 관련 질문드립니다.
@Override public PageResponseDTO<ProductDTO> searchList(PageRequestDTO pageRequestDTO) { log.info("----------------------searchList-------------------------"); Pageable pageable = PageRequest.of( pageRequestDTO.getPage() -1, pageRequestDTO.getSize(), Sort.by("pno").descending()); QProduct product = QProduct.product; QProductImage productImage = QProductImage.productImage; // from 절 JPQLQuery<Product> query = from(product); // join // @ElementCollection을 join 할때는 아래와 같이 사용해야합니다. // product.imageList를 productImage로 사용하겠다. query.leftJoin(product.imageList, productImage); query.where(productImage.ord.eq(0)); Objects.requireNonNull(getQuerydsl()).applyPagination(pageable,query); List<Tuple> productList = query.select(product,productImage).fetch(); // 쿼리를 실행시키기 위함. long count = query.fetchCount(); log.info("======================="); log.info(productList); return null; }이 코드에서 return 값을 넘기고 싶어서 수정하는데 어떻게 해야 값이 넘어가는지를 잘 모르겠습니다...TodoSearchImpl에서는 new PageImpl<>() 사용하셔서 넘기셨는데 여기서는 어떻게 처리해야 될까요??2. ProductServiceImpl의 getList() 메서드와 동일한 역할인거같은데, ProductSearchImpl 에서는 querydsl을 사용하셔서 보여주신거고 ProductServiceImpl에서는 jpa를 사용하는 방법을 보여주신게 맞는지 궁금합니다!
-
미해결인프콘 2024 다시보기
1등?
유튭공지글 보고 왔습니다 재밋네요🙌
-
해결됨Flutter 앱 개발 실전
혹시 추가적인 강의는 아직 소식이 없는건가요?
강사님의 강의를 더 보고 싶은데 예정된 강의가 없나요 ㅠㅠ?클린아키텍쳐와 블록의 사용 등 다른 강의도 보고 싶은데 ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C언어
3.9 고정 너비 정수 4:17쯤부터
int32_t i32 는 32비트를 사용한다는 걸 아는데 왜 "printf를 사용할 때 형식 지정자를 무엇을 써야할지 알 수가 없죠" 라고 하시는 건가요?int32_t는 32비트의 메모리 사이즈를 항상 갖게 된다고 하셨는데 그럼 다른 플랫폼에서도 32비트라는 건 변함없다는 의미가 아닌가요? 그럼 inttypes.h, PRId32도 필요없는 거고.. 그저 간혹 int가 64비트일 수도 있는 환경을 대비해서 사용하는 건가요?