1. 요구 사항 수집, 분석 및 분류시스템 요구 사항의 정의: 클라이언트를 위해 만들어야 할 항목을 파악하고 정리하는 과정입니다.대규모 시스템 설계의 특성:일반적인 요구 사항과의 차이: 메서드, 알고리즘, 클래스 등을 구현하는 일반적인 요구 사항과 달리, 대규모 시스템은 추상화 단계와 범위가 다르며, 설계해야 하는 솔루션도 다릅니다.추상화 수준: 추상화 단계가 높아질수록 문제 해결을 위한 자유도와 경우의 수가 다양해지며, 문제의 범위가 넓어져 시각적인 구현이 어려워집니다.기술적 제한: 기존 코드를 기반으로 메서드나 알고리즘을 수행할 경우, 입력 값과 결과 값을 알고 있어야 하고, 사용할 프로그래밍 언어에도 제한이 있습니다.2. 요구 사항의 모호성 및 그 원인모호성의 원인:엔지니어의 요구 사항 구상 부족:..
소프트웨어 아키텍처 동기 (Motivation)소프트웨어 아키텍처 설계를 잘하면 시스템 구조가 커지더라도 성능 영향을 덜 받게 되고 기능을 추가할 때 확장성이 용이합니다. 반대로 아키텍처를 잘못 설계하게되면 성능 저하와 확장성의 문제가 생기고 이것을 개선하기위해 아키텍처를 다시 설계해야 하기 때문에 재설계 비용이 발생합니다.구조의 중요성: 우리가 개발하는 모든 소프트웨어는 특정한 구조를 가지고 있습니다. 시스템의 기능을 수행하도록 코드를 작성하는 방법은 무한하지만, 설계 방식에 따라 소프트웨어는 서로 다른 특성을 지니게 됩니다.성능과 규모 영향: 소프트웨어 아키텍처는 시스템의 성능과 규모에 직접적인 영향을 미칩니다. 예를 들어, 새 기능을 쉽게 추가할 수 있는지, 오류나 보안 공격에 대한 대응 방법 등에..
node.js환경에서 실행되는 프로그램을 만들었는데 그것을 실행 파일로 만들어야해서 일렉트론을 사용했다. 파일을 패키징할때 일렉트론은 electron-forge를 추천하고 있었다. 그러다 생긴 App threw an error during load Error: Cannot find module './module' 에러 발생... 번들링 문제인거 같아서 계속 찾아보고 config 파일을 수정해봤지만 계속 오류가 발생했다..그러다가 로그를 찬찬히 뜯어봤더니 다음과 같은 경고문이 있었다.Vite의 Node API에서 CommonJS (CJS) 빌드가 더 이상 지원되지 않는다고 한다. Node.js 환경에서 require로 모듈을 로드해 사용하고 있었는데 CommonJS 방식을 ES Module 방식으로 모두 ..
일급 객체의 조건무명의 리터럴로 생성할 수 있다, 즉 런타임에 생성이 가능하다.변수나 자료구조에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.// 1. 함수는 무면ㅇ의 리터럴로 생성할 수 있다// 2. 함수는 변수에 저장할 수 있다// 런타임에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다const increase = function (num) { return ++num;};const decreas = function (num) { return --num;};// 2. 함수는객체에 저장할 수 있다const predicates = { increase, decrease };// 3. 함수의 매개변수에 전달할 수 있다// 4. 함수의 반환값으로 사용할 수 ..
OPTIONS Methodhttp 통신을 할때 메서드를 이용해 해당 요청이 어떤 요청인지를 파악하고 그에 맞는 요청을 처리한다. 대표적인 메서드는 다음과 같다GET: 서버에 리소스를 요청한다POST: 서버에 리소스를 수정한다DELETE: 서버에 리소스를 제거한다PUT: 서버에 리소스를 부분 변경한다HEADE: GET 요청을했을때 response 받을 헤더를 요청한다.PATCH: 서버에 리소스를 대체한다.TRACE: 서버에 경로를 추적하며 loop-back 테스트를 한다.OPTIONS: 예비 요청을 위해 사용함여기서 OPTIONS 메서드는 origin이 다른 서버에 요청을할 때 prefilght를 하기위해 사용되는 메서드다.출처(Origin)URL은 다음과 같은 구성요소로 되어있다. 여기서 출처(Origi..
JWTJWT(JSON Web Token)은 JSON 형식의 데이터를 저장하는 토큰이다.JWT의 구성요소헤더(HEADER): 토큰 종류와 해시 알고리즘 정보가 저장페이로드(PAYLOAD): 토큰의 내용물이 인코딩된 부분시그니처(SIGNATURE): 일련의 문자열로, 시그니처를 통해 토큰이 변조되었는 지 여부를 확인JWT 토큰은 JWT 비밀 키를 알지 않는 이상 변조가 불가능 JWT 토큰의 단점은 용량이 큼 JWT 인증 실습JWT 모듈 설치npm i jsonwebtoken 시크릿 키 env에 저장// .envJWT_SECRET=비밀키임의생성JWT 검증 미들웨어 생성// midlewares/index.jsconst jwt = require('jsonwebtoken')...exports.verifyToken =..
Object 생성자 함수`new` 연산자와 함께 `Object` 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다.빈 객체를 생성한 이후 프로퍼티 메서드를 추가하여 객체를 완성할 수있다.생성자 함수란 `new` 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다생성자 함수에 의해 생성된 객체를 인스턴스라 한다.자바스크립트는 `Object` 함수 외에도 `String`, `Number`, `Boolean`, `Function`, `Array`, `Date`, `RegExp`, `Promise` 등의 built-in 생성자 함수를 제공한다const person= new Object();person.name = "lee";person.sayHello= function() { console.l..
내부 슬롯과 내부 메서드내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 의사 메서드다.내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직업적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다.일부 내부 슬롯과 내부 메서드에 한하여 직접적으로 접근할 수 있는 수단을 제공하기는 한다.모든 객체는 [[Prototype]]이라는 내부 슬롯을 `__proto__`를 통해 간접적으로 접근할 수 있다.프로퍼티 어트리뷰트프로퍼티 어트리뷰트란 프로퍼티의 상태를 나타낸다.자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으..