I'm Prostars

요즘 라이브 서비스의 레거시 코드 리팩터링을 하고 있다. 흔히 가변 상태를 관리하는 Context 클래스가 레거시 코드에 있는 건 새삼스럽지 않았지만, 과도하게 사용하고 있어서 정리가 필요했다. 가변 상태 Context 사용 시 문제점 가변 상태를 가지는 Context 클래스가 2, 3개도 도 아니고 10개쯤 되면 과하다고 생각한다. 이렇게 많은 Context 클래스들이 서로 물고 물리는 종속성을 가지고 각기 다른 클래스에 넘기고, 넘겨받고, 가변 Context의 레퍼런스가 다양한 함수들로 넘겨져 전역 변수처럼 여기저기서 사용되면서 어딘가에서 A가 set을 하고 다른 곳에서는 B가 get을 하는 상황은 코드를 매우 읽기 어렵게 만들었다. 읽기 어렵다는 것은 Context를 수정할 때, 사용처를 모두 추적..

이사할 때마다 책이 가장 큰 짐이었고, 책장에 들어간 책이 다시 나오는 일은 점점 줄었다. 몇 년 전에 종이책을 대부분 ebook 으로 교체하면서 정리하고, 새로 구매하는 책들도 종이책 대신 리디북스에 있는지 찾아보고 리디북스에 있으면 해당 ebook 을 구매해왔다. 지금 보니 리디북스의 내 계정에 소장 도서가 300 여권으로 나오는데, 구매한 책들은 기술 서적, 소설, 만화 등 다양하다. 리디북스에서만 책을 구매했던 이유는 하나였다. MacBook, iPad, iPhone 이렇게 3개의 디바이스를 사용하는 환경에서 리디북스의 ebook 리더 앱의 사용성이 당시에 나와 있던 알라딘이나 yes24 등의 ebook 리더 앱들 보다 월등히 좋았다. 여기에 Ridi Paper 디바이스를 추가하여 그동안 잘 사용..

자바 객체를 영속화하는 방법의 하나로 자바 직렬화를 사용할 수 있다. 단순하게는 Serializable 인터페이스를 구현하거나 더 확장성 있는 방법으로는 Externalizable 인터페이스를 구현하는 것을 선택할 수 있고, 자바 직렬화에 종속되지 않는 다른 방법을 선택할 수도 있다. 일단, Serializable 인터페이스를 구현한 클래스의 인스턴스가 외부 저장소에 영속화되면 호환성을 유지하면서 해당 클래스의 필드를 수정하기는 어렵다. (https://docs.oracle.com/en/java/javase/11/docs/specs/serialization/version.html) Serializable 대신 Externalizable 인터페이스를 구현하면 객체 직렬화 단계에서 객체 스트림에 읽고 쓰는 ..

아이패드 프로 1세대 12.9 모델을 5년 정도 사용하다가 최근에 아이패드 프로 5세대로 교체하였다. 교체를 계속 미루고 계속 사용한 이유 중 하나가 터치 아이디의 부재였는데, 개인적으로 페이스 아이디를 좋아하지 않는다. 아이폰도 아직 터치 아이디가 있는 모델로 버티고 있다. 아이패드의 주 사용 용도 중 하나가 노트이다. 아이패드 에어와 53 Pencil 조합을 시작으로 종이 다이어리를 사용하지 않은 지 6년이 넘었다. 업무 중엔 책상 우측에 아이패드를 두고 애플펜슬로 정리하고 메모하면서 작업하는 스타일인데, 페이스 아이디는 이 작업 스타일을 만족하지 못한다. 노트를 사용하다가 맥북을 사용하면, 곧 아이패드의 화면은 잠긴다. 자동 잠금을 5분 설정으로 사용하고 있다. 마냥 켜둘 수는 없지 않은가. 다시 ..