Ping 02/Nov/2020


(functional) reactive 관련들을 다시 찾아 보고 있다.

예전에 webdev은 아니고 백엔드를 위해서 rxjs 을 쓸 일이 있었었고 꽤 재밌었다. node.js에서 async/await 이전에 동시성 처리를 하기에 유용하게 쓸 수 있었었고, 실은 그냥 monad이어서 조금만 이해를 하고 사용하면 여러모로 편리했었다.

https://github.com/stoeffel/awesome-frp-js 여기에 보면 rxjs이외에도 다른 js을 위한 FRP라이브러리들이 많이 생겼었다.

그 중에 흥미가 있어서 bacon.js 을 읽고 rxjs에서 만들어 본 작은 예제 프로젝트를 다시 작성해봤다. 깔끔했다.

rxjs으로 작성했었던 작은 예제는 다음과 같다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  import { fromEvent, Subject } from 'rxjs';
  // eslint-disable-next-line object-curly-newline
  import { debounceTime, mapTo, scan, map } from 'rxjs/operators';
  import jquery from 'jquery';

  const counter$ = new Subject();
  counter$
    .pipe(
      scan((n, acc) => n + acc, 0),
      debounceTime(100),
    )
    .subscribe((count) => jquery('#count').text(count));

  const counter2$ = new Subject();
  counter2$
    .pipe(scan((n, acc) => n + acc, 0))
    .subscribe((count) => jquery('#count2').text(count));

  const increase$ = fromEvent(jquery('#increase'), 'click').pipe(mapTo(1));
  const decrease$ = fromEvent(jquery('#decrease'), 'click').pipe(mapTo(-1));

  increase$.subscribe(counter$);

  increase$.pipe(map((n) => n * 10)).subscribe(counter2$);

  decrease$.subscribe(counter$);

  decrease$.pipe(map((n) => n * 10)).subscribe(counter2$);

(package.json, webpack.config.js, 관련 html 파일 등은 생략했다.)

"asdf-subdir-finder" released!


지난번 포스팅한 "asdf 정의를 내 코드베이스의 하위디렉토리에서 자동으로 로딩하기"를 프로젝트으로 만들었다.

https://github.com/ageldama/asdf-subdir-finder

사람마다 커먼리습으로 작업하는 스타일에 따라 많이 다를 수 있어서 안 써도 되기도 하지만, 그냥 정리해서 공개는 해봤다.

"커먼리습 ASDF 불러오기 편하게 하기" 대모험


ASDF와 system definition file 검색의 정석

이전에 ASDF을 이용하여 커먼리습 프로젝트의 의존성, 시스템을 로딩하기 에 대해서 설명한 적이 있었다.

이전에 다룬 내용은 정석적으로 $HOME/common-lisp 디렉토리에 .asd 파일을 심볼릭링크를 걸고, (asdf:load-system ..) 을 시도하는 내용이었었다.

Prototyping등 더 편안하게 혼자 코딩을 할 때는…

혼자 커먼리습 코딩을 하면서, 나는 더 간단하게 프로젝트를 시작하는 방법을 선호한다.

커먼리습이 파일 이름이나 경로에 대해서 의존하는 것이 아니고, 컴파일시점, 로딩시점에 순서에 따라 로딩해서 최종적으로 컴파일하여 적재한 결과 이미지를 더 중요하게 여기기 때문에, 그리고 그런 컴파일, 빌드, 로딩과 같은 모든 단계들 자체도 커먼리습 표현식 그자체로 동작하기 때문에 그냥 하나의 소스파일을 섹션별로 나눠서 작업하면 편리하다.