타입 손실 없이 actionCreator를 dispatch로 래핑하기

다음 코드를 보자. redux 예제로 많이들 사용하는 counter example이다. counterActions라는 action creator를 사용해서 action을 만든다. 이 counterActions 오브젝트는 각 키에 맞는 액션 생성함수를 갖는다. (따라서, action을 생성하기 위해 counterActions.increment()를 호출한다.) 이렇게 만들어진 액션을 바로 dispatch()에 넘기는 단순한 코드다. 이 단순하지만 반복되는 dispatch의 래핑 중복을 없애고 싶었다. 간단하게 구현해보자. 대략 이런 모양이 될 것이다. 그리고 다음과 […]

Rails ujs pitfall

Rails + Vue로 작업하는 프로젝트가 하나 생겼다. 위와 같이 임포트 한 뒤에, rails의 ujs는 JSON를 완벽하게 지원하지 않기 때문에 위와 같이 데이터를 준비하고, 이런 방식으로 쏴주면 되는데, 이 때 주의사항이 있다. assignee_id는 null일 수도, 어떤 값을 가질 수도 있다. this.someUserId가 null인 경우, 해당 라우팅을 처리하는 컨트롤러의 메소드에서는 0으로 들어온다. null과 실제 0을 구별하지 못하게 되는 […]

React + TypeScript

최근에 진행하고 있는 프로젝트를 React + TS의 조합으로 운영해봤다. React의 생태계가 워낙 괜찮다보니 사용하면서 내가 직접 타입을 작성한 라이브러리는 react-image-annotation, react-redux-firebase 두 개 정도. 단점은 다들 알다시피 러닝커브가 있다는 것. 하지만, 타입 없이 프로그래밍 하는 것은 오른손잡이가 굳이 왼손으로 밥 먹는 바보같은 일이라고 생각한다. 가장 명확하고 직관적으로 손쉽게 잡을 수 있는 타입 에러를 굳이 런타임까지 […]

웨일 브라우저가 크롬과 다른 점

React에서 textarea의 onKeyPress에서 event 객체를 파라미터로 받아서 event.key를 찍어보는 상황. 크롬에서는 event.ctrlKey의 true/false 여부에 상관없이, 항상 event.key가 “Enter”로 들어온다.하지만 웨일 브라우저에서는 ctrlKey === false -> key = “Enter”, ctrlKey === true -> key = “\n”이다. (여담으로 keyCode는 두 브라우저 모두 0으로 들어왔다. (?))

간호대 외주 후기

0. 건너뛰어도 되는 배경 설명 2016년 3월, 과 후배의 소개로 학교의 간호대학에서 안드로이드 앱 외주를 진행했었다. 이 때 백엔드 친구 / iOS 친구 / 안드로이드 나, 이렇게 셋 이서 첫 미팅을 진행했었다. 미팅을 끝내니 iOS 개발은 원하지 않으신다고. 다음 미팅에 백엔드 친구와 나만 참여했다. 왜 한 명 비냐고 여쭤보시기에 iOS 담당하던 친구라서 빠졌다고 설명드리니 약간 […]