inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

AWS-SDK를 사용하여 S3에 이미지를 저장할때 이 경로를 DB에 저장하려면 어떻게 해야하나요?

미해결

탄탄한 백엔드 NestJS, 기초부터 심화까지

강의 따라 진행하며 프론트엔드에서 Image Upload 버튼을 눌러서 이미지를 선택하였을때 AWS S3에 저장되는 것까지는 확인이 되었습니다. 다만 DB에서는 기존 이미지 경로 그대로여서 업데이트한 이미지가 적용되지 않고 있는데, 여기서는 어떻게 진행하면 좋을까요? S3 사용 전에는 cats.repository에서 save 메소드 사용하여 새로 갱신된 이미지 파일 경로를 저장하는 과정이 있었듯이 async findByIdAndUpdateImg(id: string, fileName: string) { const cat = await this.catModel.findById(id); cat.imgUrl = fileName; const newCat = await cat.save(); // DB에 내용 저장 console.log(newCat); return newCat.readOnlyData; } aws.service의 S3 저장하는 구간 중간에 db에 저장하는 과정을 추가해주면 될 것 같은데.. 언어 실력이 부족하여 어떻게 시도를 해야할지 감이 잡히질 않습니다. async uploadFileToS3( folder: string, file: Express.Multer.File, ): Promise<{ key: string; s3Object: PromiseResult<AWS.S3.PutObjectAclOutput, AWS.AWSError>; contentType: string; }> { try { const key = `${folder}/${Date.now()}_${path.basename( file.originalname, )}`.replace(/ /g, ''); const s3Object = await this.awsS3 .putObject({ Bucket: this.S3_BUCKET_NAME, Key: key, Body: file.buffer, ACL: 'public-read', ContentType: file.mimetype, }) .promise(); return { key, s3Object, contentType: file.mimetype }; } catch (error) { throw new BadRequestException(`File upload failed : ${error}`); } } 조언 부탁드립니다..

  • node.js
  • mongodb
  • express
  • nestjs
  • ssr
jeongho218 댓글 1 좋아요 0 조회수 837

Chapter 16 스케줄러 부하 줄이기에 관한 질문입니다.

미해결

Airflow 마스터 클래스

멀티 스케줄러 환경에서, 각 스케줄러는 Dag Parsing DB에 해당정보를 기록 Scheduler Loop 의 과정을 거친다고 이해했습니다. 여기서, Dag Parsing에 관한 부분은 DB에 관한 정보를 참고해서 하는것이 아닌 코드만을 가지고서 돌려보는 것으로 이해하고 있는데, 그렇다면 1번 과정(Dag Parsing)은 멀티 스케줄러 환경을 구성한다고 해서 시간 단축의 효과를 얻을 수 없는것인가요?? DAG이 10개가 있고, 스케줄러가 두개가 있다면, 1번 스케줄러가 첫번째 DAG를 돌렸고, Lock을 걸은 후, 해당 작업이 큐까지 들어가게 되면 DB에 관한 정보의 Lock을 해제 하나요? 그렇다면 만약 다른 스케줄러가 해당 DAG의 정보를 검색했을때, 해당 DAG에 관한 Scheduler Loop를 돌것이고, 그렇다면 이 상황에서는 멀티스케줄러의 이점을 얻을 수 없는것인지가 궁금합니다. 감사합니다.

  • python
  • 데이터-엔지니어링
  • airflow
Hyeonghwan Kwon 댓글 1 좋아요 0 조회수 351

관심사 선택 페이지 디자인 - 2 부분 학습 중에 질문

해결됨

UIUX 포트폴리오 Part.1 - Figma(피그마) 깊이 있게 배우기

제 피그마에는 Constraints에 Fixed position when scrolling 체크박스 자체가 없는데 어떻게 하면 스크롤 시에 버튼과 상단 바를 고정시키게 만들 수 있을까요?

  • 모바일-디자인
  • figma
  • 포트폴리오
siennahewer 댓글 1 좋아요 1 조회수 377

find로 찾을 때 계속해서 none이 나옵니다.

해결됨

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

안녕하세요. 뷰티풀수프 기초 사용법 수강 중에 잘 안되는 부분이 있어서 질문 남깁니다. 네이버 메인 화면 개발자 모드에서 <span class="service_name">메일</span> 라는 태그를 찾아서 이 태그를 찾기 위해 span = soup.find(class_="service_name", string="메일") print(span) 이렇게 작성했는데 왜 결과값이 none 이 나오는지 이유를 모르겠습니다 ㅠㅠ 그리고 앞의 강의에서 개발자 모드의 element가 아니라 소스보기에서 보이는 코드에서 태그를 검색해서 찾아내는 것(?)이라고 말씀하셨던 것 같은데 제대로 이해한게 맞나요? 소스 보기로 보면 코드가 너무 지저분하게 보이는데 혹시 깔끔하게 볼 수 있는 방법이 있을까요?

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
우주사막 댓글 1 좋아요 1 조회수 641

인덱스 설계에서 type 문의드립니다.

해결됨

ElasticSearch Essential

엘라스틱서치 버전 7부터 type이 제거되었다는데, 강의에서 설명하는 인덱스 설계를 보면 library 인덱스 vs 각 자료별 인덱스(book, 매거진 등) 예시로 나옵니다. 그럼 버전 7 이상부터는 이 설명이 유효하지 않은 건가요? 아니면 예시에 나온 type과 엘라스틱서치 7.x이상이부터 삭제된 type은 다른 개념인지 궁금합니다. 아니면 아래 질문에 있는 답변을 참고하면 될까요?? ElasticSearch 와 RDBMS에 대한 비교 질문이 있습니다.

  • elasticsearch
oros 댓글 1 좋아요 0 조회수 395

빨간줄 에러 질문드립니다

미해결

타입스크립트 입문 - 기초부터 실전까지

노트북으로 할땐 빨간줄이 안떳는데 데스크탑으로 오니, 빨간줄이 많이 떠서 2가지 질문드립니다. 1. 엔터친 빈 공간에 저렇게 빨간줄이 뜨는데 어떻게 없앨 수 있을까요? 이것도 노트북에선 문제없이 강의듣고 넘어갔는데 데스크탑으로 켜니 이렇게 뜨네요. 어떻게해야할까요..?

  • javascript
  • typescript
  • es6
sy 댓글 2 좋아요 1 조회수 527

2강 Board.xml에 만들 때 오류를 어떻게 해결해야 하나

미해결

자바 스프링부트 활용 웹개발 실무용

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mvc.repository.BoardRepository"> <select id="getList" parameterType="com.example.demo.mvc.domain.Board" resultType="com.example.demo.mvc.domain.Board"> SELECT B.BOARD_SEQ, B.TITLE, B.CONTENTS, B.REG_DATE FROM T_BOARD B ORDER BY B.REG_DATE DESC </select> <select id="get" parameterType="com.example.demo.mvc.domain.Board" resultType="com.example.demo.mvc.domain.Board"> SELECT B.BOARD_SEQ, B.TITLE, B.CONTENTS, B.REG_DATE FROM T_BOARD B WHERE B.BOARD_SEQ = #{boardSeq} </select> <insert id="save" parameterType="com.example.demo.mvc.domain.Board"> INSERT INTO T_BOARD ( TITLE, CONTENTS, REG_DATE ) VALUES ( #{title}, #{contents}, NOW() ) </insert> <update id="update" parameterType="com.example.demo.mvc.domain.Board"> UPDATE T_BOARD SET TITLE = #{title}, CONTENTS = #{contents} WHERE BOARD_SEQ = #{boardSeq} </update> <delete id="delete" parameterType="com.example.demo.mvc.domain.Board"> DELETE FROM T_BOARD WHERE BOARD_SEQ = #{boardSeq} </delete> </mapper> 이 코드에서 http://mybatis.org/dtd/mybatis-3-mapper.dtd 이부분에서는 Downloading external resources is disabled. 라는 오류가 나오고요 <mapper> 부분에서는 Element type "mapper" must be declared. 라는 오류가 나오 <select> 부분도 Element type "select" must be declared. 라는 오류가 나옵니다 어떻게 해결해야 하지요?

  • spring-boot
현성 댓글 1 좋아요 0 조회수 8932

질문이 있습니다.. !!

미해결

Vue.js - Django 연동 웹 프로그래밍 (실전편)

안녕하세요 강사님, post list 기능이 정상적으로 작동합니다. 그런데 혹시 최신 포스팅을 목록 가장 상단에 위치하게 하고싶은데, 이건 어떤 속성을 건드려야 하나요? (수정된 건 영향을 주지 않고요 !) 질문이 너무 많아서 죄송합니다 ㅜㅜ

  • vue.js
  • django
  • vuetify
kwonjiwoo 댓글 1 좋아요 0 조회수 257

배열과 리스트

미해결

배열과 리스트의 공통점과 각각의 특징, 차이점, 쓰이는 상황 등을 알고 싶습니다! 제가 코딩 초보라 두개가 헷갈려서 초보도 이해할 수준으로 설명해주시면 감사하겠습니다.

따뜻한 푸른돌고래 댓글 1 좋아요 0 조회수 247

context 변수

미해결

Vue.js - Django 연동 웹 프로그래밍 (실전편)

안녕하세요 강사님, api/ view.py 에서 context 변수가 데이터가 전달되는? 딕셔너리 변수인 것은 알겠습니다. 그런데 정의를 해주지 않았는데 어떻게 딕셔너리 변수가 되며, object_list 라는 키도 따로 context 변수에 넣어주지 않았는데 어떻게 바로 context['object_list'] 로 qs 변수에 저장할 수 있나요? 그리고 object_list 또한 어떻게 Post 모델에서 포스팅 목록을 가져올 수 있는 건지 이해가 안됩니다 ㅠㅠ 이런거는 다큐먼트를 봐야 이해할 수 있을까요? ㅜㅜ

  • vue.js
  • django
  • vuetify
kwonjiwoo 댓글 1 좋아요 0 조회수 251

이미지 업로드 최적화에 대해 고민이 있습니다.

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

안녕하세요! 이미지 업로드 최적화에 대해서 질문이 있습니다. (수정하기 부분) 최적화 진행전에는 상품 수정페이지에서 useEffect를 사용해서 이미지 주소를 가져온다음 state에 저장한 후 props로 전달하여 작성했던 이미지를 보여주고 있었습니다 .하지만 최적화에서는 미리보기 주소를 사용해서 보여주고 있어서 미리보기 주소를 넘기고 싶은데 fetchUseditem에서는 images를 File[]이 아니라 String[]으로 받아오고 있어서 미리보기 주소를 어떻게 만들어서 전달해야 할지 고민입니다... 수정하기 페이지 접속시 state값이 초기화되어서 이 값을 어떻게 유지해야할지 모르겠습니다. 현재 이미지 버튼 컴포넌트에서는 onChangeFileUrls함수에 file과 미리보기 주소 , 해당 인덱스를 전달하고 있습니다.onChangeFileUrls함수에서 state에 저장후 uploadFile를 하여 받은 결과를 사용해서 상품을 작성하고 있습니다.

  • react
  • node.js
  • seo
  • graphql
  • next.js
이재인 댓글 1 좋아요 0 조회수 547

Node.js 버전 차이로 인한 오류 발생(추정)

미해결

코로나맵 개발자가 알려주는 React + Express로 지도서비스 만들기 (Typescript)

보일러 플레이트에서 npm run start를 할 경우 { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } 에러가 발생하며 페이지가 표시되지 않습니다. 스텍오버플로우에서 찾아본 결과, 검색결과 노드17이후로 발생하는 오류라고 하는데 아직 입문자라 실례가 안된다면 노드js 20버전용으로 보일러 플레이트 파일 업데이트 가능할까요?

  • react
  • node.js
  • mongodb
  • express
댓글 2 좋아요 0 조회수 965

결과 계산하기에서 콘솔이 다르게 찍힙니다.

미해결

[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기

다른 분들도 비슷한 오류가 있었는데 봐도 해결이 안되어서 질문드립니다. 현재 결과 계산하기 파트에서 오류가 생겨 이후 강의는 작성하지 않은 상태입니다. 질문1 goResult 함수에서 const select = [] 로 정의된 변수를 실행시키니 0번 인덱스가 비어있음으로 뜹니다. 어떻게 해야 첫번째 인덱스도 함께 나올수 있을까요? function goResult(){ qna.style.WebkitAnimation = "fadeOut 1s" qna.style.animation = "fadeOut 1s" setTimeout(() => { result.style.WebkitAnimation = "fadeIn 1s" result.style.animation = "fadeIn 1s" setTimeout(() => { qna.style.display = "none"; result.style.display = "block"; }, 450) }) console.log(select) calResult() } function goNext(qIdx){ if(qIdx === endPoint){ goResult() return } let q = document.querySelector(".qBox"); q.innerHTML = qnaList[qIdx].q; for (let i in qnaList[qIdx].a){ addAnswer(qnaList[qIdx].a[i].answer, qIdx, i); }; let status = document.querySelector(".statusBar") status.style.width = (100/endPoint) * (qIdx+1) + "%" } 질문 2 calResult 함수에서 console.log(resultArray)를 찍으니 아무것도 나오지 않습니다. 어디서부터 잘못된지 모르겠습니다..ㅠ function calResult() { let pointArray = [ { name: "mouse", value: 0, key: 0 }, { name: "cow", value: 0, key: 1 }, { name: "tiger", value: 0, key: 2 }, { name: "rabbit", value: 0, key: 3 }, { name: "dragon", value: 0, key: 4 }, { name: "snake", value: 0, key: 5 }, { name: "horse", value: 0, key: 6 }, { name: "sheep", value: 0, key: 7 }, { name: "monkey", value: 0, key: 8 }, { name: "chick", value: 0, key: 9 }, { name: "dog", value: 0, key: 10 }, { name: "pig", value: 0, key: 11 } ]; for (i = 0; i < endPoint; i++) { let target = qnaList[i].a[select[i]]; for (j = 0; j < target.type.length; j++) { for (k = 0; k < pointArray.length; k++) { if (target[j] === pointArray[k].name) { pointArray[k].value += 1; } } } } let resultArray = pointArray.sort(function (a, b) { if (a.value > b.value) { return -1; } if (a.value < b.value) { return 1; } return 0; }); console.log(resultArray); let resultword = resultArray[0].key; return resultword; } 소스 코드만 보내드리면 보시기 힘들어하시는것같아 깃 파일도 같이 첨부하였습니다! https://github.com/kihet77/psychologyTestWeb/tree/main/MyMBTI-main/start

  • HTML/CSS
  • javascript
  • bootstrap
kit Han 댓글 1 좋아요 0 조회수 434

판다스 기초2

미해결

제가 판다스 기초2 강의를 듣던 중에 딕셔너리 형태로 데이터(행) 추가 파트에 대해 질문 드립니다. 강의에서는 위와 같이 입력하면 행[4]파트와 겹쳐서 오류가 났다고 하셨는데 코드를 작성하니 오류가 나지 않아, 바뀌어 이렇게 해도 상관없는건지에 대해 질문 드립니다

hj2930hj 댓글 1 좋아요 0 조회수 209

쿼리메서드 관련 질문

미해결

실전! 스프링 데이터 JPA

@Test @Transactional public void 테스트() throws Exception{ Member member1 = new Member("member1", 10); Team teamA = new Team("teamA"); member1.changeTeam(teamA); teamRepository.save(teamA); //member <- cascade persist em.flush(); em.clear(); memberRepository.findByAge(10); // SELECT 1번 memberRepository.findByUsername("member1"); // SELECT 2번 memberRepository.findById(member1.getId()); // 영속성 컨텍스트에 PK값이 존재 } 쿼리 조회 메서드 실행 시 JPQL 이 동작하여 flush 후 DB에 바로 쿼리가 날라가고 가져온 것이 영속성 컨텍스트에 저장된다고 알고 있습니다. 만약에 save(new Member(member1, 10)); 후에 save한 엔티티 대상을 조회하기 위한 findByAge (where = 10) , findByUsername (where = member1) 을 순서 대로 쿼리 메서드 호출을 하였을 때 조회 쿼리가 결국 같은 엔티티를 조회하기 위함인데 SELECT 쿼리문이 2번 나갔습니다. 2번 나간 이유가 findByAge 호출 후에 findByUsername 호출 시 1차 캐시에서 비교할려면은 무조건 id값이랑 비교가 가능하기 때문인지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
hoonseung 댓글 2 좋아요 0 조회수 293

@RequestBody 생략 시에 @ModelAttribute 로 인식(?)한다고 하셨는데 그러면 HelloData 를 어떤 파라미터로 가지고 오는지 궁금합니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 내용] @ModelAttribute HelloData helloData 가 되면 HelloData를 HTTP 메시지 바디가 아니라 요청 파라미터를 처리하게 된다라고 하셨는데... 이 내용이 잘 이해가 안갑니다. helloData 라는 값을 파라미터로 인식하는건가요? 즉, helloData="22" 로 값이 들어오면 값을 22로 인식하는건지... 제가 잘 이해를 못해서 자세한 설명 부탁드립니다.

  • spring
  • mvc
gmldnjs0402 댓글 1 좋아요 0 조회수 706

인기 태그

인프런 TOP Writers

주간 인기글