프로그래밍 290

TypeScript에서 뒷통수 맞은 썰 (Promise.all)

Promise.xxx는 인자의 수 제한이 있다? 이 글이 갑자기 순간적으로 리트윗이 되면서 이야기가 많이 오고 갔네요! 잘못된 부분과 설명의 차이를 인지 하는 게 중요하다고 생각합니다. JS에서의 Promise.xxx는 iterable로 처리하기 때문에 실질적인 인자 개수의 제한이 없습니다. MDN-Promise.all Promise.all(iterable); 그런데, TypeScript를 사용하게 되면, 이야기는 달라집니다. (이 설명은 아래에 수정이 있습니다.) TypeScript lib.es2015.promise.d.ts를 보시면 알 수 있습니다. all all all all all all all all all all 위와 같이 총 10개의 all type이 있습니다. 그래서 TS에서의 Promis..

What’s new in JavaScript (Google I/O ’19) 정리

numeric separators BigInt class fields String#matchAll Array#{flat, flatMap} Object.fromEntries globalThis more Intl.* APIs top-level await Promise.{allSettled, any} WeakRef 위와 같은 기능들이 추가 되었고, 모던 브라우저에서는 지원하는 기능도 있고, 아닌 기능도 있다. 그런데, 유용한 기능들이 있어서 정리를 해보고자 한다. class fields const counter = new IncreasingCounter(); counter.value; counter.increment(); counter.value; // ES2015+ class IncreasingCounter..

JRebel 대체제인 DCEVM을 적용해보자.

layout: post title: "DCEVM(Dynamic Code Evolution VM)을 적용해보자" description: "DCEVM(Dynamic Code Evolution VM)을 적용해보자" date: "2019-03-13 18:16" tags: [java,hot swap, programming] comments: true DCEVM을 설치 해서 조금 더 빠르게 수정된 부분을 반영하여 Tomcat이 해당 수정 코드를 빠르게 반영 하고자 설치하려고 한다. 원래는 JRebel이라는 유료 툴을 이용하면, 빠르게 Hot Swap하여 수정 된 코드를 반영할 수 있다. 그러나 연간 $550정도로 구독 모델이 굉장히 비싸서 사용하기가 어려워서 대체제를 찾다가 발견한 것이 바로 DCEVM이다. 아래와..

[React] yarn build fail - query-string 모듈이 문제일 때 해결 방법

query-string module Build 오류 ❯ yarn build yarn run v1.9.4 warning ../package.json: No license field warning ../../package.json: No license field $ NODE_PATH=src node scripts/build.js Creating an optimized production build... Failed to compile. ​ Failed to minify the code from this file: ​ ./node_modules/query-string/index.js:8 ​ Read more here: http://bit.ly/2tRViJ9 ​ error Command failed with e..

[정리] 러닝 리액트 11장 - React Router

Chapter 11. React Router라우팅은 클라이언트의 요청을 처리할 종말점을 찾는 과정이라고 책에서 설명하고 있는데, 쉽게 말하자면, 웹 페이지의 메뉴 버튼을 생각하면 어떠한 일을 하는 것인지 이해하기가 쉽다. 결국 사용자는 원하는 페이지로의 이동을 원하게 되는데, 해당 페이지로 이동을 가능케하는 것이 Router의 역할이다. 11.1 라우터 사용하기export const MainMenu = () => [회사 소개] [이벤트] [제품] [고객 지원] ​ export const AboutMenu = ({ match }) => [회사] [연혁] [서비스] [위치] 라우터를 사용하면, 이 웹사이트의 각 섹션에 대한 경로를 설정할 수 있다. 각 경로는 브라우저의 주소창에 넣을 수 있는 Endpoint..

[정리] 러닝리액트 7장 컴포넌트 개선하기

러닝리액트 7장 컴포넌트 개선하기7.1 컴포넌트 생애주기컴포넌트 생애 주기는 컴포넌트가 마운트되거나 갱신될 때 호출 되는 일련의 메서드로 이루어진다. 이런 메서드는 컴포넌트가 UI에 렌더링 되기 전이나 후에 호출된다. 실제로 render 메서드 자체도 컴포넌트 생애주기의 일부다. 하나는 마운팅 생애주기와 갱신 생애 주기 두 가지가 중요하다. 그전에 우리는 컴포넌트에 대한 이해를 정확하게 알고 있는지 확인하자. Q) 컴포넌트는 무엇인가? A) 다섯 가지 개념을 마스터 한 다음 리액트를 마스터하라7.1.1 마운팅 생애주기잠깐! 왜 Mounting이라고 부르는가? Mounting의 정확한 의미는 무엇일까? what does mount mean in react마운팅 생애주기는 컴포넌트가 마운트되거나 언마운트되면..

Java Environment Management를 사용하여 여러 버전 사용하기

java 여러개 버전 사용하기 (MacOS)Jenv 및 java 설치jenv 를 통해 Java environment를 관리 하려고 합니다. $ brew install caskroom #미리 설치 되어 있어야 합니다. $ brew install jenv $ brew cask install java #가장 최신 버전으로 설치 됩니다. $ brew cask install java8 #java8 버전 최신 릴리즈로 설치됩니다.일단 위와 같이 실행을 하여 java를 설치해주시면 됩니다. 설치된 java 확인$ cd /Library/Java/JavaVirtualMachines $ ll drwxr-xr-x - root 14 5 21:42 jdk-10.0.1.jdk drwxr-xr-x - root 27 4 2017 j..

[정리] 러닝 리액트 3장 함수형 프로그래밍

러닝 리액트3장 자바스크립트를 활용한 함수형 프로그래밍함수형 프로그래밍 개념이 시작 된 것은 1930년대이다. 그 당시 발견한 람다 계산법이 함수형 프로그래밍의 시작이라 할 수 있다. 함수를 함수로 넘기거나 함수가 함수를 결과로 내놓는 것도 가능하다. 다른 함수를 조작하고, 함수를 인자로 받거나 반환하는 것이 가능한 복잡한 함수를 고차함수 (high-order function)으로 부른다.함수가 1급시민(First class citizen)이 되려면 변수에 함수를 대입할 수 있어야 하고, 함수를 다른 함수에 인자로 넘길 수 있으며, 함수에서 함수를 만들어서 반환할 수 있어야 한다.3.1 함수형이란?자바스크립트는 함수가 1급시민에 해당되기에 함수형 프로그래밍을 지원한다고 할 수 있다.var log = fu..

[정리] 러닝 리액트 - 2장 최신 자바스크립트

러닝 리액트2장 최신 자바스크립트ES5의 내용은 아래 두 곳의 내용을 가져왔습니다. ECMAscript 5의 feature : http://speakingjs.com/es5/ch25.htmlhttp://www.bsidesoft.com/?p=1861ES5에 대해 간략히 알아보자.3.0에 비해 5.0에서 실질적으로 추가된 문법은 strict mode와 Object리터럴 get-set추가, 문자열의 인덱스 인식등에 대한 부분이 변화 했습니다.가장 중요한 특징은 객체에 대한 통제와 클래스를 생성하는 방법이 변화했다는 것입니다.문법적으로도 사용자 Object에 대해 getter, setter 지정이 가능해지므로 더 이상 평범한 값의 할당으로 작동하지 않고 내부에는 많은 제어문을 내포할 수 있는 형태가 되어 기존의..

[책] 모던 웹을 위한 Node.js 프로그래밍 8장 정리

Node.js 8장 - Expressnpm install express8.1 기본 서버var express = require('express'); ​ var app = express(); ​ app.use(function (request, response) { response.writeHead(200, { 'Content-Type': 'text/html' }); response.end('Hello express'); }); ​ ​ app.listen(52273, function () { console.log("Server Running at http://127.0.0.1:52273"); });http모듈을 사용하지 않는 이유는 무엇일까? 그것은 바로 express모듈이 더 많은 기능을 포함하고 있기 때문..

반응형