묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 시작은 프리캠프
21:15초 js 동작 질문
21:15초경 작성하신 코드대로 작성하고, 인증번호 전송을 여러번 클릭 할 경우 타이머 숫자가 버벅거리는 현상이 있는데, 이게 클릭 할 때 마다 3:00 타이머가 시작되어 여러개가 동시에 입력되어 발생하는 현상인가요? 맞다면 이 현상은 어떻게 해결하는지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
예상치 못한 쿼리문이 나갑니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]코드@Entity public class Member { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "member_id") private Long id; @ManyToOne @JoinColumn(name = "team_id") private Team team; // getter & setter }@Entity public class Team { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "team_id") private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members; // getter & setter }public class Main { public static void main(String[] args) { try { tx.begin(); Team team = new Team(); team.setName("teamA"); em.persist(team); Member member = new Member(); member.setTeam(team); em.persist(member); em.flush(); em.clear(); System.out.println("1"); Member findMember = em.find(Member.class, member.id()); System.out.println("2"); Team membersTeam = findMember.team(); System.out.println("3"); List<Member> members = membersTeam.members(); System.out.println("4"); System.out.println("size = " + members.size()); // 이때 예상치 못한 select 문이 나가는 것으로 의심된다. 출력 결과는 1 tx.commit(); System.out.println("5"); } catch (Exception e) { // handle Exception } finally { // close EntityManager } } }양뱡향 연관관계 강의를 들으며 위와 같은 코드를 작성해보았습니다.실행 결과질문4번과 5번 사이에 아무런 쿼리문이 나가지 않는 것을 기대했습니다. 하지만 왜인지 Member 테이블에서 Team의 아이디로 Member를 조회하는 쿼리문이 나갑니다.제가 생각했을 땐 members.size()를 호출함으로써 나가는 것 같은데, 위 코드는 단순히 List 형 객체의 size를 List<Member> members 는 단순히 자바에서 List 형 객체 아닌가요? 이때 왜 조회 쿼리가 나가는지 잘 모르겠습니다.만약, 나가더라도 Member 테이블에서 membersTeam: Team 의 아이디로 count 쿼리가 나가야 정상적일 것 같습니다.어느 부분을 놓쳤을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
TxBasicTest
TxBasicTest에서proxyCheck에서 테스트를 돌리면 에러가 나옵니다기대값은 true인데 false가 나온다고합니다. package hello.springtx.apply; import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.transaction.support.TransactionSynchronizationManager; import static org.assertj.core.api.Assertions.assertThat; @Slf4j @SpringBootTest public class TxBasicTest { @Autowired BasicService basicService; @Test void proxyCheck(){ log.info("aop class={}", basicService.getClass()); assertThat(AopUtils.isAopProxy(basicService)).isTrue(); } @TestConfiguration static class TxApplyBasicConfig{ @Bean BasicService basicService(){ return new BasicService(); } } @Slf4j static class BasicService{ public void tx(){ log.info("call tx"); boolean txActive = TransactionSynchronizationManager.isActualTransactionActive(); log.info("tx active={}", txActive); } public void nonTx(){ log.info("call nonTx"); boolean txActive = TransactionSynchronizationManager.isActualTransactionActive(); log.info("nonTx active={}", txActive); } } }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ISP와 DefaultConversionService의 연관성
DefaultConversionService 가 왜 ISP 원칙에 연관되어있는지 잘 이해가 가지 않아 질문드립니다. 결론적으로 ISP의 경우 인터페이스 분리 원칙, 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 말아야한다인데DefaultConversionService의 경우 사용과 등록을 모두 사용하고 있습니다, 따라서 두 가지 기능을 모두 사용하게 되는데 결국 두개 다 사용하게 되면 애초에 인터페이스를 분할할 필요가 없게 되는것이 아닌지 궁금합니다. 두 개를 분리함으로써 얻게되는 이득에 대해서 다시 한번만 설명이 가능하실지 궁금합니다 ㅠㅠ 감사합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
SOA vs MSA
구분에 대해 명확히 이해가 되지 않는데요,SOA 경우도 서비스 단위 개발이고 Microservice도 그렇지 않나요? 그 규모의 차이가 둘을 구분 짓는 건가요?ex) SOA의 서비스 단위가 숙박 예약 기능이라고 하면Microservice는 숙박조회, 결제 ... 으로 더 세분화 그리고 SOA에서 직접 서비스간에 데이터 교환을 하는 것에서 발생하는 의존 문제로 인해 ESB를 도입했다고 봤는데요, Microservice에서는 API를 통해 서비스 간 통신 시 이런 의존문제가 없을 수 있는건가요? 뭔가 구체적인 예시로 비교해주시면 감사하겠습니다.
-
미해결팀 개발을 위한 Git, GitHub 입문
git 초기화하는 법이 궁급합니다.
github에 pull하고 push하는 것이 모두 에러가 뜹니다. 그래서 아예 초기화를 하려고 하는데 혹시 어떻게 해야 하나요 폴더에서 rm -rf git해서 지웠다 처음부터 해보고 remote도 지웠다가 다시 연결하는데도 문제가 계속 생깁니다. 그래서 아예 git자체를 완전히 토기화 하고 싶은데 어떻게 해야 하나요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
Tessilation 질문입니다
tessilation 을 통해서 displacement mapping 을 좀 복잡한 mesh 에 적용을 해봤는데 gpu 가 갈리는 소리가 나서요. 아무래도 삼각형 개수가 기하급수적으로 늘다보니 gpu load 가 클거 같은데 tessilation 이 실제로 필요사양이 높은가요? 그리고 현업에서도 tessilation 사용하는데 제약이 많은지 궁금합니다.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
begin end 사용법
안녕하세요 맛비님! 그렇게 중요하진 않아보이지만 항상 궁금했던 내용이라 질문드립니다. 예시로always @( posedge S_AXI_ACLK ) begin if ( S_AXI_ARESETN == 1'b0 ) begin axi_awaddr <= 0; end else begin if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) begin // Write Address latching axi_awaddr <= S_AXI_AWADDR; end end end 166번째 라인에 있는 코드인데 else if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) axi_awaddr <= S_AXI_AWADDR; end else if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) begin axi_awaddr <= S_AXI_AWADDR; end end else부분을 이렇게 더 간결하게 짜면 좋을꺼같은데굳이 begin end로 묶는 이유가있을까요?가독성이 더 좋아지기 때문일까요?
-
미해결스프링 시큐리티
강의소스 및 필독사항 엑셀이 어디있나요?
https://github.com/onjsdnjs/corespringsecurity엑셀로 올려드린 상단의 수업자료를 다운받아 반드시 필독해 주십시오이렇게 github주소만 있는데 엑셀이 어디있는지 모르겠습니다또한 섹션3 프로젝트생성 강의를 듣는 중 resource쪽 파일은 깃에있는 파일 그대로 다운받아 사용하려 했는데 이미 완성되어있는 프로젝트라 그런지 강의에서 보이는 내용과는 다른 부분이 있는거 같네요WebSecurityConfigurerAdapter Deprecated 부분에 대한 추가 설명은 따로 없는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
eureka에서 클라이언트 삭제
구동시킨 클라이언트를 모두 중지하였는데 유레카에서 삭제가 안되네요.. 캐시가 남는걸까요?
-
미해결스프링 핵심 원리 - 기본편
ConfigurationSingletonTest 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. ConfigurationSingletonTest를 하다가 MemberRepository에 static이 붙어있어서 강의내용과 다른 결과가 출력되었다는걸 알게되었습니다. 그런데 궁금한게 MemberRepository가 static으로 되어있다면 메모리상에 먼저 올라가 객체가 미리 만들어져서 여러번 호출시에도 똑같은 값이 나와야하지않나 하는 의문이 들어서 질문드립니다 ㅎㅎ 감사합니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
$를 사용하면 정상적으로 작동하지 않습니다
import { useMutation, gql } from "@apollo/client"; const 나의그래프큐엘셋팅 = gql` mutation createBoard($writer: String, $title: String, $contents: String) { createBoard(writer: $writer, title: $title, contents: $contents) { _id number message } } `; export default function GraphqlMutation() { const [나의함수] = useMutation(나의그래프큐엘셋팅); const onClickSubmit = async () => { const result = await 나의함수({ $: { //$ == variables 로 바꿔도 된다 같은 writer: "훈이", title: "contents", contents: "반갑", }, }); console.log(result); }; return <button onClick={onClickSubmit}>Graphql-API 요청하기</button>; }await 나의함수({ $: ...}) 에서 $를 사용하면 ApolloError: null value in column "writer" of relation "board" violates not-null constraint다음과 같은 에러가 발생하고 variables 로 바꾸면 정상적으로 작동합니다. 어느 부분이 틀렸을까요..?
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
섹션4 >alert > validator오류
validator 경고가 떠서 어떤 부분에서 경고가 뜨는지 알 수가 없어서 질문드립니다!
-
미해결JavaScript 알고리즘 베스트 10
github에 해당 레포를 찾을 수가 없어요.
안녕하세요, github에 해당 레포를 찾을 수가 없는데 링크 한번 더 확인 부탁드립니다!
-
미해결언리얼4 블루프린트로 안드로이드 게임 만들기
재생을 하면 밝기가 점점 밝아져요
현재 UI 만들기 까지 따라했는데요새 창에서 이 레벨을 플레이를 누르면 창이 뜨면서 게임이 재생되는데UI는 보이지 않고 빛 밝기도 게임모드 처럼 점점 밝아져요..어떻게 해결 할 수 있을까요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[웹 개발 풀스택 코스] HTML&CSS 기초
nth-child() 적용 관련 질문
표 스타일을 다루는 강의에서, nth-child를 이용해 표의 행을 띄엄띄엄 채색할 때(background-color), 본 강의에서 제공된 코드와 똑같이 작성한 것 같은데 저는 표의 행 전체가 칠해집니다. nth-child 안의 숫자를 바꾸면 행이 전부 칠해졌다가 아예 안칠해졌다가 하는데, 무엇이 잘못되었는지 잘 모르겠습니다. 인터넷을 찾아보면 nth-child가 부모가 어떻든지간에 괄호안에 적힌 숫자번째 줄에 모두 적용하기 때문이라는 내용이 나오는데, 그렇다면 강의에서는 잘 작동된 이유가 뭔지 알고싶습니다. 그리고 제가 빠뜨린 개념이 있는지 혹시 눈치채신 분이 계시다면 알려주시면 감사하겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
view.render 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package hello.servlet.web.frontcontroller; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import javax.sql.rowset.serial.SerialException; import java.io.IOException; //각 컨트롤러에서 했던 것을 MyView로 만들어서 넘긴다. public class MyView { private String viewPath; public MyView(String viewPath){ this.viewPath=viewPath; } public void render(HttpServletRequest request, HttpServletResponse response) throws SerialException, IOException, ServletException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); } } Myview 코드를 작성할 때도, 강의와 다르게 forward 부분에서 오류가 발생해서 throws ServletException을 추가헀습니다.그 이후에, package hello.servlet.web.frontcontroller.v2; import hello.servlet.web.frontcontroller.MyView; import hello.servlet.web.frontcontroller.v2.controller.MemberFormControllerV2; import hello.servlet.web.frontcontroller.v2.controller.MemberListControllerV2; import hello.servlet.web.frontcontroller.v2.controller.MemberSaveControllerV2; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; // @WebServlet(name="frontControllerServletV2", urlPatterns = "/front-controller/v2/*") ///front-controller/v1/* 라고 경로를 설정하면 v1 하위에 있는 어떤 웹은 전부 " FrontControllerServletV1 " 서블릿 호출이 된다. public class FrontControllerServletV2 extends HttpServlet { private Map<String, ControllerV2> controllerMap = new HashMap<>(); public FrontControllerServletV2() { controllerMap.put("/front-controller/v2/members/new-form", new MemberFormControllerV2()); controllerMap.put("/front-controller/v2/members/save", new MemberSaveControllerV2()); controllerMap.put("/front-controller/v2/members", new MemberListControllerV2()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String requestURI = request.getRequestURI();//URI를 바로 받을 수 있음. ControllerV2 controller = controllerMap.get(requestURI);// front-controller/v1/members if(controller==null){ response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } MyView view = controller.process(request, response); view.render(request,response); } } 위와 같이 코드를 작성하고view.render을 사용할 때, 오류가 발생하고 인텔리 제이에서 제공하는 오류 해결 방법을 사용했는데도 웹 페이지에 가면 정상적으로 동작하지 않습니다.설명 부탁드립니다.
-
미해결
트랜잭션 전파 속성 REQUIRES_NEW 관련 질문
안녕하세요 트랜잭션 관련해서 질문이 있어서 글을 남깁니다.트랜잭션매니저 2개(Jpatxmanager, datasourcetxamanger)를 만들어서 테스트 중입니다. 1개는 전반적인 일반 비지니스 로직에 적용되는 트랜잭션 매니저이고, 다른 1개는 API 호출시 관련 데이터를 DB에 저장하는 로직에 사용되는 트랜잭션 매니저입니다.파일에 다음과 같이 선언 되어있습니다. //로그 저장 하는 메소드 호출시 관리하는 트랜잭션매니저 <bean id="logTxManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="egov.dataSource"/> </bean> <tx:advice id="logTxAdvice" transaction-manager="logTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/> </tx:attributes> </tx:advice> ... aop config 생략 //JPA트랜잭션매니저를 커스터마이징 한 트랜잭션매니저 <bean id="nbpmTxManager" class="com.nkia.itg.nbpm.common.NbpmTransactionManager" /> <tx:advice id="nbpmTxAdvice" transaction-manager="nbpmTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" /> </tx:attributes> </tx:advice> 실행 순서는 다음과 같습니다.1. A라는 비지니스 로직이 실행된다(A 트랜잭션매니저, 트랜잭션 전파 : REQUIRES)2. B라는 로직(API 관련 데이터 저장)이 실행된다(B 트랜잭션매니저, 트랜잭션 전파 : REQUIRES_NEW)제가 기대한 바로는 API 데이터 저장 메소드가 호출되면 새로운 db 커넥션을 획득해서 별도의 트랜잭션으로 관리 되는 것이었는데, 테스트를 해보니까 같은 커넥션을 공유하는것같습니다. A라는 비지니스 로직이 실패해서 예외가 발생해도 API관련 데이터 저장 로직에 영향을 주지 않기 위해서 별도로 분리하려고합니다.제가 한 테스트 결과는, A 비지니스 로직(특정 테이블에 데이터 INSERT) 호출 하고 B라는 비지니스 로직(API 데이터 INSERT) 호출 후 B 메소드가 종료되고 COMMIT을 하면 A 로직에서 INSERT한 데이터도 COMMIT이 됩니다. 즉, REQUIRES_NEW 전파속성이 실행되지않는것같습니다.예시)finally { B();}원인은 도저히 모르겠습니다 .. 답변 부탁드립니다.
-
해결됨팀 개발을 위한 Git, GitHub 입문
질문 있습니다(강의자료)
안녕하세요, 강의 잘 들었습니다. 소스트리를 통해 브랜치의 시각화로 브랜치와 깃헙에 관한 이해가 넓어졌습니다.혹시 강의 자료를 받을 수 있을까요? 배운 내용을 시간이 지나면 까먹게 되는데 개인 차원에서 틈틈히 배운 내용을 복습하고자 강의자료가 있으면 좋겠다는 생각이 들었습니다. 이메일 주소는 rsy48@naver.com 입니다.감사합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Authorization failure.
Maps SDK for android --> enableMaps SDK for iOS --> enable뭐가 문제일까요?E/Google Maps Android API(10009): Authorization failure. Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.E/Google Maps Android API(10009): In the Google Developer Console (https://console.developers.google.com)E/Google Maps Android API(10009): Ensure that the "Google Maps Android API v2" is enabled.E/Google Maps Android API(10009): Ensure that the following Android Key exists: