묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
N+1문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저번 챕터에서 나왔던 X to one 에서 n+1문제가 있어서 패치조인으로 최적화를 했었는데 이번에 X to many 문제에서 발생하는 데이터 뻥튀기 문제도 n+1문제라고 할 수 있나요?
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
LNK Parser 에러 문의
'[Autopsy] 정보확인법1' 과정에서 lnk 파일 extract 하여 LNK Parser로 실습하였는데 'Start' 버튼을 누르면 과정과 달리 'Lnk 파일이 아닙니다'라고 팝업이 뜨면서 진행이 안되네요?무슨 문제일까요? 무엇을 확인해보면 될까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
맥도 동일하게 적용될까요?
from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://google.com") time.sleep(2) #2. 알아서 버전업을 해줌별다른 반응이 없네요 ㅠ 맥북은
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
redux toolkit payload data 질문
https://github.com/ZeroCho/react-nodebird/tree/master/toolkitredux toolkit으로 바꾸면서 제로초님 강의를 듣고있는데 .addCase(addComment.fulfilled, (draft, action) => { const post = draft.mainPosts.find((v) => v.id === action.data.PostId); console.log('draft', draft, 'post', post, 'Comments', post.Coments); post.Comments.unshift(action.data); draft.addCommentLoading = false; draft.addCommentDone = true; })이런 코드를 보면 action.data이렇게 action에서 data를 가져오는데 제가 redux devtools에서 봤을 때 action안에 값들은 action.payload에 저장이 되어있는거 같습니다 혹시 값들을 action.data로 저장하는 방법이 있나요?
-
미해결언리얼 엔진4 입문 (C++ 기반)
자동완성 기능 사용법
선언 혹은 인클루드 입력하실 때 자동완성기능이 활성화되시는데 따로 설정할 것이 있는지 궁금합니다.예를들어 MyCharacter.cpp에서 #include "Components/WidgetComponent.h"를 전부 입력하는 반면선생님은 Comp로만 입력했을 때 자동완성으로 표기되셔서 다른 설정을 하신 것 같아 질문드립니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
8강 전이학습에서 kernel size 관련 질문 드립니다.
커널 사이즈의 의미가 먼가요?커널 사이즈를 input size에 맞게 대략 어림잡아 pre-trained 모델 (7, 7) -> (3, 3)으로 바꾸면 되는건가요?예를들어, (2, 2) 로 바꾸는 것과 어떤 차이가 있을까요?
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
Vercel 배포 후 thumbnail api 에러 발생합니다.
안녕하세요. Vercel 배포 후 상세페이지 meta tag내 thumbnail 이미지가 생성되지 않는 이슈가 발생합니다. (500 에러 발생)구글 참고하여 verce l내 runtime을 기존 Node 18에서 Node 14로 변경하고 빌드하여 해결하긴 했는데, 빌드 메세지가 아래처럼 발생합니다.(Error: Node.js version 14.x has reached End-of-Life. Deployments created on or after 2023-08-15 will fail to build. Please set Node.js Version to 18.x in your Project Settings to use Node.js 18.)Node 18로 빌드하고 난 후 vercel에서 runtime log를 확인해 보면 아래와 같은 에러가 발생하는데 구글링을 해봐도 14로 내리는 것 외엔 해결책을 찾을 수 없어 Node 18로 빌드하여 해결하신 분이 있는지 올려봅니다.[pid=22][err] /tmp/chromium: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory [pid=22] <process did exit: exitCode=127, signal=null> [pid=22] starting temporary directories cleanup
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
AbstractAuthenticationProcessingFilter내에서 HttpServletResponse값이 안들어갑니다
@Bean public SecurityFilterChain httpSecurity(HttpSecurity http) throws Exception { return http.cors().disable() .csrf().disable() .httpBasic().disable() .formLogin().disable() .authorizeRequests().anyRequest().authenticated() .and() .addFilterAt(authFilter(), UsernamePasswordAuthenticationFilter.class) .addFilterAt(jwtFilter(), UsernamePasswordAuthenticationFilter.class) .build(); } @Bean public WebSecurityCustomizer webSecurityCustomizer() { return web -> { web.ignoring().requestMatchers().antMatchers("/h2/**"); }; } @Bean public AuthFilter authFilter() throws Exception { var authFilter = new AuthFilter(); authFilter.setAuthenticationManager(authenticationConfiguration.getAuthenticationManager()); authFilter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/")); authFilter.setAuthenticationFailureHandler(new SimpleUrlAuthenticationFailureHandler("/error")); return authFilter; }설정은 위와 같이 했습니다.@Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { super.successfulAuthentication(request, response, chain, authResult); String SECRET = "secrsdkfjhjh4243j234jh2SDdsfjhgsdfhjgjFQQQQdasd1et"; Claims claims = Jwts.claims(); claims.put("username", SecurityContextHolder.getContext().getAuthentication().getName()); String compact = Jwts.builder() .setClaims(claims) .setIssuedAt(new Date(System.currentTimeMillis())) .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10)) // 1시간 .signWith(SignatureAlgorithm.HS256, SECRET) .compact(); response.addHeader("Authorization", compact); response.addCookie(new Cookie("token", compact)); }위와 같이 설정을 했는데 http 요청 테스트를 해보면 설정한 값이 하나도 들어가 있지않습니다.컨트롤러나 OncePerRequestFilter에서 값을 넣어보면 잘 적용됩니다..
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
django와 mysql container 연결하기
안녕하세요!도커 컨테이너로 mysql을 띄워놓고local terminal에서 django 서버를 실행시킬려고 합니다.하지만, 계속해서 아래와 같은 Unkown Mysql server host 'mysql' 에러 또는 Access denied 에러가 발생되어 여줘봅니다.django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql' (8)")코드는 다음과 같습니다.DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "instagram", "USER": "project", "PASSWORD": "a1s2d3f4", "HOST": "mysql", "PORT": "3306", } } mysql은 docker compose 가 아닌 하나만 실행해서 다음과 같이 했습니다. docker run -e MYSQL_ROOT_PASSWORD=a1s2d3f4 -e MYSQL_USER=project -e MYSQL_PASSWORD=a1s2d3f4 -e MYSQL_DATABASE=instagram -d -p 3310:3306 --name mysql mysql 제가 시도한 것들은 다음과 같습니다.실행 후 컨테이너 생성을 확인했고, docker exec -it mysql bash 명령어로 접속하여 password, username, database name 다 확인되어 정상적으로 로그인 확인 되었습니다. 사용한 명령어는 mysql -u project -p 그리고 root로도 로그인 해서 확인 완료했습니다.혹시 몰라서 django databases의 host를 0.0.0.0 으로 바꿔서 실행하면 django.db.utils.OperationalError: (1045, "Access denied for user 'project'@'localhost' (using password: YES)") 와 같은 에러가 발생됩니다. 이외에도 127.0.0.1 로도 바꿔서 해봤지만 동일한 에러가 뜹니다. 동일하게 localhost를 나타내는 IP 주소라서 그런 것 같습니다.그래서 docker inspect <container name> 을 사용해서 확인되는 IP 주소로 바꿔도 연결이 되지 않습니다.django server 실행 명령어는 다음과 같습니다.python manage.py runserver --settings=config.settings.production 0.0.0.0:8000 settings는 settings directory 안에 base.py, developement.py, deployment.py 로 3개를 나눠서 하고 있습니다. docker compose로 django app도 container로 띄우면 잘 작동됩니다. 도커 안에서라 그런지 잘 되는 것 같은데, localhost와 container로 하면 연결이 안됩니다.이번 강의를 들으면서 IP와 PORT 가 문제인 것 같은데 어떻게 시도를 하면 될지 잘 모르겠습니다.도와주시면 감사하겠습니다
-
해결됨입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두 수의 합 O(n) 문제에 관한 질문입니다.
강사님을 다른 곳에서 뵌 후에 이곳에서 뵈니 감회가 새롭습니다.코딩 테스트를 파이썬으로 치뤄보고자 파이썬을 열심히 공부 중입니다. 당연히 자바도 빼놓지 않겠습니다.두 수의 합 O(n) 문제에서 저는 이렇게 풀었는데, 강사님께서 푸신 것에 비해 시간복잡도가 어느정도 차이가 나는지 궁금합니다.다음은 해당 코드 블럭입니다.def solution(nums, target): answer = [0] * 2 num_dict = dict() for x in nums: num_dict[x] = target - x if x in num_dict.values(): answer[0] = x answer[1] = target - x return sorted(answer)감사합니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
swagger 404
문서와 동일하고 동영상과 동일하게 작성했습니다. npm install --save @nestjs/swagger 그런데 404가 뜨네요... 원인을 잘 모르겠습니다. import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';import * as process from 'process';import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';declare const module: any;async function bootstrap() {const app = await NestFactory.create(AppModule);const port = process.env.PORT;await app.listen(port);console.log(`listening on port ${port}`);const config = new DocumentBuilder().setTitle('Sleact Api').setDescription('Sleact 개발을 위한 API 문서').setVersion('1.0').addTag('sleact').build();const document = SwaggerModule.createDocument(app, config);SwaggerModule.setup('api', app, document);if (module.hot) {module.hot.accept();module.hot.dispose(() => app.close());}}bootstrap();
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
select 부분이 이해가 안가서 질문드립니다 ㅠ
안녕하세요. 판다님강의 열심히 듣고 있는 수강생입니다!결과 부분 진행중인데요~setTimeout안에 select를 넣어서qIdx번째 질문에서 클릭한 답이 select 배열데이터에 담기는데어째서 클릭한게 idx로 담기게 되는걸까요...? ㅠbutton을 클릭했을 때 addEventListener로 다음 질문으로 넘어가는건 알겠는데클릭한 답변이 왜 idx에 담기게 되는지 잘 이해가 안되어서요 ㅜㅜ그리고 button을 html에 안만들고 js에서 createElement로 만드신 이유가 따로있을까요..?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교안 30쪽 getline 질문이 있습니다.
string bufferflush;getline(cin, bufferflush);이 부분에서 질문이 있는데요. 이 부분을 제가 이해하기로는 cin을 수행할 때 \n부분 전까지만 입력을 받고 변수에 할당한 후 \n은 그대로 cin 입력 버퍼에 남기 때문에 저걸 없애기 위해서 string bufferflush를 선언한 후 getline(cin, bufferflush)를 수행한다고 이해가 되는데요. 제가 알기로는 cin.ignore()도 입력 버퍼를 한 개 지우는 역할을 한다고 들었는데 그냥 cin.ignore()로 대체하면 두 줄짜리 코드를 그냥 간단하게 한 줄로 끝낼 수 있는데 이게 더 효율적이지 않나 싶어서 질문을 드립니다.
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
str()은 어떤 때 사용하나요?
str()은 어떤 때 사용하나요? 헷갈립니다....ㅠㅠ
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
큰돌님~! 오버로딩 질문있습니다!
오버로딩 설명 해주실때class Person { void pay(String a, int b) { System.out.println(a + "가" + b + "원만큼 계산합니다. "); } void pay(int a, String b) { System.out.println(b + "가" + a + "원만큼 계산합니다. "); }}public class MyClass { public static void main(String args[]) { Person p = new Person(); p.pay("영주",100000); p.pay(100000,"영주"); }}이렇게 말씀하셨는데! 오버로딩을 하면서 pay함수를 2번이나 썼는데 그래도 코드가 깔끔하다라고 정의를 하나요?좋은 코드는 중복되는 코드가 없어야된다 이렇게 들었었는데!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
브라우저 재 접속 시 로그인 상태 유지
안녕하세요.브라우저 재 접속 시 로그인 상태 유지를 하고 싶습니다.로그인 후 어플리케이션의 쿠키에 refreshToken이 담긴 것을 확인하였습니다.브라우저를 재접속하면 refreshToken이 사라져있는데 이것은 브라우저를 종료하면 쿠키가 휘발되는 성질로 인해 사라지는 것이 맞나요? 그렇다면 브라우저 재접속 시 로그인 상태 유지는 어떻게 구현할 수 있는지 궁금합니다.감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
500 화이트라벨 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]JdbcMemberRepository를 강의pdf에있는 코드 그대로 복사붙여기해서 모든걸 다 import 했는데 500화이트라벨 에러가 뜨네요..어디 부분에서 잘못된걸까요 ?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); } }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8080포트 이미 사용 중
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HelloSpringApplication을 실행하였을 때 이미 8080번 포트를 사용 중이라는 오류 문구를 출력하길래 cmd에서 8080번 포트를 사용중인 프로세스를 강제 종료하는 방식으로 해결하여서 실행하여 실습을 완료하였습니다. 그런데 컴퓨터를 재부팅 시에 다시 HelloSpringApplication을 실행하게 되었을 때 또 다시 8080번 포트를 사용 중이라고 에러를 띄우는데 매번 실행마다 8080번 포트를 사용 중인 프로세스를 찾아서 강제종료 하는 것은 번거로울 것 같은데 혹시 다른 해결방안을 알 수 있을까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
private ip와 public ip 할당
private ip를 공유기를 사용할때 말고 할당받을 수 있는 또 다른 예시들이 있을까요? public ip를 할당받을 때의 예시도 궁금합니다. 감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
PreparedStatement 인터페이스 관련 질문.
정말 기초적인 질문 일 수도 있지만 질문해 봅니다.JDBC의 이해 MemberRepositoryV0 - 회원 등록 부분에서public class MemberRepositoryV0 {public Member save(Member member) throws SQLException {String sql = "insert into member(member_id, money) values(?, ?)";Connection con = null;PreparedStatement pstmt = null;try {con = getConnection();pstmt = con.prepareStatement(sql);pstmt.setString(1, member.getMemberId());pstmt.setInt(2, member.getMoney());pstmt.executeUpdate();return member;} catch (SQLException e) {log.error("db error", e); throw e;} finally { close(con, pstmt, null);}}위 코드를 보면 PreparedStatement는 아래 사진의 인터페이스로 알고 있습니다. 상세 동작이 구현되어 있지 않은 인터페이스 상태인데 위 코드에서 pstmt.executeUpdate();가 동작되는 것에 대해서 동작 원리가 맞는지 궁금합니다. 제가 이해한 것으로는 PreparedStatement pstmt 값 -> 사용하는 SQL Driver에서 가져가서 SQL에 맞게 변환 및 적용하는 것으로 이해 했는데 맞나요?