묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결GSAP의 ScrollTrigger를 활용한 포트폴리오 제작
header영역 스크룰방향이벤트 제작 강의 에서
header active가 실행하지 않습니다 오타가 있나 아무리 봐도 똑같이 코딩된 거 같은데 .. 왜그럴까요???
-
미해결
fk가 없는 테이블들의 연관관계 질문입니다.
만약 DB의 ORDERS 테이블이 PRODUCT_ID를 외래키가 아닌 일반 컬럼으로 가지고있다면,위 사진처럼 ORDERS와 PRODUCT ENTITIY를 @ManyToOne과같은 어노테이션으로 연관시키면 안되는건가요? 그냥 pivate String productId 이런식으로 써야하는걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안에 제시된 string - split()의 효율성 관련 질문드립니다.
안녕하세요, 큰돌님!교안에서 제시된 내용을 기반으로 알고리즘 문제를 풀다가 궁금한 부분이 생겨 질문드렸습니다.교안에서 제시된 문자열 - split 함수는 아래와 같습니다.vector<string> split(string input, string delimiter) { vector<string> ret; long long pos = 0; string token = ""; while((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret; }저는 위 함수를 응용하거나 문제를 해결하는데, 오늘 백준의 5430번 문제를 해결할 때도 위와 같은 로직의 코드를 작성하여 문자열 split을 시도하였습니다.// I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string origin = _x.substr(1, _x.size() - 2); vector<string> vs_x(_n); if(origin.empty()) { } else { int pos = 0; int cycle = 0; while((pos = origin.find(',')) != string::npos) { string tmp = origin.substr(0, pos); vs_x[cycle++] = tmp; origin.erase(0, pos + 1); } vs_x[cycle] = origin; } 코드에 대해 부연설명을 드리자면, 입력을 통해 문자열을 받게 되면, 해당 문자열의 첫번째와 마지막 인덱스를 제외한 문자열을 origin에 저장한 후, 이 문자열 origin을 컴마(,)를 기준으로 split 하였습니다. 예를 들어, [1, 2, 3]이라는 문자열을 입력(_x)으로 받았다면, 변수 origin에 1,2,3을 저장한 후 컴마를 기준으로 문자열을 split할 수 있습니다.하지만, 위 코드와 함께 문제를 해결하고자 할 때, 지속적으로 시간 초과 문제가 발생하였습니다. 따라서 split 함수를 다음과 같은 로직으로 변경한 후 답안을 다시 제출하였으며, 그 결과 시간 초과가 발생하지 않고 문제를 해결할 수 있었습니다.// I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string token = ""; vector<string> vs_x(_n); int cycle = 0; for(int j = 0; j < _x.length(); ++j) { if(isdigit(_x[j])) { token += _x[j]; } else { if(!token.empty()) { vs_x[cycle++] = token; token = ""; } } } 제가 궁금한 것은 위에 제시된 split에 대한 두 개의 로직이 왜 효율성 차이가 나는지 잘 모르겠습니다.. origin.erase(0, pos + 1)이 O(n)의 시간 복잡도를 요구하면서, 첫 번째 로직은 O(n^2)의 시간 복잡도와 두 번째 로직은 O(n)의 시간 복잡도를 필요로 할 수도 있겠다는 생각이 들기도 하지만, 정확하게 어떤 부분이 큰 차이를 불러 일으키는지 잘 모르겠습니다. 감사합니다!
-
해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
댓글화면 레이아웃 디자인
안녕하세요 강의를 다 듣고 스스로 프로젝트를 개발하는중에 질문이 생겨서 질문드려요 저 댓글창부분을 android:layout_alignParentBottom="true"을 사용해서 하단에 고정시키려하는데 저 코드를 작성해도 고정이 안되는것같습니다. 리사이클러뷰를 적용하면 댓글창이 하단에 고정이 안되는것같습니다그리고 댓글창을 제외하고 나머지부분을 스크롤뷰로 감싸서 댓글창 빼고 다 스크롤뷰로 스크롤될수있게 적용했는데 오류가 있는지 디자인 미리보기 화면이 아얘 사라져? 버립니다..뭐가 문제인지 한번 봐주실수있을까요? <?xml version="1.0" encoding="utf-8"?> <layout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:orientation="horizontal"> <ImageView android:id="@+id/backbutton" android:layout_marginStart="30dp" android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/back_button"/> <ImageView android:layout_width="120dp" android:layout_height="25dp" android:layout_marginStart="100dp" android:src="@drawable/community_name"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" app:srcCompat="@drawable/circle" /> <TextView android:id="@+id/nickname1" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="4" android:text="닉네임" android:fontFamily="@font/bmjua_ttf" android:textSize="20sp" android:textColor="@color/black" android:gravity="center_vertical"/> <ImageView android:id="@+id/threedot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:src="@drawable/threedot"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:layout_marginTop="15dp" android:orientation="vertical"> <TextView android:id="@+id/title1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="제목" android:textSize="15sp" android:textStyle="bold" android:textColor="@color/black" android:layout_marginStart="30dp"/> <TextView android:id="@+id/content1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:layout_weight="1" android:text="내용" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <ImageView android:id="@+id/favorate1" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="1" android:layout_marginStart="30dp" android:src="@drawable/heart1" /> <TextView android:id="@+id/favorateText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginStart="5dp" android:textColor="@color/black" android:textSize="15dp" android:text="7" android:fontFamily="@font/bmjua_ttf"/> <ImageView android:id="@+id/comment1" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="1" android:layout_marginStart="20dp" android:src="@drawable/comment1" /> <TextView android:id="@+id/commentText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginStart="5dp" android:textColor="@color/black" android:textSize="15dp" android:text="5" android:fontFamily="@font/bmjua_ttf"/> <TextView android:id="@+id/time1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginStart="220dp" android:layout_gravity="center_vertical" android:fontFamily="@font/bmjua_ttf" android:textSize="10dp" android:text="2024.02.13" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="3dp" android:layout_marginTop="35dp" android:background="@color/bottomgray"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/commentRV" android:layout_width="match_parent" android:layout_height="680dp" android:layout_marginTop="30dp"/> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true"> <LinearLayout android:layout_width="wrap_content" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_marginStart="10dp" android:layout_marginEnd="10dp" android:layout_marginBottom="10dp" android:background="@drawable/button_radius_green_stroke"> <EditText android:id="@+id/commentArea" android:hint="댓글을 작성해주세요" android:layout_marginLeft="10dp" android:layout_width="310dp" android:layout_height="match_parent" android:background="@android:color/transparent"/> <Button android:id="@+id/commentBtn" android:layout_width="60dp" android:layout_height="45dp" android:layout_gravity="center_vertical" android:background="@drawable/button_radius_green" android:fontFamily="@font/bmjua_ttf" android:text="등록" android:textColor="@color/white" android:textSize="15dp" android:layout_marginEnd="8dp" /> </LinearLayout> </RelativeLayout> </LinearLayout> </RelativeLayout> </layout>해당 레이아웃 전체코드입니다
-
해결됨홍정모의 따라하며 배우는 C언어
함수 선언부와 정의부가 다른 파일에 있어도 빌드가 되는 원리.
안녕하세요,강의에서main.c 파일 안에 #include "my_print_fucntions.h"를 통해 my_print_functions.h를 main파일에 인클루드해주면, 함수의 선언부만 main.c에 복붙이 됩니다. 선언부는 main.c안에 놓이는거겠죠.그런데 이 때, #include "my_print_fucntions.c" , 함수의 바디가 정의되어있는 my_print_fucntions.c 파일을 main.c 안에서 인클루드해주지 않아도 되는 이유는, 링커가 알아서 함수를 찾아 연결해주기 때문이고, 그렇게 되는 이유는 헤더파일의 함수 선언부에서 extern 키워드가 생략되어있어서 그렇다고 봐도 될까요?( (extern) void print_hello(); 이렇게요.) 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
id의 중복 사용 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 Member의 필드에 id와 name이 있고, 이를 다시 Map으로 묶어서 사용하고 있습니다. save()가 정상적으로 처리되면 Map에는 key의 id값과 Member필드의 id값이 서로 같은 값으로 중복 저장되게 되는데요, 이렇게 설계하신 이유를 알고 싶습니다.
-
미해결IT보안을 위한 와이어샤크 네트워크 패킷 분석 실전
패킷 다운로드 안 됨
안녕하세요, 퀴즈 풀이 2탄은 제대로 다운로드가 되는데, 1탄은 코드가 감염되어 소유자만 다운 받을 수 있다고 뜨네요.. ajouunihospitalrn@naver.com으로 보내주시면 좋겠습니다.항상 잘 보고 있습니다. 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
클래스 필드의 접근 제어자 설정 기준
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클래스, 클래스의 필드나 메서드의 접근 제어자를 설정해줄 때, 어떤 것들을 private로 하고 어떤 것들을 public으로 설정하는 것이 바람직한지를 알고 싶습니다. 일관적인 기준이 있나요?예를 들어, MemoryMemberRepository는 public이고 store는 private으로 설정해주셨는데, 그 이유를 알고 싶습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Dispatcher과 웹 mvc의 동작 과정 질문 있습니다,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문1.DispatcherServlet는 따로 프레임워크에서 구현하지 않아도 되나요? 예를 들어, 1)DispatcherServlet이 모든 웹 브라우저로부터의 요청을 받는다.2)DispatcherServlet은 HandlerMapping으로 부터 주어진 request를 처리할 수 있는 Handler객체를 가져온다. 이렇다면, 사용자가 따로 DispatcherServlet를 구현할 필요 없이 스프링 프레임워크 자체에서 DispatcherServlet를 구현 + HandlerMapping을 받을 클래스들을 빈으로 만들어서 관리함.그래서 @RequsetMapping 같은 URL 요청이 들어오면 해당되는 클래스에게 요청을 넘긴다.이렇게 이해하면 옳게 이해한 것이 맞나요? 질문 2.저는 아래와 같이 웹 MVC 동작 과정을 이해 했습니다. 옳게 이해한 것이 맞나요?1.클라이언트가 서버에 요청을 하면 DispatcherServlet 클래스가 요청을 받음2.@Controller 어노테이션을 이용해 빈으로 등록한 컨트롤러를 찾아 매핑된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동함.3.컨트롤러는 해당 요청을 처리할 @Service 클래스를 찾아 로직을 수행함.4.서비스는 DB에 접근하여 요청을 수행하고 DTO를 통해 데이터를 컨트롤러에게 전달한다. 5.그 후 컨트롤러는 DTO를 통해 받은 데이터를 DispatcherServlet에게 다시 전달하고, DispatcherServlet는 응답과 함께 URL(view)를 반환해준다. 질문 3제가 위와 같이 이해를 했을 때, DTO가 Model이라고 이해를 하면 되는건가요? 감사합니다.
-
미해결AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안
특강 자료는 따로 없나요?
특강 자료는 전체 강의 자료에 없는거 같습니다.혹시 따로 제공되는 자료는 없을까요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
데이터 분석 SQL Fundamentals 강의 할인 문의
안녕하세요 강사님데이터 분석 SQL Fundamentals 할인 계획이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
getOrders, setOrder가 안되네요ㅠ
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 코드랑 똑같이 적었는데이 세 코드에서 오류가 떠요Cannot access japabook.jpashop.domain.Order이라고 오류가 납니다.오류 코드 링크 첨부하겠습니다https://drive.google.com/file/d/12M-uypQ20bE0SY4jNOyJii3ZBDtSpgT6/view?usp=sharing
-
해결됨스프링 핵심 원리 - 기본편
request 스코프 예제 만들기에서 springboot starter web 구현 추가후 실행 실패
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]build.gradle문서에 web 라이브러리 추가 후 CoreApplication에서 main을 실행시키니 오류가 뜹니다.. 오류문장은 다음과 같습니다.Execution failed for task ':compileJava'.> Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.inject:javax:inject. Required by: project :Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html 어떻게 해결하면 좋을까요?
-
해결됨[리액트 2부] 고급 주제와 훅
[1.2장 상품목록 화면] 1.2.3 Button 에서 기본 props? 관련 질문이 있습니다.
안녕하세요 선생님 질문이 있습니다.<Button whatelse={"will"}>주문하기 , 결제하기</Button> --- const Button = ({ whatelse }) => ( <button className="Button brand">{whatelse}</button> ); export default Button;children처럼 제가 따로 설정해주지도 않았는데 기본적으로 생성된 props들은 뭐라고 부르나요? const Button = ({ styleType, block, ...rest }) => { let className = "Button"; if (styleType) className += ` ${styleType}`; if (block) className += ` block`; return <button className={className} {...rest}></button>; }; export default Button; 또한 강의 후반에 ...rest로 children, onClick props 를 퉁치는데 이떄 children props 내용이 return하는 button element에 {children} 이렇게 들어있지 않아도 잘 렌더링이 되던데 이것은 뭐라 부르나요?
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
axios 컴포저블2 에서 useAxios에서 전달받은 resp값이 null로 나옵니다
useAxios.js 내 axios 연결 .then에서const resp = ref(null); //생략 .then(result => { resp.value = result; data.value = result.data; })이렇게 전달을 주면 postList.vue에서const totalCount = computed(() => resp.value.headers['x-total-count']);이렇게 받아오면 cannot read properties of undefined 'x-total-count' 이렇게 콘솔창에 x-total-count를 읽을수가 없다고 나와 콘솔에 resp.value를 해보니 null 이 찍혔습니다. 하여 useAxios.js에서.then(result => { resp.value = result; resp.value = resp.value.headers['x-total-count']; data.value = result.data; })resp에 x-total-count를 넣고postList.vue에서const { data: posts, resp: totalCount } = useAxios('/posts', { method: 'get', params, });구조분해?할당으로 totalCount에 넣으니 동작이 되었는데 원인을 알 수 있을까요..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
맥북에서 ./gradelw build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]오류 내용은 아래와 같습니다. FAILURE: Build failed with an exception. * What went wrong:A problem occurred configuring root project 'hello-spring'.> Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.2.2. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.2.2 > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.2.2 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5' but: 제 생각에는 프로젝트에의 자바와 맥북에서 기본으로 잡혀있는? 자바 버젼이 맞지 않아서 발생하는 문제 같습니다. inteliJ에서 설정되어 있는 자바openjdk-21 Oracle Open JDK 21맥북 터미널에서 확인한 자바 (java -version)openjdk version "11.0.19" 2023-04-18 LTSOpenJDK Runtime Environment Corretto-11.0.19.7.1 (build 11.0.19+7-LTS)OpenJDK 64-Bit Server VM Corretto-11.0.19.7.1 (build 11.0.19+7-LTS, mixed mode) 인터넷 검색으로 어찌 어찌 환경변수? 를 아래와 같이 수정을 하고 적용을 해봤지만 같은 오류가 발생합니다.
-
해결됨백엔드 개발자 성능 개선 초석 다지기
안녕하세요. 아직 강의를 듣지 않았지만 질문이 있습니다.
백엔드 개발자로서성능 개선과 부하 테스트 등은 어느 시점에 하는 것이 좋나요?제가 사이드 프로젝트를 하면서 필요할 때 듣고 바로 적용해보며 정리를 하려고 하는데 프로젝트 시작 전에 먼저 들어 놓고 신경 쓰며 개발을 해야 할 지, 개발 중에 적용 해야 할 지 개발 완료 후에 해야 할 지 감이 안 잡히네요.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
성능 측정 관련 강의가 있나요?
안녕하세요. 성능 최적화 관련 학습을 하고 있습니다.혹시 성능 측정, 모니터링 방법에 관련한 설명 부분이나 강의가 있을까요? 강의 작업들을 수행함으로 인해 얼마나 처리시간이 단축되는지 확인을 해보고싶은데 그런 부분은 개인적으로 따로 학습을 해야하는지, 아니면 잘 정리된 수업이 있는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 질문있습니다
http://boj.kr/b8eaa84254ba4993b722f0482d6c1280조합 함수를 다음 요소를 선택한다, 안한다로 나눠 뻗어나가도록 재귀를 구현하였습니다..1개를 택할 때는 따로 구해주었는데 어떤 걸 놓친 걸까요?테스트케이스는 모두 통과하였는데 오답입니다
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
4.4 통합테스트에서 정적 데이터로 테스트하는 대신 role 값을 미리 설정해 직접 돔에 접근하는 방식은 어떤가요?
안녕하세요우선 좋은 강의를 제작해주셔서 감사드립니다공식 문서만으로 테스트 코드 작성을 공부했다면 훨씬 시간이 많이 들었을 텐데한글로 설명을 듣고 문서를 보니 좀 더 빠르게 이해할 수 있는 것 같습니다. // answer 브랜치 코드 it('특정 아이템의 수량이 변경되었을 때 값이 재계산되어 올바르게 업데이트 된다', async () => { const { user } = await render(<ProductInfoTable />); const [firstItem] = screen.getAllByRole('row'); const input = within(firstItem).getByRole('textbox'); await user.clear(input); await user.type(input, '5'); // 2427 + 809 * 2 = 4045 expect(screen.getByText('$4,045.00')).toBeInTheDocument(); });궁금한 점은 현재 제공해주신 정답 코드에서는모킹 데이터의 결과 포맷을 알기 때문에 '$4,045.00' 이라는 텍스트 값이 dom에 마운트 되어야 테스트를 통과 시키는 방식인데요 it('특정 아이템의 수량이 변경되었을 때 값이 재계산되어 올바르게 업데이트 된다', async () => { const { user } = await render(<ProductInfoTable />); const [firstItem] = screen.getAllByRole('row'); const input = within(firstItem).getByRole('textbox'); // role은 price를 담는 div에 미리 추가했다고 가정 const price = Number(within(firstItem).getByRole('price').textContent); const value = 5; await user.clear(input); await user.type(input, value.toString()); const pricedResult = within(firstItem).getByRole('price').textContent; // 2427 + 809 * 2 = 4045 expect(priceResult.includes((value*price).toLocaleString())).toBe(true); });제가 작성한 방식은엘리먼트마다 role을 미리 지정해 둔 다음에테스트할 때마다 element들의 값에 접근해서 테스트를 진행하는 방식입니다.제가 생각했을 때에는 이 방식을 사용하면 element마다 role을 직접 설정해주어 element의 용도를 파악하기 더 쉽고 getAllBy... 메소드로 가져온 요소들에 대해 순회하여 테스트할 때 테스트 결과 값을 동적으로 생성하기 때문에 더 유연하지 않을까 라는 생각이 들었습니다. 궁금한 점은 제가 작성한 방식을 현업에서도 사용하는지잘 사용되지 않는 방식이라면 어떤 이유에서 잘 사용되지 않는지가 궁금합니다