사전과제는 해당 레포지토리 Issues 탭에 미리 올려 둔 template 을 복사해서 새로운 이슈로 사전과제 풀이를 올려주세요. (Pull Request X)
사전과제
본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요
const go = (...args) => reduce((a, f) => f(a), args);
const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
const map = curry((f, iter) => {
let res = [];
for (const a of iter) {
res.push(f(a))
}
return res
})
let reduce = curry((f, acc, iter) => {
if (!iter) {
iter = acc[Symbol.iterator]()
acc = iter.next().value;
}
for (const a of iter) {
acc = f(acc, a)
}
return acc
})
const queryStr = obj => go(
obj,
Object.entries,
map((k, v) => `${k}=${v}`),
reduce((a, b) => `${a}&${b}`)
)
// -> limit=10&offset=10&type=notice
log(queryStr({ limit: 10, offset: 10, type: 'notice'}));
함수형 프로그래밍 함수를 배우면서 처음 만들어본 형태이기에 기억이 남아 공유하고 싶었습니다.
Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요
계층형 아키텍쳐란 계층을 특성에 따라 여러 계층을 나누어 계층간의 결합도를 낮추고
동일 계층끼리의 응집도를 높이는 방식이다.
이를 통해 관심사 분리와 모듈 교체를 용이하게 만들고테스트를 쉽게할 수 있게 만든다.
계층의 종류 예시
Presentation layer: UI, 브라우저에서의 유저와의 통신 로직을 다룸.
Business layer: 요청에 따른 비즈니스 로직을 다룸.
Persistence layer: DAO(Data Access Object) , ORM과 관련된 데이터베이스에 접근해서 데이터를 저장, 수정하는 함수 로직을 다룸.
Database layer: 데이터가 다 저장되어있는 곳. 데이터베이스.
Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
A가 B에 의존하게 되면 B가 바뀔 때 A도 따라 바뀌어야한다. 이는 코드가 바뀔 때 관리포인트가 늘어나게 되어
결합도가 높아지고 코드의 확장성을 저해한다. 이를 interface 등을 활용하여 외부에서 의존성을 주입함으로써 결합도를 낮출 수 있다.
이를 통해 코드의 재사용성이 높아지고 가독성이 높아지는 등의 장점이 있다.
본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요
함수형 프로그래밍, 실무에서 사용할 수 있나요? (feat. TypeScript, Nest.js)
해당 코스는 아래와 같은 주제로 진행돼요
사전과제 진행 가이드
사전과제
본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요
함수형 프로그래밍 함수를 배우면서 처음 만들어본 형태이기에 기억이 남아 공유하고 싶었습니다.
Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요
계층형 아키텍쳐란 계층을 특성에 따라 여러 계층을 나누어 계층간의 결합도를 낮추고 동일 계층끼리의 응집도를 높이는 방식이다. 이를 통해
관심사 분리
와모듈 교체를 용이하게 만들고
테스트를 쉽게
할 수 있게 만든다.계층의 종류 예시
Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
A가 B에 의존하게 되면 B가 바뀔 때 A도 따라 바뀌어야한다. 이는 코드가 바뀔 때 관리포인트가 늘어나게 되어 결합도가 높아지고 코드의 확장성을 저해한다. 이를 interface 등을 활용하여 외부에서 의존성을 주입함으로써 결합도를 낮출 수 있다. 이를 통해 코드의 재사용성이 높아지고 가독성이 높아지는 등의 장점이 있다.
(코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
결과값