묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 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에 맞게 변환 및 적용하는 것으로 이해 했는데 맞나요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
난독화(?) 크롤링
안녕하세요.클래스나 ID가 난독화(?)된 형태의 경우이거는 해당 사이트 빌드할때마다 변경된다던데요.이런 경우 구조적으로 크롤링 할수밖에 없는걸까요? *1ialerq 같은 경우
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간과 점수 변수를 넘길 때 선언과 동시에 더한 값을 넘기게 되면 어떻게 되나요 ??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. static void DFS(int level, int time, int score, Exam[] arr) {if(time > m) return; if(level == n) {if(time <= m) {answer = Math.max(answer, score);}}else {DFS(level+1, time+=arr[level].time, score+=arr[level].point, arr);DFS(level+1, time, score, arr);}} else 부분에 time+= arr[level].time 처럼 선언과 동시에 더한 값을 메소드에 넘기게 되면 time 값이 가장 마지막으로 선언 된 time 값으로 고정이 되어 이전 값으로 안 돌아오게 되나요 ?
-
미해결
[교육문의]교육 문의 드립니다.
안녕하세요!작년 인프런 교육을 진행했던 ktmos북부 기업교육 담당자 박창현입니다.H.P : 010-2917-6045E-Mail : changhyun.park@ktmos.com 올해도 4개 강좌에 대한 11명 진행예정인데기업교육 담당자 연락처나 이메일 알려주시면감사하겠습니다.감사합니다. 교육추진 개요1. [관리코스 #1] 설계(UML+ClassDiagram) : 1명2. 14일만에 배우는 ASP.NET CORE : 1명3. ASP.NET Core 웹개발 기본 강좌 : 1명4. 파이썬으로 뭘 만들지? 남작사의 파이썬 알쓸파잡 : 8명
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
DOGS VS CATS문제에서 흑백사진사용시
선생님 안녕하세요.. 덕분에 파이터치문법에 대해서 이해할수 잇게 되엇습니다 ㅎㅎ다른 여러가지강의도 들어봣는데, 가장이해하기 쉽게설명해주셔서 드디어 이해햇다라고 느끼게 해주는 강의엿습니다 ㅎㅎ 참고로 질문하나 드리겟습니다 ㅎ, 마지막강의 캐글문제 DOGS VS CATS문제인데요.. 제가 가지고 잇는 이미지파일이 흑백사진파일인데 이 흑백사진파일을 사용할때는 그냥cv2.cvtColor()로 컬러로 변환만 하고 그냥 사용하면 되는지요?예를들어, 흑백사진을 그대로 사용하니 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])에서는 에러가 나던데....흑백사진을 사용할때의 코드상의 변경할 부분이 따로 있는지 알고싶습니다 ㅎ답변 부탁드리겠습니다 ㅎ
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
requests, soup로 크롤링 했을때 안가져와지는 경우 어떻게 해야하나요?
안녕하세요.문의드려요. 실전으로 쇼핑몰들 크롤링 해보고 있는데요.상품 상세 페이지라면 가격, 브랜드명 이런건 되는데,상품 상세 정보 부분은 크롤링이 안되더라고요. 지그재그 등header에 에이전트 모질라 넣어도 안되고.. 그리고 어떤 사이트는 res.statusCode 찍어보면 403이나 404가 오는 사이트도 있고.. 위 두가지 유형처럼 막혀있을 경우 뚫을 수 있는 방법이 있을까요?
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
인덱스 코딩시간 문제풀이
indexOf(), lastIndexOf()를 활용한 코드 작성 문제 풀이입니다. 부족하거나 틀린점이 있다면 알려주세요!이런식으로 하는게 맞는지 문제해결방식이 헛갈리네요...!//출생날짜를 변수로 저장 var birth = "19971212"; //나이가 27살인가요? var k = birth.indexOf(1997); //출생에 제일 앞에 위치하는 년도 4자리는 앞에서부터 구해야 정확하니 indexOf를 사용하여 변수 k에 저장해준다 if(k == 0){ //년도가 인덱스 0번째로 확인된다면 원하는 년도 출생임으로 27세가 된다. console.log("27세 입니다."); }else{ //그렇지 않을 경우 다른 나이로 판단한다. console.log("27세가 아닙니다."); } //생일이 12월인지 구하시오. var i = birth.lastIndexOf(12, 4); //생일은 년도보다 뒤에 있기 때문에 lastIndexOf를 사용하되 날짜와 혼동 될 수 있으므로 2번째 파라미터를 활용해 월에 해당하는 위치부터 시작하도록 설정한다. console.log(i); if(i == 4){ //인덱스 4번째가 월에 해당하는 위치이기 때문에 해당 위치로 확인되면 12월생임을 알 수 있다. console.log("12월생입니다."); }else{ //그렇지 않을 경우 다른 월로 판단한다. console.log("12생이 아닙니다."); }
-
미해결스프링 시큐리티 OAuth2
안녕하세요! 소셜로그인 관련 질문입니다!
프로젝트MSA 환경에서 프론트는 외부 서버에서 별도로 배포합니다.프론트는 APIGateway 로만 데이터를 교환하고자 합니다.현재 카카오 로그인 기능만 구현하고자 하는데 이를 JWT + Redis 를 활용하여 JWT 토큰을 검증하고 Gateway 에서 검증하고 각 서비스를 호출 하는방식으로 구현하고자 합니다. 제가 이해한게 맞다면 자체 포함타입일거같습니다.플로우는 다음과 같습니다Front kakao click -> kakao 검증 -> 프로젝트 서비스의 회원(member) 별도 저장 이때 Front 요청-> gateway(Auth-client) 로드밸런싱-> Authorization Server(Auth-Server) kakao인증후 User권한 인가 jwt -> Front 요청 -> gateway(redis 에 세션,jwt 저장) 이렇게 될것이라고 생각하고 있었는데 강의를 보다보니 Kakao login 과 jwt 는 client 쪽인 apigateway 에서 구현을 해야하는건가요? 또한 개념적으로 접근하게 된다면 카카오로그인으로 회원을 인증하고 제가 만든 프로젝트의 권한을 인가개념을 분리해야하는건지 어렵더라구요 ㅠㅠ 기존에 모놀리식으로 할땐 검색하며 예제를 복붙하면서 따라하다보니 막상 인증/인가를 분리하려니 어려움을 겪고있습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
django-debug-toolbar를 통한 SQL 디버깅 강의 오류
공식문서를 보고 다 맞게 작성해서 실행하며 No module named 'django_toolbar' 오류가 발생합니댜ㅏ