css, design 새단장 + dark-mode
css 더 단순하게 만들고, 디자인들도 그냥 내 마음에 들게 뜯어 고침. 다크모드도 작업해서 만들어 넣고.
css 애니메이션도 작업해 넣었다가, gpu 너무 쓰는거 같아서 그냥 끄고 정적효과로만 냅둠.
hugo 같은 static site generator이 좋은 점, 그리고 그냥 단순한 css와 오래된 jquery으로 그냥 뚝딱거려서 작업.
…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등도 포함될 것 같다.
- https://en.wikipedia.org/wiki/Data-oriented_design
- dod의 예시: Entity component system
- lmax disruptor (by Martin Fowler)
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
생성하고,
- 이걸 파싱해서 표준출력으로 include-paths https://github.com/ageldama/configs/blob/master/compile_commands_json_incdirs.py
- 현재 소스코드 버퍼 기준으로 가장 가까운 compile_commands.json 파일 위치 찾는 elisp 함수 https://github.com/ageldama/configs/blob/master/emacs/elisp/compcmdsjson-tiny.el
- 위 (1)+(2)을 조합해서 flycheck을 위한 변수 1 들을 설정하는 elisp 함수 https://github.com/ageldama/configs/blob/master/emacs/elisp/flycheck-compcmdsjson.el
- 그리고 위 (3)을 c/c++-mode에 자동적으로 적용하고, 또 단축키도 만드는 elisp 코드 https://github.com/ageldama/configs/blob/master/emacs/feat/flycheck-compcmdsjson.el
…요렇게 만들어서 세팅해서 쓰니 편안.
…