최근에 같이 일하기 싫지 않은 개발자라는 글을 봤다. https://brunch.co.kr/@kaily/40 같이 일하고 싶지 않은 개발자 특앞으로도 쭉- 만나고 싶지 않은 개발자의 유형을 정의하고 경험을 공유한다 | 경력이 길어질수록 많은 협업자들을 만나는데, 그중 가장 많이 만나고 많은 커뮤니케이션을 하는 게 개발자다. 주brunch.co.kr 글이 올라오고 한바탕 떠들썩했는데, 개인적으로는 뭐 그러려니 했다...구현이 불가능한데 로직 정의도 정확히 못한다면서 디자이너나 기획자의 역량이 부족하다며 탓을 하거나은근슬쩍 개발이 가장 전문적인 직무인 것처럼 행동하는 안하무인 자아과다 개발자들이 한둘이 아니었다.그러니 기획자라고 못할 일이 뭐 있겠는가...(동의한다는 뜻은 아님)..
개요 최근 도커 배포 가이드 문서를 작업할 일이 있었다(기회가 된다면 개인 환경에서 해보고 블로그에 올려도 좋을 듯 하다). 작업을 마친 후 같은 팀 동료 한 분께 리뷰를 부탁드렸는데 스스로 작성했으면서도 깜짝 놀란 요소가 몇 가지 있었다. 문제 1. 용어를 혼용한다 생각보다 표현 과정에서 여러 단어를 쓰고 있었다. 가령 도커 허브 같은 단어를 저장소 혹은 레포지토리라고 쓰는 등이다. 아마도 헬름이나 깃허브 때문에 저장소나 레포지토리라는 단어가 익숙해서 무의식적으로 함께 쓴 듯 했다. 읽는 입장에서는 확실히 혼란스러울 법한 표현이었다. 만일 해당 환경에 어느 정도 익숙하다면 큰 문제가 없겠으나, 문서화는 당장 인수인계서로 써도 손색이 없을 정도로 작성해야 한다고 생각하는 편이었는데도 스스로 단어들을 섞어..
always 반환 타입: a -> b -> a 언제나 동일한 값을 반환한다. const라고 다른 언어에서 알려져 있다. [1,2,3,4].map(always(0)) => [0,0,0,0] curry 반환 타입: (fn: (...args: TArgs) => TReturn): CurriedFn 여러 인자를 받는 함수의 커리 버전이다. 타입스크립트에서 타입 유추가 가능하다. const sum3 = ( x: number, y: number, z: number ) => x + y + z const curriedSum3 = curry(sum3) === curriedSum3(1) // (y: number, z: number) => number curriedSum3(1, 2) // (z: number) => numbe..
참고 문서 --- Either는 Left와 Right 두 방향으로 구성된 데이터 타입이다. Maybe와 유사하나 누락된 값에 대한 정보 저장이 가능하다는 특징이 있다(가령 에러 메시지 같은). "Right is right" 라는 컨벤션이 있어 대개 성공값은 Right에, 실패값은 Left에 저장한다. 오른쪽 편향적이므로 map, chain과 유사한 메소드들은 Right에서 동작한다. Left 일반적으로 동작에 대한 실패를 나타내는 정보를 담당한다.// Inferred type is randomEither: () => Either | Either const randomEither = () => Math.random() > 0.5 ? Right(1) : Left('Error')Left('..
기초 Maybe는 데이터 타입으로 함수의 근본적 오류와 결측값 표시(???)에 사용된다. 값일 수도(Just) 있고 아무것도 아닐 수도(Nothing) 있다. Just는 현재의 값을 래핑하는 객체이다. Nothing은 부재의 값을 의미한다. 단순히 null이라고 해석해도 좋다. 두 값은 모두 null 체크가 되지 않은 옵셔널한 값이나 익셉션 핸들링을 다루기 쉽게 돕는다. 사용하지 않은 경우 const port = parseInt(getConfig()?.port ?? '8080'사용한 경우 const port = getConfig() .chain(x => x.port) .map(parseInt) .orDefault(8080) 메소드의 종류 of 타입: Maybe Just 타입으로 래핑된 값을..