kotlin

  • ONNX를 이용하여 치와와와 머핀을 구분해보자.

    새로 구입한 디바이스가 몇개 있는데 이게 스냅드래곤 X 엘리트를 탑재했다. 요즘 AI 디바이스니 뭐니 하는데 이걸 써보려고 했다. 그런데 스냅드래곤 X 엘리트에서 사용하려면 ONNX 모델로 만들어야하니 그거까지 해보려고 대충 짰다. 그래서 주제는 뭐가 좋을까… 하다가 치와와와 머핀을 구분하는 모델을 만들어봅시다. 우선 데이터셋을 얻기 위해 Kaggle에 있는 데이터를 받습니다. https://www.kaggle.com/datasets/samuelcortinhas/muffin-vs-chihuahua-image-classification 학습도 ONNX로 되는거같긴한데… 이건 그냥 파이썬으로…

  • Spring Webflux 프로젝트를 진행하는데 코틀린만 쓰면 그게 바로 코프링 아니겠나! 싶었는데 아니었다. 보통 자바로 Webflux를 사용하면 리액티브 스트림을 써서 Mono나 Flux를 사용하게 되는데, 코루틴은 mono {}나 flux {}를 통해서 변환할 수 있었는데 아예 리액터를 안쓸 수 있었다… CoRouter DSL이 있는건 알았는데 뭔가 했더니 이거였다. 그래서 대충 보면서 리액터를 안쓰고 코루틴으로만 사용해봅시다. 일단 알아본건 이정도고… 뭐가…

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

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

  • 나는 처음 리액트를 공부할 때 상태관리는 보통 리덕스를 쓴다고 책에서 봤기 때문에 그냥 다른거 더 하기 귀찮아서 모든 것에 다 리덕스를 쓰려고 했다. 근데 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를 쓰는게…