묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
선택자 관련 질문 있습니다.
선생님 안녕하세요. 선택자 관련해서 모르는 부분이 있어 질문 드립니다. 1. html 구조를 .container 하위에 div.sidebar를 배치하지 않고 .container 외부에 div.sidebar를 배치 했을 경우에 input:checked 로 같은 기능을 할 수 있게 하는 방법은 없나요? 2. input:checked 다음에 space 혹은 인접선택자 종류만 쓸수 있으니까 html 구조에서 .sidebar를 꼭 하위 또는 뒤따르는 요소, 형제요소로 배치하라는 말로 이해했는데 제대로 이해한게 맞을까요?
-
미해결인터랙티브 웹 개발 제대로 시작하기
키다운 이벤트 시 문제가 있습니다..
강의 잘 보고 있습니다^^~! 다만, 실습중에 문제가 생겨서요.. 방향 전환(왼쪽 방향키에서 오른쪽 방향키를 누를 때)을 하면 바로 동작을 안하고 1초 정도 멈춘 후에 반대방향으로 가는 현상이 발생하는데 혹시 어떤 문제일까요? 크롬 브라우저 쓰고 있고 this와의 연결은 .bind로 처리해줬습니다.. 나머지는 코드는 같구요.. 같은 방향은 문제가 없는 것으로 보여집니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Inject language 관련 질문드립니다.
저는Inject Language했을 때 jpql이 안나오는데 이럴 경우 어떻게 해야 되나요?
-
미해결스프링 핵심 원리 - 기본편
빈 생성과 의존관계 주입시점에 대하여
헷갈리는 부분이 있어서 과정을 제대로 이해한게 맞는지 궁금합니다! A빈을 먼저 접근하고, A가 B를, B가 C를 의존한다는 가정입니다. 생성자 주입은 객체를 생성하면서 자연스럽게 생성자를 부르니까 1.A빈을 등록하기 전, 생성자의 파라미터에 있는 인자 B가 빈으로 등록됐는지 확인 2.B가 빈 등록이 되어있으면 의존관계 주입, 안되어 있으면 그 B를 찾아감 3.B빈을 등록하기 전, 생성자의 파라미터에 있는 인자 C가 빈으로 등록됐는지 확인 4.C가 빈 등록이 되어있으면 의존관계 주입, 안되면 C로 찾아감 5.C빈은 주입할 의존관계가 없음으로 C빈 등록 6.B빈 등록, C의존관계 주입 7.A빈 등록, B의존관계 주입 이렇게 이해를 했고 수정자 주입이나 필드 주입의 경우 1.A빈을 B빈이 없어도 우선 등록 2.B빈을 C빈이 없어도 우선 등록 3.C빈을 등록 4.각각의 의존관계를 쭉 주입 이렇게 이해를 했는데 맞을까요 ..? 각각의 매커니즘을 제대로 이해한 게 맞는지 의문이 들어 질문드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영속성 컨텍스트 문의.
Spring MVC 에서 영속성 컨텍스트는 트랜잭션별로 생성이 되나요? 아니면 어떤기준으로 생성이 되나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강사님 쿼리 작성에 있어서 질문이 있습니다.
안녕하세요 강사님 공부를 하다가 궁금한 점이 생겼는데 EntityManager를 통해 save를 하는 경우 말고 실제로 필요에 따라서 creqteQuery를 통해 insert를 해주는 경우가 있나요?? 그렇게 사용하면 Entity에 Id를 설정해 주었는데 Id값 빼고 데이터를 넣어주면 되나요?
-
미해결쉽게 배우는 adobe XD 기초부터 실무까지 완벽 마스터
프로토타입 제작을 고려한 레이어 정리
xd는 물론, adobe를 이번 강좌에서 처음 접하는 제가 느끼는 '일시정지'포인트는.. [프로토타입 제작을 고려한 레이어 정리] 입니다.. 현재진도는 '메인페이지 Design02' 입니다.. 프로토타입 제작이 xd를 정복!하고자한 이유인데요.. 묶어두는 것은 어느정도 이해했는데요, 그룹한 다음 통째로 순서를 옮길때.. 이때부터 멘붕입니다.. 레이어를 묶고, 순서를 옮기고... 이렇게 정리하는 과정을 좀 더 쉽게 이해하거나 단련하려면 뭘 하면(뭘 기준으로 정리하면..) 좋을까요? adobe스러운 레이어 사고체계가 없는 학생이라.. 너무나 답답합니다..엉엉
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 질문이 있습니다!!
Test를 돌렸는데 자꾸 오류가 나서요 코드를 그대로 쳤는데 어디가 문제인지 잘 모르겠습니다ㅜㅜ 참고로 db는 h2말고 mysql을 쓰긴 했는데 jdbc랑 template을 test할 때는 오류가 나지 않았습니다! 2021-01-25 18:29:18.323 ERROR 232 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.IllegalArgumentException: Unrecognized legacy `hibernate.hbm2ddl.auto` value : `none//jpa°¡ ÀÚµ¿À¸·Î table ¸¸µå´Â°É ²ô±â`
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
IDENTITY 전략 질문있습니다.
IDENTITY 전략을 사용하는 경우에는 PK값을 확인하려면 디비에 직접 들어가서 확인을 한다고 하셨고, JPA를 이용해 영속성 컨텍스트에서 관리할 때, persist를 호출하는 시점에 실제 쿼리를 날려준다는 것까지는 이해를 했습니다. Q1. 이때 플러시 과정이 일어나는지 궁금합니다. Q2. persist를 호출해서 쿼리를 날린 이후에 영속성 컨텍스트에서 관리하는 것처럼 쿼리들을 모아놓는 저장소에 저장이 되었다가 rollback을 하거나 commit이 되는 시점에서 이전에 persist로 인해서 생긴 변화는 더티 체크가 되는지, 된다면 어떻게 되는지 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
cmd로 찾는거 따라했는데요..ㅠㅠ
exe파일로 만들어서 cmd로 찾는거 따라했는데 "내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다." 라고 나오는데요ㅠㅠ 이게 무엇인가요??
-
미해결실전 리액트 프로그래밍
useSelector를 배열로 반환하는 방식의 문제에 대한 질문입니다.
3:40 에 부분에 해당하는 질문인데, 아래 질문의 답변을 참고 후 명확한 이해를 위해 질문 드립니다. useSelector의 selector 함수 안에 있는 두 값이 변경되지 않아도 redux에서 액션이 처리될 때마다 불필요하게 이 컴포넌트가 렌더링 될 수 있는 단점이 있다라고 설명해주시고,아래 답글에서 "두 값이 변경되지 않았는데 렌더링을 하는 것은 비효율적이라는 의미"라고 답변을 주셨는데 redux에서 액션이 발생해서 두 값이 변경되지 않아도 렌더링이 된다는 걸까요?(변경이 없는 dispatch를 만들어 돌렸을 때는 렌더링 되지 않는 것 같아서요) 그렇지 않다면, 결국 값이 변경될 때만 렌더링이 일어난다는 말일테고, 그렇다면 "불필요한 렌더링"이라는게 어느 경우일지요? 다른 컴포넌트에서 동일한 state의 값에 대한 변경을 일으켰을 때의 렌더링을 "불필요한 렌더링"이라고 말씀해주신 걸까도 생각해봤는데, 결국 값이 변경된 것이라 렌더링이 불필요한 것이라 여기기에는 결국 하위 컴포넌트에서 변경된 값을 사용해야 하니 재렌더링 되는게 맞는게 아닌가 싶구요. 혹은, 이 컴포넌트의 하위 컴포넌트들에서도 참조하지 않는 state의 특정 값 (예를 들어 `state.friend.friends` 의 특정 항목의 특정 프로퍼티)이 다른 컴포넌트에서 발생한 dispatch로 redux 액션이 발생되어 변경 되었을 경우이 컴포넌트의 재렌더링이 불필요하므로 얕은 비교를 하는 것이 좋다는 것일까요? 그런데 또 그렇게 보면, 앞서 reducer를 학습할 때 상태값을 변경할 때는 불변성을 유지해야 한다고 했으니,다른 컴포넌트에서 방금의 액션을 취한다면 결국 이 state는 변경이 발생 될테고 그렇다면 결국 얕은 비교를 한다 손 치더라도 변경이 발생된 게 아닌지요? 질문하면서도 제가 헷갈리네요 ;;;; 아니면, 앞선 챕터에서 설명된 것들을 참고했을 때 이런 형태로 사용했을 경우 const [friends, friends2, friends3 ] = useSelector( state => [ state.friend.friends, state.friend.friends1, state.friend.friends, state.friend.friends2, state.friend.friends, state.friend.friends3 ] ); 컴포넌트가 렌더링 될 때마다 useSelector가 새로운 배열을 생성시키기 때문에 불필요한 렌더링이 일어날 수 있고, 실제로 const [friends] = useSelector(state => [state.friend.friends]); 이렇게 작성했을 때 fiendMain 컴포넌트가 두 번 렌더링 되는 걸 확인했는데요이 경우를 말씀하시는 걸까요?
-
해결됨따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
메시지 검색기능에서 match 함수
이전에 메시지 검색기능 구현하는 강의에서는 잘 실행이 됐는데 지금 다시 시도 해보면 오류가 납니다ㅠ 정규식과 일치하는지 확인하는 match함수에서 문제가 있는거 같은데 어떻게 해결해야 할지 몰라서 질문 올려 봅니다. ㅠㅠ 구글링을 통해서 찾아 봤을 때는 package-lock.json과 node_modules을 지우고 다시 npm을 설치 해보라 해서 시도 해봤는데 해결 되지 않았습니다. import React, { Component } from "react"; import Message from "./message"; import MessageHeader from "./message_header"; import MessageForm from "./message_form"; import styles from "./main_panel.module.css"; import { connect } from "react-redux"; import firebase from "../../../firebase"; import { setUserPosts } from "../../../redux/actions/chatRoom_action"; import Skeleton from "../../../commons/components/skeleton"; class MainPanel extends Component { messageEndRef = React.createRef(); state = { messagesRef: firebase.database().ref("messages"), messages: [], messageLoading: true, searchTerm: "", searchResults: [], searchLoading: false, typingRef: firebase.database().ref("typing"), typingUsers: [], listenersList: [], }; componentDidMount() { const { chatRoom } = this.props; if (chatRoom) { this.addMessageListener(chatRoom.id); this.addTypingListener(chatRoom.id); } } componentDidUpdate() { if (this.messageEndRef) { this.messageEndRef.scrollIntoView({ behavior: "smooth" }); } } componentWillUnmount() { this.state.messagesRef.off(); this.removeListeners(this.state.listenersList); } removeListeners = listeners => { listeners.forEach(listener => { listener.ref.child(listener.id).off(listener.event); }); }; addTypingListener = chatRoomId => { let typingUsers = []; this.state.typingRef.child(chatRoomId).on("child_added", DataSnapShot => { if (DataSnapShot.key !== this.props.user.uid) { typingUsers = typingUsers.concat({ id: DataSnapShot.key, name: DataSnapShot.val(), }); this.setState({ typingUsers }); } }); this.addToListenersList(chatRoomId, this.state.typingRef, "child_added"); this.state.typingRef.child(chatRoomId).on("child_removed", DataSnapShot => { const index = typingUsers.findIndex(user => user.id === DataSnapShot.key); if (index !== -1) { typingUsers = typingUsers.filter(user => user.id !== DataSnapShot.key); this.setState({ typingUsers }); } }); this.addToListenersList(chatRoomId, this.state.typingRef, "child_removed"); }; addToListenersList = (id, ref, event) => { //이미 등록된 리스너인가? const index = this.state.listenersList.findIndex(listener => { return ( listener.id === id && listener.ref === ref && listener.event === event ); }); if (index === -1) { const newListener = { id, ref, event }; this.setState({ listenersList: this.state.listenersList.concat(newListener), }); } }; handleSearchMessages = () => { const chatRoomMessages = [...this.state.messages]; const regex = new RegExp(this.state.searchTerm, "gi"); const searchResults = chatRoomMessages.reduce((acc, message) => { if ( (message.content && message.content.match(regex)) || message.user.name.match(regex) ) { acc.push(message); } return acc; }, []); this.setState({ searchResults }); setTimeout(() => this.setState({ searchLoading: false }), 1000); }; handleSearchChange = event => { console.log(event.target.value); this.setState( { searchTerm: event.target.value, searchLoading: true, }, () => this.handleSearchMessages() ); }; addMessageListener = chatRoomId => { let messagesArray = []; this.setState({ messages: [] }); this.state.messagesRef.child(chatRoomId).on("child_added", DataSnapShot => { console.log(DataSnapShot.val()); messagesArray.push(DataSnapShot.val()); this.setState({ messages: messagesArray, messageLoading: false, }); this.userPostCount(messagesArray); }); }; userPostCount = messages => { let usersPost = messages.reduce((acc, message) => { if (message.user.name in acc) { acc[message.user.name].count += 1; } else { acc[message.user.name] = { image: message.user.image, count: 1, }; } return acc; }, {}); this.props.dispatch(setUserPosts(usersPost)); }; renderMessages = messages => messages.length > 0 && messages.map(message => ( <Message key={message.timeStamp} message={message} user={this.props.user} /> )); renderTypingUsers = typingUsers => typingUsers.length > 0 && typingUsers.map(user => { return ( <span key={user.id}>{user.name}님이 채팅을 입력하고 있습니다.</span> ); }); renderMessageSkeleton = loading => loading && ( <> {[...Array(6)].map((e, idx) => ( <Skeleton key={idx} /> ))} </> ); render() { const { messages, searchResults, searchTerm, typingUsers, messageLoading, } = this.state; return ( <div className={styles.mainPanel}> <MessageHeader messages={messages} handleSearchChange={this.handleSearchChange} /> <div className={styles.messageBox}> {this.renderMessageSkeleton(messageLoading)} {searchTerm ? this.renderMessages(searchResults) : this.renderMessages(messages)} {this.renderTypingUsers(typingUsers)} <div ref={node => (this.messageEndRef = node)} /> </div> <MessageForm /> </div> ); } } const MapStateToProps = state => { return { user: state.user.currentUser, chatRoom: state.chatRoom.currentChatRoom, }; }; export default connect(MapStateToProps)(MainPanel);
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
강사님 오류가 발생하였습니다. name이 hello가 아니여서 그런가 해서 찾아봤더니 hello로 설정되어 있고, persistance.xml도 META-INF 폴더 밑에 있는 것을 확인하였습니다. 파란색 줄이 그어진 JpaMain.java :10 은 해당 문구이며, createEntityManagerFactory부분에 생긴 문제 인 듯 합니다 EntityManagerFactory emf= Persistence.createEntityManagerFactory("hello"); //PersistenceUnitName [persistacne.xml] <?xml version="1.0" encoding="UTF-8"?><persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"><persistence-unit name="hello"><class>jpabook.jpashop.domain.Member</class><class>jpabook.jpashop.domain.Item</class><class>jpabook.jpashop.domain.Order</class><class>jpabook.jpashop.domain.OrderItem</class><class>jpabook.jpashop.domain.OrderStatus</class><properties><!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/><property name="javax.persistence.jdbc.user" value="sa"/><property name="javax.persistence.jdbc.password" value=""/><property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/jpashop"/><property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/><!-- 옵션 --> <property name="hibernate.show_sql" value="true"/><property name="hibernate.format_sql" value="true"/><property name="hibernate.use_sql_comments" value="true"/><property name="hibernate.jdbc.batch_size" value="10"/><property name="hibernate.hbm2ddl.auto" value="create" /></properties></persistence-unit></persistence>[JpaMain.java] package jpabook.jpashop.JpaMain;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.EntityTransaction;import javax.persistence.Persistence;public class JpaMain { public static void main(String[] args){ EntityManagerFactory emf= Persistence.createEntityManagerFactory("hello"); //PersistenceUnitName EntityManager em=emf.createEntityManager(); EntityTransaction tx=em.getTransaction(); tx.begin(); try{ tx.commit(); }catch(Exception e){ tx.rollback(); }finally { em.close(); } emf.close(); }} 감사합니다 : )
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
yolo 구조
keras yolov3 공부중입니다. (1) yolo v3 모델 아키텍처와 코드를 비교하기가 어려운데.. train.py와 yolo.py를 어떤식으로 살펴보면 될까요? ㅜ..ㅜ (2) 그리고 모델 freeze에 대해 알고 싶으면 어떤 내용을 살펴보아야 하는건가요? (3) output layer 3개의 model weight는 서로 어떤식으로 공유가 되는건가요? yolo v3 모델을 깊이 있게 이해하고 싶은데 어려움이 많습니다. 답변 주시면 감사하겠습니다 (ㅜ..ㅜ)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
싱글 테이블 전략과 JOIN
안녕하세요 강사님. 한 가지 궁금한 점이 있어 질문드립니다! 단일 테이블이 속도적 이점으로 인해 사용한다고 하셨는데요. 이게 어느 정도의 규모까지 허용이 되는가가 궁금합니다. 강사님의 예제와 Book, Album 적은 개수의 테이블만 존재할 경우에는 사용이 유리하다는 것은 확실한데 이제 점점 테이블이 많아지면 많아질수록 Item 테이블의 column의 개수가 많아져 관리가 힘들다고 생각되는데요. 이 경우에는 그냥 JOIN을 사용하는 것이 바람직한가요? 아니면 선택의 차이인가요? 정리하자면, 어느 정도의 규모까지가 싱글 테이블 전략을 사용할 것인가? 선택의 차이인가? 입니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
12:54분 관련 추가 질문입니다
답변으로 적어주신 링크(https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-objects-by-using-an-object-initializer) 와 추가적인 기본 생성자를 사용하되 이니셜라이저를 이용해 초기화한다는 것은 잘 설명해주셔서 이해를 했습니다. 제가 궁금한 점은 name 이라는 생성자를 이용하여 GameObject를 만들면 유니티에서 자동으로 인식하여 그 문자열을 게임오브젝트의 이름으로 생성해주는것 같은데 그러한 생성자 목록들을 확인할 수 있는 경로나 방법이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
types.js 파일 내용중 궁금한 점입니다.
types.js 파일이 액션 분류가 많아 졌을때 관리하기 위함은것은 알겠는데요. LOGIN_USER = "login_user" 에서 login_user 이 단어는 types.js 파일 이외의 소스코드 어디서도 찾아 볼수가 없는데.. login_user 라는 이 단어는 대체 어디에서 쓰이기 위해서 적혀있는 건가요?
-
미해결홍정모의 따라하며 배우는 C++
디버깅 오류
3.5강 예제를 그대로 따라하면서 이전에 x,y에 관한 관계연산자를 그대로 지우고 그 위에 double 예제를 입력하고 컴파일했는데 오류가 생겼습니다. 새로운 solution file을 만드는 것 말고 이런 문제를 해결하려면 어떻게 해야하나요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
Api /index.js 에서 store 값 접근
API/index.js 에서 store에 있는 state 값을 계속 모니터링 할 수 있나요? getters, computed 같은 기능이 있는지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
1.13 강의에서 main.c 실행파일이 안만들어 집니다.
PS C:\Users\ASUS\my c files> gcc main.c C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status PS C:\Users\ASUS\my c files> power shell 에서 main.c 실행파일 만들기 위해서 gcc main.c 라고 쳤는데 exe파일이 안만들어지고 저렇게 뜹니다.... 왜그런건지 모르겠네요 ㅠㅠ mingw설치를 잘못한건지 아니면 path 설정을 잘못한건지....