올해 내내 일에만 파묻혀 살다가 오랜만에 개인 프로젝트를 했다. 맥에서 쓸 GUI 만들려니 역시 Swing만큼 익숙한 게 없어서 오억 년 만에 자바를 쓰는데, J2SE에 있는 클래스나 메서드는 다 기억나서 편했지만 Java라는 언어 자체를 도저히 못 참겠어서 Kotlin으로 작업했다. 레이아웃 매니저는 MigLayout을 썼고, 맥 앱 패키징은 JDK 15에 번들된 jpackage를 썼는데 훌륭했다.
UI 디자인을 직접 할 일이 가끔 있어서 학습을 위해 잘 정리된 앱 UI를 틈날 때마다 봐서 감각을 올리곤 한다. 그러기 위해 ui8.net 같은 곳에서 제공하는 UI Kit들을 레퍼런스로 쓰는데, PSD로 열면 메모리 19G 먹으며 별나라로 가버리기 때문에 파이썬 psd-tools를 써서 그룹 레이어별로 정리하는 스크립트를 만들었다. psd-tools는 성능이 느린 것을 빼고 생각보다 아주 잘 동작했다. 하지만 Text 요소들의 폰트 정보들을 제대로 가져오지 못하는 문제가 있었다.
Sketch 소스는 zip을 풀고 나면 다 JSON으로 보관되어 있어 편해 보였지만, 정말 모든 게 다 JSON으로 있어서 렌더러를 만들 엄두가 안 나서 제외했다.
Adobe XD는 스케치처럼 zip에 JSON 형식인데 폴더나 JSON 구조가 훨씬 더 깔끔했다. 하지만 역시 렌더러 만들기는 엄두가 안 나서 좋은 방법이 없을까.. 고민하다 Adobe XD 플러그인을 살펴봤다. SDK가 JavaScript고 생각보다 API 설계가 잘 되어 있어서 XD 플러그인 만들기로 방향을 바꿨다. XD 플러그인 SDK의 핵심은 require('scenegraph')인데 문서가 있긴 했지만 코딩 중에 문서 왔다 갔다 하는 건 못 참아서.. 원본 코드를 찾아보려고 Adobe XD 바이너리를 뒤져봤는데 결론은 JS 인터페이스로 노출했을 뿐이고 139MB짜리 바이너리 속에 꼭꼭 숨어있었다. 깔끔히 포기하고 문서 보고 플러그인 만들기로 했다.
개인 프로젝트를 할 때마다 마주하는 문제다. 적당한 선에서 끊을 수가 없다. 인위적으로 자원을 제한하지 않으면 결국 이 프로젝트도 영영 끝나지 않을 것이다.
Continue Reading
Discover more thoughts and insights
아이디어
아이디어는 특정 시점에 자연발생하여 전세계를 돌아다니며 자신의 존재를 알린다. 누가 이 아이디어와 주파수를 맞추면 아이디어는 여행을 멈추고 그 사람에게 붙어있다. 하지만 한순간이라도 그것들과 주파수가 틀려지면 그
친구들과 한 잔
오늘(편의상 금요일) 약속이 없었다면 집에 와서 하고 싶었던 것들을 마구 만들었겠지만 퇴근 후 중학교 친구들을 대거 만나 우럭, 광어에 산사춘을 맛나게 먹고 초딩 친구들의 연락을 받고 신천으로 고고싱! 오늘은
IRC 클라이언트 - LGT MIDP 1.1.8
수정된 사항입니다. 이번 수정 사항은 거친마루님과 XPsEternity님의 버그리포팅이 많은 도움이 되었습니다. 표시 불가능한 문자를 Nickname으로 사용시, 대화명이 보이지 않던 버그 (eg. ™) 특수문자