Turborepo 도입기 디프만에서 프로젝트를 진행하려고 하는데, 서버 언어로 TypeScript를 사용하고 있기 때문에 프론트엔드와 함께 레포지터리를 사용하기에 용이했다. 그래서 Yarn Berry를 통해서 monorepo를 구축할 계획이었다. 프론트와 백 모두 익숙하신 분께서 모노레포를 모두 구축해주셨고 이를 활용해서 프로젝트를 디벨롭 하고자 했다. 백엔드와 프론트엔드 모두 세팅이 안정적으로 완료됐지만, Next.js의 Vercel 배포가 Yarn Berry에서는 잘 동작하지 않는다는 것을 알게 됐고, 이를 대체하고자 Turborepo를 통해 모노레포를 구축하고자 했다. Turborepo란? 공식 문서 설명에 따르면, JavaScript나 TypeScript 코드를 위해 최적화된 빌드 시스템이라고 한..
자바스크립트
Take 함수 const take = (l, iter) => { let res = []; for (const a of iter) { res.push(a); if (res.length === l) return res; } return res; }; take 함수는 limit과 iterable 객체를 받아서 limit 개수 만큼 값을 저장하는 함수다. 그래서 range와 함께 5개의 원소만 뽑아내고자 한다면 다음과 같이 작성할 수 있다. const range = l => { let i = -1; let res = []; while (++i < l) { res.push(i); } return res; }; const L = {}; L.range = function *(l) { let i = -1; while ..
range, L.range 테스트 const range = l => { let i = -1; const res = []; while (++i { console.time(name); while (time--) f(); console.timeEnd(name); }; test('range', 10, () => reduce(add, range(10000..
Range 함수 range 함수는 숫자 하나를 받고 그 숫자만한 배열을 리턴하는 함수이다. 예를 들어 아래와 같이 로그를 찍으면, console.log(range(5)) [0, 1, 2, 3, 4]라는 배열이 반환되는 것을 기대할 수 있다. 위 함수는 절차적으로 아래와 같이 만들어 낼 수 있다. const range = l => { let i = -1; let res = []; while (++i a + b; const reduce = (f, acc, iter) => { if (!iter) { iter = ..