Backend-dev 14

nodejs로 라우팅 서버 실습해보기!

-라우팅 : 서로 다른 일을 하게 하기 ⇒ 요청에 따른 다른 응답 결과를 보내는 것-요청에 대한 정보-헤더 구성요소요청URL요청 메소드상태코드(응답)지금은 아무것도 안 뜬다..노드의 http 모듈로 서버를 간단히 만들어서 다시 조회해보자포스트맨으로 다시 요청해보기-옵션 추가결과-응답에 대한 정보 추가-응답 형식(MIME)이란? “나 이렇게 응답할거야~”text/plaintext/htmlapplication/json : 자바스크립트 객체 json 형태로 응답등등등…다음을 참고하자.MIME types (IANA media types) - HTTP | MDN MIME types (IANA media types) - HTTP | MDNA media type (also known as a Multipurpose ..

[javascript] express로 사용자 req 분석하기

node.Js express로 req를 분석해보자. 1. 사용자 ip 받아오기루프백 서버const express = require('express');const app = express();// IPv6 주소에서 IPv4 주소를 추출하는 함수function extractIPv4(ip) { if (ip === '::1') { return '127.0.0.1'; }else if (ip.includes('::ffff:')) { return ip.split('::ffff:')[1]; } return ip; } app.get('/', (req, res) => { // IP 주소 가져오기 const ip = req.headers['x-forwarded-f..

[javascript] Buffer(버퍼)란? | 장,단점과 노드js를 활용한 예시

버퍼 파일을 읽거나 쓸 때 한 덩어리로 처리하지않고 작은 단위로 시간을 절약하는 방법이다.전송 속도를 조절하거나, 데이터의 흐름을 제어하기 위해 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 물리적인 메모리 영역이다.주로 입출력시에 많이 사용하는데, 예를 들어 파일을 읽어올 때  데이터가 바로 전달되지 않고 우선 출력버퍼에 데이터가 저장된다.그러다가 버퍼가 가득 차거나 특정 경우가 발생 시(개행 문자, 엔터 등) 그 내용을 전달한다.보통 이렇게 버퍼 단위로 전송할 때, '버퍼를 비운다'고 표현하며,전달받은 입장에서는 전체 내용을 한번에 다 가져오지 않고 버퍼 하나 크기 만큼만 받게 된다.    - 버퍼의 크기는 고정되지 않을 수 있다. 버퍼의 크기는 시스템 설정이나 프..

[javascript] Stream(스트림)이란? | 장,단점과 노드js를 활용한 예시

스트림 스트림(Stream)은 대용량의 데이터를 효율적으로 처리하기 위한 추상화된 인터페이스이다.파일을 읽거나 쓸 때 한 덩어리로 처리하지않고 작은 단위로 시간을 절약하는 방법으로,한 방향으로 흐르는 데이터의 큰 흐름이라고 볼 수 있다.스트림은 운영체제에 의해 생성되며, 가상의 연결고리로써 데이터가 흐르는 중간 다리 역할을 한다.또한 스트림은 데이터를 작은 청크(chunk) 단위로 처리하므로,메모리 사용을 최소화하고 데이터 처리를 효율적으로 할 수 있다.참고로 개발 시 스트림을 만들면, RAM에 쌓이기 때문에 다 쓰고 반드시 닫아줘야 한다.강물이 넘쳐흐르면 안되기 때문이다.   스트림은 이벤트 기반의 API를 사용하여데이터 읽기, 쓰기, 변환 등의 작업을 비동기적으로 수행한다.    Readable St..

[javascript] Node.js와 express 비교

자바스크립트는 Html 태그를 동적으로 추가하고 웹의 동적인 동작을 처리할 때 사용된다.뿐만 아니라 클라이언트에 동적인 기능을 제공함과 동시에 단일 언어로 클라이언트와 서버를 모두 개발할 수 있는 가능성이 있다. 자바스크립트를 통해 서버를 개발하고 구동할 수 있는 방법엔 두 가지가 있다.바로 Node.js와 express다. 오늘은 이 두가지를 통해 서버를 구동하고그 문법에는 어떤 차이가 있으며 각 특징은 어떤지 포스팅하고자 한다.  Node.js 특징   1. 비동기 I/ONode.js는 비동기식 입출력을 기본으로 하여 높은 성능을 발휘한다. 이는 많은 요청을 동시에 처리할 수 있게 한다.ex:) 채팅 애플리케이션많은 사용자가 동시에 메시지를 주고받는 실시간 애플리케이션에 비동기 I/O를 사용하면 각 ..

[javascript] 콜 스택과 이벤트 루프 | 동기/비동기 처리 차이?

동기 처리란, 쉽게 말해 순차적인 처리를 의미한다.만약 응답과 요청이 동기라면, 어떤 일이 발생할까?A 클라이언트가 요청을 보냈다고 하자. Aa서버는 요청을 받고 응답을 한다.문제 없다. 케이스를 바꿔보자.A 클라이언트와 B 클라이언트가 요청을 보냈다고 하자. Aa 서버는 요청을 각각 받고 각각 응답을 한다.여기까진 괜찮을 지도 모른다.   그런데 보통, 클라이언트:서버는 다:1 관계다.서버는 다중 처리를 해야 하는 경우가 대부분이다.이렇게 요청을 받을 때는 참고로 콜 스택을 사용하기 때문에 계속 요청이 쌓이게 되는 것이다.이렇게 되면 나중으로 갈수록 대기 시간이 천문학적으로 길어지게 되고이러한 불편함은 클라이언트가 감수해야 된다. 성능은 크게 떨어지고 서버의 부하도 심해질 것이다. ⇒ 고로 서버를 동기..

[Spring] 스프링 빌드 오류 모음 || sudo: ./gradlew: command not found 에러가 뜰 때

스프링 프로젝트 개발을 마치고 빌드를 실행하기 위해 ./gradlew build 를 수행해야 하는데, (관리자 권한으로 수행) 분명 작업 폴더에 접근했고 목록에 gradlew 가 있는 것을 봤는데도 수행이 안될 때가 있다. [CASE1] 우선 프로젝트 파일을 원격지에서 받아왔을 경우, 자바나 gradle 환경이 달라서 오류가 날 수는 있다. => gradle -v (gradle 버전 확인) , java --version (자바 버전 확인) 버전이 다르면 그에 맞게 업그레이드/다운그레이드를 해줘야 함 [CASE2] 무한 빌드 상태에 빠질 경우 (무한 빌드의 경우, 돌리고자 하는 서버의 메모리를 확인할 것. 본인은 클라우드를 사용하여 프리 티어로 받은 메모리가 1G밖에 되지 않아서 그런 것이었고 증설하니 문..

Backend-dev/Spring 2024.02.21

[Spring] 첫 실행시 로그인 화면이 뜨는 경우? / Please sign in

스프링 코드를 작성하고 서버를 돌렸는데 계속해서 이런 창이 떴다. 음.. 찾아보니 Provider 가 문제다, 하는데 내 생각엔 firebase Security 쪽 문제같아서 삽질을 또 했다. 그러다가 해결 방법을 발견! main 실행 코드에 @SpringBootApplication에 다음과 같이 exclude속성을 달아주면 끝이다. @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) 정상 작동을 확인.

Backend-dev/Spring 2024.02.05

[Spring] @Autowired 사용법? 스프링 빈 의존성 주입과 @RequiredArgsConstructor

의존성(Dependency)이란? A 클래스에서 b함수를 호출하기 위해서 B함수가 필요할 때, 'A클래스는 B클래스의 의존성을 가진다' 고 한다. 스프링 빈을 등록하고 의존성 주입을 할 때 @Autowired를 쓰면 의존성 주입이 편하다. 이렇게 config 파일에서 빈을 등록해주고, 컨트롤러에서 의존성 주입을 해주려는데 밑줄이 뜨면서 사용을 추천하지 않는다고 떴다. @Autowired의 장점은 매우 편리하다는 것. 단점은 -의존성 불분명성: @Autowired를 사용하면 코드가 어디서든 해당 빈을 주입할 수 있으므로 어떤 클래스가 어떤 빈을 주입하는지 명확히 파악하기 어려움 -코드의 복잡성 증가 등이 있다. 대신 사용할 수 있는 방법으로는 -생성자 주입(Constructor Injection) -Set..

Backend-dev/Spring 2024.02.05

[Spring] Firebase 초기 설정 / 스프링 프로젝트에 admin SDK 추가하기

이번에 새로 들어가게 된 프로젝트에서 소셜 로그인 인증 방식을 사용하기로 했다. 스프링부트 OAuth2 보안 설정을 직접 해주는 방법도 있지만, 다양한 소셜 로그인을 진행해야하므로 Firebase를 이용해보자. 먼저 Firebase 콘솔(https://firebase.google.com/?hl=ko) 에 접속해서 Firebase | Google’s Mobile and Web App Development Platform 개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요. firebase.google.com 구글 로그인 후, 프로젝트 생성-Authentication Sign-in-method-새 제공업체 추가 본인은..

Backend-dev/Spring 2024.02.04