Electron은 오래전부터 알고 있었다. github에서 atom을 만들때 사용한 플랫폼을 공개한 것이다. nodejs에 그리 관심이 크진 않아서 무시하고 있었는데 한동안 react를 사용하다보니 자연스레 node에도 다시 관심이 생기고 그러다보니 electron에도 다시 관심이 생겼다.
시작
일단 시작은 몹시 쉽다.npm install --save electron
으로 모듈을 불러오고 app을 위한 코드만 만들어두면 데스크탑앱이 떡하니 뜬다. 사실 처음 보이는 모습은 무슨 브라우저 같다. 예제가 'Hello, world!'를 말하는 index.html을 불러오는 거라 더 그렇다. 하지만 나에겐 react가 있지. 그리고 미리 만들어둔 editor 비스므레한 코드도 있다.
코드를 그대로 가져와서 넣고 실행을 해봤다. 엇! 뭔가 그럴듯하다. 별거 안했지만 electron이 앱처럼 만들어주니 진짜 데스크탑 앱같다. 조금 욕심이 난다. 원래 web버전으로 만든거지만 electron버전으로 변경해보기로 한다.
뜻하지 않은 욕심
원래는 글을 로컬에 저장하는 마크다운 에디터 같은 걸 만들려고 했다. 그래서 electron에서 제공하는 저장 api를 살펴보니 마땅한 것이 없다. electron-json-storage
같은 것이 있지만 설정 저장용도 같다. sqlite를 써야하나라고 생각하는 순간. 웹버전에서 하려다가 여의치 않아 못하고 있던 OAuth2가 생각났다.
Browser to Server가 아니라 로컬 Client to Server라서 제약도 별로 없을 것이고 OAuth2 access token도 자유롭게 저장할 수 있을 것이니 딱 좋겠다. 싶었다. electron-oauth2
라는 걸 찾아서 시도해봤다.
끝없는 api와의 싸움
이상하다. 티스토리에 OAuth2 연결이 안된다. 분명 다른 서비스들에 테스트했을 때는 잘됐는데 티스토리는 안된다. 200 ok 응답이 오지만 연결은 안된다. 이상해서 주고받는 값을 열어봤다. body에 xml로 에러메세지가 들어있었다. 이상하다. 분명히 json으로 요청을 했는데 응답이 xml이다. 그리고 분명히 200 ok 응답이 왔는데 에러메시지가 들어있다.
알고보니 티스토리 OAuth2가 예전에 만들어져서 그런지 몰라도 xml만 지원하고 있었고 응답은 무조건 200ok가 오는 것이었다. 에러는 에러메시지에 포함된 status값을 읽어야했다. 이건 client를 고쳐서 해결할 문제가 아니라고 판단했고 api를 고치기 시작했다. 회사가면 api를 수정해서 배포하고 집에 오면 수정된 값으로 잘 동작하는지 테스트하는 날들이 반복됐다.
드디어 완료
지루한 시간들이 지나가고 비록 알파버전이라고도 부르기 힘든 조악한 수준이지만 동작하는 앱이 드디어 만들어졌다. 디자인과 디테일한 부분들 몇이 남았지만 일단 이걸로 글을 쓸 수 있다는 것이 너무 기쁘다. 이게 뭐라고 정말 기쁘다. 그래서 잠도 안자고 글을 쓰고 있다. 남은 것들도 얼른 끝내서 짜잔하고 공개하고 싶다. 우히히히..
언능 가서 이유식 만들고 자야겠다.