💻 data-driven programming & data-driven design & data-oriented programming ???


비슷한 용어들. 내가 이해한 정리들은 1:

data-driven programming

데이터처리를 중심으로 하는 프로그래밍언어나 도구, 스타일.

예를 들어, awk, perl은 입력의 패턴에 따라 코드를 나누고 출력을 만들기 수월한 방식을 제공.

data-oriented design

현대 cpu의 아키텍처에 적절하도록, cpu cache, simd등을 잘 적용될 수 있도록 애플리케이션 데이터구조를 설계하는 방식.2

그리고 단순히 게임개발에서 ecs만이 아니라 lmax disruptor등도 포함될 것 같다.

data-oriented programming

그리고 또 갑자기 위 2개의 정의처럼 완전 갑자기, dop은 다음과 같은 원칙들을 이용한 애플리케이션 개발방식:

🍴 xmake, compile_commands.json, flycheck


cmake/warp등을 써보면서 c/c++ 개발할 때에 빌드도구 갖고 놀다가, 이번에 마음을 열고 xmake을 익혀봄.

마음에 든다. 가볍고 빠르고 좋다.

ccache등도 바로 지원하고, lua으로 스크립팅도 그럭저럭 할만해 보이고, [build.zig](https://ziglang.org/learn/build-system/)스러워서 당연하게도 좋은거 같아.

계속 쓸거 같다.

emacs / flycheck + c/c++ 개발할 때에 단점이, 자동적으로 외부 3rd-party 라이브러리의 include-path을 설정해주지 않아서, [dirs-local](https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html) 같은걸 세팅해주길 기대한다는 점.

그래서 그냥 xmake project -vD -k compile_commands -m debug 같이 compile_commands.json 생성하고,

  1. 이걸 파싱해서 표준출력으로 include-paths https://github.com/ageldama/configs/blob/master/compile_commands_json_incdirs.py
  2. 현재 소스코드 버퍼 기준으로 가장 가까운 compile_commands.json 파일 위치 찾는 elisp 함수 https://github.com/ageldama/configs/blob/master/emacs/elisp/compcmdsjson-tiny.el
  3. 위 (1)+(2)을 조합해서 flycheck을 위한 변수 1 들을 설정하는 elisp 함수 https://github.com/ageldama/configs/blob/master/emacs/elisp/flycheck-compcmdsjson.el
  4. 그리고 위 (3)을 c/c++-mode에 자동적으로 적용하고, 또 단축키도 만드는 elisp 코드 https://github.com/ageldama/configs/blob/master/emacs/feat/flycheck-compcmdsjson.el

…요렇게 만들어서 세팅해서 쓰니 편안.

🧑‍🔬 공각기동대, 1995


가끔 다시 본다. 그리고 마지막 장면을 보면서 덕력이 폭발하면서 종종 그런 생각에 빠짐.

저런 시나리오를 쓴 사람은 어떤 기분이었을까 완전 쩐다.

🌉 FreeBSD + Samba 4.16 + Symbolic Links 설정


freebsd에서 samba 파일서버 세팅은 프비핸드북 참고

symlink을 samba에 노출하기

/usr/local/etc/smb4.conf 파일에 다음을 추가:

[global]
...
allow insecure wide links =	yes


[share]
...
follow symlinks = yes
wide links = yes
unix extensions = no

mdns으로 samba 파일서버를 네트웍에 광고하기

보통은 avahi을 써왔는데, mdnsresponder이 더 가볍다고 해서 이렇게 세팅해봄.

  1. pkg install mDNSResponder
  2. /etc/rc.conf 에 추가:

    mdnsresponderposix_enable="YES"
    mdnsresponderposix_flags="-f /usr/local/etc/mdnsresponderposix.conf"
  3. 호스트이름은 freebsd-samsung 으로 smb서비스를 노출.

🚖 Debian Bookworm(12.2), Chromium + Wayland에서 ibus 한글 입력 고치기


나도 x11에서 wayland 기반으로 옮겨가고 있는데, 다른 것들은 대부분 괜찮거나 포기.1

가볍고 좋은데, debian chromium에서 ibus으로 한글 입력이 안되어서 알아봤다.


1) 문제 원인 :: gtk3 backend으로 chromium이 동작해서, ibus연동이 안됨.

2) 확인 :: 실행중인 chromium이 어떤 버젼의 gtk3/4와 연결되었는지?

1
2
3
4
  for pid in  $(pgrep chromium); do
      #echo $pid
      grep -i gtk /proc/"$pid"/maps
  done

==> 기본 bookworm/chromium 상태에서는 gtk3임을 확인. ~~> ibus 연동안됨.