개발

  • TaskExecutor란 프로세스 내에 상주하고 있으면서 Task를 등록하면 그 Task를 실행해주는 녀석을 말한다. (내가 그냥 대충 지은거임) 이걸 몇년 전에 자바스크립트로 만든적이 있긴 한데 자바스크립트 특성 상 이게 어떻게 동작하는지 알 수가 없어서 (사실 지금 만든것도 이해가 잘 안됨) 좀 그랬는데 이걸 코루틴으로 만들어봅시다. 아래는 executor가 실제로 실행할 작업을 정의한 클래스이다. 얘는 진행상황을 알아야하기 때문이 진행률같은…

  • 2로 올린걸 사용하려는데 시발 제대로 작동 안하는 경우가 있었다. 그래서 그냥 다음과 같이 전역 메서드로만 구성하는게 해답일 것 같다. 미들웨어는 리덕스 미들웨어처럼 다음 상태도 알 수 있는 건 아니고(store를 구현한게 아니라서;) 그냥 받은 액션과 현재 상태만 로깅하는 용도다. 예시 카운터 사용법은 CounterContext.Provider 로 적절히 감싸고 CounterContext.useSelector나 Countercontext.useDispatch 를 쓰면 된다. 다음에 알아볼 것은 npm 라이브러리를…

  • 어제 쓴 게 좀 그래서 좀 더 살펴보니 useReducer라는게 있었지 참! 싶어서 그걸로 고쳤다. 처음에 ReducerAction을 data class 로 했었는데 에러가 나서 external interface로 바꿨다. data class를 자바스크립트로 트랜스파일 했을 때 문제가 일어나는 듯 하다.

  • zustand를 써보려고 했는데 완벽한 래퍼 라이브러리가 없다보니 사용하기 매우 불편하다. 그래서 래퍼를 만들려고 했는데 타입스크립트의 타입추론을 코틀린에서 구현할 수 없어서 포기했다. 그래서 코루틴을 쓰려고 했는데 이게 Kotlin/JS 에서도 정상으로 작동할 지 확인하기 귀찮다. 그래서 object를 이용해서 구현하려 한다. 리액트 Context를 사용하면 자식 컴포넌트들에도 같은 컨텍스트를 제공할 수 있으므로 이걸 사용합시다. 그래서 어떤 식으로 쓸까 예시로는…

  • Zustand를 도입을 하려고 하는데(코틀린 아님, 타입스크립트임) 아무래도 기존에 쓰던게 리덕스라서 리덕스에 너무 묶여있어서 Zustand를 으뜨케 써야할지 잘 몰랐는데 공식문서를 보고 간단하게 만들면 되겠다 싶었다. 사실 그냥 쓰라면 쓸 수 있을 것 같은데 이게 가면 갈수록 이럴거면 걍 useState 쓰고 말지 이런게 있어서 Context를 만드는 방법을 알아냈고 간단하게 동일로직만 쏙 뽑아서 쓰기로 했다. 대충 store를 가지는…

  • 나는 처음 리액트를 공부할 때 상태관리는 보통 리덕스를 쓴다고 책에서 봤기 때문에 그냥 다른거 더 하기 귀찮아서 모든 것에 다 리덕스를 쓰려고 했다. 근데 3년전쯤에 리덕스는 웬만하면 전체 SPA에서 공통으로 써야하는 상태에나 어울린다고 생각하고 이게 또 사용하기 여간 귀찮은게 아니다보니 리액트 18이었나? 16이었나 useState 훅이 나온 이후로는 따로 상태관리 라이브러리 안쓰고 모든 걸 다 useState로…

  • 저번에 글 쓰다가 KT-67444 에 대해서 왜 마스터에 머지는 되었는데 2.0.0 빌드에는 포함이 안되었는지 매우 화난다고 썼었다. 그래서 우회방법이 없나 찾아봤는데 도저히 못찾겠어서 Chat GPT에게 물어보니 바로 가르쳐줬다. build.gradle.kts 에서 commonWebpackConfig 에 넘기는 액션 내에서 configDirectory를 설정할 수 있다. 이 값이 null이 아니면 해당 디렉터리 내에 있는 JS파일을 webpack.config.js에서 설정을 export하기 바로 직전에 추가해준다. 가령…

  • 이게 원래 3까지 갈건 아닌거 같은데 어제 쓴 대로 프로젝트 구조가 약간 이상하다. 그냥 맨 처음에 Spring Initializr로 만들고 나서 그 프로젝트 플러그인에 multiplatform 추가하고 그것만 미적용 해놓고 frontend를 추가해서 하는게 훨씬 간단하다. 프로젝트 설정은 또 하기 매우 귀찮으므로 그렇다는 것만 일단 알아두고… 프론트와 백은 같은 데이터를 취급해야하는데 이걸 양쪽에 모두 작성하는건 매우 비효율적이므로 shared같은…

  • 그래서 빌드를 어떻게 할지 고민을 했는데 좀 수정을 해야한다. 우선, 저번에 multiplatform대신 js를 쓰면 자바스크립트로만 되니까 어쩌구 했던건 안하는게 좋을것같다. 워닝메시지로 js만 쓰는건 나중에 없어질것이니 multiplatform을 쓰라고 나온다… 그리고 bootJar를 이용하여 백엔드에 포함시킬 것이라 다음과 같이 작동하는 task를 만들어야한다. 그러기에 앞서 backend의 resources를 서빙하기 위해 보통 resources/static/js, resources/static/css 를 사용하기 때문에 복사 편의를 위해 frontend의…

  • 사실 어제 쓰고 나서 다음거까지 또 한달 걸리겠네 싶었는데 일단 하나 투고 프로젝트 설정 나는 프론트와 백엔드가 한 프로젝트에 몰아넣길 원한다. 그러므로 gradle 하나 만들고 두개의 모듈을 넣을 것이다. 일단 Kotlin Gradle 프로젝트를 하나 만든다. 그리고 나서 일단 build.gradle.kts 를 다음과 같이 수정한다. 그러고나서 gradle 프로젝트 리로드를 한 번 하고 src 디렉터리를 지우고, 백엔드를 먼저…