리스크립트로 계속 작업하다가 early return이 없는 게 참을 수 없이 불편해서 다시 타입스크립트로 돌아왔습니다. 다이나믹의 열매에 손 댄 죄로 힌들리-밀러의 낙원에서 추방됐습니다. 뭐 어떻습니까. 이런저런 언어를 써보고 이런저런 앱을 만들면서 느낀 것은, 무슨 도구를 쓰든 제 발을 찍는 도끼로 쓸 수 있으며, 유일한 예방책은 쓰는 이가 객기 부리지 않고 안전수칙을 잘 따르는 수 밖에 없다는 사실입니다. 자바스크립트는 리스크립트와 달리 저글링하며 작두를 타는 것이 가능한데, 이외로 저글링과 작두를 꼭 타야 할 일은 잘 없습니다. 조금 돌아가더라도 안전하게 가자구요. 타입스크립트로 잘 감싸고 이런저런 사제 라이브러리로 막아놓으면 그럭저럭 할만한 여정입니다.
그래도 아무것도 안 하지는 않았습니다. 일전에 SQL 쿼리문을 토대로 타입스크립트 타입을 생성해주는 PgTyped를 소개한 적이 있죠. 그걸 달았습니다. 이전에는 러스트로 쿼리를 날리는 함수를 짜고 그걸 Node.js에서 잘 불러와서 쓰는 식이었는데, 아무래도 다른 언어끼리 붙이면서 타입 정보를 보존하는 게 가능은 하지만서도 코드 쓰기가 너무 피곤했습니다. 웹 어플리케이션에서는 C-파이썬 같은 압도적 성능 이득이 있는 것도 아닙니다. PgTyped를 쓰면서 적당히 타입 체크가 되면서 코드도 편하게 쓸 수 있으니 된 것입니다. 한 가지 기술 부채는 모든 쿼리문이 한 파일에 274줄로 들어있다는 것인데 줄 수를 세고보니 그렇게 무거운 부채도 아니군요. 대신 모든 서버액션 -- 대충 API 엔드포인트라고 보면 됩니다 -- 을 모아놓은 파일 길이가 600줄입니다. 이건 점점 무거워질 것 같군요. 조만간에 조각내야겠지요.
다음 할 일은 Tailwind CSS로 옮기는 작업입니다. 꼭 그래야 하는가? 하면 잘 모르겠습니다. 뭔가 CSS 파일이 다 사라지는 게 편리한데 원래 있던 걸 다 갈아치울 정도인가...? 적어도 앞으로 기능 추가하면서 건드리는 부분들 위주로 조금씩 갈아보겠습니다.
깃허브에 올린 것도 대사건이라면 대사건입니다. 많관부: https://github.com/joongwon/freleefty-agit