목록전체 글 (318)
2화에서는 동만과 은하에 대한 연결을 다룬다. 먼저, 은하라는 인물에 대해 얘기해본다. 이전 1화에서, 동만이라는 인물에 대해 ‘명왕성’과 닮았다고 얘기한 적 있다. 태양계에 잠시 속했다가 퇴출당한 명왕성. 은하라는 인물은 행성으로 비유하자면, 어느 이름 없는 행성과 같다. 어느곳에도 속하지 못하고 그저 자신만의 박자로 공전이 아닌 자전만 하고 있는 행성. 스크린에서 보여지는 은하의 표정은 대체로 무표정에 가깝다. 무슨 생각을 하는지도 알 수 없고, 이따금 감정을 느낄 수 있는 장면은 그녀가 스트레스를 받을 때 코피를 흘리는 것 정도. 여기서의 코피는 마치 소리 없는 아우성에 가까워, 동만의 직접적인 발화를 통한 감정 표출과 대비된다. 다만, 작품에서 보여진 감정 워치라는 소품에서 ‘알 수 없음’이라고..
해당 드라마는 20년째 시나리오를 쓰고 있음에도 영화감독으로 데뷔조차 하지 못한 인물을 주인공으로 다룬다.주인공은 황동만(구교환)이다. 아무래도 1화는 주인공이 어떤 인물인지에 집중하고 있기 때문에, 이번 감상에서도 나름의 인물 분석을 중심으로 이야기해보고자 한다. 먼저, 이 인물을 한마디로 표현하자면 ‘명왕성’ 같다고 말하고 싶다.황동만을 보며 몇 년 전의 내 모습이 떠올랐다. 일 년 만에 시인으로 등단했음에도, 어린 나이 때문이었는지, 혹은 내지 못했던 30만 원의 회비 때문이었는지 시인협회라는 소속에 끝내 녹아들지 못했던 나. 나는 당시의 나를 ‘명왕성’이라 비유하곤 했다.명왕성은 한때 태양계의 행성으로 인정받았지만, 얼마 지나지 않아 그 지위를 잃어버린 존재이기 때문이다. 황동만 역시 나와는 다른..
오늘은 next.js로 프론트엔드 개발하던 중 사용한 zustand 라이브러리에 대해 포스팅한다. 원래는 zustand를 쓸 생각이 없었다.다만 recoil을 쓰다보니 아래와 같은 에러가 발생했다.이유를 찾아보니, react 15버전 이상에서는 recoil이 호환성 에러가 발생한다는 거.사실 이 원인을 모른 채 gpt를 붙잡고 한 시간 가까이 씨름하다 구글링으로 알게 되었다. 하참.그리고, 나는 라이브러리 하나 때문에전체 프로젝트의 버전을 기존 19버전에서 14버전까지 내릴 생각이 없었기 때문에 zustand를 사용하기로 했다. zustand 를 쓰는 방법은 단순하다.1. 먼저 해당 라이브러리를 설치한다.yarn add zustand 2. 이후, 상태 관리 스토어를 설정한다. 내 경우, 유저 정보를 설정..
오늘 포스팅에서는 graphQL을 스프링 부트에 적용하는 방법에 대해 다룬다. 먼저 아래를 참고하여 의존성을 추가한다.// build.gradle// graphql 스타터 라이브러리implementation 'org.springframework.boot:spring-boot-starter-graphql' // GraphQL Java에서 제공하지 않는 추가 스칼라 타입들을 사용할 수 있도록 해주는 라이브러리implementation 'com.graphql-java:graphql-java-extended-scalars:21.0'// application.yml graphql: schema: printer: // 서버 구동 시 실제 graphQL 스키마 파일 출력 ..
오늘은 npm에 라이브러리를 배포해보았다.nest.js를 쓰면서 class-validator의 한계로 인해 매번 커스텀을 해야한다는 게 불편하기도 했고,개발자로서 나름의 발자취를 남기고 싶은 마음도 있었다. 때문에, class-validator를 계승하는 방식으로, 커스텀 데코레이터를 제작하기로 했다. 이왕 만드는 김에, 타입스크립를 사용하고,cjs(CommonJS)와 ESM(ES Module) 환경에서 모두 사용할 수 있도록 설계하기로 했다. * CJS와 ESM을 모두 지원하는 이유- Node.js나 Nest.js는 여전히(CommonJS) 형식을 주로 사용- Next.js 등은 ESM을 기본으로 사용하기 때문에,패키지를 다양한 프로젝트에서 사용할 수 있도록 하기 위해두 형식을 모두 배포하는 게 중요하..
이번 포스팅은 Docker-compose 를 사용하며, 데이터베이스를 백업하는 방식에 대해 다룬다. 먼저, 해당 포스팅을 작성하기 전, 나는 다음과 같은 문제를 겪었다.- Nest.js 를 Docker-compose 를 활용해 개발 중이었다.- 그리고, Docker 컨테이너 안에서는 docker exec 명령어 자체가 불가능한 상황이었으며- 따라서 DB 백업 명령어를 서버 안에서 직접 실행할 수 없는 문제가 발생했다. 즉, Docker 컨테이너 내부가 아닌 외부에서 백업 명령어를 수행시키면 될 일이다.해결 방식은 다음과 같다.- Nest.js는 백업 요청(.todo 파일)만 생성한다.- 호스트(내 맥북)에서 .sh 파일(backup-watch.sh)이 백그라운드로 실행되게 하고- .todo 파일이 생겼는..
홈서버를 구축해보고자, '일단' 라즈베리파이5를 구매했다.먼저, 해당 설치 방식은 SD카드가 필요하니 참고할 것.아래 해당 홈페이지에서 OS를 설치할 수 있다.https://www.raspberrypi.com/software/ 현재 자신의 PC에 맞는 운영체제를 선택 후, Raspberry Pi imager를 설치해준다. 설치가 완료되면, 아래와 같은 화면이 뜨는데자신의 라즈베리파이 디바이스 모델, 원하는 OS(추천하길래 64Bit OS로 설치)그리고 설치를 원하는 SD 카드를 선택한다. 이후 설치된 파일을 라즈베리파이에 옮겨, 와이파이 및 추가적인 설정을 완료한다.(내 경우, 라즈베리파이와의 인풋 연결을 위해, 방에 있는 마우스와 키보드를 모두 꺼내야 했음 ㅡ.ㅡ) 여자저차 세팅을 완료했는데, 키보..
Spring boot를 사용 중에 있어, 내 서버의 에러가 곧이 곧대로 반환되는 게 마음에 들지 않았다. 따라서, 클라이언트에 보여지는 건, 프론트엔드 개발자와 약속한 코드가 보여지고직접적인 에러는 서버 콘솔에서 로그로 남게끔 설정하는 과정을 다룬 포스팅을 남긴다. 먼저, global exception handler를 적용하는 이유는 다음과 같다.서버를 만들다보면 어떤 이유에서든 예상하지 못한 예외가 발생할 수 있는데, 이에 대해 매번 try-catch 로 직접 처리하는 것은 비효율적이고 지저분하며, 잊어버릴 수도 있다.따라서, 서버 전역에서 예외를 통합 관리하는 구조가 필요한데, 해당 기능을 해주는 것이 해당 핸들러다.// CustomException.javapackage com.chessy.excep..