221101131003-사용자_후기_기획_워크플로우에_통합하는-ko
November 1, 2022
고객들이 원하는 게 있어 개발 요청 설문을 작성해서 보내면 깃헙이나 트렐로 등 사용 중인 할 일 관리 툴과 통합되어 투두 리스트에 추가된다. 아니면 다른 방식으로?
고객들이 원하는 게 있어 개발 요청 설문을 작성해서 보내면 깃헙이나 트렐로 등 사용 중인 할 일 관리 툴과 통합되어 투두 리스트에 추가된다. 아니면 다른 방식으로?
clj-kondo는 # 클로저를 위한 정적 코드 분석도구이다. clojure-lsp에서 내부적으로 사용하고 있다. 문제 # 소설 연재 플랫폼 개발 일지 005에서 잘 작동하는 코드에 lsp가 unresolved symbol 에러를 띄우는 문제가 있었다. 해결 시도 1 # 처음에는 클래스패스를 읽지 못해서 그런가 싶어서 프로젝트 .lsp 디렉터리에 다음 설정을 해보았다. {:project-specs [{:project-path "shadow-cljs.edn" :classpath-cmd ["shadow-cljs" "classpath"]}]} shadow-cljs.edn이 있는 곳이 프로젝트 루트이고, 클래스패스는 다음 명령으로 읽어라하고 지정했다. 하지만 clojure-lsp는 기본적으로 shadow-cljs.edn 파일이 발견되면 npx shadow-cljs classpath 명령으로 클래스패스를 읽는다고 한다. ...
다시 shadow-grove로 # 레퍼런스가 없어서 힘들었었는데 다시 해보니 뭔가 알 것 같다. shadow-cljs를 개발한 thheller가 만들고 있는 cljs 프레임워크인데 하나 하나 설명을 읽어가면서 개척해나가는 재미가 나름 있다. 당연하게 여겼던 hot-reload도 여기서는 직접 구현해야 했다. 다행히 thheller 이 분이 Hot Reload in ClojureScript 라는 아티클을 남겨두셔서 조금 이해할 수 있었다. 나중에 꼭 번역을 해둬야겠다. Css 관련 배운 것 # css는 가능한 static하게 서빙하는 게 좋다고 한다. 동적으로 런타임에 css를 빌드하게 되면 그만큼 사용자에게 그 비용을 전가하게 된다. ...
결과 # css 라이브러리로 garden -> herb -> tachyon 을 사용하기로 정했다. 레퍼런스 삼을만한 사이트들을 찾아봐야겠다. 잡담 # 이맥스와 리습은 좋은 짝꿍이 맞는 것 같다. 어제 라이브 코딩으로 연주하는 영상들을 봤는데 내가 정말 하고 싶은 건 이런 쪽인 것 같다. 열심히 웹 개발 하다가 하루 정도는 supercollider, overtone, shadertone 이런 애들 써봐야겠다. 신기했던 게 supercollider를 common-lisp으로 작성할 수 있게 해주는 라이브러리를 한국 분이 작성하셨던데 엄청 멋있었다. https://www.youtube.com/watch?v=xzTH_ZqaFKI&t=682s
왜? # 한영 키 전환을 이맥스와 fcitx가 같이 핸들링하다 보니 불편한 점이 많이 있었다. 크롬 브라우저에서 한영키(fcitx)를 통해 한글로 전환한 후, 이맥스에 돌아오면 아무 키도 먹히지 않는다. 다시 브라우저에 돌아가서 영어로 전환해야만 했다. 그래서 최대한 이맥스 밖을 안 나가는 쪽으로 문제를 해결해보려고 했다. eww로도 충분히 브라우징이 가능했으나 스크래치 버퍼? 미니 버퍼? 에서 보여주는 건지 모르겠으나 자꾸 q만 누르면 창이 꺼진다. 뭔가 개인 설정 파일을 수정하는 걸로 해결될 것 같았지만 다른 방법은 없는지 검색해봤다. ...
refs # 이름공간 변경하기 clj tool로 REPL 시작하기 # 이런 deps.edn 파일이 있다고 했을 때 {:aliases {:dev {...} :test {...}}} 다음 명령어로 aliases와 함께 REPL을 실행할 수 있다. clj -M:dev:test # 혹은 clj -A:dev:test Namespace 사용하기 # clojure 프로젝트는 ns(namespace)로 스코프를 분리하고 있다. repl 환경에서 (ns dev.server) 을 실행하면 해당 ns를 만들고, 그 공간으로 넘어간다. 이 때 이전 공간에서 선언했던 이름들에는 접근할 수 없다. user=> (def x 42) #'user/x user=> x 42 user=> (ns server) nil server=> server=> x Syntax error compiling at (REPL:0:0). ...
목표 # 타 연재 플랫폼 웹 클라이언트에서 서버 데이터 어떤 형식으로 가져오는지 확인할 것 그 형식에 맞춰 API 변경하기 lispy 사용해서 repl 연결하기, repl 활용하는 방법들 익숙해지기 garden으로 css 적용하기 i18n 한국어 영어까지 하기, 접속자 ip 위치에 따라 다른 언어 제공하기 과정 # 후기 # 이 날은 기록을 안했다. 반성. 하루 목표를 투두 리스트로 작성한 것은 잘했다. 다시 시도해보자.
목표 # 연재 플랫폼 기능 정의하기 realworld앱 분석해서 불필요한 부분 제거하기 과정 # 소설 연재 플랫폼 개발 일지 001에서 찾은 리얼월드 앱 서버, 클라이언트가 서로 호환되는 것을 확인하고 로컬에서 돌려보았다. 너무 잘 된다. 다만 polylith와 edn 파일로 클로저 프로젝트를 어떻게 시작하고 repl 연결을 이맥스에서 어떻게 하는건지 잘 모르겠어서 좀 헤멨다. CIDER만으로 하면 잘 되는데 lispy 플러그인으로 연결하니 잘 안된다. e 를 눌렀을 때 jack-in이 아니라 connect로 연결하는 방법은 없을까 ...
목표 # shadow-cljs, shadow-grove 사용해서 dummy data 메인 페이지 띄우기. 과정 # shadow-grove는 어떻게 써야하는지 이해가 안된다. 예제 앱에서 모델을 참고하고 있는데 그 모델이 어디에 정의되어 있는지 찾을 수가 없었다. realworld 앱 예제들 중에서 re-frame을 사용한 프로젝트를 발견했다. 서버 또한 클로저로 작성된 것을 찾을 수 있었다. re-frame이 SPA 프레임워크라 둘이 같이 쓰일 수 있을지는 모르겠지만 좋은 레퍼런스를 찾아 기분이 좋다. 결론 # rum을 사용해보고 싶었지만 자유도는 아직 독인 것 같다. ...
목표 # Doom emacs에서 Gmail을 수발신 하기 위해 필요한 설정들과 그 과정에서 배운 것들을 기록하기 위함. 이맥스내에서 필요한 설정 # ~/.doom.d/init.el 파일 # (doom! ;;... :email ;; 이 부분 주석 해제 (mu4e +org +gmail)) mu4e란 # mu for emacs 라는 뜻의 이름인 듯 하다. 위 mu4e 변수 위에 K 키를 누르면 Readme문서를 확인할 수 있다. mu는 maildir-utils 의 약자이다. maildir 포맷 디렉터리 내의 이메일 메시지들을 다루는 도구 모음이다. 커맨드라인에서 메시지들을 색인, 검색, 추가, 삭제, 확인할 수 있다. ...