Vuex-ORM 소개

최근에 리팩토링을 진행하면서 Vuex-ORM을 사용해봤다. 좋다. 추천해본다. 장점 별 수고없이(생각없이) Immutability를 높인다. Nested된 데이터를 다룰 때 매우 좋다. Query를 유연하게 짤 수 있다. 작성자 -> 게시글 -> 댓글 -> 대댓글을 JOIN으로 불러오면서 각 단계에서 orderBy를 다르게 먹일 수 있다. 어려움 없이 JSON object를 Vuex-ORM에 로딩할 수 있다. Vuex getter의 부족함을 많이 메꿔준다. getter를 getter에서 호출하지 […]

타입 손실 없이 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을 구별하지 못하게 되는 […]

Gitflow에서 release와 master 브랜치의 차이

https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/ gitflow에서 도대체 왜 release 브랜치가 존재할까? 내 생각에 release 브랜치는 소규모 조직의 개발자에게는 큰 의미없다. gtiflow가 의미있는 조직은 컴파일된 무언가(executable binary, jar, kernel, …)를 떨구는 거대한 조직에서 쓰기 적합하다. 예를 들어, 애플이 아이폰을 내일 출시한다고 가정해보자. 애플의 개발자들은 내일 출시될 아이폰에 탑재될 iOS를 오늘까지 개발할까? 당연히 그렇지 않다. 애플은 아이폰을 생산한 뒤 iOS가 설치된 […]

How to Run Pyro

Sebastian Kruse et al. – Efficient Discovery of Approximate Dependencies (VLDB 2018) 의 코드가 깃헙에 올라와있는 것을 확인했다. Usage가 불친절해서 간단하게 메모. 먼저 Pyro jar file을 다운받는다. Pyro를 비롯한 Tane등의 알고리즘의 구현과 의존 라이브러리들이 합쳐진 jar 파일이다. Metanome CLI jar file를 다운받는다. Metanome은 GUI가 포함된 데이터 분석 툴인 것 같다. 그걸 커맨드 라인에서 쉽게 실행할 […]