05/10 (월) ~ 05/16 (일)
view github
용어 정리
stateless app
- 스테이트풀과 스테이트리스 비교, RedHat
- 웹서버란 무엇인가? MDN : Stateless에 대한 설명이 나옴
- stateless app, WhatIs.com : 스테이트리스 앱에 대한 정의 ( whatis.com 사이트는 기업 email 아이디가 있는 사람만 사용할수 있음. 폐쇄적임. 요건 다행히 오픈되어 있네..)
- 한 세션에서 생성된 고객 데이터를 다음 세션에서 사용하기 위해 저장하는 일이 없는 어플리케이션 프로그램
- 각 세션은 첫번째 방문인 것처럼 진행되며
- 응답이 이전 세션으로부터의 데이타에 의존하지 않는다.
- 반면에
스테이트풀
앱은 각 고객 세션의 데이타를 저장하고 그 고객이 다음번에 request를 하면 저장된 데이타를 사용한다
- 어떤 앱이
스테이트리스
할 때, 서버는 고객 세션에 대한 어떤 데이타도 저장하지 않는다.- 대신 세션 데이타는 고객측에 저장되며 필요할 때 서버로 전달된다.
- 이 것은
offline first
를 염두에 두고 앱을 개발할때 중요한 점이다. - 소프트웨어 개발에서 이런 접근방식에서는,
- 인터넷 연결이 안될때에도, 유저 단말기에 세션데이타가 로컬로 저장되며
- 인터넷 연결이 복구되면, 세션데이타가 클라우드로 업로드되어 복제된다.
- 한 세션에서 생성된 고객 데이터를 다음 세션에서 사용하기 위해 저장하는 일이 없는 어플리케이션 프로그램
- 클라우드 컴퓨팅에서 수평적 확장(horizontal scalability)을 가능케하는 분산 아케텍처는..
스테이트리스
앱과 그 구성요소에대한 새로운 관심을 불러일으켰다.- 그 이유중 하나는,
- 앱의 구성요소가
스테이트리스
하다면, - 오류가 발생할 때 그 구성요소들을 쉽게 재배포하고
- 부하 변동을 수용하도록 확장할 수 있기 때문이다.
- 앱의 구성요소가
- 또 다른 이유는,
- 앱들이
스테이트리스
하다면, - 그들은 API를 통해 서로 쉽게 연결될 수 있다.
- 앱들이
- 함수형 프로그래밍도
스테이트리스
앱에 대한 관심을 불러있으켰다.- 함수형 프로그래밍은 마이크로서비스나 containerization에 흔히 쓰인다.
- 함수형 프로그래밍은 매우 작은 불변 코드의 단위들로 소프트웨어를 개발하는 접근방식이다
- 각 함수는 마치 첫번째 인것처럼 그들의 task를 수행하며,
- 프로그램내의 다른 함수를 인식은 하지만 의존하지는 않는다.
- 모든 프로그램의 부품들이
스테이트리스
하기 때문에,- 프로그래머들은 각 함수들을 다양한 방식으로 조합하더라도,
- 의존성이 프로그램을 망가뜨리는 것을 걱정하지 않아도 된다.
번역 1개
JavaScript Is A Great Language - If You Use TypeScript, medium
- 이제 우리가 Javascript에 대한 진실을 받아들여야 하는 시간이다
-
저자 : Bill Wohlers
- JavaScript는 미움을 많이 받습니다. Tom Brady도 마찬가지죠.( 톰 브래디는 NFL 최고의 쿼터백으로 미움을 많이 받는 것으로 유명)
세상에는 두가지 언어가 있다: 한 가지는 사람들이 불평하는 언어고 또 하나는 아무도 쓰지않는 언어이다.
– Bjarne Stroustrup, C++의 아버지
- 당신이 JavaScript를 싫어한다면, 다음과 같은 3가지 이유중 하나일것이다.
- 당신은 실제로 시도해본적이 없다.
- 당신은 남을 얕보는 프로그래머가 Javascript에서 “5”와 5가 엄밀하지 않게 동등(loosely equal) 해서 안좋다고 말한것을 의문을 제기하지않고 귀담아 들었을 것이다.
- 실제로 좋은 JavaScript 개발자는 느슨한 동치(loose equality)를 결코 사용하지 않는다.
- 혹은 성능관련 이유로 나쁘게 말하는 것을 들었을수도 있다.
- Node.js는 Java보다 약간만 느리다
- 질좋은 코드를 작성하기 어렵다
- 당신이 JavaScript를 시도해봤을때 아마도 구조적인 성격이 부족하다는 것을 발견했다.
- 이것이 나뿐 코딩 습관을 부추긴다고 생각했을수 있다.
- 만약 이것이 이유라면 이 글을 계속 읽어봐라
- JavaScript를 읽기좋고 대규모로 확장할 수 있도록 작성하는 방법에 대해 배울수 있을 것이다.
- 타입 시스템이 없다.
- 이 글을 끝까지 읽어라.
- JavaScript를 사용하는 가장 강력한 이유중에 하나는 TypeScript로 대체할 수 있기 때문이다.
- 당신은 실제로 시도해본적이 없다.
- 이제 당신은 당신이 어떤 위치에 서있는지 알게 되었다.
- 아래에 당신이 다음 프로젝트에 Node.js를 사용해야 하는 3가지 이유가 있다.
1. JavaScript Is Great for Functional Programming
- 누가 함수형 프로그래밍을 좋아하지 않겠는가?
- JavaScript의 놀라운 유연성은 농담이 아니다 - 함수만으로 stateless app을 만들 수 있다.
- JavaScript에서 함수형 스타일의 프로그래밍이 자연스럽도록 느끼게 만드는 이유중 하나는,
- 문자열이나 숫자처럼, 함수가 1급 변수 (first-class variables)이기 때문이다.
- 예를 들면:
const addThree = (x) => x + 3; console.log(addThree(4)); // prints 7
- 이 함수를
Array.map()
함수에 입력하면, - array의 값들을 함수의 입력으로 받아 함수 출력으로 매핑시킨다
const arr = [3, 4, 5]; const mappedArr = arr.map(addThree); console.log(mappedArr); // => [6, 7, 8]
- 당신은 또한 다른 함수를 반환하는 함수도 작성할 수 있다:
const mapByAdding = (x) => (n) => n + x;
- 이제, array에 임의의 숫자를 array의 각 요소에 더하도록 매핑할 수 있다
const arr = [3, 4, 5]; const addFourToAll = arr.map(mapByAdding(4)); console.log(addFourToAll); // => [7, 8, 9]
- 다른 함수를 반환하는 함수는, 고차 함수(higher-order functions) 라고 불리는데,
- 함수 스타일을 유지하면서도 강력한 추상화를 설계하는데 도움이 된다.
- JavaScript 배열은
filter
메소드를 가지고 있는데,조건자(predicate)
기능을 가지며,- 해당
predicate
을 만족하는 요소들로만 구성된 array를 반환한다const arr = [3, 4, 5]; const oddNumbers = arr.filter((n) => n % 0 === 1); console.log(oddNumbers); // => [3, 5]
- 해당
- 별거아니지만( This is nothing to write home about ), prdicates들을 조합하는것이 얼마나 쉬운지 함 봐라
- 이 함수는 두개의 predicates을 받아서 두 predicate이 모두 만족하면
true
를 반환하는 또 다른 prediate을 반환한다.const andPredicate = (pred1, pred2) => { return (el) => pred1(el) && pred2(el); }
- 이 함수는 두개의 predicates을 받아서 두 predicate이 모두 만족하면
- 다른 함수안에 원하는 만큼 깊이 함수를 내포(nest)할 수도 있다.
function nextPerfectSquare(n) { function roudedUpSquareRoot(n) { return Math.ceil(math.sqrt(n)); } const root = roundedUpSquareRoot(n); return root * root; }
- 이 모든 기능은 – 더 많은 다른 기능들과 함께 – 아름답고 기능적인 JavaScript 코드로 복잡한 모듈을 작성하기 쉽도록 해준다.