일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Object에 변수 지정
- 해시태그 구현
- react-redux
- objectid
- 해시태그
- 한번에끝내는Node.js웹프로그래밍초격차패키지
- 몽구스 쿼리
- 줄바꿈 방지
- #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키
- mongoose query
- React
- event.keycode
- 직장인 자기계발
- 한번에끝내는
- 자동 높이 조절
- keyCode == 13
- 직장인인강
- 리액트리덕스
- Redux
- object
- 패캠챌린지
- 패스트캠퍼스후기
- useRef
- 직장인자기계발
- #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
- 패스트캠퍼스 후기
- keycode ==8
- 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
- 리액트
- 패스트캠퍼스
- Today
- Total
꾸준한프로그래밍
패스트캠퍼스 챌린지 13일차 - 이미지 스트림 서버 본문
0. 공부인증
공부 시작 10 : 17
공부 종료 11 : 45
여튼 집에서 공부하기란 쉬운 일이 아니다.
이번 추석 연휴기간에는 진짜로 공부를 이렇게라도 하니깐 좋긴한데,
빡세긴하다...😂
1. unsplash 에서 사진 가져오기
unplash 에서 제공하는 api를 활용해야한다.
또한 일반 브라우저에서 제공하는 fetch를 node에서 제공하는 node-fetch 를 활용해서 이미지를 다운 받을 수 있다.
해당 라이브러리 또한 스트림을 활용할 수 있으며,
클라이언트에게 스트림의 형태로 데이터를 내려줄 수 있다.
import { createApi } from 'unsplash-js';
import nodeFetch from 'node-fetch';
const unsplash = createApi({
accessKey: 'Unplash 에서 제공받은 AccessKey',
fetch: nodeFetch,
});
async function seachImage(query){
const result = await unsplash.search.getPhotos({ query })
// 하기 코드는 ?를 통해서 Undefined 값에서 값을 조회하는 것을 방지함.
console.log(result.response?.results)
if(!result.response) throw new Error("there is no pic")
return{
description : result.response.results[0].description || result.response.results[0].alt_description,
url : result.response.results[0].urls.regular
}
}
클라이언트에서 요청이 들어오면 이미지 파일을 스트림 형태로 보내주기
노드에서는 스트림을 잘 다루는 것이 중요함.
스트림을 통해서 데이터를 주고 받고하는 것이 성능향상이나 부하를 줄일 수 있는 방법 중에 하나임.
: pipe 라는 키워드를 공부해보자
const server = http.createServer((req, res) => {
async function main(query) {
const result = await seachImage(query)
const resp = await nodeFetch(result.url)
// 하기 body는 스트림으로 내려받게 됨.
// 그런데 어차피 바로 클라이언트에 데이터를 내릴 것이라면,
// 굳이 저장할 필요가 없어
// resp.body.pipe(
// fs.createWriteStream('images/download')
// )
// 하기 방법을 통해서 스트림을 통해 데이터를 클라이언트에게 내려줄 수 있음
resp.body.pipe(
res
)
}
main("sea")
})
위 코드를 실행하여 사진을 스트림의 형태로 브라우져에게 내려준 모습.
이번 강의의 결과물이다.
2. 이미지 리사이징하기
https://www.npmjs.com/package/sharp
sharp
High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, AVIF and TIFF images
www.npmjs.com
를 활용한 이미지 리사이징임.
const sharp = reuire('sharp')
unplash api 의 요청에 제한이 있음.
그래서 만약에 같은 쿼리 값이 들어온다면,
서버에 캐싱된 이미지 서버를 활용하여,
이미지 요청 횟수를 줄일 수 있음
->해당 로직을 통해서 전체 속도를 올릴 수 있음
이미지 요청 Path 를 구별하는 로직을 만들기
환급 챌린지 (13/30)
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
'백엔드' 카테고리의 다른 글
패스트캠퍼스 챌린지 15일차 - 이미지 리사이징 서버 (0) | 2021.09.20 |
---|---|
패스트캠퍼스 챌린지 14일차 - 이미지 리사이징 서버 (0) | 2021.09.19 |
패스트캠퍼스 챌린지 12일차 - 웹소켓을 통한 실시간 데이터 베이스 저장하기 및 이미지 불러오기 (0) | 2021.09.17 |
패스트캠퍼스 챌린지 11일차 - 상태관리 리덕스 끝내기 (0) | 2021.09.16 |
패스트캠퍼스 챌린지 10일차 - 웹소켓을 통한 실시간 인터렉션 구현 (0) | 2021.09.15 |