Backend (126) 썸네일형 리스트형 [Node.js] Date 라이브러리 퍼포먼스 비교 - Do What? 지난번 글에서 Moment.js 의 대체 Date 라이브러리인 Luxon, Day.js, date-fns, js-Joda 4가지 라이브러리의 사용법과 관련 함수들에 대해 봤었습니다. 이번엔 이어서 퍼포먼스와 기타 지표를 비교하려고 합니다. 각 라이브러리에서 주로 사용하는 timezone, offset 에 의한 Date 변환 시 소요 시간을 확인해보려 합니다. - Day.js const dayjs = require('dayjs'); const utc = require('dayjs/plugin/utc'); const timezone = require('dayjs/plugin/timezone'); dayjs.extend(utc); dayjs.extend(timezone); const lis.. [Node.js] Date 라이브러리 비교 - Date 라이브러리 (Moment.js 의 대체) 프로그래밍을 하다보면 날짜와 관련된 로직을 구현, 처리하는 일이 굉장히 많습니다. 이때 Node.js 에서는 폭넓게 사용되던 라이브러리가 Moment.js 입니다. 하지만 이 라이브러리는 이제 Deprecated 되었고, Moment.js 에선 그 대체로 Luxon,Day.js, date-fns, js-Joda 이렇게 4가지를 공식적으로 언급하고 있습니다. (자세한 내용 링크) 이 4가지 라이브러리에 대해 간단한 사용성과 쓸만한 함수들을 비교해보는 시간을 가져보려고 합니다. - Day.js 1. 특징 npm - Day.js 2KB 사이즈의 경량 라이브러리 / Immutable / Moment.js 와 비슷한 api / i18n 지원 2. 사용법 con.. [Javascript] - Weakness Weakness (자바스크립트의 단점) ‣ 자바스크립트의 == 연산자 "" == false // true [] == false // true null == false // true undefined == false // true 빈 문자열은 '거짓이라고 볼 수 있는 값' 이기 때문에 false, 하지만 빈 배열은 '거짓이라고 볼 수 있는 값' 이 아닌데 false 입니다. null 과 undefined 또한 '거짓이라고 볼 수 있는 값' 이지만 false 는 아닙니다. [] == [] // false [] == ![] // true 두 개의 빈 배열은 같은 객체가 아니므로 동등하지 않습니다. 하지만 두번째 비교문은, 먼저 빈 배열은 '참이라고 볼 수 있는 값' 이라 ![] 는 false 입니다. == 연.. [Javascript] - Transpiling Transpiling (트랜스파일링) 트랜스파일링, 트랜스파일러에 그간 거의 관심이 없었지만, 책에 나온 김에 쓸만한 부분이 있을지 보도록 하겠습니다. - 트랜스파일링은 하나의 프로그래밍 언어를 다른 언어로 컴파일하는 특별한 형태입니다. 트랜스파일링에 자바스크립트가 많이 이용됩니다. 자바스크립트를 이식 가능하고 실행 가능한 형식으로 쓰는 것 + 자바스크립트의 범용성과 안정성을 이용하는 것입니다. - 자바스크립트는 이식성이 뛰어나고 최소화된 형태의 소스를 충분히 빠른 속도로 토큰화하고 파싱할 수 있습니다. - 트랜스파일러가 만들어지는 이유 ‣ 실험적인 용도 실험적인 언어와 기능을 만들고 테스트하는데 트랜스파일러는 이상적인 방법입니다. ‣ 특수화 트랜스파일러는 특별한 목적으로 만들어진 언어를 구현하기 위해 .. [Javascript] - Optimization Optimization (최적화) - 성능 오늘날의 기기들은 빠르고, 성능은 고려할 대상이 아닌 것처럼 보입니다. 우리가 필요로 하는 것 이상의 프로세서를 갖고 있으며 프로세서 대부분은 많은 시간 동안 놀고 있습니다. 하지만 어떤 것은 아직 충분히 빠르지 못한데, 일부의 경우 프로그램의 크기가 증가하는 속도를 용량이 따라가지 못하기 때문입니다. 자바스크립트가 지배하고 있는 사용자와의 상호 작용 영역에서는 아무리 빨라도, 느리다고 느껴질 수 있습니다. 성능에 대해 여전히 관심을 가져야 하지만, 적절한 수준을 유지해야 합니다. 최적화는 상황을 더 악화시킬 수 있습니다. 괄목할 만한 향상이 있는 최적화만 해야 합니다. (최적화를 최적화할 필요가 있습니다) - 측정 프로그램을 실행하고, 실행하는 데 얼마나 많은.. [Javascript] - Testing Testing (테스팅) - 프로그램이 완벽하다고 검증할 수 있는 테스트는 없습니다. 프로그램에 결함이 있다고 증명할 수는 있지만, 프로그램에 결함이 없다고 증명할 수는 없습니다. 테스트가 실패하는 것은 테스트 자체가 프로그램이 올바르다는 것을 증명하려고 만들어졌기 때문입니다. - 버그 프로그램의 버그는 대부분 사람에 의해 만들어집니다. 프로그램에서 혼란이 발생할 만한 부분은 최대한 없어야 합니다. 버그는 혼란의 또 다른 말로, 혼란을 없애는 것이 테스트하는 것보다 훨씬 더 생산적입니다. 그렇게 하기 위해 프로그램을 최대한 단순 명료하게 만들어야 합니다. - 소프트웨어의 비대함 비대함이라는 것은, 프로그램이 그냥 크기만 한 것입니다. 규칙 없이 기능을 마구 추가하거나, 잘못된 구조로 인해 비대해질 수 있.. [Javascript] - JSON JSON - 표준화 JSON 의 기본 철칙은 텍스트 형태를 유지하고, 최소한으로, 자바스크립트의 일부로 유지하는 것이었습니다. 표준은 간단하고 완전해야 하며, 동의해야 하는 부분이 적을수록 상호 운용하기도 쉽습니다. - 따옴표 자바스크립트는 문자열에 홑따옴표나 겹따옴표 둘 다를 허용합니다. 속성 이름은 따옴표로 둘러싸게 했습니다. ES3 의 예약어 목록은 집어넣지 않았습니다. JSON 에선 둘 다 허용할 필요가 없는데 이렇게 한 이유는, 사람들이 자바스크립트로 개발하도록 만들고 싶었기에, JSON 표준이 자바스크립트의 나쁜 부분을 들춰선 안 된다고 생각해서 입니다. - 주석 JSON 은 네트워크 상에서 서로 다른 언어들로 만들어진 프로그램들을 연결하는 것이 목적이었습니다. 주석은 항상 무시당하기ㄷ 때문에.. [Javascript] - Date Date (날짜) - 자바스크립트의 Date 자바스크립트는 자바의 Date 클래스를 거의 그대로 가져다 써서 Date 객체를 만들었습니다. 때문에 클래스 프로그래밍의 최악의 디자인 패턴을 그대로 보여줍니다. 자바스크립트의 Date 객체는 상당히 많은 메서드들을 제공합니다. (대부분은 getter / setter 입니다) getDate getDay getFullYear getHours getMilliseconds ... 일부 메서드들을 살펴보면, getMonth 메서드는 월의 시작 값을 0 으로 만들어 0 ~ 11 사이의 값을 반환하지만, getDate 는 1 ~ 31 사이의 값을 반환합니다. 이런 일관성 없는 구현은 에러를 발생시킬 확률을 높입니다. getYear 와 setYear 메서드는 1999년 이.. 이전 1 ··· 9 10 11 12 13 14 15 16 다음