묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결따라하며 배우는 리액트 네이티브 기초
강의에서 InputForm.js에서
pressable 자동으로 import되는데 어떻게 하는건가요?
-
미해결[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
Loss (4) 강의 마지막 부분 jupyter notebook 재시작 관련 질문
강사님께서 마지막 부분에서 jupyter notebook으로 style_loss을 출력하실 때 jupyter를 재시작 하셨는데, 혹시 재시작한 이유가 있을까요? 저도 재시작을 하지 않고 코드를 실행하면 아무것도 출력이 안되다가, 재시작하고 모든 코드를 재실행하니, 출력이 되어서 질문드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
BFS 질문
bfs는 최단거리를 어떻게 찾는건지 이해가 안되서 질문 남깁니다. 그니까 여러 갈래의 길을 부모-자식의 관계로 뻗어나가면서 찾다가, 도착점에 도달하는 부모자식 관계가 있으면, 부모를 타고 올라가면서 확인 한 다음에 reverse를 시켜서 다시 부모에서 자식으로 내려간다고 이해하면 될까요
-
해결됨스프링 핵심 원리 - 기본편
싱글톤 컨테이너 관련 질문 드립니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하십니까 선생님, 강의 잘 듣고 있습니다.스프링 컨테이너는 객체를 싱글톤으로 관리해준다는 게 구체적으로 강의 자료(ch3. p8)에서 예를 들면, AppConfig.java 코드에 memberService(), orderService() 두 메서드에서 MemoryMemberRepository의 인스턴스를 각각 생성을 하지만 싱글톤을 적용하여 하나의 MemoryMemberRepository 인스턴스만 생성하고 공유한다는 것인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그아웃 구현시 memberId 값을 어떻게 가져오는건지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@PostMapping("/logout") public String logout(HttpServletResponse response){ expireCookie(response, "memberId"); return "redirect:/"; }로그아웃 구현시 expireCookie메소드를 생성 후 두번째 인자로 들어가는 memberId를 어떻게 가져오는건지 궁금합니다. logout메소드 생성시 인자로 추가한것도 아닌데 ..스프링컨테이너가 클라이언트에서 요청시 쿠키정보에 memberId라는 쿠키이름이 있으면 가져오게 되어있는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Assertions에서 org.assertj.core.api가 안보입니다ㅜㅜㅜ
테스트 코드 작성중 Assertions에 org.assertj.core.api가 안보입니다 어떻게 해야되나요? ㅜㅜ=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
인덱싱 차원 축소 관련
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. array1d = np.arange(start=1, stop=10)array2d = array1d.reshape(3,3)print(array2d)array3 = array2d[[0,1], 2]이것의 답이 [3, 6] 이 되는데,만약 답을 [[3], [6]] 을 만들고 싶으면 인덱싱ㅇ르 어떻게 해야 하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle 빌드 오류
Execution failed for task ':test'.라고만 계속뜨네요인텔리제이도 다시 설치해봤는데...혹시 이메일을 알려주신다면 제가 project 파일을 보내드려도될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Transactional을 붙여도 Rollback이 되지 않는 문제는 해결했으나 이유륾 모름
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]해결했습니다.복붙하는 과정에서private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); }이 부분이 있는 걸 몰랐네요 저는 conn = dataSource.getConnection() 으로 진행해서 문제가 생긴거였습니다 그런데 추가적인 질문으로 이렇게 했을 때는 롤백이 되지 않는 이유가 무엇인가요? 강의 코드와 똑같이 수정했음에도 롤백되지 않고 계속 DB에 반영이 됩니다. 참고로 다른 질문글의 conn 관련된 수정도 이미 했음에도 롤백되지 않습니다. JdbcMemberRepositorypackage hello.hello_spring.Repository; import hello.hello_spring.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 { // DB와 연동하려면 Datasource가 필요함 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 = dataSource.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 = dataSource.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 = dataSource.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 = dataSource.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 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); } } SpringConfigpackage hello.hello_spring; import hello.hello_spring.Repository.JdbcMemberRepository; import hello.hello_spring.Repository.MemberRepository; import hello.hello_spring.Repository.MemoryMemberRepository; import hello.hello_spring.Service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration public class SpringConfig { private DataSource dataSource; @Autowired public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService() { return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository() { return new JdbcMemberRepository(dataSource); } } MemberServiceIntegrationTestpackage hello.hello_spring.Service; import hello.hello_spring.Domain.Member; import hello.hello_spring.Repository.MemberRepository; import hello.hello_spring.Repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; // 테스트는 반복해서 시도할 수 있어야 하기 때문에 DB에 데이터를 인서트 쿼리하고 '롤백' 해주는 것 (정확히는 DB에 반영을 안하는 것) // 이를 위해서 @Transactional 사용 @SpringBootTest @Transactional class MemberServiceIntegrationTest { // 테스트는 특수한 용도이기 때문에 일회성(?)으로 필드 주입을 해도 무관 @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test void 회원가입() { // given Member member = new Member(); member.setName("spring"); // when Long saveId = memberService.join(member); // then Member one = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(one.getName()); } @Test public void 중복_회원_예외() { // given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when memberService.join(member1); IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); // try { // memberService.join(member2); // } catch (IllegalArgumentException e) { // assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); // } // then } }
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
3-9에서 오류 발생
게시물을 확인하려고 하면 아래와 같은 오류가 발생합니다. question_detail.html에서 코드를 잘못작성했을까봐 깃허브에서 코드 복붙해서 실행해도 똑같이 오류가 발생합니다..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
강의 관련 질문드립니다.
24년 12월에 결제하여 수강 중입니다올해 [코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스 강의가 오픈 된 것을 보았는데, 강의 간 내용에 많은 차이 점이 있을까요? 신규 강의를 수강하려면 재결제 하는 방법밖에 없을까요..?
-
미해결
dd
dd
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
binlog와 offset 관련 추가 질문드립니다
안녕하세요~ 강의를 듣다가 binlog관련 궁금한 점이 생겨서 질문드립니다!해당 커넥트의 offset정보에 담긴 binlog파일이 만약 삭제됐다면 기동 중에 오류가 발생한다고 말씀을 주셨는데, 그럼 만약 binlog 파일이 커져서 다음 파일?로 넘어가서 새로운 binlog파일로 생성이 된다면 오류는 발생하지 않고 offset에는 다음 binlog파일로 기록이 되는 것일까요?
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
제네릭과 사용자 정의 타입 가드에 관한 질문
안녕하세요 타입스크립트 강의 잘 듣고 있습니다. 좋은 강의 감사합니다. 하지만 아직 제 머리로는 이해가 되지 않는 부분이 있어 질문을 드리는데요. 여기 제가 구현하고자 하는DatePicker라는 클래스가 있고 이 클래스를 하나의 날짜를 선택하는 'single'타입의 DatePicker와 기간을 선택하는 'range' 타입의 DatePicker로 사용 가능하도록 만드려고 합니다.type SingleValue = Date | null type RangeValue = SingleValue[] & { length: 2 } type DatePickerValue<T extends 'single' | 'range'> = { 'single': SingleValue, 'range': RangeValue }[T] class DatePicker<T extends 'single' | 'range'> { type:T value: DatePickerValue<T> constructor(type:T, initialValue:DatePickerValue<T>) { this.type = type this.value = initialValue } updateValue(date:Date) { // update value... } } const singeDatePicker = new DatePicker('single', new Date('2025-01-01')) singeDatePicker.value = new Date('2025-01-15') // (property) DatePicker<"single">.value: SingleValue const rangeDatePicker = new DatePicker('range', [new Date('2025-01-01'), new Date('2025-01-05')]) rangeDatePicker.value = [new Date('2025-01-03'), new Date('2025-01-10')] // (property) DatePicker<"range">.value: RangeValue이렇게 DatePicker클래스의 type property의 제네릭을 통해 value의 타입도 잘 추론이 되는데요. 문제는 클래스 내부에서 타입을 좁히고 싶은데 잘 되지 않습니다. 아래처럼 updateValue 메소드를 DatePicker클래스에 추가하여 외부 달력 클릭시 날짜 객체를 인자로 넘겨 클래스의 value를 업데이트 해주기 위한 로직을 구현하려고 하는데, 클래스 내부에서는 사용자 정의 타입 가드를 사용해도 value 의 타입이 좁혀지지가 않습니다. updateValue(date:Date) { const isSingle = ():this is DatePicker<'single'> => this.type === 'single' const isRange = ():this is DatePicker<'range'> => this.type === 'range' if(isSingle()) { this.value = date // Type 'Date' is not assignable to type 'DatePickerValue<T>'. // Type 'Date' is not assignable to type 'Date & SingleValue[] & { length: 2; }'. // Type 'Date' is missing the following properties from type 'SingleValue[]': length, pop, push, concat, and 26 more.(2322) // (property) DatePicker<T extends "single" | "range">.value: DatePickerValue<T> return; } if(isRange()) { this.value = [date, null] // Type '[Date, null]' is not assignable to type 'DatePickerValue<T>'. // Type '[Date, null]' is not assignable to type 'Date & SingleValue[] & { length: 2; }'. // Type '[Date, null]' is not assignable to type 'Date'.(2322) // (property) DatePicker<T extends "single" | "range">.value: DatePickerValue<T> return; } }제가 궁금한 것은 이렇게 클래스 내부에서 value: DatePickerValue<T>와 같은 조건부 타입을 사용자 정의 타입 가드로 추론을 하는 것이 가능한지 알고 싶습니다. 만약 안된다면 이유에 대해 설명 해주시면 감사하겠습니다.아니면 제 구현 방식의 문제가 있다면 지적해 주시면 많은 도움이 될 것 같습니다.감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
강의 연장 관련 문의
올해 4학년 올라가는 대학생입니다. 제가 작년에 강의 결제하고 학교 다니느라 바빠 시험 공부를 미루다가 올해 시험을 준비하려 하는데 강의 수강 기간이 한달밖에 남지 않아 공부할 시간이 부족할 것 같은데 혹시 연장가능할까요 강사님 ㅠㅠ 메일 주소는 stnow7@gmail.com 입니다!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
yarn berry 사용하고 데이터베이스 설정 값 .env로 분리
"devDependencies": { "@nestjs/cli": "^10.4.9", "@nestjs/schematics": "^10.2.3", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", "@types/pg": "^8", "@types/supertest": "^6.0.0", "@yarnpkg/pnpify": "^4.1.3", "dotenv": "^16.4.7", "dotenv-cli": "^8.0.0", "jest": "^29.5.0", "source-map-support": "^0.5.21", "supertest": "^7.0.0", "ts-jest": "^29.1.0", "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", "typescript": "~5.3", "webpack": "^5.97.1" },dotenv랑 dotenv-cli 설치하고"start:dev": "dotenv -e .env nest start --watch", "start:debug": "dotenv -e .env -- yarn dlx @nestjs/cli start --debug --watch",하면 정상적으로 동작합니다!
-
미해결공식 엠버서더가 알려주는 노션 엑기스
강의자료가 없는건가요?
안녕하세요?생활노션 강좌는 별도 강의자료가 제공되지 않나요?네~ 열심히 공부하겠습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
동적페이지 로드밸런서 연결
AWS HTTPS 적용하는 부분에서과정대로 2번 따라했는데똑같이 해당 에러가 나서 https로 접속이 안 되네요 ㅜㅜ이유가 먼지 알 수 있을까요?!
-
미해결[2024년] 지친 엑셀 유저를 위한 Power BI 기본 강의 (기초~중급 입문)
power bi 맵 및 등치 지역도 시각적 개체는 조직에서 사용할 수 없습니다
보고서를 온라인 상으로 게시하니 이러한 메세지가 나오면서 맵챠트가 안 나옵니다."power bi 맵 및 등치 지역도 시각적 개체는 조직에서 사용할 수 없습니다이 문제를 해결하려면 관리자에게 관리 포털에서 맵과 등치 지역도 시각적 개체를 사용하도록 요청합니다" 어떻게 해야 되나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Transactional 질문 있씁니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 재직중인 직장 소스를 보면 트랜잭션을 걸어야하는 서비스단 메서드에 @Transactional의 격리 수준이 READ UNCOMMITTED 로 모두 되어있습니다. 하나도 빠짐없이.. 상사분의 말로는 테이블 락 발생을 방지하기 위해 이렇게 한다는데... 영한님의 의견이 궁금합니다. 제가 생각했을때 이는 적합하지 않은 방법같거든요. 정합성이 깨질뿐더러 테이블 락은 다른 방법으로 해결해야지 이건 아닌것 같더라구요.. 답변 기다리겠습니다!