묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
vue.js websocket 관련 express 질문드립니다.
안녕하세요 vue.js로 websocket 구현시키는 중 문제가 발생하여 질문드립니다.websocket 구현시키려면 server.js에 express를 사용해야 한다고 해서 'npm install express socket.io' 를 사용하였고 코드를 아래와 같이 구현시켰는데 에러가 발생하네요아래 사진은 에러 메시지 입니다.원인을 좀 알 수 있을까요??
-
미해결데이터 분석 SQL Fundamentals
여러 테이블을 조인할 경우 성능 질문
안녕하세요? 강사님 머신러닝 강의에 이어서 SQL 강의도 잘 보고 있습니다질문이 있는데가령 3개의 테이블을 join할 경우테이블a join 테이블b join 테이블c 이렇게 순서대로 join하는 것과테이블a와 테이블b를 join하고 그 결과를 서브쿼리로 해서 테이블 d로 만들고 테이블c와 join하는 것과 성능적인 측면에서는 차이가 없는건지 궁금합니다
-
미해결초보자도 만들 수 있는 스크롤 인터렉션. 1편 자바스크립트
4-3 함수선언방식 질문
function motion() { //스크롤할때마다 작동할 함수 setProperty(); changeBg(); parallaxMove(); } function init() { motion() }; $(window).scroll(function(e) { motion(); }); init(); //이런식으로 함수끼리 연결?하는방식으로 하셨는데 $(window).scroll(function(e) { setProperty(); changeBg(); parallaxMove(); }); /** 이런식으로 해도 작동이되는거같아서 왜 함수를 스크롤함수,init함수,motion함수 각각 만들어서 연결하는방식으로 하신이유가있을까요? */
-
미해결스프링 핵심 원리 - 기본편
@SpringBootTest 와 순수 자바 테스트
안녕하세요!수업중에 순수 자바 테스트 코드에서는 @Autowired가 동작하지 않아서 @SpringBootTest처럼 스프링 컨테이너를 테스트에 통합한 경우만 가능하다고 하셨는데,그동안의 수업에서 진행한 unit test는 통합 테스트였었나요?분명 스프링컨테이너로 스프링 빈을 등록하고 여러 테스트를 진행했어서 순수 자바 테스트란 어떤 테스트 인지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
영화를 찍는거라면
안녕하세요.플레이버튼을 눌러 영화를 찍는 거라 말씀하셨습니다.그러면 나중에 그 영화 찍은 것을 다시 보려면 어떻게 해야 하나요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
saga의 loadPostsAPI 함수 실행 질문드립니다.
안녕하세요 제로초님 강의잘듣고있습니다.게시글을 불러올 때 saga에서 다음과 같은 에러가 발생하면서 loadPostsAPI 함수가 실행이 안되서 질문드립니다.콘솔의 오류를 확인해보니 data속성을 읽을 수 없어서 LOAD_POSTS_FAILURE에서 error를 출력합니다.강의내용의 코드와 다른점이 없는것같은데 혹시 이문제에 대해 알 수 있을까요?참코 코드도 같이 첨부하겠습니다.reducers/post.jsconst reducer = (state = initialState, action) => { return produce(state, (draft) => { switch (action.type) { case LOAD_POSTS_REQUEST: draft.loadPostsLoading = true; draft.loadPostsDone = false; draft.loadPostsError = null; break; case LOAD_POSTS_SUCCESS: draft.loadPostsLoading = false; draft.loadPostsDone = true; draft.firstPageLoad = false; draft.mainPosts = draft.mainPosts.concat(action.data); draft.hasMorePosts = draft.mainPosts.length < 30; break; case LOAD_POSTS_FAILURE: draft.loadPostsLoading = false; draft.loadPostsError = action.error; break;sagas/post.jsimport { all, fork, delay, put, takeLatest, call } from 'redux-saga/effects'; import shortId from 'shortid'; import axios from 'axios'; import { LOAD_POSTS_REQUEST, LOAD_POSTS_SUCCESS, LOAD_POSTS_FAILURE, } from '../reducers/post'; function loadPostsAPI() { console.log('사가 실행2'); return axios.get('/posts'); } function* loadPosts() { try { console.log('사가 실행1'); const result = yield call(loadPostsAPI, action.data); yield put({ type: LOAD_POSTS_SUCCESS, data: result.data, }) } catch(err) { yield put({ type: LOAD_POSTS_FAILURE, data: err.response.data }) } } function* watchLoadPosts() { yield takeLatest(LOAD_POSTS_REQUEST, loadPosts); } export default function* postSaga() { yield all([ fork(watchLoadPosts), ]); } routes/posts.jsconst express = require('express'); const { Post, User, Image, Comment } = require('../models'); const router = express.Router(); router.get('/', async (req, res, next) => { try { const posts = await Post.findAll({ limit: 10, order: [ ['createdAt', 'DESC'], [Comment, 'createdAt', 'DESC'], ], include: [{ model: User, attributes: ['id', 'nickname'], }, { model: Image, }, { model: Comment, include: [{ model: User, attributes: ['id', 'nickname'], }], }], }); console.log(posts); res.status(200).json(posts); } catch (error) { console.error(error); next(error); } }); module.exports = router;
-
미해결진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 데이터 가공부터 분석까지
MAC 용 엑셀 파워쿼리 편집기
안녕하세요 MAC용 엑셀에서 쿼리 편집기 열기 방법 문의 남깁니다.웹 데이터 연결해오는 것까지는 서치해서 발견한 영상을 보고 따라왔는데요. 다음처럼 엑셀로 불러와진 다음에 편집창이 열리지는 않아서요. 방법이 있을까요?
-
미해결Vue.js 시작하기 - Age of Vue.js
Volar vs Vetur
강사님은 Vetur을 설치하셨는데, vue3.0지원 등의 이유로 최근에는 Vetur보다 Volar가 권장된다고 소문을 들어, 강사님은 어떻게 생각하시는지 궁금합니다!
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
레티나 디스플레이 관련 질문
윈도우에서는 레티나 디스플레이 코드로 설정을 해도 표에서 달라진게 없는거같은데 혹시 맥 전용 기능인가요..?
-
해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
댓글 여러개 작성시 댓글이 안보임
선생님 저 질문이있어서 이렇게 문의드립니다.댓글 불러오기강의에서 댓글을 여러개 작성을 하게 되면 사진에 보이는 것처럼 댓글을 새로 작성해도 화면에 보이지 않고있습니다.infinite/endless scroll(무한 스크롤)기능을 추가해야하는지 싶어서 이렇게 문의드립니다.activity_board_inside.xml<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <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" tools:context=".board.BoardInsideActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/titleArea" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:gravity="center" android:text="title" android:textColor="@color/black" android:textSize="20sp" android:textStyle="bold" /> <ImageView android:id="@+id/boardSettingIcon" android:layout_width="20dp" android:layout_height="40dp" android:layout_margin="10dp" android:src="@drawable/main_menu" android:visibility="invisible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0.5dp" android:background="@color/black"> </LinearLayout> <TextView android:id="@+id/timeArea" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:gravity="right" android:text="time" /> <TextView android:id="@+id/textArea" android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="20dp" android:background="@drawable/background_radius" android:padding="10dp" android:text="여기는 내용 영역" android:textColor="@color/black" /> <ImageView android:id="@+id/getImageArea" android:layout_width="match_parent" android:layout_height="300dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" /> <ListView android:id="@+id/commentLV" android:layout_width="match_parent" android:layout_height="600dp" /> </LinearLayout> </ScrollView> <LinearLayout android:layout_width="match_parent" android:layout_alignParentBottom="true" android:background="@color/white" android:layout_height="60dp"> <EditText android:id="@+id/commentArea" android:hint="댓글을 입력해주세요" android:layout_marginLeft="10dp" android:layout_width="320dp" android:layout_height="match_parent" android:background="@android:color/transparent"/> <ImageView android:id="@+id/commentBtn" android:src="@drawable/btnwrite" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </RelativeLayout> </layout>BoardInsideActivity.ktpackage com.example.mysolelife.board import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import com.bumptech.glide.Glide import com.example.mysolelife.R import com.example.mysolelife.comment.CommentLVAdapter import com.example.mysolelife.comment.CommentModel import com.example.mysolelife.databinding.ActivityBoardInsideBinding import com.example.mysolelife.utils.FBAuth import com.example.mysolelife.utils.FBRef import com.google.android.gms.tasks.OnCompleteListener import com.google.firebase.database.DataSnapshot import com.google.firebase.database.DatabaseError import com.google.firebase.database.ValueEventListener import com.google.firebase.ktx.Firebase import com.google.firebase.storage.ktx.storage import java.lang.Exception class BoardInsideActivity : AppCompatActivity() { private val TAG = BoardInsideActivity::class.java.simpleName private lateinit var binding : ActivityBoardInsideBinding private lateinit var key : String private val commentDataList = mutableListOf<CommentModel>() private lateinit var commentAdapter : CommentLVAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_board_inside) binding.boardSettingIcon.setOnClickListener { showDialog() } // 첫 번째 방법 /* val title = intent.getStringExtra("title").toString() val content = intent.getStringExtra("content").toString() val time = intent.getStringExtra("time").toString() binding.titleArea.text = title binding.textArea.text = content binding.timeArea.text = time*/ // 두 번째 방법 key = intent.getStringExtra("key").toString() getBoardData(key) getImageData(key) binding.commentBtn.setOnClickListener { insertComment(key) } commentAdapter = CommentLVAdapter(commentDataList) binding.commentLV.adapter = commentAdapter getCommentData(key) } private fun getBoardData(key : String) { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { try { val dataModel = dataSnapshot.getValue(BoardModel::class.java) Log.d(TAG, dataModel!!.title) binding.titleArea.text = dataModel!!.title binding.textArea.text = dataModel!!.content binding.timeArea.text = dataModel!!.time val myUid = FBAuth.getUid() val writerUid = dataModel.uid if(myUid.equals(writerUid)) { binding.boardSettingIcon.isVisible = true } else { } } catch (e : Exception) { Log.d(TAG, "삭제완료") } } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w("ContentListActivity", "loadPost:onCancelled", databaseError.toException()) } } FBRef.boardRef.child(key).addValueEventListener(postListener) } private fun getImageData(key : String) { // Reference to an image file in Cloud Storage val storageReference = Firebase.storage.reference.child(key + ".png") // ImageView in your Activity val imageViewFromFB = binding.getImageArea storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task -> if (task.isSuccessful) { Glide.with(this) .load(task.result) .into(imageViewFromFB) } else { binding.getImageArea.isVisible = false // 이미지 사진이 없을 때 } }) } private fun showDialog() { val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null) val mBuilder = AlertDialog.Builder(this) .setView(mDialogView) .setTitle("게시글 수정/삭제") val alertDialog = mBuilder.show() alertDialog.findViewById<Button>(R.id.editBtn)?.setOnClickListener { Toast.makeText(this, "수정 버튼을 눌렀습니다", Toast.LENGTH_LONG).show() val intent = Intent(this, BoardEditActivity::class.java) intent.putExtra("key", key) startActivity(intent) } alertDialog.findViewById<Button>(R.id.removeBtn)?.setOnClickListener { FBRef.boardRef.child(key).removeValue() Toast.makeText(this, "삭제완료", Toast.LENGTH_LONG).show() finish() } } fun insertComment(key : String){ // 파이어베이스 구조 // comment // - BoardKey // - CommentKey // - CommentData // - CommentData // - CommentData FBRef.commentRef .child(key) .push() .setValue( CommentModel( binding.commentArea.text.toString(), FBAuth.getTime() ) ) Toast.makeText(this, "댓글 입력 완료", Toast.LENGTH_SHORT).show() binding.commentArea.setText("") } fun getCommentData(key: String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { commentDataList.clear() for (dataModel in dataSnapshot.children) { val item = dataModel.getValue(CommentModel::class.java) commentDataList.add(item!!) } commentAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FBRef.commentRef.child(key).addValueEventListener(postListener) } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main문 실행
Spring Project 처음 open해서 열었는데 위와 같이 경로를 찾을 수 없다고 나옵니다 ㅠㅠ 또 강의에서 main문 실행하는 초록색 커서가 나타나지 않습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
driver.implicitly_wait(10)가 웹페이지를 열고 난 후로 코드의 위치를 변경하는 것이 맞지 않나요?
driver.implicitly_wait(10)가 웹페이지를 열고 난 후로 코드의 위치를 변경하는 것이 맞지 않나요?현재는 driver.get('~') 앞 줄에 driver.implicitly_wait(10)을 넣어 놓으셨네요.
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
질문 드립니다
강의명: 플러그인강의에서 설명해주신 대로 제대로 동작하지 않는데 뭐가 문제인지 모르겠어서 질문 드립니다ㅜㅜ <강의 내용><작성><오류>
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
워드클라우드 실행 오류
이와같은 오류메시지로 실행이 안되는데 해결책 알수 있을까요 선생님 ㅜ
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
비쥬얼 스튜디오 2017은 어서 다운받나요??
비쥬얼 스튜디오 2017은 어서 다운받나요??현재버젼은 좀 다른점이 있어 k번쨰 출력 셋팅부분에서 나아가질 못하네요
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다
인프런 아이디 : rinniese@gmail.com 인프런 이메일 : rinniese@gmail.com 깃헙 아이디 : zeeun깃헙 Username : zeeun
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
transaction commit 관련
강의를 진행하면서 commit 이라는 걸 하던데 이게 어떤 의미일까요?예를 들어서 tx.commit 을 해야한다! 라고 강사님께서 말씀하시는데 이 commit 을 왜 하고 기능이 무엇인지 궁금합니다!
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
ssh 접속 에러
안녕하세요 인텔칩에서 ssh 도커 실행 명령어를 이용하여 설치 후 ssh 접속시 아래와 같은 에러가 발생합니다. 혹시몰라서 실리콘칩용 도커이미지로 인스톨 후 설치해보았는데, 이때는 ssh 접속이 가능합니다 (내부 도커 실행은불가능했지만) ssh 접속시 known_hosts 를 다시 쓰는 것도 확인하였습니다.구글링을 해봐도 현재 강의내용과 다른 내용이 많아서 직접 질문하는것이 빠를 것 같아 질문드립니다. kex_exchange_identification: Connection closed by remote host Connection closed by ::1 port 10022
-
미해결초보자도 만들 수 있는 스크롤 인터렉션. 1편 자바스크립트
예제에 들어있는 이미지엑박문제
예제그대로 열었을때 경로도 맞고 이름명도 맞는데 이미지가 안떠요 ㅠ
-
미해결Redux vs MobX (둘 다 배우자!)
mobx state action 변화 감지 관련
안녕하세요. mobx 강의 관련 친절하고 쉬운 설명 감사합니다.제가 질문할려는 것은 강의에서는 언급하지는 않았지만, reaction과 거의 유사한 mobx 함수인 autorun에 대해 여쭤볼게 있어 질문 올립니다.reaction은 감지할 state를 언급하면 그 state에 따라만 언급하는 걸로 알고 있고,autorun은 모든 observable state에 대해 반응 하는 걸로 제가 알고 있는데요.. var renderCount = 1; const App = observer (() => { const [object, setObject] =useState({name :' inha', id: 0}) //const [renderCount, setRenderCount] = useState(0); const test_state = useLocalObservable(()=>({ name : '', id : 0, })) function handle_Click() { renderCount++; test_state.id++; mobx_store.setarr(renderCount); } autorun(()=>{ console.log('autorun') }) useEffect ( ()=>{ reaction(()=>{ return test_state.id },()=>{ console.log('test_atate_reaction') }) },[]) 해당 코드에서 보시면 autorun과 reaction을 호출 등록하였고, reaction에 대해 test_state.id에 반응 하도록 했습니다. 실행을 하고 click 이벤트를 진행하면 reaction에 있는 console은 찍히지만, autorun에 있는 console은 제일 처음 실행 했을 때 말고는 찍히지가 않아여. return (//useObserver hook 나 Observer 감싸줘야 react에서 mobx가 제대로 적용 가능 <div > <p> current render count : {renderCount} </p> <button onClick={() => handle_Click()}> Click </button> </div> );그리고 해당 return문에 observable로 감싼 state가 따로 쓰이지 않으면 렌더링도 새로 되지 않아요.ㅠㅠ만약에 return문에 observable로 감싼 state가 있으면 리렌더링이 되고, 그때는 autorun도 호출됩니다.( 아마 렌더링 시에 자동으로 호출되서 그런것 같아요. 이건) 혹시 정확한 이유를 알 수 있을까요??autorun 같은 경우에는 꼭 observale로 감싼 것이 아닌 usestate로 선언한 state의 action에 의해 렌더링이 되도 호출 됩니다.