묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Host 질문드립니다.
안녕하세요. Host에 대한 제 생각이 맞는지 질문드립니다. Host 없이 "GET /hello HTTP/1.1" 이렇게만 오면 서버에서 이 요청을 어디서 처리해야 하는지 알 수 없기 때문에 Host로 처리해야 하는 위치를 알려준다고 이해해도 될까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
userRepository.findByUserId(userId) 구문 관련해서 질문이있습니다.
안녕하세요. 강사님 수업을 듣고있는 학생입니다. 수업을 듣고 코드를 보다보니 궁금한 부분이 있어서요. UserController에서 userRepository.findByUserId(userId)를 사용하고 있는데, userRepository의 interface에 findByUserId(userId) 함수가 사용될것이라고 정의되어있는것을 확인했고, 제 생각대로라면 findByUserId(userId)에 대한 함수 본체에 대한 구성정의가 필요할것같은데 userRepository는 impl 클래스가 따로 존재하지 않고 userRepository의 interface에서 CRUD를 상속받는 class에 따라갔는데도 findByUserId에 대한 함수이름으로 정의된게 없는데 java에서는 어떻게 알고 conroller.class에서 findByUserId의 기능을 수행할수있는건지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이벤트 리스너..?에 관련하여 질문 있습니다.
Manager.input.KeyAction -= OnkeyBoard; Manager.input.KeyAction += OnkeyBoard; //기존에 구독이 있을지 모르니 취소하고, 다시 구독 신청 // Manager 클래스의, input 을통하여 instance. _input을 반환받고, 여기서 KeyAction이라는 deleagate의 OnkeyBoard 메소드를 체이닝 이라고 이해하였는데 맞게 이해한 것인지 여쭤 보고싶습니다! 또한 invoke() 메소드는, KeyAction이라는 함수 포인터에게 연결되어 있는 함수들을 호출하라고 알려주는 메소드가 맞는 것인가요? 감사합니다
-
미해결CSS에 날개를 달아주는 Sass (SCSS)
SASS Lint 문법 오류 출력
안녕하세요 강사님~ 강의 잘 듣고 있습니다! 다름이 아니라 강의 초반 SASS린트를 설치해서 사용하라고 하셔서 설치를 했는데 강사님 영상에서도 그렇고 제 PC에서도 보는데도 패널창에서 SASS 린트 문법 오류가 나오더군요.. 혹시 이거 수정할 수 있는 방법이 있을까 싶어서 질문드립니다!
-
미해결만들면서 배우는 리액트 : 기초
영상 오류입니다.
영상 오류로 34초부터 깨진 초록색 화면이 나옵니다.
-
미해결Vue.js 시작하기 - Age of Vue.js
vue
버전2로 설치했는데도 이렇게 뜨네요 왜이러나요?ㅠㅠ
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
터미널 실행시 발생하는 발생하는 오류에 대한 문의입니다
안녕하세요, 선생님 강의 항상 잘 보고있습니다.최근 터미널 코드 실습중인데 터미널 실행하여 트레이닝 시 TypeError: eval() arg 1 must be a string, bytes or code object 위와 같은 오류가 발생합니다.혹시 원인 알수 있을까요? 터미널에서 평가시에는 문제가 발생하지 않습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지 구조 설계
패키지 구조 설계를 강의로 다루는 부분이 있을까요? 아직 제대로된 프로젝을 만든적이 없어서 패키지 구조 설계를 어떻게 해야할지 잘 모르는 상태입니다. 뭔가 알듯하면서도 잘 모르는게 개념이 확실히 안잡혀서 그런것같은데 혹시 패키지 구조 설계를 다루는 강의가 있을까요? 현재는 Spirng 로드맵대로 강의 보고있는중인데 jpa 강의쪽에서 패키지 구조 설계를 다루는지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jdbcMemberRepository.java 오류 - 미해결
package hello.hellospring.repository;import hello.hellospring.domain.Member;import org.springframework.jdbc.datasource.DataSourceUtils;import javax.sql.DataSource;import java.sql.*;import java.util.ArrayList;import java.util.List;import java.util.Optional;public class JdbcMemberRepository implements MemberRepository { private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } return members; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); }} jdbcMemberRepository.java에요 pdf 파일에 있던 코드를 그대로 복사했는데 순수 JDBC 강의에서는 잘만 되던데 제 컴에선 오류가 뜨네요.
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
Cannot log after tests are done. Did you forget to wait for something async in your test?
안녕하세요 강사님! 테스트 실행하면 통과하는데, 콘솔에 Cannot log after tests are done 가 뜨는 경우, "테스트가 끝난 후에 log 를 내보낼 수 없다"는 의미로 이해하고 있습니다. 이러한 경고(?)창을 안 뜨게 하는 방법이 있나요? 감사합니다
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
lagest max질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 13:55초쯤에 largest = max(largest,tmp)라고해서 배열중에서 가장큰값을 꺼내오려고 코드짜신걸로알고있는데 굳이 lagest=0하고 배열에있는원소랑 값을 비교하는이유가 혹시 어떤건가요?? 코드작성시 largest=0으로 안하고 largest=max(Line)으로 해도 답은 200이나오는데 굳이 largest=0으로 초기화하는이유가뭔지 궁금합니다
-
미해결
upgrade avaliable to version 2.1.210
업그레이드를 하라는데 이게 뭔가요?
-
미해결스프링 핵심 원리 - 기본편
기본편 구매했으면 입문편은 따로 안봐도될까요?
내용이 중복되서 굳이 안봐도 된다면 기본편부터 학습하려고 하는데, 무료로 제공하는 스프링 입문편을 봐야할까 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
지금까지 이렇게 이해한 내용이 맞을까요?
마이크로서비스 애플리케이션의 확장성을 위해서 각 애플리케이션에 랜덤포트를 부여. 그러면 api gateway에서는 어떤 마이크로서비스가 어떤 포트번호를 사용하는지 모르기 때문에 eureka를 활용해서 service discovery로 각 마이크로서비스의 위치를 파악. api gateway에서는 각 마이크로서비스의 이름을 'lb://' 처럼 접근해서 로드 밸런싱 적용. 이 때 spring cloud gateway가 netflix의 zuul(요청 전달), ribbon(로드 밸런싱)의 기능을 둘 다 수행할 수 있는 프로젝트기 때문에 가능. 처음 공부하는 분야라 조금씩 헷갈리네요 ㅎㅎㅎ 위처럼 이해한 내용이 맞을까요?
-
미해결마케터를 위한 구글 애널리틱스 실무
PDF 가이드 북 요청드립니다.
안녕하세요, PDF가이드북 아래 메일로 부탁드립니다! tone.kfo@gmail.com 감사합니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
조현영님께서는 switch 구문을 사용하는것에 대해 어떻게 생각하시나요?
라우트 매개변수를 활용해서 url에 데이터베이스의 id 컬럼값을 입력하면 그 id 컬럼에 해당하는 로우를 보여주는 라우터를 스위치 구문을 사용해서 나타내보았습니다. router.get("/:id/info", async (req, res, next) => { try { let productInfo = await Product.findAll({}); switch (req.params.id) { case "1": productInfo = productInfo[1]; break; case "2": productInfo = productInfo[2]; break; case "3": productInfo = productInfo[3]; break; case "4": productInfo = productInfo[4]; break; case "5": productInfo = productInfo[5]; break; case "6": productInfo = productInfo[6]; break; case "7": productInfo = productInfo[7]; break; case "8": productInfo = productInfo[8]; break; case "9": productInfo = productInfo[9]; break; case "10": productInfo = productInfo[10]; break; case "11": productInfo = productInfo[11]; break; default: res.locals.message = "No more product on that url"; res.render("noProduct"); return 0; } res.locals.id = req.params.id; res.locals.productName = productInfo.name; res.locals.productPrice = productInfo.price; res.locals.productOrigin = productInfo.origin; res.locals.productType = productInfo.type; res.render("productInfo"); } catch (err) { console.error(err); next(err); } }); 근데 이런 방식의 단점은 id컬럼이 증가할 때마다 제가 수동으로 케이스문을 추가해야 한다는 것입니다. 조현영님께서는 스위치문을 현업에서 사용해보신 경험이 있으신가요? 사용하신다면 어떤 방향으로 사용하시나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
동적 파일 위치에 대해서 여쭤볼게 있습니다!
안녕하세요. 김영한 선생님의 로드맵대로 현재 HTTP 부분을 수강중인 수강생입니다. 한가지 궁금한 점이 있어서 질문을 남기게 되었습니다. /resources/static/img는 웹사이트에서 메인 이미지 등 고정되는 정적 이미지를 저장하는 곳으로 사용하고 있습니다. 그래서 /resources/static/images 이런식으로 웹사이트 내에서 업로드 되는 이미지를 저장시키면 서버를 다시 키거나, 해당 폴더를 리프레쉬해야 이미지를 불러올 수 있는 것을 확인하였습니다. 웹사이트에서 등록되는 수많은 동적 이미지들은 어디에 두는게 맞는건가요??? 답변부탁드립니다. 감사합니다.
-
해결됨진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 데이터 가공부터 분석까지
엑셀 _ 데이터형식 (문자, 숫자) 관련 문의드립니다.
새해 복 많이 받으세요. 파워쿼리와 관련된 질문이 아니어서 문의드리기가 좀 그렇지만… 일단 올려보겠습니다. (적합치 않으면 문의글은 삭제하겠습니다) 스마트스토어에서 판매하는 상품들의 사용후기를 - 엑셀로 모으고, 이를 근거로 상품별/월별로 구매자들이 준 평점과 사용후기 내용을 분석해보려고 합니다. * 일단 사용후기들은 아래와 같은 테이블 형태로 수집할 수 있는 상태입니다. 아래 테이블의 값들은 함수/파워쿼리/VBA 등은 적용되지 않은 raw data입니다. (숨긴 부분은 상품명입니다) * 이 테이블 기반으로 피벗테이블을 만들어서 상품별-월별 사용후기 평점의 평균을 구해보려고, 평점 필드의 표시형식을 '평균'으로 설정하여 했더니… "텍스트 데이터 형식을 지원하는 계산이 아니기 때문에 평균이 있는 이 필드를 요약할 수 없습니다."라는 메시지가 떴습니다. (이 메시지는 '합계'를 선택했을 때도 마찬가지로 나타났습니다) 그래서 raw data 테이블의 평점column을 '숫자' 형식으로 나타나도록 변경 후, 다시 피벗테이블을 만들어봤지만 같은 메시지가 뜨고 있습니다. * 그래서 또 다시 피벗테이블을 만들 때 '데이터 모델'에 체크한 후 --> 측정값을 아래와 같이 만들어보고자 했습니다만… 역시 에러메시지가 나타났습니다. 아무래도 raw data 테이블의 평점 column의 데이터 형식에 문제가 있는 것 같습니다만, 구글링을 아무리 해봐도 문제 해결의 실마리를 잡지 못해 문의를 드리게 됩니다. 강사님께서 단번에 답을 주실 수 있는 문제이길 바라며, 다시 한 번 도움을 요청드립니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
logout에 대해서
강의에서 보면 @PostMapping("/logout")public String logout(HttpServletResponse response) { expireCookie(response, "memberId"); return "redirect:/";} private void expireCookie(HttpServletResponse response, String cookieName) { Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie);} 강의 코드가 위와 같은데요. 궁금한게 왜 굳이 POST 메서드로 컨트롤러 매핑을 했는지 궁금합니다 세션 쿠키는 어차피 요청시 값이 전달이 되어 GET으로 매핑해도 될것같은데 POST로 매핑한 이유가 궁금합니다.
-
미해결Java TPC 실전프로젝트 (Java API 활용)
스레드 관련 질문입니다.
자바 문법 관련 질문입니다. 1. 서버 클래스에는 inner Class로 스레드를 상속한 ServerReceiver 클래스가 만들어 집니다. 이 클래스를 ServerReceiver thread = new ServerReceiver(socket);을 하고 thread.start(); 해서 실행시킵니다. 채팅 클래스에서는 inner Class에 static이 붙습니다. 이 차이가 무엇인지? 2. 채팅클래스 관련. 주고 받고 하는 두 개의 스레드를 start()(==run()) 메서드를 실행시킬 때 Thread sender = new Thread(new ClientSender(socket,name)); Thread receiver = new Thread(new ClientReceiver(socket)); sender.start(); receiver.start(); 이전에 서버 클래스에서는 ServerReceiver thread = new ServerReceiver(socket); 이런식으로 호출을 해서 사용했습니다. Thread를 상속했기에 Thread로 받을 수 있다는 점은 이해했으나 ClientSender sender=new ClientSender(socket,name); ClientSender receiver =new ClientSender(socket); 이렇게 해도 되는 부분이 아닌지? 궁금합니다~ 3. 클라이언트에서는 메인 클래스에서 실행되는 반면에 서버 클래스는 메인에서 자기 자신의 클래스를 호출하여 메서드를 실행시킵니다. public static void main(String[] args) { new Project06F_MultiChatServer().start(); } 이 start()메서드 안에서 이전에 질문했었던 (static이 붙지 않은)Inner class를 호출합니다. 이 부분도 메인 메서드에서 굳이 자기 자신을 new로 호출해서 메서드를 실행시키는 이유가 궁금합니다. 4. 그리고 Project06F_MultiChatServer 변수 = new Project06F_MultiChatServer(); 변수.start(); 이렇게 하지 않아도 되는 이유도 궁금합니다. 사실 1번과 2번 질문이 이어지는 질문인거 같기는 하지만 일단 모르는 부분이기에 질문드립니다.