개발

  • 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 디렉터리를 지우고, 백엔드를 먼저…

  • 코틀린 너무 좋아 코틀린으로 샤워하고 코틀린에 밥말아먹고 코틀린으로 이닦아야지 이번에 해볼 것은 코틀린으로 코드를 작성하여 자바스크립트로 컴파일을 하는 Kotlin/JS를 이용하여 리액트를 써보는 것입니다. 이거 이용하면 스프링부트 백엔드 + 리액트 프론트엔드를 코틀린이라는 언어 하나로 작성할 수 있지 않을까! 생각중인데 아무래도 하다보면 프론트엔드쪽에서 뻑이날것같다. 코틀린은 자바를 100%… 커버할… 수 있다고…는 하는데… 자바스크립트는 그게 아닐것같으니… 코틀린이다보니 IntelliJ를 쓰는게…

  • 러스트 글을 몇개나 쓰다가 지웠는지 모르 겠는데 제발 제대로좀 써야겠다. Hello World! 모든 언어의 시작은 Hello World!를 표준출력하는 것이니 해봅시다. cargo는 러스트의 패키지매니저이고 프로젝트를 만들면 헬로월드는 자동으로 만들어준다. 요래 만들어지고 들어가서 실행해보면 다음과 같다. cargo로 만들면 기본적으로 src/main.rs와 Cargo.toml이 생성된다. npm init과 유사하다. 실행하고 나면 여타 컴파일언어들과 비슷하게 뭐가 많이 생성된다. 다른걸 만들어 봅시다. 책에서…

  • 어제 글을 존나 날림으로 썼는데 왜 그러냐 하면 그 글의 내용 이외에 mui 적용하려고 똥꼬쑈를 하다가 결국에는 안되었기 때문이었다. 아니 esm.sh 통해서 설치까지는 되는데 스타일이 제대로 안먹음… 쉬발… 오늘은 왜 늦게 쓰기 시작하냐면 우마무스메 3기 마지막화를 봐야했기 때문이다. 여튼 이어서… mui가 안되므로 울며 겨자먹기로 부트스트랩을 써봅시다. 붙스트랩이 좋은 점은 css는 그냥 cdn 암거나 가져다 쓰거나…