묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[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 설정을 잘못한건지....
-
해결됨Vue로 Nodebird SNS 만들기
배포후 빌드하는 방법
안녕하세요 강의를 보았을 때 로컬에서 npm run build 하시고 aws에서 npm run start 로 바로 하시던데 저는 build된 파일이 없다고 에러가 나더라구요 그래서 aws에서 빌드를 하니까 작동이 되었는데~ 어떤게 맞는건가요? 그리고 aws에서 빌드할때 137 에러가 계속 떠서 찾아보니 원인이.. swap space 에 공간이 0 MB 이었더라구요.. 그래서 1 GB 를 추가로 파티셔을 만들어서 넣은 이후에 정상적으로 build가 되었습니다. 이렇게 하는게 맞는건지 아니면 다른 방법이 있는지 궁금합니다. 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
npm run dev 후 에러가 뜹니다ㅜㅜ
$ npm run dev > react-chat-app@1.0.0 dev > concurrently "npm run backend" "npm run start --prefix client" [0] Error occurred when executing command: npm run backend [0] Error: spawn cmd.exe ENOENT [0] at Process.ChildProcess._handle.onexit (node:internal/child_process:277:19) [0] at onErrorNT (node:internal/child_process:477:16) [0] at processTicksAndRejections (node:internal/process/task_queues:81:21) [1] Error occurred when executing command: npm run start --prefix client [1] Error: spawn cmd.exe ENOENT [1] at Process.ChildProcess._handle.onexit (node:internal/child_process:277:19) [1] at onErrorNT (node:internal/child_process:477:16) [1] at processTicksAndRejections (node:internal/process/task_queues:81:21) [1] npm run start --prefix client exited with code -4058 [0] npm run backend exited with code -4058 npm ERR! code 1 npm ERR! path C:\Users\jeong\react\react-youtube-clone-master npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c concurrently "npm run backend" "npm run start --prefix client" npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\jeong\AppData\Local\npm-cache\_logs\2021-01-25T07_55_17_844Z-debug.log
-
미해결인터랙티브 웹 개발 제대로 시작하기
new Character(); 생성시 로컬서버환경
안녕하세요~ 저는 VScode편집기 환경에서 Live Server확장api를 사용해서 저장시 바로 보이는 기능으로 사용하고 있습니다. 5500번 포트로 열리게 되는데 new Character(); 하면 not defined 오류가 생깁니다..ㅠㅠ 파일경로로 오픈해서 인스턴스생성이 제대로 작동되는것은 확인했지만 왜 라이브 서버로 열게되면 안되는것인지 궁급합니다. 혹시 이유를 알고계신다면 알려주실수 있으신지요..😭😭😭😭 ps.강의 너무 재미있게 듣고있습니다 존경합니다..!🤩
-
자바 입문자를 위한 강의
강의 잘들었습니다.
삭제된 글입니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
리스너 코드 무반응
소켓프로그래밍2에서 하시는 가장 기본적인 클라와서버 소통방식을 구현할때는 패킷을 잘 주고 받았는데 Listenr비동기방식을 구현하고 나서는 서버에서는 OnAcceptHandler로 안넘어가고 클라에서는 받는 패킷에서 멈추더라구요(디버그중 일시정지를해보니) 코드도 잘못된게 없고 오류도 안뜨고... 무슨문제일까요??
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
선생님~ 데스크탑/모바일 반응형 다 완성했는데요 데스크탑일때 흰화면으로 나옵니다
선생님~ 데스크탑/모바일 반응형 다 완성했는데요 데스크탑일때 흰화면으로 나옵니다 창 크기를 줄여서 모바일일때는 나오구요. 대신에 location 섹션만 안 보이네요. ㅠㅠ 제공해주신 완성파일과 동시에 켜서 코드를 검토해 보아도 답을 찾기가 어렵습니다 혹시 메일로 파일 드리면 어느부분이 문제인지 확인 가능할까요?
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
hello 중복 선언 시 오류 처리 되는건 업데이트 된건가요?
var hello = 'world'; var hello = 'korea'; 입력 시 'hello' is already defined라는 오류가 뜨는데 업데이트 되면서부터 오류 처리 된건가요?
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
type 에 대한 구현
똑같이 따라했는데, tuple로 구현이 안되네요... 뭐가 문제죠?
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
keras-yolo3 훈련 에러
안녕하세요. 선생님 keras-yolo3 raccoon 데이터셋 훈련 때 오류가 발생했습니다. freeze시에는 잘 동작을 하는데, 모든 레이어를 unfreeze 할 때는 처음부터 에러가 바로 발생하네요. 메모리 용량 문제로 보이는데, 개인 GPU라서 해결할 방법은 GPU 메모리가 높은 것을 사용하는 것이겠죠? --------------------------------------------------------------------------- ResourceExhaustedError Traceback (most recent call last) <ipython-input-6-b92f17d39649> in <module> 82 epochs=100, 83 initial_epoch=50, ---> 84 callbacks=[logging, checkpoint, reduce_lr, early_stopping]) 85 model.save_weights(log_dir + 'trained_weights_final.h5') ~\anaconda3\envs\tf113\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs) 89 warnings.warn('Update your `' + object_name + 90 '` call to the Keras 2 API: ' + signature, stacklevel=2) ---> 91 return func(*args, **kwargs) 92 wrapper._original_function = func 93 return wrapper ~\anaconda3\envs\tf113\lib\site-packages\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch) 1413 use_multiprocessing=use_multiprocessing, 1414 shuffle=shuffle, -> 1415 initial_epoch=initial_epoch) 1416 1417 @interfaces.legacy_generator_methods_support ~\anaconda3\envs\tf113\lib\site-packages\keras\engine\training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch) 211 outs = model.train_on_batch(x, y, 212 sample_weight=sample_weight, --> 213 class_weight=class_weight) 214 215 outs = to_list(outs) ~\anaconda3\envs\tf113\lib\site-packages\keras\engine\training.py in train_on_batch(self, x, y, sample_weight, class_weight) 1213 ins = x + y + sample_weights 1214 self._make_train_function() -> 1215 outputs = self.train_function(ins) 1216 return unpack_singleton(outputs) 1217 ~\anaconda3\envs\tf113\lib\site-packages\keras\backend\tensorflow_backend.py in __call__(self, inputs) 2664 return self._legacy_call(inputs) 2665 -> 2666 return self._call(inputs) 2667 else: 2668 if py_any(is_tensor(x) for x in inputs): ~\anaconda3\envs\tf113\lib\site-packages\keras\backend\tensorflow_backend.py in _call(self, inputs) 2634 symbol_vals, 2635 session) -> 2636 fetched = self._callable_fn(*array_vals) 2637 return fetched[:len(self.outputs)] 2638 ~\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in __call__(self, *args, **kwargs) 1437 ret = tf_session.TF_SessionRunCallable( 1438 self._session._session, self._handle, args, status, -> 1439 run_metadata_ptr) 1440 if run_metadata: 1441 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) ~\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\framework\errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg) 526 None, None, 527 compat.as_text(c_api.TF_Message(self.status.status)), --> 528 c_api.TF_GetCode(self.status.status)) 529 # Delete the underlying status object from memory otherwise it stays alive 530 # as there is a reference to status from this from the traceback due to ResourceExhaustedError: OOM when allocating tensor with shape[1024,512,3,3] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc [[{{node training_1/Adam/gradients/conv2d_58/convolution_grad/Conv2DBackpropFilter}}]] Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.그리고 추가로 궁금한 것이, 처음에 훈련할 때 freeze는 따로 코드로 설정하지 않아도 첫번째 레이어는 고정되어지는 것인가요?감사합니다
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
todo 리스트 추가 관련 질문있습니다
안녕하세요 중급강좌 완강후 다시 보고있는중인데 localStorage에 저장된 리스트 값들을 새로고침해서 다시 불러올때 추가한 순서대로 출력이 안되고 엉켜서 나오고있는데 순서대로 출력할 방법이 있을까요??
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
리액트 네이티브
강좌와 관련없는 질문 죄송합니다. 유튭에서 리액트 네이티브 강의를 고려중이라고 하신 것을 봤는데요! 리액트를 이용하여 앱 개발을 할 수 있게 하는 프레임워크고, redux를 사용하기도 하던데요. 앱 개발은 웹과는 아예 다른 메커니즘이죠? (SSR 등..) 네이티브 앱 개발에 대한 사전 지식이 없다면, 리액트에 대한 지식만으론 개발이 불가능한가요?