"One of the nice things about getting older is that you come to understand that you can integrate multiple aspects of your life together. When you're young, you think everything has to be binary, as that's exactly how you feel at that age".
- Min Jin Lee

Ping 05/Nov/2020


책을 몇 권 주문했다. 관심이 생긴 새로운 분야에 대한 책들이었는데 흥미롭게도 그 중 두 권이 서로 완전히 다른 분야인데 역저자가 같았다. 아마도 역자 소개에 나온 자신의 업무, 맡은 영역에서 필요하거나 관심이 깊어서 번역한 것 같다. 재밌었다.

그리고 갖고 있는 한국어로는 아직 나오지 않은 책을 세 권 정도 읽고 싶어서 다시 펼쳤다. 예전에도 조금 읽었었던 책들인데 마음에 들었던 구절들, 생각들이 다시 읽혀져 즐거웠다.

"org-more.el" released!


org-more.el: search .org files have certain tags (#+tags[]: or #+tags[]:)

개인 위키, KB처럼 org 파일 모음을 사용하고 있는데, 디렉토리 계층과 직접 링크 관계만이 아니라 같은 태그들으로 묶어서 각 파일들을 검색하고 리스팅 할 수 있도록 만들었다.

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등 더 편안하게 혼자 코딩을 할 때는…

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

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