개발

  • 기존에 원룸에서 살 때에는 이 블로그도 그렇고 개인 gitea도 리버스프록시를 시놀로지 NAS 기능으로 하고 있었는데 NAS가 이런 역할까지 하는 건 좀 아닌 것 같아서 놀고있던 라즈베리파이에 nginx를 올려서 라즈베리파이가 리버스프록시 역할을 하도록 바꾸는 작업을 진행했다. 리버스프록시 역할을 하던 나스가 주에 두 번씩 재부팅을 하도록 해놔서 사실 그때는 블로그에도 접속이 안되고 그렇기 때문에(글도 잘 안쓰긴 하지만)…

  • 지금으로부터 약 10년전 꼬꼬마 대학생 시절 RSA 알고리즘에 사용하는 소수 중 하나를 257로 고정하면 바이트를 그 알고리즘을 통해 나온 값은 반드시 0~256이 나온다고 글을 올린 적이 있었다. [C#] RSA를 이용한 File Encryp.. : 네이버블로그 근데 이건 진짜 암호화라기 보다는 그냥 RSA 알고리즘을 이용해서 비슷한 짓을 한 것이었다. 사실 여기서 나오는 키(257이 아닌 또 하나의 소수)를…

  • git remote ssh 설정을 맨날 까먹는다. 회사에서는 그냥 https로 리모트 설정을 해서 맨날 까먹기 때문에 따로 써놔야겠다. 참고로 Windows 기준임 키 생성 ed25519 알고리즘으로 생성한다. 이후 적절히 생성한다. public key 등록 github이나 gitea(개인용으로는 gitea 띄워서 쓰는 중임)의 유저 설정에 들어가서 SSH 키 관리에 들어가서 퍼블릭 키를 등록한다. 로컬 ssh config 사실 위까지는 그냥 검색하면 나오는데…

  • 얼마전에 친구가 MCP에 대한 얘기를 했는데 그냥 LLM에 일시키는 프로토콜인갑다 하고 넘겼는데 이걸 구글에 검색했더니 유튜브에 MCP 관련 영상을 겁나게 추천하기 시작했다. 그래서 뭔가 해봐야겠다 싶어서 만들어봄. 검색해보니 MCP SDK로 코틀린도 있길래 코틀린 성애자인 나는 코틀린을 써보기로 했다. 사실 본 영상중에 90%는 파이썬을 썼고, 10%는 타입스크립트를 쓰는데 나는 파이썬을 싫어하고 타입스크립트는 내가 컴을 새로 사고…

  • 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이 있는건 알았는데 뭔가 했더니 이거였다. 그래서 대충 보면서 리액터를 안쓰고 코루틴으로만 사용해봅시다. 일단 알아본건 이정도고… 뭐가…

  • 트리를 RDBMS에 넣으려고 하면 id와 parent_id를 만들어서 나타낼 수 있다. 대충 만들어보면 다음과 같은 테이블이 나온다. 내가 원하는 건 어떤 행의 모든 부모 행을 가져오는것이다. 단순히 생각하면 걍 여러번 쿼리를 때리면 되는데 이걸 한번에 할 수는 없을까? 하고 ChatGPT에게 물어보니 바로 가르쳐줌 쉬발; 로 하면 된다. 그다지 깊지 않은 경우엔 재귀쿼리가 낫고 매우 깊어질 가능성이…

  • 이게 필요한 경우가 생겼는데 난 당연히 안되겠지 하면서 ChatGPT에 물어보니 가르쳐줌;; 시발;; 다음 경우를 말한다. 얘를 사용하고 싶은데 로직 상 리플렉션에 의해 생성된 객체 안에서는 Bean을 넣을 방법이… 없… 는 줄 알았는데 있다. 저 홀리쉿헬퍼를 사용하는 서비스가 다음과 같이 생겼다고 하면 서비스레이어야 사실 @Service 어노테이션 써서 빈으로 만드는데 그냥 저런게 있다 치고, 저걸 다른 곳에서…

  • 상태관리와 npm 라이브러리 래핑하는 법도 얼추 알겠으니 풀스택을 해봅시다. 백엔드는 자주 쓰는 Spring Webflux이다. 프로젝트 구조는 루트 프로젝트 밑에 backend (Spring Boot) + frontend (Kotlin/JS React) + shared library (공통 모델 정의) 이다. 가장 막혔던 부분은 shared library에 모델을 어떻게 정의해야하는가이다. 처음에는 인터페이스로 정의하고 각 프로젝트에서 재정의해야하나 했는데 그럴거면 시발 왜 이걸 씀하는 생각이 들었는데…

  • 리액트 기본 useReducer를 쓰는건 아무리 생각해도 너무 개같아서 결국 Zustand를 래핑해서 쓰기로 했다. 기존에는 Zustand를 통째로 들어서 Kotlin/JS 로 바꾸려는 원대한 꿈을 가지고 있었으나 사실 그럴 필요가 없는게 겉으로 공개된 API에 대한 인터페이스만 만들면 되는거라 그렇게 다시 접근… Mutate 가 결국에는 종착점이 StoreApi이기 때문에 이 끝점만 알면 되는거고 중간에 뭐가 있든 신경을 안쓰면 된다. 그래서…