묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - Part 1 NestJS Core
데이터베이스 삭제후 nullable false일떄 에러 발생하지 않습니다.
DB도 지우고, 강의 그대로 코드도 동일하나 nullable이 에러가 발생하지 않습니다. 아래 질문하고 동일한 현상이 발생합니다!
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
10:26 popitem() 질문입니다
argument가 필요한 pop(arg)와 달리 popitem()는 변수 없이 무작위로 key 하나를 pop 한다고 하셨는데요. 아무리 돌려봐도 무작위가 아니라 맨 마지막에 선언한 key부터 차례대로 pop 하는 것 같습니다. dictionary는 순서가 없는 자료형이라 key 간 순서가 있는 것 같진 않은데 제일 마지막에 선언한 key부터 pop되는게 맞나요? 코드 아래 첨부드립니다.----------- # Chapter03-5 # Python Dictionary # 범용적으로 가장 많이 사용 # 순서x, 키 중복x, 수정o, 삭제 o # 선언. 중괄호 사용 a = {'name': 'Kim', 'phone': '01033337777', 'birth':'870514'} # 중괄호 + 키 + : + 값. 키는 int등 다른 자료형도 가능 b = {0: 'Hello Phtyon'} # 키는 숫자도 가능 c = {'arr': [1, 2, 3, 4]} # 값 역시 리스트 등 어떤 자료형도 가능 d = { 'Name' : 'Niceman', 'City' : 'Seoul', 'Age' : 33, 'Grade':'A', 'Status': True } # 가독성 좋게 보통 이렇게 많이 선언함. e = dict([ ('Name', 'Niceman'), ('City', 'Seoul'), ('Age', 33), ('Grade', 'A'), ('Status',True) ]) # 사실 이게 가장 정석임. dict 명령어 안에 list 안에 튜플. 어려워서 많이 쓰진 않지만 정석코드 선호하는 사람은 씀 f = dict( Name = 'Niceman', City = 'Seoul', Age = 33, Grade = 'A', Status = True ) # e의 개선형. 이걸 d와 더불어 가장 많이 사용함. 이거로 선언하는 습관 들이는게 좋음. print('a - ', type(a), a) print('b - ', type(b), b) print('c - ', type(c), c) print('d - ', type(d), d) print('e - ', type(e), e) print('f - ', type(f), f) print('>>>>>>') # 출력 print('a - ', a['name']) # 직접 key로 접근. 존재하지 않는 key를 가져오려하면 error print('a - ', a.get('name1')) # get 명령어로 접근. key로 접근하는 방식과 달리, 없는 key도 None으로 가져오므로 안정적. 많이 씀. print('b - ', b[0]) print('b - ', b.get(0)) print('f - ', f.get('City')) print('f - ', f.get('Age')) print('>>>>>') # 추가 a['address'] = 'seoul' print(a.get('address')) print(a['address']) a['rank'] = [1, 2, 3] print(a) print(len(a)) # key의 갯수 print(len(b)) print('>>>>') # 함수 : dict_keys, dict_values, dict_items : 반복문에서 사용 가능 print('a - ', a.keys()) # value는 무관. key만 가져옴 print('a - keys list', list(a.keys())) # key를 list 형태로 반환 print('b - ', b.keys()) print('c - ', c.keys()) print() print('a - ', a.values()) # value만 반환 print('b - ', b.values()) print() print('a - ', a.items()) # key-value가 튜플 형태로 한쌍으로 묶여서 리스트로 반환. 정석대로 선언할 때처럼 key-value 튜플 형태로 반환되는거임. print('a - items list', list(a.items())) # list로 형변환 print() print('a - ', a.pop('name')) # pop : 꺼내서 반환 후 원래 리스트에서는 삭제 print('a - after pop', a) print('c - ', c.pop('arr')) print('c - after pop', c) # 빈 dict print() print('f - ', f.popitem()) # popitem : 이름 지정 안해도 자동으로 뒤부터? 랜덤으로? pop print('f - after popitem', f) print('f - ',f.popitem()) print('f - after popitem', f) print('f - ',f.popitem()) print('f - after popitem', f) print('a - ', a.popitem()) print('a - after popitem', a) print('a - ', a.popitem()) print('a - after popitem', a) print('a - ', a.popitem()) print('a - after popitem', a)
-
미해결[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
레퍼지토리 주입 기준이 궁금합니다.
안녕하세요.개인프로젝트하면서 필요한부분들 다시 보는중인데 궁금한점이 생겨서 질문드립니다. 이전 1:1 관계등록 API 강의에서는 상품판매위치 레퍼지토리를 상품의 service에서 주입받지 않고 따로 service를 만들어서 거기서 주입받고 해당 로직을 처리했었습니다.검증로직을 통일시키기 위해서라고 하셨는데, 이번 강의에서는 포인트 레퍼지토리가 주입되어있는 상태에서 추가적으로 유저 레퍼지토리를 주입받아서 유저정보를 가져오시는데, 차이나 기준이 궁금합니다. 더불어 나중 강의인 트랜젝션에서도 현재 주입받은 유저 레퍼지토리를 기준으로 진행되는데, 만약 레퍼지토리를 service별로 분리해야된다면, 쿼리러너를 해당 service로 던졌다가 받던지, 아니면 해당 service에서 xxRepository.create()로 만든걸 받던지 하는 식으로 해야할듯 싶은데 그런 불편함보다는 그냥 한곳에서 처리하는게 낫지 않나 하는 생각이 들기도합니다. 그래서 트랜젝션 사용할때의 레퍼지토리 기준과 만약 service별로 나뉘게 된다면 사용 방법이 궁금합니다. 마지막으로 제가 트렌젝션을 써봤는데, 다른 테이블의 레퍼지토리를 한 개의 service에서 레퍼지토리 주입은 안받고, 모듈에서만 import의 TypeOrmModule.forFreature([]) 부분에 넣어줘도 잘 동작하던데 이렇게 써도 되는게 맞는지 궁금합니다. 혹시 몰라 아래에 해당 코드 첨부해봅니다.// restAPI입니다. // auth.module.ts import { Module } from '@nestjs/common'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { UsersService } from '../02.Users/users.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from '../02.Users/entities/users.entity'; import { Auth } from './entities/auth.entity'; @Module({ imports: [TypeOrmModule.forFeature([Auth, User])], controllers: [AuthController], providers: [AuthService], }) export class AuthModule {} // auth.service.ts import { BadRequestException, ConflictException, Injectable, InternalServerErrorException, } from '@nestjs/common'; import { UsersService } from '../02.Users/users.service'; import { InjectRepository } from '@nestjs/typeorm'; import { Auth } from './entities/auth.entity'; import { DataSource, Repository } from 'typeorm'; import { ConfigService } from '@nestjs/config'; import * as bcrypt from 'bcrypt'; import { IAuthServiceCheckInput, IAuthServiceCreate, IAuthServiceLogin, } from './interfaces/auth-service.interface'; import { User } from '../02.Users/entities/users.entity'; @Injectable() export class AuthService { constructor( @InjectRepository(Auth) private readonly authRepository: Repository<Auth>, private readonly configService: ConfigService, private readonly dataSource: DataSource, ) {} // 생략 async create({ createUserInput }: IAuthServiceCreate): Promise<User> { const { user_id, user_pw, id, ...userData } = createUserInput; const { user_email, user_nick } = userData; if (!id) { const checkUserInput = { user_id, user_email, user_nick }; await this.checkUser({ checkUserInput }); } const queryRunner = this.dataSource.createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); try { const user = await queryRunner.manager.save( User, id ? { id: id, ...userData } : userData, ); const hashedPw = await this.hashPw({ user_pw }); await queryRunner.manager.save(Auth, { user_id, user_pw: hashedPw, user, }); await queryRunner.commitTransaction(); return user; } catch (error) { await queryRunner.rollbackTransaction(); throw new InternalServerErrorException('회원 가입 실패(DB)'); } finally { queryRunner.release(); } } // 생략
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 질문있습니다.
MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 28분49초 위 사진처럼 get뒤에 url주소가 어떻게 호출되는건가요? put주소를 틀린거를 줬는데요.
-
미해결파이썬 Streamlit 활용한 웹 자동화 업무, 데이터 검색 및 시각화
강의 자료는 어떻게 볼 수 있어요?
강의 자료 링크를 눌러도 어떤 링크도 보이지를 않는데 어떻게 볼 수 있나요?
-
미해결스프링 핵심 원리 - 기본편
TestBean 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); 이 부분에서 TestBean.class이 클래스에는 @Configuration, @Bean도 없음으로 설정정보로 쓰이는게 아니라 그냥 단순히 빈으로만 등록된다는건가요?
-
미해결실전! Querydsl
buildtool
springboot 3.2부터 build and run 두 가지를 전부 gradle로 해야 한다 하셨는데, 예전 강의에서는 intellij 로 선택하라 하셨던게 기억나서 여쭤봅니다. 어떤게 바뀌어서 gradle을 고르라 하셨나요?
-
미해결
미디어쿼리 적용이 안되서 질문드립니다.
안녕하세요. 아래 미디어쿼리가 적용이 안되어서 질문드립니다. 제가 어떤 실수를 한 걸까요?ㅠ
-
해결됨김영한의 실전 자바 - 중급 1편
문제 풀이 1-1 문제 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]문제를 풀긴 해서 답이 나오긴 했는데.답안 풀이를 보니 코드를 이런식 으로도 작성해도 되는지모르겠더라고요.한번에 값을 넣어봣는데.. (생각이 안나서, 어찌 저찌 하다가 하니 이렇게 되었는데)이런 식으로 코드를 해도 되는건가요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
3.:43 초 때부터 잘 안되는 것 같습니다...
코드도 정확히 다 따라했는데도 결과랑 다르게 나오네요 3:43초 쯔음에 소문자 대문자 구분 말 나오면서 뭔가 잘 안되고 있습니다 ㅠ
-
미해결김영한의 실전 자바 - 중급 1편
섹션3. String
여기서 원래 charArr을 출력하면 배열의 참조값이 나와야하는 거라고 생각했는데 왜 hello가 나오는 건가요?int, String 배열을 출력하면 참조값이 나오는데 char만 뭔가 다른게 있는건가요?public static void main(String[] args) { char[] charArr = new char[] {'h', 'e', 'l', 'l', 'o'}; System.out.println(charArr); int[] i = new int[] {1, 2, 3}; System.out.println(i); } -실행 결과 hello [I@7cc355be
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
http 파일이 잘 안 먹힐 때
### 로그인 POST http://localhost:8080/login Content-Type: application/json { "username": "user", "password": "1111" } > {% client.global.set("JSESSIONID", response.headers.valueOf("Set-Cookie").split(";")[0].split("=")[1]) %} ### 루트 접속 GET http://localhost:8080/ Accept: application/json Cookie: JSESSIONID={{JSESSIONID}}강의에서 설명하신 대로 따라해봤는데 http 파일이 잘 작동하지 않는 문제가 있었습니다.이 부분이 잘 안 먹혀서 찾아봤는데 인프런 현재 CTO이신 '향로'님 블로그쪽에 이 내용이 정리가 되어 있는 것을 확인할 수 있었습니다.- https://jojoldu.tistory.com/366> {% %} 를 http 파일에 작성하고, 이 사이에서 응답이 온 데이터를 전역변수로 저장해둘 수 있습니다.이후 로그인할 때 Cookie: JSESSIONID={{JSESSIONID}} 와 같이 전역변수에서 꺼내서 사용하면 명시적으로 쿠키를 지정해서 전달할 수 있어서 작동이 잘 됩니다.
-
해결됨프로젝트로 배우는 Python 챗봇 만들기 - LangChain, Gradio 활용
15강 진행 중 3개의 샘플파일은 어디서 다운 받을 수 있을까요?
제가 잘 못찾는것인지 모르겠는데 아래 3개 파일들은 어디서 다운을 받을수 있을까요?
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
프로젝트에서 쉐어 눌렀을때 화면이 달라요ㅠ
안녕하세요!수업 정말 잘 듣고있습니다!다름이 아니라 질문이있어서요~! 쉐어 눌렀을때 강의화면이랑 제가 피그마 들어가서 쉐어 눌렀을때 화면이 다른데,제가 무료계정이라 구성이 다른걸까요??ㅠ
-
미해결
SQL 개발자(SQLD) 자격증 따기
안녕하세요?저는 인프런 수강생입니다.ID: 00all@hanmail.net제가 유용한IT학습SQL 개발자(SQLD) 자격증 따기 Part1~Part4까지 수강 신청을 한 건데 만료가 됐다고 수강 할 수 없다고 합니다.제가 일 때문에 수강 할 수 없어서 신청 만하고 이제 수업을 들으려고 하는데 강의를 들을 수 없다고 나옵니다.기간이 제한된 줄 몰랐습니다.강의를 들을 수 있게 해 주실 수 없을까요?부탁드립니다. 고맙습니다,수강생 드림
-
미해결스프링 핵심 원리 - 고급편
포인트컷 지시자와 매개변수 전달
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]매개변수 관련된 부분 학습 중에 헷갈리는 내용이 있어서 질문 드립니다.예를 들어 @annotation은 특정 어노테이션 기반으로 aop 프록시 대상을 정하는 것으로 배웠고, 다음과 같이 사용했습니다. @Around("@annotation(hello.aop.member.annotation.MethodAop)") public Object doAtAnnotation(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[@annotation] {}", joinPoint.getSignature()); return joinPoint.proceed(); }그런데 매개변수 전달에서 @annotation은 특정 annotation을 전달하는 것으로도 보이는데요, @Before("allMember() && @annotation(annotation)") public void atAnnotation(JoinPoint joinPoint, MethodAop annotation) { log.info("[@annotation]{}, annotationValue={}", joinPoint.getSignature(), annotation.value()); }그렇다면 두 번째 경우에, aop 프록시 대상에 @MethodAop를 갖고 있는 대상에 대해서 적용이 되는 걸까요? 해당 어노테이션만 전달하는 건지, 해당 어노테이션을 갖고 있는 경우에 적용하는 기능까지 포함된 건지 (이 경우엔 생략된걸까요?) 궁금합니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
<label > id와 <input> id 맞추기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강사님강의 10분 ~ 12분 사이에서 <label>태그와 <input> 태그의 id를 맞추기 위해서th:for="${#ids.prev('regions')}"를 사용한다고 하셨는데th: each 에서 제공하는 두 번째 파라미터를 활용해서 regionStat.index나 regionStat.Count로 id를 맞추는 방식은 어떨까요?
-
미해결스프링 핵심 원리 - 고급편
포인트컷 지정, 매개변수 전달
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 포인트컷 지시자에서 표현식 중 매개변수 전달에 대해서 헷갈리는 부분이 있어서 질문 남깁니다.예를 들어 @annotation 지시자의 경우에는 해당 annotation이 있는 경우에 aop 적용 대상으로 인식하는 것으로 배웠는데요, @Around("@annotation(hello.aop.member.annotation.MethodAop)") public Object doAtAnnotation(ProceedingJoinPoint joinPoint) throws Throwable { log.info("[@annotation] {}", joinPoint.getSignature()); return joinPoint.proceed(); }@annotation을 매개변수 전달로도 사용할 수 있다고 강의에서 배웠습니다.
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Navigation Data Transfer Safe Args 강의중에서
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { val view = inflater.inflate(R.layout.fragment_blank1, container, false) val action = BlankFragment1Directions.actionBlankFragment1ToBlankFragment2("ABCDE")위의 코드중에서 "ABCD" 부분에서 빨간줄이 생기고 오류가 나네요 ... 왜 그럴까요 ???소스코드는 아래 GITHUB 에 올려두었습니다https://github.com/dongguntechnology/NaviDataTransfer
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join 4개만 나오는건 알겠는데 json에서는 다른이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]join을 하면4개가 나오는데id가 같지만 orderItems는 서로 다르게 나옵니다. 근데 왜 json에서는 orderItems 중복되서 왜 똑같이 나오는건가요? 그리고 값이 왜 orderItems는 여러개씩 출력이 되는거죠? 사실상 sql시 하나씩 setter로 들어가서 출력되지않나요? 예) "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 }, { "itemName": "JPA2 BOOK", "orderPrice": 20000, "count": 2 } ] 위와 같이 orderItems가 두개가 나옵니다.근데 sql은 하나씩 출력이 되는데 그러면 "orderItems": [ { "itemName": "JPA1 BOOK", "orderPrice": 10000, "count": 1 } ]위와 같이 하나만 출력이 되어야하는거 아닌가요?setter로 매핑 되면 그렇지않나요?