묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
강의자료 최신화 요청 드립니다.
안녕하세요, 강의자료 다운로드 화면에서 받아지는 PDF가 현재 강의 내용과 차이가 있습니다.자료 최신화 부탁드립니다~
-
미해결워드프레스(WordPress) 완전정복
백그라운드 이미지ㅠㅠ
백그라운드 이미지가 안나와요.왜그런거에요?
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
드론 작동
안녕하세요! 혹시 드론의 크기를 키우면 스크립트에서 변경해야 할 내용이 있나요? 영상과 똑같이 한 후 terrain을 추가하고 드론의 크기를 키우면 드론이 움직이지 않아요..
-
해결됨ARM Cortex-M 프로세서 프로그래밍
Thumb2 기반 ldr r0, [PC, #imm] 명령어 해석법 질문 드립니다.
강의 잘 보고 있습니다.주소 지정 작업을 위해 기본 레지스터로 사용될 경우 왜 항상 4바이트 정렬해야하나요?강의 마지막 부분에서 나온 예를 보면0x08000632에서 로드 명령을 실행하는 동안 PC 레지스터는 0x08000636로 읽지만-> 파이프라인 구조니까 0x08000632에서 실행하는 동안 PC의 값은 Thumb의 경우 +4, Thumb2의 경우 +8가 될 것으로 생각이 됩니다.ldr...[pc]의 기본 주소는 Align(0x08000636, 4), 즉 0x08000634이다.-> 왜 4바이트 정렬을 해야하는지 이해가 가지 않습니다.
-
미해결깃헙 블로그(Github blog)로 차별화 된 나만의 홈페이지 만들기!
유투브 강의랑 내용이 같은것같은데....
선생님!!!유투브 강의랑 내용이 같은것같은데....혹시 내용 업데이트 될예정인가요 ㅜㅜ???아니면 그대로 유지인가요..?
-
미해결
Spring Mybatis Test 관련 질의
안녕하세요김영한 강사님 강의를 잘 듣고 있는 학생입니다.항상 친절한 대답 해주셔서 감사합니다. 질문 1. MyBatis로 테스트 연습 해보고 있는데요. 테스트시 @MybatisTest를 이용하는 게 있고,@Mock(Mokito)를 이용하는 방법이 있더라고요. 혹시 두개의 차이가 방법론의 차이인건지 아니면 Mybatis 연동 테스트시에는 @MybatisTest를 이용하고, 기타 서비스, 매퍼등 테스트시에는 @Mock를 이용하는 건지 궁금합니다. 질문 2. 블로그 참고하여 아래처럼 테스트해보았는데 NullPointer Exception이 떠서 해결방법이 어떤건지 궁금합니다(참고 블로그 : https://plz-exception.tistory.com/28)OrderMapper@Mapper public interface OrderMapper { OrderVO getOrder(@Param("seq") Long seq); List<OrderVO> getOrders(); }OrderVO@Getter public class OrderVO { private Long productseq; private String productName; public OrderVO() { } public OrderVO(Long productseq, String productName) { this.productseq = productseq; this.productName = productName; } }OrderMapper.xml<mapper namespace="tdd.test.OrderMapper"> <select id="getOrder" resultType="OrderVO"> Select * from order_product where seq = #{seq} </select> </mapper>Test java@MybatisTest @Slf4j @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class OrderMybatisTestTest { @Autowired private OrderMapper orderMapper; @Test @DisplayName("Order Mapper Test") public void mybatis_Mapper_XML_테스트() throws Exception { //given Long seq = 1L; //when OrderVO order = orderMapper.getOrder(seq); //then assertThat(order.getProductseq()).isEqualTo(1L); //log log.info("테스트 결과 {} / {}", order.getProductseq(), order.getProductName()); } }Error
-
미해결실전! Querydsl
QueryDSL 5.0.0 기준으로 강의 내용을 정리했는데 올바르게 이해한 것일까요?
searchPageSimple(): 조회 쿼리와 카운트 쿼리를 한번에 실행searchPageComplex(): 조회 쿼리와 카운트 쿼리를 분리QueryDSL 5.0.0부터는 fetchResults()와 fetchCount()를 deprecated 메서드로 공지함에 따라, 강의 내용처럼 searchPageSimple()과 searchPageComplex()를 구분해서 구현할 필요 없이 searchPageComplex()의 방식으로만 구현하면 됨.@Override public Page<MemberTeamDto> searchWithPaging(MemberSearchCond cond, Pageable pageable) { // 데이터 조회 쿼리 (페이징 적용) List<MemberTeamDto> content = queryFactory .select( new QMemberTeamDto( member.id.as("memberId"), member.username, member.age, team.id.as("teamId"), team.name.as("teamName") ) ) .from(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); // count 쿼리 (조건에 부합하는 로우의 총 개수를 얻는 것이기 때문에 페이징 미적용) Long total = queryFactory .select(member.count()) // SQL 상으로는 count(member.id)와 동일 .from(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .fetchOne(); return new PageImpl<>(content, pageable, total); } 이 때, total을 아래와 같이 구할 수도 있지만long total = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .fetch() // 조건에 부합하는 전체 데이터를 조회 (List) .size(); // List의 길이로 total을 구하기count 함수는 SQL 차원에서 지원하기 때문에 굳이 이렇게 전체 데이터를 받아온 뒤에 애플리케이션 레벨에서 별도로 size()를 호출해서 구할 필요 없고, 처음부터 카운트 쿼리를 호출하는 것이 나음.이유는 전체 데이터를 불러오고 나서 size()로 구하는 방식은 영속성 컨텍스트에 데이터를 전부 받아온 뒤에 개수를 따로 세는 것이기 때문에 불필요하게 메모리를 잡아먹기 때문. total을 구하는 방식에 대한 내용은 강의에 언급되지 않았기 때문에 제가 따로 검색해보고 내린 결론입니다. 제가 생각한 것이 맞는지 궁금합니다.이외에도 잘못된 부분이 있다면 지적해주시면 감사하겠습니다.
-
미해결프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
'is' 와 '==' 언제 사용하나요?
'is'와 '==' 차이점은 어느 정도 이해되는데, 각각을 언제 사용해야 하는지는 잘 모르겠습니다. 검색을 해보면 주로 '==' 사용하고 None 과 비교할 때 'is'를 사용한다고 하는데 실제로 이렇게 사용하나요?z = 'None'a = Noneprint(f'z is None : {z is None}')print(f'z == None : {z == "None"}')print(f'a is None : {a is None}')print(f'a == None : {a == "None"}')z is None : False z == None : True a is None : True a == None : False
-
미해결AWS Certified Advanced Networking - Specialty 자격증 준비하기
강의 업데이트 문의
Ans-c01 강의 업데이트는 2월 지나 3월인데 언제 되는건가요?
-
해결됨배달앱 클론코딩 [with React Native]
Sentry와 CodePush 동시 사용
안녕하세요 제로초님!코드푸시와 센트리를 동시에 사용하려고 하는데 의문이 있어서 질문드립니다.https://docs.sentry.io/platforms/react-native/manual-setup/codepush/제로초님은 공식문서에서 제시하는 방법 중에 프로미스 방법, codePush.getUpdateMetadata().then(update => { if (update) { Sentry.init({ // ... release: ${update.appVersion}+codepush:${update.label}, dist: update.label, }); } }); 아니면 ${BUNDLE_ID}@${APP_VERSION}+codepush:${DIST} 수동으로 직접 설정해서Sentry.init({ // ... release, dist, });사용하고 계신가요?문서가 잘 이해가 안되는데 Making Releases 이 부분을 코드 푸시 할 때마다 수동으로 해주어야 하는지 궁금합니다.감사합니다.
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
슈퍼 테스트2 강의 질문입니다
describe('GET /users는', () => { it('user리스트를 limit만큼 가져왔다', (done) => { request(app) .get('/users') .end((err, res) => { console.log(res.body) done() // 우리가 만든 API서버는 비동기로 동작한다. 그래서 비동기에 대한 처리로 콜백함수를 호출해야 한다?? }) }) }) 강사님께서 콜백함수 done()을 호출하는 부분에서 다음과 같이 말하셨습니다..."우리가 만든 API서버는 비동기로 동작한다. 그래서 비동기에 대한 처리를 해야한다"그런데 done()이라는 콜백함수를 호출하는 것이 어떤의미에서 비동기에 대한 처린인지 이해가 가지않아 질문을 남깁니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
3:40 실행 오류
선생님 사양은 이렇습니다. id 'java' id 'war' id 'org.springframework.boot' version '2.7.9' id 'io.spring.dependency-management' version '1.0.15.RELEASEsuper.service()는 지운 상태에서 강의와 똑같이 실행했습니다. 에러가 뜹니다 도와주세요!-에러 메시지-:: Spring Boot :: (v2.7.9)2023-03-07 01:12:02.179 INFO 12604 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 11.0.16 on DESKTOP-FAEKQ27 with PID 12604 (C:\Users\doehyun\Desktop\study\servlet\out\production\classes started by doehyun in C:\Users\doehyun\Desktop\study\servlet)2023-03-07 01:12:02.190 INFO 12604 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"2023-03-07 01:12:03.347 WARN 12604 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet2023-03-07 01:12:03.359 INFO 12604 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2023-03-07 01:12:03.400 ERROR 12604 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.9.jar:2.7.9] at hello.servlet.ServletApplication.main(ServletApplication.java:14) ~[classes/:na]Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.7.9.jar:2.7.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1249) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25] ... 13 common frames omittedCaused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] ... 20 common frames omittedProcess finished with exit code 1
-
미해결언리얼 엔진4 입문 (C++ 기반)
ConstructorHelpers가 Static 인것과 아닌것의 차이가 궁금합니다.
언리얼 5.1로 강의를 듣고 있습니다.해당 부분에서 경로가 뭔가 잘못되었는지 SM.Succeeded() 가 false 나옵니다.혹시 파일이 잘못되었나 싶어 다른 Skeletal Mesh 경로도 넣어보고, 다른 에셋도 받아서 넣어봤는데 여전합니다.플레이 후 아웃라이너 창의 MyCharacter 의 디테일창에서 Mesh 를 직접 넣어주면 정상적으로 입혀집니다. 한참 문제를 해결하려고 이것저것 찾아보고 해보고 하다가, Static ConstructorHelpers에서 Static 선언을 빼고 선언하니까 되더라구요.ConstructorHelpers 는 각 액터들이 생성될 때 순서대로 호출되니까 static 으로 하나만 있어도 된다. 라고 이해했는데, 왜 이런 문제가 생기는지 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
entity수정
//@NoArgsConstructor(access = AccessLevel.PROTECTED)setter사용은 신중하게 선택하라고 하셨는데,Service에서 수정을 하려고 하때, setter사용안하고 생성자로 수정을 하려고 했지만 안되었습니다.service에서 entity 수정시에는 무조건 setter 수정해야한가요??
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
안녕하세요. 람다에서 외부변수를 사용하는 Closure관련해 궁금해 질문드려요.
안녕하세요. 먼저 질좋은 강의 만들어주시고 제공해주셔서 감사드려요!강의중 Closure가 자바와 다르게 final이 아닌 var변수를 람다안에서 값을 변경가능한것까지 이해하였습니다. 다른 궁금증이 하나 생겨서요. Closure가 람다를 진입하기전 변수를 포획해서 진행한다고 하셨는데, 이는 동시성 문제로부터 자유롭나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
새로운 객체를 만들때 new Knight 를 두고 왜 knight clone()을 사용하는지 궁금합니다.
힙과 스택을 공부해보면 new 연산자를 통해서 각기 다른 객체를 만들수 있는데 왜 굳이 clone 함수를 만들어서 하는건가요?기존의 hp attack 값을 그대로 복사한체 새로운 객체를 만들수있어서 그런가요??
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
[공유] next 13 버전 Link 태그 속 a 링크 오류
Error: Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>. Learn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchornext 13 버전 이후로부터는 Link 태그 속에 a 태그 넣지 않아야 정상 작동 합니다. 만약 꼭 Link 속에 a 태그를 넣어야 한다 (예시, 이전 버전 코드를 13으로 변경하는데 class 속성 등이 a 태그에 있다) link 에 legacyBehavior 넣으면 됩니다.<Link href="/" legacyBehavior> <a className="... code"> </a> </Link>
-
해결됨[코드캠프] 시작은 프리캠프
회원가입 폼 기능 추가
안녕하세요 이제 마지막 파이널 과제를 하고 있고, 기능 추가를 위하여 고민하는데 어떻게 event 값을 반환해야 할 지 감이 안 와서 여쭤봅니다.제가 추가하고자 하는 기능의 흐름은// 1. 핸드폰 번호 작성 시에 알아서 옆으로 커서 넘어가도록 만들기. // 2. 비밀 번호와 비밀 번호 확인이 일치하는 경우에 인증번호 전송 가능해지기. // 3. 전송 누르면 인증 번호가 화면에 표시되고, 3분 카운트가 시작된다. 그리고 인증 완료 버튼이 활성화된다. // 4. 3분이 지나면 인증 완료 버튼이 비활성화된다.이 과정을 통하고 싶어서 2개의 비밀번호 칸에 각각 함수를 생성하여 비밀번호 값을 받아오게 한 뒤에 sendNum 함수에서 2개의 비밀번호 값을 비교하여 동일한 경우에만 인증번호 전송을 가능하게 하고 싶습니다. 그리고 다른 경우에는 alert를 이용하여 비밀번호를 확인하라는 창을 띄우려고 하는데, 비밀번호 값을 얻어내는 함수 pw1 값 꺼내서 어떻게 sendNum 함수에 넣어야 할 지 잘 모르겠습니다... ㅠㅠ 코드 올리겠습니다. 감사합니당..! <!DOCTYPE html> <html lang="ko"> <head> <title>코드캠프 회원가입</title> <link rel="stylesheet" href="./signup.css" /> <script src="./signup.js" defer></script> </head> <body> <div class="container"> <div class="wrapper"> <div class="wrapper__header">코드캠프 회원가입</div> <div class="wrapper__body"> <div class="body__info"> <input type="email" placeholder="이메일을 입력해 주세요." /> <input type="text" placeholder="이름을 입력해 주세요." /> <input type="password" placeholder="비밀번호를 입력해 주세요." id="pw1" onchange="changeValue(event)" /> <input type="password" placeholder="비밀번호를 다시 입력해 주세요." id="pw2" /> <div class="phone"> <input type="text" class="phone__first" maxlength="3" id="p1" oninput="moveCursorFirst()" /> - <input type="text" class="phone__mid" maxlength="4" id="p2" oninput="moveCursorSec()" /> - <input type="text" class="phone__last" maxlength="4" id="p3" /> </div> </div> <div class="body__certificate"> <div class="certificate__send"> <div class="certificate__num" id="certificate__num">000000</div> <button class="send__num" onclick="sendNum()" id="send__num"> 인증번호 전송 </button> </div> <div class="certificate__complete"> <div class="remaining"> <span id="remaining__min">3</span>: <span id="remaining__sec">00</span> </div> <button class="complete__btn" id="complete__btn" disabled> 인증 완료 </button> </div> </div> <div class="body__addition"> <select name="region"> <!-- selected + disabled 같이 이용하면 된다. --> <option value="" selected disabled>지역을 선택하세요.</option> <option value="gg">경기도</option> <option value="seoul">서울</option> <option value="ic">인천</option> </select> <div class="sex"> <div class="women"> <input type="radio" id="women" name="sex" /> <label for="women">여성</label> </div> <div class="men"> <input type="radio" id="men" name="sex" /> <label for="men">남성</label> </div> </div> </div> </div> <div class="divideLine"></div> <div class="wrapper__footer"> <button class="submit">가입하기</button> </div> </div> </div> </body> </html> // 1. 핸드폰 번호 작성 시에 알아서 옆으로 커서 넘어가도록 만들기. // 2. 비밀 번호와 비밀 번호 확인이 일치하는 경우에 인증번호 전송 가능해지기. // 3. 전송 누르면 인증 번호가 화면에 표시되고, 3분 카운트가 시작된다. 그리고 인증 완료 버튼이 활성화된다. // 4. 3분이 지나면 인증 완료 버튼이 비활성화된다. // 1. 핸드폰 번호 작성 시에 알아서 옆으로 커서 넘어가도록 만들기. const moveCursorFirst = () => { const p1 = document.getElementById("p1"); if (p1.value.length === 3) { document.getElementById("p2").focus(); } }; const moveCursorSec = () => { const p2 = document.getElementById("p2"); if (p2.value.length === 4) { document.getElementById("p3").focus(); } }; // 아직 해결하지 못 함. 비밀번호 가지고 나와야 된다. const changeValue = (event) => { let pw1 = event.target.value; return pw1; }; // 2. 비밀 번호와 비밀 번호 확인이 일치하는 경우에 인증번호 전송 가능해지기. let isStarted = false; const sendNum = () => { // 2. 타이머 실행시키기. let time = 5; let isDisabled = document.getElementById("complete__btn"); if (isStarted === false) { isStarted = true; isDisabled.removeAttribute("disabled"); // 비활성화 끄기. // 1. 6자리 수의 인증 번호 생성하고 화면에 보여주기. let certificateNum = document.getElementById("certificate__num"); let number = String(Math.floor(Math.random() * 1000000)).padStart(6, "0"); certificateNum.innerText = number; let timer = setInterval(function () { // 타이머가 실행되는 경우 if (time >= 0) { const remainingMin = Math.floor(time / 60); const remainingSec = String(time % 60).padStart(2, "0"); // console.log(`${remainingMin}분 ${remainingSec}초`); const min = document.getElementById("remaining__min"); const sec = document.getElementById("remaining__sec"); min.innerText = remainingMin; sec.innerText = remainingSec; time = time - 1; } else { // console.log("타이머가 종료되었습니다."); // 타이머를 종료시키는 경우 isDisabled.setAttribute("disabled", ""); // 비활성화 켜기. clearInterval(timer); isStarted = false; } }, 1000); } else { } };
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
선생님 Props내려줄때
data 프롭의 경우는 이미 id ,title, completed 같은 정보들이 다 들어있는거니까 data프롭만 내려받아서 List.js에서 .id, .title, .completed로 써도 문제가 없는거죠?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
gradlew 관련 질문이 있습니다!
안녕하세요. 강의 잘 듣고 있습니다.5:48 쯤에 ls 를 하면build.gradle gradlew gradlew.bat HELP.md README.md settings.gradle src이렇게 나오고 gradle 이라는 파일은 안나옵니다. 그래서 그런지./gradlew build -x test 명령어를 실행하면 Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMainCaused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain Gradle Wrapper 스크립트가 실행되지 않는다고 나옵니다. 이런 경우는 어떻게 하면 될까요? ㅜ