Backend 70

Servlet이란

정적 데이터만 전달하는 Web Server 사용자 (요청)에 따라 다른 처리를 해줄 수 없다. 동적인 처리를 해주는 웹 어플리케이션이 없다. 동적 데이터를 처리하는 CGI 이 때 CGI는 인터페이스이고 즉, 그것은 규약이다. 규약이 왜 필요한가? 다양한 웹서버와 CGI 구현체들이 잘 통신하려고. -> CGI 사용자 증가 CGI 문제점 2가지 발생 통신을 Process(메모리에 적재된 프로그)로 했음 -> 많은 사용자 커버 불가 각 요청에 따른 CGI 구현체 개수 해결 1. Process -> Thread 2. 공유할 수 있는 CGI 구현체 = Servlet +) 웹서버 -> Web Application Server (톰캣) : 정적데이터 처리하는 것 -> 동적데이터 처리하는 Servlet의 생명주기 in..

[스프링부트 프로젝트] 테스트 코드 2장

TDD 테스트가 주도하는 개발 테스트 코드를 먼저 작성한다. 단위 테스트 기능 단위의 테스트 코드를 작성하는 것. TDD와 달리 테스트 코드를 먼저 작성하는 것도 아니고 리팩토링에 포함되지 않는다. Java의 테스트 모듈, Jnit Java프로젝트 작성하면서 부족한 문법 지식 정리하기 @ 어노테이션 (주석) 해당 타겟에 대한 동작을 수행하는 프로그램 외에는 다른 프로그램에 영향을 주지 않는다 ex) @Override, @Deprecated, spring bean 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트 즉 스프링이 관리하는 자바 객체 new 키워드 대신 사용한다. WAS (web application server) Jar 파일 자바에서 사용되는 특정유형의 아카이브 자바코드의 편리..

[javaScript] 자료구조, 이차원 배열, 이차원 Object

arr.reduce(callback[, initialValue]) : 원하는 값들을 하나씩 더하기 값 만드는 것 배열을 축소하거나 새로운 객체를 생성하거나 수정하는 작업에 적합 일차원 배열을 원하는 조건에 따라 이차원 배열로 만들고자 할 때. const array1 = [1,2,3,4]; // reduce(콜백함수, 초기인자) // 리듀서의 결과값은 하나의 value const initial = 0; //초기인자 const result = array1.reduce((arr, cur) => arr+cur, 0) console.log(result) // 10 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const result = arr.reduce((acc, cur) => { i..

Mongoose Populate 사용하기

Populate 란 join과 유사한 개념이다. Populate는 문서의 경로를 다른 컬렉션의 실제 문서로 자동으로 바꾸는 방법입니다. = document의 필드값을 다른 collection 의 특정 document로 치환하는 과정이다. Populate 관계 생성 방법 population은 참조 필드를 통해 이루어진다. 참조 관계는 스키마 생성 단계에서 지정해주면, 참조 대상은 collection이다. -> 스키마 생성 단계에서 특정 필드가 어떤 collection을 참조할 것인지 명시해줘야 한다. author필드 User collection을 참조하고 있다. (ref : 'User') author의 값은 user 스키마를 따라야 하먀, 저장되는 값은 user의 ObjectId이다. (type: Sche..

Backend/MongoDB 2023.01.30

[생활코딩] WEB2 - Home Server

Router IP Address (Internet Protocol Address) - 인터넷을 사용하려면 IP 주소를 가지고 있어야 한다. - 두 개의 기기가 인터넷으로 통신하려면 서로의 IP 주소를 알고 있어야 한다. - 통신사에 인터넷을 신청하면 인터넷 회선과 하나의 IP 주소를 부여받는다. - 하나의 IP 주소로 집에 있는 다양한 기기들이 모두 인터넷에 연결할 수 없기 때문에 공유기를 사용한다. - 공유기는 인터넷 회선과 공유기에 연결된 여러 기기들을 중계해주는 역할을 한다. - 공유기는 공유기에 연결된 기기들에게 IP 주소를 부여한다, 이 IP 주소는 내부 네트워크에서 사용하는 주소로 Private IP Address 예를 들면, 회사의 내선번호같은 것이다. 회사의 내선번호는 회사 내부에서만 사용..

[Docker] 입문 수업

Docker 컴퓨터에서 어떤 어플리케이션을 만들기 위해서는 운영체제에 웹 서버나 데이터베이스 같은 소프트웨어를 깔아야 한다. 이러한 소프트웨어를 설치하는 일은 귀찮고 까다로운 일이다. 그래서 한 대의 컴퓨터 안에서 각각의 앱을 실행시키고 각각의 앱은 격리된 환경에서 실행된다. 이 때 운영체제가 설치된 컴퓨터 : Host host에서 실행되는 각각의 격리된 실행 환경 : Container 각각의 container에는 운영체제 전체가 설치된 게 아니라 앱을 실행하는데 필요한 라이브러리와 실행파일들만 포함되어 있음 이러한 장점 1. 이미 존재하는 운영체제를 공유하니까 무엇인가를 설치할 필요 없음 2. 운영체제를 하나만 사용하니까 속도 개선 3. 운영체제 다시 설치할 필요없다 시간 절약 4. 저장용량 절약 리눅..

[JavaScript] 실행 컨텍스트와 자바스크립트의 동작원리

Execution Context 자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념이다. - 코드 작성 실행하는 것은 실행 컨텍스트 내부에서 실행되는 것이다. 즉 코드들이 실행되기 위한 환경이자 하나의 박스이자 컨테이너라 볼 수 있다. 자바스크립트 코드 실행에 필요한 정보 1. 변수 2. 함수 선언 3. 변수의 유효범위 4. this 실행 컨텍스트의 3가지 유형 1. Global - 기본 실행 컨텍스트. 전역 컨텍스트에서 실행 - 두가지 작업 수행 (1) window 전역 컨텍스트 생성 (2) this를 전역 객체로 설정 2. Functional - 함수가 호출될 때마다 해당 함수에 대한 새로운 실행 컨텍스트가 생성 - 실행 컨텍스트는 함수가 호출될 때 만들어진다. 3. Eval Func..

[JavaScript] ES6의 유용한 문법 익히기

Array.prototype.reduce() reduce() 메서드는 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환한다. const array1 = [1,2,3,4]; const initialValue = 0; const sumWithInitial = array1.reduce( (previousValue, currentValue) => previousValue + currentValue, initialValue ); console.log(sumWithInitial); 기대되는 결과값은 array1의 값을 모두 더한 값이 된다. 처음 더해지는 값은 두번째 인자 initialValue이고 그 다음부터 previousValue + currentValue가 더해진다. ini..

[인프콘 2022] 실리콘밸리로 떠나는 비전공자 개발자의 지난 4년 회고 - 좋았던 선택 vs 후회되는 선택, 한정수

서론 글 지금까지 비전공자가 개발자가 된 과정에 대한 이야기는 많았지만, 비전공자가 개발자가 된 이후의 이야기는 찾아보기 어려웠습니다. 이 발표에서는 체육을 전공하고 해운 업계에 종사하다 29살이었던 2018년에 국비지원학원에서 개발 공부를 처음 시작하고 개발자로 전직했던, 4년 차 개발자의 지난 4년을 이야기해보려 합니다. 지난 4년간 4개의 회사에서 개발자로 일하며 경험한 것들을 공유하고, 지난 4년간 했던 선택 중 좋았던 선택들과 후회되는 선택을 소개합니다. 개발자가 되려는 비전공자분들, 1~2년 차 주니어 개발자분들보다 한 발짝 앞서 걸어간 입장에서, 발표를 들으시는 분들이 앞으로 하실 수많은 선택에 있어 제 경험을 참고하실 수 있도록 지금까지 제가 했던 선택을 소개하고 스스로 평가합니다. 저의 ..

Backend/ETC 2022.11.01

[인프콘2022] 서버비 0원, 클라우드 큐 도입 - 조현영

1. 오늘의 픽업 서비스 오후 2시까지 주문하는 그날 자정까지 배송해주는 당일 배송 서비스 (새벽배송도 함) 주요 고객사 - 젝시믹스, 휠라, 삼성물산, 공구우먼, 발란, 알라딘 등 퀵 > 당일배송 > 택배 2. 오늘의픽업 기술 스택 현재 AWS but, 카카오가 GCP라서 옮기는 작업중; 서버는 크게 2가지 : 어드민서버, 앱서버 3. 오늘의픽업 프로세스 실제로는 어드민 서버가 더 많은 일을 한다~. 4. 문제 발생 (1) 2가지 불안감 1. 어드민 서버 터지는 경우 고객사에게 데이터를 엑셀로 받는 경우 -> json형태로 변환 후 DB에 넣을 객체를 생성한다 → 메모리 폭발 2. 앱 서버 터지는 경우 만약 10건 중 3건 완료한 상태인데 서버가 터지면 남은 7건 배송이 불가 또는 익일배송으로 처리가 ..

Backend/ETC 2022.10.13