묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
이클립스 VS 비주얼스튜디오 장 단점 알려주세요~
안녕하세요 강사님 ~현재 저는 이클립스 사용해서 개발중 입니다회사에 일부 신입개발자나, 젊은 분들은 비주얼스튜디오코드를 사용중이더라구요저는 아직 설치는 아직 해보지 않았지만, 처음 설정 잡기가 많이 까다롭다고 하더라구요 강사님 개발 경력이 많으시니, 최주호 강사님이 생각 하시는 이클립스에서 -> 비주얼스튜디오 로 갈아 탄다면 어떤 이점이 있고, 이런 부분은 불편해서 감안 해야 한다 설명 해주셨으면 좋겠습니다 ( 참고로 html, css, jquery, javascript 뒷단 java, sql 모든 부분 개발 유지 보수 하고 있습니다 ) 급한 부분 아니니 한가하게 시간 나실 때 답변 주세요..계속 좋은 강의 많이 올려주셨으면 좋겠습니다감사합니다. 좋은 하루 보네 세요~ #장단#장단점#비교#eclipse#비주얼스튜디오코드#visual-studio-code#visual#studio#code#비주얼#스튜디오#코드
-
해결됨ARM Cortex-M 프로세서 프로그래밍
r7 레지스터 관련 질문 드립니다.
강사님. 강의 잘 보고 있습니다.r7 레지스터가 강의 초반부에 스택 포인터와 관련된 레지스터라고 말씀해주셨던 것 같은데 왜 필요한지 잘 이해가 가지 않습니다.익셉션 호출시 하드웨어에서 자동으로 sp를 포함한 8개의 레지스터를 저장한다고 강의에서 설명해주셨는데, 왜 따로 r7에 스택 포인터를 저장하고 필요시 저장까지 하는지 이해가 필요할 것 같습니다.
-
해결됨스프링 부트 - 핵심 원리와 활용
예제 코드 작성시 왜 생성자를 @Autowired 안 쓰고 명시 해서 만드시나요?
강사님 안녕하세요~스프링부트 강의 잘 듣고 있습니다.. 자동구성 > 예제만들기 동영상 중 @Repository 만들 때 왜 public MemberRepository(JdbcTemplate templage)주입받게 하나 @Autowired 로하면 안되나요? ( 불필요하게 코드도 만들고 길어진다고 생각이 들어서요... )테스트 코드 작성 인지 때문 인지.. 강사님의 강의 대부분의 동영상에서는 생성자를 꼭 만드시더라구요오토와이어드 안 쓰구요 제가 기본 개념이 안되어서 이런 질문을 드리는 건지 죄송하고 부끄럽지만 질문 드립니다 #스프링#스프링부트#spring#boot#spring-boot#Autowired#생성자#왜#주입#받게#하나
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
아이디중복확인 ajax
아이디 중복확인 ajax작성할때 /memRegisterCheck.do에서 리턴값 1 또는 0 받는데 ajax에 dataType 안적는 이유는 뭔가요?
-
미해결
socket.io 실행
안녕하세요채팅을 구현하기위해 socket.io를 썼는데 통신이 안되는 것같습니다 io에 주소를 제대로 넣었고 서버 on 마다 클라이언트에서 emit으로 작성했는데 작동하지 않습니다 이유가 무엇일까요? // server 파일의 코드입니다 require('dotenv').config(); const { createApp } = require('./app'); const { appDataSource } = require('./models/index'); const startServer = async () => { const app = createApp(); const PORT = process.env.PORT; await appDataSource .initialize() .then(() => { const server = app.listen(PORT, () => { console.log(`🟢server is listening on ${PORT}🟢`); }); const io = require('socket.io')(server, { cors: { origin: true, credentials: true, }, }); const { socketMessage } = require('./middlewares/socket.io'); socketMessage(io); }) .catch((err) => { console.log(`❌Failed server connect❌`); appDataSource.destroy(); }); }; startServer(); // server의 socket 파일의 코드입니다 const jwt = require('jsonwebtoken'); const chatDao = require('../models/chatDao'); const { catchAsync } = require('../utils/error'); const socketMessage = (io) => { io.use((socket, next) => { const token = socket.handshake.headers.authorization; if (!token) { return next(new Error('Authentication error')); } jwt.verify(token, process.env.SECRET_KEY, async (err, decoded) => { if (err) { return next(new Error('Authentication error')); } userId = decoded.userId; next(); }); }); io.on('connection', (socket) => { console.log('A User Connected.'); socket.on( 'create_room', catchAsync(async (postId, callback) => { const room = await chatDao.createRoom(userId, postId); socket.join(room.raw.insertId); callback(room.raw.insertId); }) ); socket.on( 'enter_room', catchAsync(async (roomId, callback) => { socket.join(roomId); callback(roomId); }) ); socket.on('new_text', async (content, roomId, callback) => { await chatDao.createChat(userId, content, roomId); socket.to(roomId).emit('new_text', content); callback(content); }); socket.on('disconnect', () => { console.log('접속이 해제되었습니다', socket.id); clearInterval(socket.interval); }); socket.on('error', (error) => { console.error(error); }); socket.on('send', (data) => { console.log(data); socket.emit('reply', { data, }); }); socket.interval = setInterval(() => { socket.emit('news', 'Hello Socket.IO'); }, process.env.SOCKET_INTERVAL || 1000); }); }; module.exports = { socketMessage }; // client 코드입니다import React, { useState, useContext } from 'react'; import io from 'socket.io-client'; import './chat.css'; import { MenuContext } from '../../components/Nav/MenuProvider'; const Token = localStorage.getItem('accessToken'); const socket = io.connect('http://192.168.0.194:4000', { withCredentials: true, extraHeaders: {Authorization: `Bearer ${Token}` } appDataSource.destroy(); }), }); socket.on('connection', () => { console.log('Connected to server'); }); const Chat = () => { const [roomId, setRoomId] = useState([]); const [searchData, setSearchData] = useContext(MenuContext); const handleCreateRoom = event => { event.preventDefault(); socket.emit('create_room', searchData, ({ searchData, roomId }) => { console.log(`Joined room ${roomId}`); setRoomId(roomId); }); }; const handleJoinRoom = roomId => { socket.emit('enter_room', roomId, roomId => { console.log(`Joined room ${roomId}`); setRoomId(roomId); }); }; const handleNewText = content => { socket.emit('new_text', content, roomId, content => { console.log(`Sent message: ${content}`); }); }; const handleNewText = content => { socket.emit('new_text', content, roomId, content => { console.log(`Sent message: ${content}`); }); }; const onCheckEnter = e => {if (e.key === 'Enter') { handleNewText(); } }; return ( <div className="h-screen pt-36"> <button onClick={handleCreateRoom}>테스트</button> <button onClick={() => handleJoinRoom(roomId)}>테스트2</button> <input id="input-text" type="text" onKeyDown={onCheckEnter} /> <button onClick={handleCreateRoom}>제출</button> </div> ); }; export default Chat;
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
컴포넌트 재사용하는 부분에서 궁금한게
여기서 isEdit는 변수인건가요..? vscode에서는 속성이라고 뜨는데 뭔지 헷갈려요..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷 사이즈에 대한 질문 드립니다.
강사님 네트워크 wsabuf.buf 는 char포인터 형으로 되어 있는데 패킷을 보내게 될때 패킷에 사이즈를 넣어주도록 설계가 되어있는데 char형이라면 127 크기 까지의 패킷만 보낼 수 있는 건가요?
-
미해결실전! Querydsl
DTO .as 질문입니다
다른 분이 올린 질문이랑 같은 내용입니다.5분 30초정도에 생성자 방식으로 했기 때문에 as쓸 필요 없이 타입만 맞으면 된다고 하는데, 제가 Projections.constructor로 실험해봤는데member.id.as("asdasd") 이렇게 넣어도 잘 작동하는데이거에 대한 이유를 알고 싶습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D번 문제 궁금한거 생겨서 질문드려요~
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.C++에서는 strcmp를 쓰지 않아도 문자열끼리 같은지 안 같은지 비교가 되는건가요?되는걸 문제로 확인은 했는데, 어떤 문자열이던 되는 건지 궁금해서 질문드려요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
testMember 실행 오류
강의를 따라하어 testMember를 실행해서 h2 db에서 member 테이블이 생성되고 memberA 까지 추가된것을 확인한 후에 코드를 수정하지 않고 한번 더 돌렸는데 그때 부터 계속 저런 오류가 발생합니다.혹, DB에 이미 테이블이 생성되어서 그런것인가요? 아니면 다른 문제가 있는건가요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
파이어베이스 회원가입 실패
다이어트 메모 앱 만들기에서'파이어베이스 이메일 로그인 부분'을 만들고 있습니다. 아이디와 비밀번호를 입력하고회원가입 버튼을 클릭 시 시 실패라고 뜨면서위와같은 로그가 뜨고 있습니다.어떤 부분이 문제인 걸까요?ㅠㅠㅠ 아래는 github 링크입니다. https://github.com/minji9988/fb_firebase_email_password_auth
-
미해결
파이어베이스 로그인 실패
다이어트 메모 앱 만들기에서'파이어베이스 이메일 로그인 부분'을 만들고 있습니다. 아이디와 비밀번호를 입력할 시 로그인 실패라고 뜨면서위와같은 로그가 뜨고 있습니다.어떤 부분이 문제인 걸까요?ㅠㅠㅠ 아래는 github 링크입니다. https://github.com/minji9988/fb_firebase_email_password_auth
-
해결됨실전! Querydsl
3분 10초 질문입니다
@Data를 무조건 써야되는 건가요?@Setter는 웬만하면 사용 안 하는게 좋다고 들었는데@Setter가 없으면 Condition값이 파라미터로 안 넘어옵니다..해결 방법이 있을까요?
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
클래스와 style 바인딩 수업 질문
이 코드에서 34번째줄 toggle 함수를 메서드로 받아와서 template에 있는 8번째줄 클릭 이벤트에 넣을때는 제가 예전에 option API 방식으로 할때는 toggle() 이렇게 작성했습니다. 혹시 composition API 방식은 메서드에서 받아온 함수라도 template에 작성할때 뒤에 () 를 안 붙여도 되나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct를 적용하지 않았을 때의 결과 관련
강의를 중간에 distinct를 적용하지 않으면 포스트맨에서 결과가 중복되게 나오고, 쿼리도 inner join으로 되어야 하는데 이상합니다ㅜ코드가 모두 동일한데, 콘솔에 찍어봐도 4건이 아닌 2건 밖에 조회가 되지 않고 결과도 2건으로 나옵니다..또한, 강의에서는 inner join이 나가는데 제 코드는 join이 나갑니다..뭐가 문제일까요?
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
선생님 pc 사양이 어떤지 궁금합니다 :)
밤중에 작업하다가 문득 선생님 작업 pc 사양이 궁금해서 .. 미리 답변감사드립니다 :)
-
미해결스프링 핵심 원리 - 기본편
프로젝트 생성 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]입문 강의를 듣고 기본편으로 넘어왔는데 프로젝트 생성에서 자꾸 오류가 발생해서 질문드립니다 입문편에서 생성한 프로젝트에서는 오류가 뜨지않았었는데 그냥 입문편에서 생성한 프로젝트로 기본편 강의를 들어도 문제없을까요?
-
해결됨기출로 대비하는 개발자 전공면접 [CS 완전정복]
Array와 LinkedList 메모리 할당영역 질문
Array와 LinkedList에서 array는 stack 영역에 할당된다고 공부하였는데, Java에서 배열(Array)은 Heap 영역에 메모리를 할당받는다고 알고있는데 어떤게 맞는건지 헷갈립니다..
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인 클릭시 로딩
안녕하세요 제로초님 saga와 reducer 연결하는 강의를 듣고 있는데 로그인 버튼 클릭시 로딩만 되고 다음으로 안 넘어가서 질문 드립니다..에러는 안 나고 리덕스 데브툴즈에는 LOG_IN_REQUEST만 뜨는 상태입니다.console창에서 reducer login은 뜨지만 saga logIn은 안 떠서 sagas/user의 function* login() {} 함수가 실행이 안되는 것 같습니다..index.jsuser/reduceruser/sagaconfigureStore.js아래에 해결한 사람들의 방법으로도 해봤는데 여전히 안되어서 질문 남깁니다...!!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
타입스크립트의 generic 강의 마지막 요약해주시는 부분에서
안녕하세요 멘토님항상 강의 잘 듣고 있습니다.좀 사소한 질문일 수도 있으나, 알고 싶은 부분이라 질문 글을 쓰게 되었습니다.타입스크립트의 generic 강의 1:06:10 쯤 섹션 수업 내용 요약해주실 때 container를 가급적 최소한 사용하라고 말씀하신 부분에서 궁금한게 있습니다.예를 들어보자면, 게시글 작성 컴포넌트 폴더에서만약 기존에는 container-persenter 방식으로 만들어놨다가BoardWrite.container.tsxBoardWrite.presenter.tsxBoardWRite.queries.ts...이렇게 리스트가 있는 상태에서React-hook-form 이나 custom-hook을 사용하여 리팩토링을 하고나서 container의 내용이 거의 확 줄게되면 container 파일의 코드를 presenter랑 합치고 container 파일은 삭제하는게 좋다 라는 말씀이실까요?그렇다면 리팩토링후 container 파일을 삭제하고 presenter에 합쳤다고 가정할 경우BoardWrite.presenter.tsxBoardWRite.queries.ts...이렇게 남게 되는데요 그러면 BoardWrite.presenter.tsx 라는 파일 명을 presenter로 그대로 둬도 상관없는지, 현업에서도 container가 따로 없어도 presenter라는 파일 명으로 보편적으로 놔두는지 궁금합니다.그리고 container와 presenter를 보편적으로 합치는 기준이 둘을 합쳐도 70~80줄 이내일 경우에 합치는 것인지도 궁금합니다. 감사합니다.