묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
threejs의 최적화를 하려면 어떻게 해야할까요?
각기 다른 geometry를 가진 mesh를 매 분마다 많은 양을 생성할때 웹 브라우저에 out of memory가 발생하는 이슈가 발생하고 있습니다. 이러한 경우에 효과적으로 최적화를 하려면 어떻게 해야할까요? 또한 스택오버플로 나 다른곳을 보면 geometry가 아닌 buffergeometry를 사용하는데 둘의 차이가 무엇인가요?
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
버퍼와 스트림 강의 질문
강의내용이 영상이 아닌, 파일로 되어 있는 것 같은데,다운로드 링크가 보이지 않는 것 같습니다.어디서 다운로드 할 수 있을까요? 아니면 혹시 이전 영상이 3-12 이고 이 강의 다음영상이 3-14로 되어 있던데, 영상이 빠진 거 일까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
N:M tag 부분 구현 중 findOne 조회 부분 에러
products.service.ts에서 create 부근에 tag를 저장 하기 전 tag를 미리 조회하는 부분을 구현 중인데 findOne에서 {name: tagname} 을 구현하려고 할 때 다음과 같은 에러가 발생합니다. save에서는 에러가 발생하지 않는데 findOne 조회 부분만 에러가 발생하네요관련된 코드 같이 보내드립니다.createProduct.input.tsimport { InputType, Field, Int } from '@nestjs/graphql'; import { Min } from 'class-validator'; import { ProductSaleslocationInput } from 'src/apis/productsSaleslocation/entities/dto/productSaleslocation.input'; @InputType() export class CreateProductInput { @Field(() => String) name: string; @Field(() => String) description: string; @Min(0) @Field(() => Int) price: number; @Field(() => ProductSaleslocationInput) productSaleslocation: ProductSaleslocationInput; @Field(() => String) productCategotyId: string; @Field(() => [String]) productTags: string[]; } products.entity.tsimport { Field, Int, ObjectType } from '@nestjs/graphql'; import { ProductCategory } from 'src/apis/productsCategory/entities/productsCategory.entity'; import { ProductTag } from 'src/apis/productsTags/productTags.entity'; import { User } from 'src/apis/users/users.entity'; import { Column, DeleteDateColumn, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToOne, PrimaryGeneratedColumn, } from 'typeorm'; import { ProductSaleslocation } from '../../productsSaleslocation/entities/productsSaleslocation.entity'; @Entity() @ObjectType() export class Product { @PrimaryGeneratedColumn('uuid') @Field(() => String) id: string; @Field(() => String) @Column() name: string; @Field(() => String) @Column() description: string; @Field(() => Int) @Column() price: number; @Field(() => Boolean) @Column({ default: false }) isSoldout: boolean; @DeleteDateColumn() deletedAt: Date; @Field(() => ProductSaleslocation) @JoinColumn() @OneToOne(() => ProductSaleslocation) productSaleslocation: ProductSaleslocation; @Field(() => ProductCategory) @ManyToOne(() => ProductCategory) productCategory: ProductCategory; @Field(() => User) @ManyToOne(() => User) user: User; @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag]) productTags: ProductTag[]; } productTags.entity.tsimport { Field, ObjectType } from '@nestjs/graphql'; import { Column, Entity, ManyToMany, PrimaryGeneratedColumn } from 'typeorm'; import { Product } from '../products/entities/products.entity'; @Entity() @ObjectType() export class ProductTag { @Field(() => String) @PrimaryGeneratedColumn('uuid') id: string; @Column() @Field(() => String) name: string; @Field(() => [Product]) @ManyToMany(() => Product, (products) => products.productTags) products: Product[]; } products.service.tsimport { Product } from './entities/products.entity'; import { Injectable, UnprocessableEntityException } from '@nestjs/common'; import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { ProductSaleslocation } from '../productsSaleslocation/entities/productsSaleslocation.entity'; import { ProductTag } from '../productsTags/productTags.entity'; @Injectable() export class ProductService { constructor( @InjectRepository(Product) private readonly productRepository: Repository<Product>, @InjectRepository(ProductSaleslocation) private readonly productSaleslocationRepository: Repository<ProductSaleslocation>, @InjectRepository(ProductTag) private readonly productTagRepository: Repository<ProductTag>, ) {} async findAll() { return await this.productRepository.find({ relations: ['productSaleslocation', 'productCategory', 'productTags'], }); } async findOne({ productId }) { return await this.productRepository.findOne({ where: { id: productId }, relations: ['productSaleslocation', 'productCategory', 'productTags'], }); } async create({ createProductInput }) { // 1. 상품만 등록하는 경우 // const result = await this.productRepository.save({ // ...createProductInput, // // 하나 하나 직접 나열하는 방식 // // name: createProductInput.name, // // description: createProductInput.description, // // price: createProductInput.price, // }); // 2. 상품과 상품거래 위치 같이 등록 const { productSaleslocation, productCategotyId, productTag, ...product } = createProductInput; const result = await this.productSaleslocationRepository.save({ ...productSaleslocation, }); // productTag // ["#electronics, #computer"] const result2 = []; // [{name: ..., id: ...}] for (let i = 0; i < productTags.length; i++) { const tagName = productTags[i].replace('#', ''); // check the tags that has already registered const checkTag = await this.productTagRepository.findOne({ name: tagName, }); // if the tags has been existed if (checkTag) { result2.push(checkTag); // if the tags hasn't been existed } else { const newTag = await this.productTagRepository.save({ name: tagName }); result2.push(newTag); } } const result3 = await this.productRepository.save({ ...product, productSaleslocation: result, // result 통째로 넣기 vs id만 넣기 productCategory: { id: productCategotyId }, productTags: result2, }); return result3; } async update({ productId, updateProductInput }) { const myProduct = await this.productRepository.findOne({ where: { id: productId }, }); const newProduct = { ...myProduct, id: productId, ...updateProductInput, }; return await this.productRepository.save(newProduct); } async checkSoldOut({ productId }) { const product = await this.productRepository.findOne({ where: { id: productId }, }); if (product.isSoldout) { throw new UnprocessableEntityException('Sold out'); } // if(product.isSoldout) { // throw new HttpException('이미 판매 완료 된 상품입니다.', HttpStatus.UNPROCESSABLE_ENTITY) // } } async delete({ productId }) { // 1. 실제 삭제 // const result = await this.productRepository.delete({ id: productId }); // return result.affected ? true : false // 2. 소프트 삭제(직접 구현) - isDeleted // this.productRepository.update({ id: productId }, { isDeleted: true }); // 3. 소프트 삭제(직접 구현) - deletedAt // this.productRepository.update({ id: productId }, { deletedAt: new Date() }); // 4. 소프트 삭제(TypeORM 제공) - softRemove - id로만 삭제 가능 // this.productRepository.softRemove({ id: productId }); // 4 . 소프트 삭제(TypeORM 제공) - softDelete const result = await this.productRepository.softDelete({ id: productId }); return result.affected ? true : false; } } 내용 확인 부탁드립니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
AWS EC2 우분투 서버
안녕하세요?AWS EC2 우분투 서버를 사용하고 있습니다.Docker를 사용하면 AWS service(aws codeBuild , aws codeDeploy)를 사용하지 않고 CI/CD가 가능한가요? 코드는 react/next 입니다. 감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
register_forward_hook을 활용한 피쳐맵 추출에서 문제가 발생합니다ㅠㅠ
안녕하세요. 현재 코랩환경에서 파이토치 제공 Mask-RCNN을 활용하고 있습니다. 강의에서 알려주신 Hook를 활용하여 중간 레이어의 피쳐맵을 추출하고자 진행하던 과정에서 문제가 발생하여 질문드립니다ㅠㅠ모델은 제가 가진 데이터셋에 맞춰 출력층을 바꾸어준 후에 학습을 완료한 상태입니다. 이후 for문을 통해 모델에 여러 입력 이미지들을 넣어주어 이미지별 중간 레이어의 피쳐맵을 얻으려고 하였으나, 출력결과 하나의 이미지에 대한 피쳐맵만 반복적으로 출력되는 문제가 발생합니다...모델 학습 및 가중치 로드 후 코드는 다음과 같습니다.Hook 함수def get_activation(name): def hook(models, input, output): activation[name] = output return hook입력 이미지별 피쳐맵 저장activation = {} device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") models.to(device) for i in range(1, 5): test_img = Image.open("입력 이미지 루프").convert('RGB') test_img = test_img.resize((800, 800)) test_img = tr.functional.to_tensor(test_img) test_img = test_img.reshape(1, 3, 800, 800) with torch.no_grad(): models.eval() models.backbone.fpn.extra_blocks.register_forward_hook(get_activation("fm{}".format(i))) test_img = test_img.to(device) models(test_img)출력 결과activation["fm1"] 부터 ["fm4"] 까지 동일한 값이 들어가 있음아무리 찾아보고 여러 시도를 해보아도 해결이 되지않아 답답하네요ㅠㅠ추가로 위의 코드를 한번 돌리면 런타임을 다시 시작하지 않는 이상 이후에 코드를 수정하여 hook 함수부터 다시 돌려도 적용이 되지 않는 문제도 발생합니다...
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
1강에서의 List와 자료구조편에서의 List의 차이가 뭘까요?
안녕하세요 1강에서 List를 구현할 때는 head 포인터 하나만 갖고 노드를 연결했는데 자료구조 편에서구현한 리스트는 head와 tail을 갖고있는데 혹시 어떤 차이가 있는걸까요?추가질문list의 중간 삽입/ 삭제도 iterator를 들고있지 않아 순차접근 하는 경우는 시간 복잡도가 O(N)인가요?
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
연장 가능할까요
이 수업 듣고 중급 들으려고 한 번에 결제했는데 초급은 만료가 되고, 중급과 문제풀이는 11일이 남아서 사실상 전부 수강이 어려운 상태가 되었습니다. 너무 죄송한 말씀이지만 초급 2주, 중급과 문제풀이 (현재 0%입니다ㅠㅠ) 1달 정도 연장 가능할까요?
-
미해결MAYA 3D animation Season 1
2강 잡아당겨도 안 움직여요..
ㄱ강사 분께서 하시는 거 똑같이 다 해도 마우스로 저렇게 잡아당겨도 원이 안 움직여요..이게 안 되니 진행 자체가 안 됩니다..체험판이라 그런건지..빠른 답변 부탁드려요..
-
미해결Atlassian Jira Cloud 입문자를 위한 필수 강의 구성부터 관리까지
Jira 데이터 센터에 대해서
안녕하세요 지금 Jira 관련 강의를 들으면서 5강까지는 잘 따라왔는데 Jira 데이터 센터에서 부터 좀 막힙니다. 혹시 Jira 데이터 센터와 관련된 페이지는 프로젝트란에서 어딜 찾아보면 됩니까?
-
해결됨[코드캠프] 시작은 프리캠프
싸이월드 만들기 1탄 padding margin 질문있습니다.
이게 background이고이게 outer입니다.이게 .background에만 padding을 준거구요.background { width: 1024px; height: 600px; background-image: url("../images/background.png"); padding: 20px 0px 0px 20px; } .outerbox { width: 808px; height: 544px; background-image: url("../images/outerbox.png"); }이게 .outerbox에만 margin을 준거에요..background { width: 1024px; height: 600px; background-image: url("../images/background.png"); } .outerbox { width: 808px; height: 544px; background-image: url("../images/outerbox.png"); margin: 20px 0px 0px 20px; }class="outerbox"가 class="background" 안에 들어가있잖아요? 그럼 .outerbox에 margin을 주면 .background는 여백이 생기면 안되잖아요. .outerbox에만 여백이 생겨야하는거 아니에요? background 위쪽은 그대로이고 outerbox만 여백이 생겨야하는거 아닌가용?이게 웃긴게 margin을 20px 0px 0px 20px줬는데 background의 왼쪽은 그대로이고 위쪽만 내려왔다는거에요.. background의 왼쪽은 여백이 안생김.. +.background { display: flex; width: 1024px; height: 600px; background-image: url("../images/background.png"); } .outerbox { width: 808px; height: 544px; background-image: url("../images/outerbox.png"); margin: 20px 0px 0px 20px; }웃긴게 background쪽에 display: flex 추가하니까 .outerbox에 margin 추가 해도 여백이 제대로 생깁니다 이건 또 뭘까요..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4659 질문드립니다.
안녕하세요 큰돌님 알고리즘 강의를 보며 많은 도움을 받고있습니다!해당 강의 보면서 조건들을 잘 맞추고 출력형식도 잘 했다고 생각했는데 제출하면 오답이네요ㅠㅜ틀린 내용을 잘 못찾겠어서 질문드립니다!시간되실때 한번 봐주실 수 있으신가요?http://boj.kr/ac9ebe891d7c4734a5f01e78a1e2d13d
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청 부탁드립니다.
인프런 아이디 : stomboy2@naver.com인프런 이메일 : stomboy2@naver.com깃헙 아이디 : tyo1012@naver.com깃헙 Username : Five-Sun
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Domain별 패키지 분리에 대한 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.항상 좋은 강의 감사드립니다.현업에서 업무를 하다보면 package를 도메인별로 분리하고 도메인에 controller, repository, service, entity, dta, dao등 패키지를 구분하고 있습니다.이는 하나의 모든 controller, repository에 담게 되면 유지보수성이 떨어지기 때문인데요.강의에 강사님께서 하나의 패키지에 넣으셔서 질문을 드립니다.MSA구조로 작게 분리한다고 해도 유지보수가 용의하기 위해서는 패키지를 분리하는게 좋다고 생각되는데요.DTA를 controller에 넣는다던지 entity를 모두 하나에 넣고 있어서...현업에서도 이렇게 쓰는게 더 좋은건지,,,아니면 강의에서만 분리하지 않는 것인지 궁금합니다.혹, 강의에서만 분리하지 않는 구조라면sample로 효율적인 패키지 구성을 제공해 주실 수 있나요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
선수지식 관련 질문입니다.
안녕하세요. 혹시 학습하기 전에 JAVA를 어느정도 학습을 해야 무리없이 수업을 따라갈 수 있는지 알고싶습니다. JSP부분도 필요할까요?
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
fdr 오류 도오ㅏ주세요 ㅠ
인증오류 질문HTTPSConnectionPool(host='fchart.stock.naver.com', port=443): Max retries exceeded with url: /sise.nhn?timeframe=day&count=6000&requestType=0&symbol=005930 (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001FA2561CC70>: Failed to establish a new connection: [WinError 10060] 이렇게 뜹니다 ㅠ 크롤링 할때도 똑같이 떴어서 url 옆에 verify = False 입력하여 진행하였는데, fdr 라이브러리는 너무 방대해서 어떻게 해야할지 모르겠네요 ㅜㅠ 도와주세요
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
로그 문의입니다.
로그기록볼 떄 no debuggable processes 로그가 안보이는데요. 아래 화면처럼 벌레모양 눌러도 안보일 때는 어떻게 해야 하나요? https://comoi.io/147
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 회원가입 질문입니다.
.
-
해결됨카프카 완벽 가이드 - 코어편
Fetcher 관련 질문드립니다.
안녕하세요 선생님 양질의 강의 너무 감사하게 잘듣고 있습니다.다름이아니라 강의를 듣던 중 궁금한 부분이 있어서 글을 남기게 되었습니다.Broker로 부터 통신을 한 후에 pendingCompletion(ConcurrentLinkedQueue) 에 response를 적재를 하고적재된 pendingCompletion 기준으로 Fetcher가 데이터를 가져오게 되는데 이 과정에서 Fetcher는 별도의 스레드로 동작하는지요?"Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해: 13:22"
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 섹션8 DFS의 동전교환 문제 관련 질문드립니다.
function solution(coins, m) { coins.sort((a, b) => b - a); let ans = 0; function DFS(L, sum) { if (sum > m) { return; } if (sum === m) { ans = L; return "end"; } else { for (let i = 0; i < coins.length; i++) { if (DFS(L + 1, sum + coins[i]) === "end") return "end"; } } } DFS(0, 0); return ans; } 동전 교환 문제에서 강사님께서 가르쳐주신 코드도 실습해 본 후, 제 나름대로 작성해본 코드입니다. 제 얕은 생각으로는 위 코드처럼 가장 먼저 동전 종류를 내림차순으로 정렬한 후, DFS를 가지쳐 내려나간다면, 가장 큰 단위부터 적용해나가므로 맨 처음 종료조건에 도달해 ans에 대입되는 값이 무조건 최소동전 개수가 되지 않을까 생각해서 이렇게 작성했습니다.이 풀이가 틀린지 궁금하고, 만일 맞다면 시간복잡도 상 효율이 극단적으로 떨어지는 최악의 경우가 존재할 지 또한 궁금합니다.귀한 시간 내어 읽어주셔서 감사합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 sdk질문입니다.
파이어베이스 질문있습니다. 제가 사용하고 있는 안드로이드는 2022-12 이후버전이고 https://gainful-topaz-82f.notion.site/Firebase-8aa3137487b84fd3afe60d90e0702986 이 링크에서 나오는 2번째 방법으로 따라했는데요. 링크대로 하면 작동되는데 구글에서 나오는 allprojects까지 입력하면 에러가 나옵니다.구글에서는 allprojects까지 입력하라고 나와있어서 입력했는데 build.gradle': 22: only buildscript {} and other plugins {} script blocks are allowed before plugins {} blocks, no other statements are allowed 이런 에러가 나왔습니다. 왜나오는지 알수있을까요? Firebase SDK에서 google-services.json 구성 값에 액세스할 수 있도록 하려면 Google 서비스 Gradle 플러그인이 필요합니다.프로젝트 수준 build.gradle 파일에 플러그인을 buildscript 종속 항목으로 추가합니다.루트 수준(프로젝트 수준) Gradle 파일(<project>/build.gradle):buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repositorycontent_copy mavenCentral() // Maven Central repositorycontent_copy } dependencies { ... // Add the dependency for the Google services Gradle plugin classpath 'com.google.gms:google-services:4.3.15'content_copy }}allprojects { ... repositories { // Make sure that you have the following two repositories google() // Google's Maven repositorycontent_copy mavenCentral() // Maven Central repositorycontent_copy }}