묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMappingHandlerAdapter 궁금증이 있습니다.
@RequestMapping("/springmvc/v2/members/new-form") public ModelAndView newForm() { return new ModelAndView("new-form"); } @RequestMapping("/springmvc/v2/members/save") public ModelAndView save(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); ModelAndView mv = new ModelAndView("save-result"); mv.addObject("member", member); return mv; } 이 코드처럼 RequestMapping어노테이션이 붙은 메서드는 매개변수가 다를수도있는데RequestMappingHandlerAdapter가 알아서 잘 찾아서 handle 메서드에서 내부적으로 알아서 잘 굴러가게 구현이 되어있는건가요?몇가지 정해진 틀이있는건지 궁금합니다. 제가 임으로 int 나 String 같은 매개변수 넣어볼때는 안되더라구요
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL은 FROM절 없이 실행할 수 없다는게 맞는거죠?
QueryDSL을 공부를 하다가 JPQL은 FROM절 없이 사용할 수 없다는 말을 들었습니다.그래서 그렇구나 이해를 하기보다 정말 그런가 하고 찾아보려고 했는데공식문서를 어디를 참조해야할지 모르겠더라구요오라클 JPA 2.0에서 JPQL 설명이 있는데 그 부분을 참조하면https://docs.oracle.com/javaee/6/tutorial/doc/bnbuf.html#bnbujFROM 절은 식별 변수를 선언함으로써 쿼리의 도메인을 정의합니다.라고 적혀있더라구요 SQL과 다르게 JPQL은 도메인을 기준으로 쿼리를 실행하기 때문에 FROM절을 생략할 수 없다고 이해하면 될까요 ?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
완강 후 후속 강의, 공부법 질문..
파이썬 알고리즘 문제풀이 입문(코딩테스트 대비) 을 수강하는걸 추천하시나요,아니면 본 강의 하나만 복습하면서 BOJ문제를 풀어보는걸 추천하시나요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
npx create-react-app ./ 사용
npx create-react-app simplediray 를 통해 만들고 파일을 옮기는 것과 create-react-app ./을 사용하는게 동일한건가요 ?
-
미해결Next + React Query로 SNS 서비스 만들기
webstorm 테마 어떤거 사용하시나요?
저도 webstorm 사용하는데 영상에 사용하신 테마가 궁금합니다!!!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JdbcTemplateItemRepository2 적용 후 로그
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]JdbcTemplateItemRepositoryV2 적용 후 아래 화면처럼 로그가 뜬다고 설명해주셨는데제 PC 에서 실행 후 로그는 아래 화면 처럼 뜹니다.이에 관해 몇가지 질문이 있습니다. 1.로그가 서로 다른 이유가 무엇인가요??본인 PC 로그 표시 레벨은 기본 레벨인 Info로 되어있었기 때문2.어떻게 하면 강의 화면 처럼 로그가 띄울 수 있나요??application.properties 파일에 logging.level.org.springframework.jdbc=DEBUG 속성 추가(스프링 버전은 강사님이 첨부해주신 프로젝트를 가지고 사용한것이라 강의에서 사용된 프로젝트의 스프링 버전과 동일할 것으로 생각됩니다.)두 가지 질문 답변 부탁드립니다.감사합니다. 강의를 보다보니 답을 찾았습니다..... 세션 앞부분 강의에서 방법을 적어주셨었네요....제가 앞부분 강의를 제대로 집중해서 듣지 못했나봅니다.....
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
DB 테이블간 연결에 대한 질문입니다.
안녕하세요 태현님. 두가지 질문이 있습니다.1. 지금까지(34강) 강의를 따라 하고 MySQL 워크벤치에서 ERD를 확인해 보면테이블 간에 PK - FK로 연결이 안 되어있는데요연결을 안 해주어도 괜찮은 이유가 뭔지 궁금합니다.제가 NestJS나 Express.js 로 백엔드를 만들었을 때는 TypeORM, Prisma, Sequelize 같은 ORM을 이용했었는데그때는 코드단에서 테이블 간에 연결 처리 (PK - FK로 연결)을 해주면데이터베이스에서 확인을 해봤을 때이런 식으로 연결이 된 것을 확인할 수 있었거든요..혹시 제가 뭔가 잘못 알고 있는 걸까요?굳이 DB에서 실제로 연결을 안 해주어도 괜찮은 건가요??아니면 스프링 + JPA 조합의 특성인가요??2. 그리고 MySQL 워크벤치에서create table user_loan_history ( id bigint auto_increment, user_id bigint, book_name varchar(255), is_return tinyint(1), primary key (id) );이렇게 DB create 문을 작성해서 실행 시키지 않아도 서버를 실행시킬 때 자동으로 로컬 DB에 테이블을 생성해 주도록 하는 설정이 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-M 질문있어서 문의드렸습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님 강의 잘 보고있습니다!2-M문제를 풀때 to_string의 시간복잡도가 O(log n) , find가 O(N)이라서 시간복잡도에 문제가 있을줄 알았는데 해결이 되었습니다. 혹시 이 문제의 시간복잡도는 어떻게 될까요??
-
미해결스프링 핵심 원리 - 기본편
request 스코프 질문입니다.
1.클라이언트 A가 HTTP request를 Controller에 요청한다.Controller은 request scope에 요청하여 빈 인스턴스가 생성된다.클라이언트가 동일한 HTTP request를 Service에 보내면 기존에 이미 만들어진 A 전용 빈 인스턴스를 사용한다.클라이언트 B가 HTTP request를 요청하면 마찬가지로 B 전용 빈 인스턴스가 만들어지고 위와 동일한 과정을 거친다.로 이해하면 될까요? 2.여기서 message가 하는 기능은 무엇이고, init()과 close() 메소드 내에서 this를 왜 넣어줬는지 궁금합니다. 3.여기서 provider이 왜 해결방법인지 이해가 안갑니다... provider가 DL기능을 하는 거로 아는데, 어차피 이때도 사용자의 요청을 받은 상태가 아니기 때문에 오류가 발생하는거라고 생각했습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자 질문입니다.
혹시char ch3 = 'a' + 1;이 코드에서 1은 int형 정수로 출력이 되는데 char 타입이 자동으로 변환을 해서 2바이트로 할당하게 되는건가요?그리고 1이라는 숫자에 마우스 커서를 놔두면 (int)1이라고 표현이 되는데 여기서 1은 데이터타입이 문자가 아닌 정수로 변환해야 해서 자동 변환 시켜주는건지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
Annotationconfigapplicationcontext 클래스의 생성자 설명
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]위와 같이 AnnotationConfigApplicationContext 클래스 내부 API를 보면 많은 생성자들이 오버로딩 되어있는데 각각의 생성자 기능이 정확히 어떤 건지 궁금합니다 !특히 그냥 설정 정보 클래스를 하나 지정했을 때와 여러 개의 클래스를 지정했을 때 어떤 차이가 있는지 궁금합니다!
-
미해결데이터 분석 SQL Fundamentals
질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님.질문이 좀 있습니다.a,b,c,d table 과 id 컬럼이 있다고 가정1) 여기서 [1.1] 쿼리는 실행 계획으로 치면 a,b,c를 이너조인해서 만든 데이터셋으로 d와 아우터조인해서 결과 도출.이렇게 이해하고 있습니다.그런데, 여기서 궁금한것이 LEFT OUTER JOIN은 서술 왼쪽 테이블이 드라이빙 고정으로 알고 있습니다.그래서, [1.2] 쿼리는 실행 계획으로 치면 a,b를 이너조인해서 만든 데이터셋으로 d와 아우터조인해서 데이터 셋을 새로만듬.그리고 , c와 이너조인 진행 이렇게 이해하면 될까요?2) 1.1과 1.2처럼 아우터조인의 서술 위치에 따라서 결과값에 대한 데이터가 달라질수 있나요?결국 a.id와 조인하기 때문에 해당 기준으로 데이터를 뽑아서어디에 서술하던지 데이터는 달라질수 없는거같은데 제가 이해한게 맞는지 질문드립니다.3) 2번을 질문드린 이유중 하나인데요.아우터 조인을 쓰면 테이블의 드라이빙 순서가 고정되버리니까 서술한 위치에 따라서 실행계획이 바뀔테고 그러면 데이터가 변경될수도 있는 사례가 있을까요?실행계획은 아무리 바뀌어도 데이터의 영향을 주는건 없는걸로 알지만 , 자꾸 뭔가 헷갈려서 질문드립니다.4) a.id = b.id on b.id =c.id on c.id =d.id 이런식으로 조건을 주면이너 조인은 상관 없겠지만 아우터 조인을 진행할 때는 데이터가 달라질거 같은데 보통은 아우터 조인 쿼리를 작성할 때 조인 조건을 어떻게 줘야하나요?제가 적은 예시처럼 쿼리를 짜나요??질문이 두서 없고 너무 많아서 죄송합니다..강사님 강의를 통해 확실하게 잡고 가지 않으면 추후에 또 다시 공부를 해야할 거 같아 질문드립니다.[1.1]select * from a INNER JOIN b ON a.id = b.idINNER JOIN c ON a.id = c.idLEFT OUTER JOIN d ON a.id = d.id;[1.2]select * from a INNER JOIN b ON a.id = b.idLEFT OUTER JOIN d ON a.id = d.idINNER JOIN c ON a.id = c.id;
-
해결됨Practical Testing: 실용적인 테스트 가이드
긴 작업일 경우 트랜잭션을 걸지 말아도 된다는 점이 이해가 잘 안갑니다.
안녕하세요. 테스트 코드를 수강하고 있는 학생입니다. 긴 작업일 경우 트랜잭션을 걸지 말라고 하셨는데. 조회용 트랜잭션이 Repository 단에서 걸린다는 말씀을 하셨는데 Repository의 조회 로직이 수행될 때 트랜잭션이 걸리는 건가요? 뭔가 잘못 이해한거 같기도 해서 질문합니다. 그리고 @RequiredArgsConstructor @Service public class MailService { private final MailSendClient mailSendClient; private final MailSendHistoryRepository mailSendHistoryRepository; public boolean sendMail(String fromEmail, String toEmail, String subject, String content) { boolean result = mailSendClient.sendEmail(fromEmail, toEmail, subject, content); if (result) { mailSendHistoryRepository.save(MailSendHistory.builder() .fromEmail(fromEmail) .toEmail(toEmail) .subject(subject) .content(content) .build() ); return true; } return false; } } 여기서는 Transaction을 걸어줘야 하는게 맞는거 같아서.이 부분도 궁금합니다. 요약저는 서비스 Layer에서 Transaction을 걸어 db작업에서 문제가 발생했을 경우 rollback 되어야 한다고 생각했습니다.강의에서 긴 작업들이 실제로 트랜잭션에 참여하지 않아도 되는데 -> OrderStatisticsService에서는 CUD작업이 아니니깐 Transaction을 안 걸어도 된다.?MailService에서는 Transaction을 걸어줘야 하는게 아닌가요? (Create 작업 수행)조회용 트랜잭션이 Repository 단에서 걸린다.? 뭔지 잘 모르겠습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4 문제
int totalCost = 0; 을 왜 while문 안에 쓰면 안 되고(제가 주석 달아 놓은 부분) while문 밖에 써야 하나요?while문 안에 썼을 때 총 비용이 0으로 나오는 오류가 발생했는데 왜 그런 오류가 발생한 건지 모르겠습니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
논리 연산자 알아보기 강의 질문입니다.
7번 줄에 \는 어떤 이유로 넣으신 건가요? 역 슬레시를 무슨 이유로 사용 하신 건지 궁금합니다.
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
4-8. 지표 정의하기 연습문제 1~4번
먼저 연습문제 1,2,3번은 모두 비슷한 관점으로 배달 서비스의 특정 기능에 대한 사용성, 활성화 정도에 대한 지표라고 말씀해주신 것을 참고해서 3가지 문제는 모두 비슷한 관점으로 지표를 정의해봤습니다!제가 생각한 세 문제의 공통점은해당 기능에 대한 사용성 또는 '활성화'에 대한 정의가 필요하다.배달 앱의 퍼널 관점에서 보면, 3가지 문제에 나오는 기능들은 모두 기능 사용의 결과로 음식점 결과 리스트를 보여준다. (단, 배너 영역 기능과 동네 맛집 기능은 음식점 리스트가 아닌, 이벤트 페이지 또는 음식점 상세페이지를 보여줄 수 있음.) 저는 두 가지 공통점을 고려해서 기능의 활성화 지표에 대한 후보로 3가지 지표를 생각해봤습니다.클릭률 = 해당 기능 (또는 영역) 을 클릭한 횟수 / 해당 기능에 노출된 횟수페이지 전환율 = 해당 기능 클릭 후 결과로 나오는 음식점 리스트 중에 하나 이상을 클릭하여 음식점 상세 페이지로 이동한 횟수 / 해당 기능을 클릭한 횟수구매 전환율 = 해당 기능을 통해 주문 완료까지 진행한 횟수 / 해당 기능을 클릭한 횟수 셋 중에 어떤 지표를 선택할지는 활성화 지표를 보는 목적과 문제 정의에 따라 달라질 수 있습니다.활성화 지표를 기능에 대한 만족도에 관계없이 '단순히 해당 기능의 반응성'으로 정의한다면 클릭률만으로 충분하겠지만,활성화 지표를 '해당 기능을 통해서 나온 결과에 만족하여 관심이 가는 음식점이 하나라도 존재하는 것'으로 정의한다면, 2번의 페이지 전환율을 함께 활용하는 게 적절하다고 생각했습니다.3번의 구매 전환율의 경우에는 활성화 지표를 '해당 기능이 이후 구매 전환에 기여하는 정도'로 정의한다면 유의미한 지표가 되겠으나, 해당 기능으로 나온 결과에는 만족했더라도 음식점 상세페이지부터 주문 완료까지 이어지는 이후 퍼널에서 불만족하는 부분이 발생하여 주문 전환이 이루어지지 않는 케이스가 존재할 수 있다는 점을 고려해서 저는 기능의 활성화 지표로는 2번 페이지 전환율이 가장 적절하다고 판단했습니다. 위의 결론을 바탕으로 각 문제의 지표를 정리해보면,연습문제 1.메뉴 카테고리와 이런 음식 어때요 기능의 경우에는 활성화 지표를 페이지 전환율 = (메인화면에서 각 영역을 클릭한 후 나오는 음식점 리스트 중에 하나 이상을 클릭한 횟수) / (해당 영역을 클릭한 횟수)로 정의하고, 클릭률 = (해당 영역을 클릭한 횟수) / (메인 화면을 본 횟수)를 보조 지표로 정의했습니다.배너 영역과 동네 맛집 기능의 경우에는 음식점 리스트를 보여주지 않고 바로 음식점 또는 이벤트 상세페이지로 이동하는 경우로 가정했을 때, 활성화 지표를 클릭률 = (해당 영역을 클릭한 횟수) / (메인 화면을 본 횟수)로 정의했습니다. 단, 배너 영역의 경우에는 클릭하고 나서 이벤트 쿠폰 목록을 보여주는 상세 페이지로 이동하는 경우를 예시로 들었을 때, (클릭의 결과로 나오는 쿠폰 중에 하나 이상을 다운로드한 횟수) / (해당 배너를 클릭한 횟수)로 활성화 지표를 정의할 수도 있을 것 같습니다. 연습문제 2.검색 기능의 만족도(=활성화) 지표는 페이지 전환율 = (검색의 결과로 나오는 음식점 리스트 중에 하나 이상을 클릭한 횟수) / (검색 기능을 사용한 횟수) 로 정의했습니다. 유저가 검색 결과에 만족한다면, 검색 결과로 나온 음식점 중에 하나라도 클릭하여 해당 지표가 높아질 것이고, 그렇지 않다면 검색 결과 중에 하나도 누르지 않고 이탈하여 해당 지표에 낮아질 것이기 때문입니다. 연습문제 3.검색 필터 기능의 활성화 지표는 크게 두 가지 차원에서 정의해봤습니다.필터의 종류에 관계없이 검색 필터 기능 자체의 활성화 지표검색 필터의 세부 종류(ex. 배달 빠른 순, 배달팁 낮은 순, 주문 많은 순, 별점 높은 순)에 대한 활성화 지표두 가지 경우 모두 활성화 지표는 페이지 전환율 = (검색 필터 사용의 결과로 나오는 음식점 리스트 중에 하나 이상을 클릭한 횟수) / (검색 필터 기능을 사용한 횟수)로 정의했으며, 여기서 '검색 필터를 사용했다'라는 것은 디폴트 값인 '기본순'이 아닌 다른 필터를 선택하고 적용한 경우를 의미합니다.두 가지 차원으로 지표를 보는 이유는, 1번 지표의 경우는 검색 필터 자체의 활성화 정도를 보는 것이 목적이라면, 2번 지표의 경우에는 각 검색 필터의 세부 종류에 따라서 활성화 지표의 정도를 비교하여, 상대적으로 활성화 정도가 높은/낮은 필터를 확인하고 그에 맞는 실험을 시도하는 것이 목적입니다.예를 들어서, '활성화 지표(2번 지표)가 높은 필터의 순서대로 위에서부터 내림차순 정렬해서 보여주었을 때 검색 필터 전체의 활성화 지표(1번 지표)가 높아질 것이다.' 라는 가설을 세우고, A/B 테스트 등을 통해 검증한 결과를 토대로 검색 필터의 기능을 최적화할 수 있을 것으로 기대했습니다. 문제를 풀면서 질문이 하나 생겼는데, 만약 기능의 활성화 지표를 '해당 기능이 이후 구매 전환에 기여하는 정도'로 정의한다면, 밑의 두 가지 지표 중에 어떤 것이 더 적합한 것인지 궁금합니다!구매 전환율(CVR) = 해당 기능을 통해 주문 완료까지 진행한 횟수 / 해당 기능을 클릭한 횟수해당 기능을 통해서 주문 완료한 횟수 / 전체 주문 완료 횟수 일반적으로는 1번을 쓸 것 같은데 2번도 쓸 수 있는 유의미한 지표가 될지 궁금합니다! 연습문제 4. 배달 서비스에서 가장 중요한 지표결론부터 말씀드리면, 저는 가장 중요한 지표로 월 단위의 주문 완료 횟수를 선택했습니다. 그 선택의 과정을 로직트리로 그려봤는데요, 먼저 배달 서비스의 순이익을 늘리는 중요한 지표를 보겠다는 데서 출발하여 크게 매출을 늘리거나, 비용을 줄이는 파트로 나누었습니다.비용 감소의 측면에서는 라이더에게 지급하는 배달료나 운영비 등은 적정선 이하로 줄이기 어려운 비용이라고 생각해서 중요 지표 후보에서 탈락시켰습니다.매출 파트는 배민 서비스를 기준으로 전반적인 수익 구조에 대해서 찾아본 후에 작성했는데,배달 서비스의 주요 매출원은 크게 음식 배달로 발생하는 수수료와 광고 수수료로 나누었고,광고 수수료는 주문이 발생할 때마다 금액의 일부를 수수료로 얻는 '오픈리스트 광고'와 점주들이 지역별로 깃발을 꽂아서 광고를 노출시키는 대신에 고정 광고비를 내는 '울트콜 광고'와 그 외 광고로 나누었습니다.여기서 배달 중개 수수료와 오픈 리스트 광고는 '배달 주문을 통해서 얻는 매출'로 묶고,배달 주문을 통해서 얻는 매출은 주문 완료 횟수와 주문 한 건당 평균 주문 금액에 비례한다고 정의하여,두 가지 지표를 가장 중요한 지표의 후보로 선정했습니다. 두 지표 모두 중요하다고 생각하지만, 주문 완료 횟수가 더 중요하다고 생각한 이유는 평균 주문 금액이 아무리 많아도 주문 완료 횟수 자체가 적으면 매출에 의미있는 기여를 하지 못한다고 생각했기 때문입니다. 그에 반해 평균 주문 금액의 경우에는 일단 주문을 완료하면, 업체별로 지정한 최소 주문 금액만큼의 하한선은 보장되기 때문에 주문 완료 횟수가 더 유의미한 지표라고 판단했습니다. (하지만 이 부분은 실제 데이터를 보면서 판단하는 게 정확하다고 생각합니다.) '주문 완료 횟수' 지표에 대한 시간축과 차원에 대해서도 고민해봤는데,시간축의 경우에는 배달앱은 SNS처럼 하루에 수시로 접속하거나 주문하는 서비스는 아니며, 하루에 평균 1-2번 정도 주문하는 것이 일반적이라고 생각해서(이 부분도 데이터를 봐야 함), 일 단위로 주문 완료 횟수를 파악하는 것은 의미가 없다고 생각했습니다. 그래서 시간축을 좀더 넓게 잡아서 월 단위의 주문 완료 횟수를 중요 지표로 선택했습니다. 실제 배달 서비스의 VIP 등급도 월 단위의 주문 횟수를 기준으로 한다는 점에서도 유의미한 지표로 판단했습니다. '월 단위 주문 완료 횟수'를 늘리기 위한 방법은 퍼널의 관점에서 맨 끝 단계(결제 단계)부터 개선하는 것이 효과적이라고 생각했습니다. 결제 퍼널 개선을 위해서는 음식을 장바구니에 담았으나, 결제 페이지에서 이탈하는 고객과 이탈하지 않고 주문을 완료하는 고객을 분류하고 두 집단의 고객 행동 간에 어떤 차이가 있는지 데이터를 통해 파악하는 것이 필요합니다. 예를 들어서, 데이터 분석의 결과로 결제 수단을 선택하는 과정에서 이탈률이 가장 높다는 것을 발견했다면, 이탈의 원인에 대한 가설로 '원하는 결제 수단이 없거나 카드 등록 과정이 복잡하다.'를 세우고, 그에 맞는 액션 플랜(간편 결제 도입, 카드 등록 과정의 단순화 등)을 도출한 후, 실험을 통해서 결제 수단의 단순화가 이탈률 감소 -> 월단위 주문 완료 횟수의 증가로 이어지는지 확인해야 합니다. 쓰다 보니까 너무 장황하게 썼나 싶긴 하네요..😂글이 길어져서 일단 4번까지만 올리고 나머지는 다음 글로 올리겠습니다!문제 풀면서 느낀 점은 도메인이나 비즈니스 모델, 수익 구조에 대한 이해가 아직 부족해서 공부가 필요한 것 같네요ㅜㅜ 제가 많이 쓰는 서비스인데도 이 기업이 어떻게 돈을 버는지, 광고 수수료 구조는 어떻게 되는지, 어떤 수익원이 가장 많은 퍼센트를 차지하는지? 등등 모르는 것이나 봐도 헷갈리는 게 많네요..ㅋㅋ 그래서 연습문제 4번이랑 6번을 풀면서 자료조사를 가장 많이 하게 된 것 같아요ㅎㅎ카일 님이 기술 블로그에 쓰신 https://zzsza.github.io/diary/2020/08/02/how-to-study-business/이 글도 읽어봤는데 비즈니스에 대한 이해가 정말 필요한 걸 느끼게 된 것 같아요. 혹시 도메인 관련 공부 방법으로 더 추천해주실 만한 것이 있으면 알려주실 수 있을까요..?
-
미해결
python 숫자 출력
python에서 숫자를 출력할 때 print('{:10d}'.format('42'))을 실행하면 문자열이랑 다르게 왼쪽부터 시작하고 오른쪽에 공백이 생기는 것이 아닌가요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
팝업이 안뜹니다. AssertionError: Tkinter is required for pymsgbox
AssertionError: Tkinter is required for pymsgboxpip install tk 도 해봤지만 자꾸 에러메시지가 뜹니다. 구글링 해봐도 답이 안나와서 질문드립니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
yml파일에서 jpa설정을하고 에러가나요
Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [boolean] for value [ture]이런 오류가나는데 뭐가 문제일까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
에러 발생 코드 관련 질문입니다.
//BookService @Service public class BookService { private final BookRepository bookRepository; private final UserLoanHistoryRepository userLoanHistoryRepository; private final UserRepository userRepository; public BookService( BookRepository bookRepository, UserLoanHistoryRepository userLoanHistoryRepository, UserRepository userRepository ) { this.bookRepository = bookRepository; this.userLoanHistoryRepository = userLoanHistoryRepository; this.userRepository = userRepository; } @Transactional public void saveBook(BookCreateRequest request) { bookRepository.save(new Book(request.getName())); } @Transactional public void loanBook(BookLoanRequest request) { // 1. 책 정보를 가져온다. Book book = bookRepository.findByName(request.getBookName()) .orElseThrow(IllegalArgumentException::new); // 2. 대출기록 정보를 확인해서 대출중인지 확인한다. // 3. 만약에 확인해는데 대출 중이라면 예외를 발생시킨다. if (userLoanHistoryRepository.existsByBookNameAndIsReturn(book.getName(), false)) { throw new IllegalArgumentException("이미 대출되어 있는 책입니다"); } // 4. 유저 정보를 가져온다. User user = userRepository.findByName(request.getUserName()) .orElseThrow(IllegalArgumentException::new); // 5. 유저 정보와 책 정보를 기반으로 UserLoanHistory를 저장 userLoanHistoryRepository.save(new UserLoanHistory(user.getId(), book.getName())); } } 북서비스 코드인데요// 1. 책 정보를 가져온다. Book book = bookRepository.findByName(request.getBookName()) .orElseThrow(IllegalArgumentException::new);이 부분에서 // 2. 대출기록 정보를 확인해서 대출중인지 확인한다. // 3. 만약에 확인해는데 대출 중이라면 예외를 발생시킨다. if (userLoanHistoryRepository.existsByBookNameAndIsReturn(book.getName(), false)) { throw new IllegalArgumentException("이미 대출되어 있는 책입니다"); } 이 부분 처럼 "존재하지 않는 책입니다" 라는 메세지를 터미널(콘솔인가요? 이거 찍히는 곳 명칭이 터미널인지 콘솔인지 모르겠네요) 에 찍어주려면 어떻게 해야하나요? 그리고 첫 번째 경우와 두 번째 경우에 에러를 발생시키는 방법이 다른 이유는 무엇인지 궁금합니다.