반응형

분류 전체보기 161

7.04 나이가 들어감에 따라

나이가 들어감에 따라 사람을 바라볼 때의 나의 생각이 점점 달라져간다. 10대 때는 멋진 몸매를 가진 사람을 보면, "나도 저래" 라며 착각을 했고 20대 초반에는 멋진 몸매를 가진 사람을 보면, "나도 저렇게 될거야" 라며 의지를 다졌고 20대 중반에는 멋진 몸매를 가진 사람을 보면, "외형보다는 내형이 더 중요해"라며 망가진 나의 몸에 대한 합리화를 했고 20대 후반 들어서 멋진 몸매를 보면, 그 사람이 그 몸을 이루기 위해 들인 의지와 시간들 그리고 자제력들이 보인다. 지금 보면 20대 중반에의 내가 너무나 부끄럽다. 외형보다는 내형이 더 중요해라고 하면서 멋진 몸을 가지기 위해 엄청난 노력 자체를 깎아내린 것이나 다름 없으니 말이다. 30의 나이에 들어서고 보니 어느 일정한 몸을 유지한다는 것 자..

생각 보고서 2021.07.04

7.04 Dev.Feedback (Node.js #3)

Node JS 동작원리 Node.js는 자바스크립트를 활용하여 고성능의 비동기 I/O를 지원하는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. (소프트웨어 플랫폼은 런타임과 동일한 개념이다. 반드시 소프트웨어가 포함되어야 한다. 플랫폼 자체는 하드웨어 뿐만 아니라 실제 세계에서 쓰이는 아주 넓은 표현이기때문이다.) https://www.quora.com/Whats-the-difference-between-a-platform-and-a-runtime-environment What's the difference between a platform and a runtime environment? Answer (1 of 2): Hello there, These terms are ..

개발 R.I.P. 2021.07.04

7.03 Dev.Feedback (Side Effect)

Side Effects 우리가 작성한 코드 혹은 함수에 side effects가 있는지 어떻게 알 수 있을까? 먼저 side effects에 대해 짚어보기 전에 왜 side effects에 대해 알아야 하는지 짚어보고자 한다. 현대 코딩에서 선언형 프로그래밍의 패러다임이 주를 이루고 있다. 그 방식은 함수형 프로그래밍을 통해 이뤄지고 있는데, 이 함수형 프로그래밍은 명령형 프로그래밍으로 인해 생겼던 수 많은 side effects들을 줄여주게 되었다. 여기서 side effects는 외부 상태의 변화에만 국한되지 않고, Input과 Output, database, log system, API와 같은 것들과 상호작용하면서 영향을 줄 수 있는 경우들을 전부 가리킨다. 즉, 우리가 통제하고자 하는 모든 부분들..

개발 R.I.P. 2021.07.03

7.01 Dev.Feedback (미들웨어)

미들웨어 작동 원리 이해하기 먼저 미들웨어 작동원리를 이해하기 위해 자주 사용하는 미들웨어를 적용하면서 정리해보려 한다. 미들웨어를 자주 사용하는 상황 모든 요청에 대해 url이나 메소드를 확인할 때 POST 요청 등에 포함된 body(payload)를 구조화할 때(쉽게 얻어내고자 할 때) 모든 요청/응답에 CORS 헤더를 붙여야할 때 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때 미들웨어를 이용하면 node.js만으로 구현한 서버에서는 번거로울 수 있는 작업을 쉽게 적용할 수 있다. case 1: 모든 요청에 대해 url이나 메소드를 확인할 때 미들웨어는 말 그대로 프로세스 중간에 관여하여 특정 역할을 수행한다. 수많은 미들웨어가 있지만, 가장 단순한 미들웨어 로거(logger)를 예로 들어보면..

개발 R.I.P. 2021.07.01

6.30 Dev.Feedback (HTTP/ Network)

클라이언트 서버 아키텍쳐 상품 정보 혹은 금융 정보같은 리소스가 존재하는 곳과, 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처 또는, 클라이언트-서버 아키텍처라고 부른다. 리소스를 사용하는 앱이 바로 "클라이언트", 리소스를 제공(serve)하는 곳은 "서버"라고 부른다. 즉 상품 정보 자체를 전달하는 것에 초점이 맞춰진 것은 서버이며, 클라이언트에서는 그 리소스를 조회하는 것에 중점이 있다. 리소스에 접근하려는 앱은, 카페로 치면 손님과 같다. 손님은 아메리카노를 획득하기 위해, 리소스를 가지고 있는 점원에게 요청해야 한다. 손님의 요청에 따라, 점원은 리소스를 담아 응답한다. 이처럼 클라이언트와 서버는 요청과 응답을 주고 받는 관계이고, 클라이언트-서버 아키텍처에서는 요청이 선행되고, 그 후에..

개발 R.I.P. 2021.06.30

6.29 당연한 것

"세상에 당연한 것은 없다." 최근 들어 이 말이 계속 내 머릿속을 가득 채우고 있다. 내가 알고 있는 것을 당연히 사람들도 알고 있을 것이라 생각했고, 다른 사람들이 내가 생각하는 것에 당연히 동의해줄 것이라 생각했고, 내 곁에 있는 사람들이 당연하게도 내 곁에 계속 남아 있어줄 것이라 생각했다. 이런 생각이 꼬리에 꼬리를 물다보니 하나의 기억이 떠올랐다. 초등학교 2학년 때였던 거 같다. 내가 어렸을 때, 아버지와 어머니 두분 다 일을 하셨다. 두 분 다 각자의 삶을 꾸려가시면서 또 가정도 꾸려나가고 계셨던 것이다. 지금의 내 관점에서 보면 정말 대단해보인다. (물론 지금도 대단하시다...) 특히 어머니, 어머니는 당시의 사회 분위기 속에서 오직 능력만으로 그때 당시 여성이 받을 수 있던 연봉 중 상..

생각 보고서 2021.06.29

6.29 Dev.Feedback (Promise)

Promise는 콜백의 단점을 해결하려는 시도 속에서 만들어졌다. Promise 자체가 콜백을 대체할 수 있는 것은 아니다. Promise에서도 콜백을 사용하는 것을 보면 확실히 알 수 있다. Promise를 사용하면, 콜백 함수의 결과를 비교적 예측하기 쉽게 만들어준다. Promise 기반 비동기적 함수를 호출하면, 그 함수는 Promise 인스턴스를 반환한다. Promise는 성공(fulfilled)하거나 실패(rejected)하거나 단 두가지의 경우밖에 가지지 않는다. (Resolve -> 성공, Reject -> 실패) Promise가 성공하거나 실패하면, 그 Promise를 결정(Settled)됐다고 한다. Promise는 객체(내장 객체)이므로 어디든 전달할 수 있다는 점도 콜백에 비해 간편한..

개발 R.I.P. 2021.06.29

6.28 Dev.Feedback (React #6 useEffect)

Side Effect(부수효과) 함수 내에서 어떤 구현이 함수 외부에 영향을 끼치는 경우 해당 함수는 Side Effect가 있다고 한다. 예시를 통해 설명해보면, let foo = 'hello'; function bar() { foo = 'world'; } bar(); // bar는 Side Effect를 발생시킨다! bar() 함수는 왜 side effect를 발생시킨다고 할까? console을 찍어보면 알 수 있다. 콘솔창에서 foo를 찍어보면 알 수 있듯, 전역변수인 foo에 영향을 미친 것을 볼 수 있다. 이렇게 되면, 전체적인 기능 구현에 있어서 엄청난 문제를 일으킬 수도 있다. (우리가 var를 안쓰는 이유와 비슷하다고 느껴진다.) Pure Function (순수 함수) 순수 함수란, 오직 ..

개발 R.I.P. 2021.06.28

6.27 Dev.Feedback (Node.js #2)

Node.js 기본 철학 경량 코어 코어에는 최소한의 기능 세트만 가지고 있고, 코어의 바깥 부분에 유저랜드(userland) 혹은 유저스페이스(userspace)라고 부르는 사용 전용 모듈 생태계를 두는 것 코어란? 플랫폼 자체의 코어이다. Node.js는 거의 기본적인 기능만 제공한다. 어떤 실험을 진행하라고 과학자들에게 실험실을 제공해준 것이다. 이 가장 기본적인 원칙이 Node.js 문화에 엄청난 영향을 주게 됐다. 다른 언어들처럼 플랫폼 자체가 굉장히 엄격하게 관리되면서 느리지만 대신에 안정적인 진화방식을 택하는 대신에 커뮤니티가 사용자 입장에서 여러가지 넓은 해결책들을 실험해볼 수 있는 자유를 준 것이다. 어떤 실험들을 할 수 있었을까? 코어를 최소한의 기능세트로 관리하는건 유지보수 관점에서 ..

개발 R.I.P. 2021.06.27

6.26 Dev.Feedback (Node.js)

Node.js 브라우저에서 사용할 수 있는 비동기 흐름은 타이머 혹은 DOM 이벤트와 관련된 상황으로 다소 한정적이지만, Node.js의 경우 많은 API가 비동기로 작성되어 있다. Node.js 소개 문서의 첫 단락은 Node.js의 정의부터 시작하는데, Node.js는 "비동기 이벤트 기반 자바스크립트 런타임"입니다. 라는 말부터 시작된다. As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications. About | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nod..

개발 R.I.P. 2021.06.26
반응형