오늘(사실 어제)은 다음과 같은 개발을 진행했다.
이번 개발에서는 현재 진행중인 프로젝트의 상황을 파일로 저장하는 방법에 대해 연구했다.
전작에서는 직접 프로젝트 저장 프로토콜을 개발하여 프로젝트 패킹을 진행했는데, 이번에는 json 형식을 차용하여 만들기로 하였다. json 파일을 사용하면 사람이 읽기가 편하고, 버전 컨트롤이 용이할 것으로 기대했기 때문이다.
프로젝트에는 추상화 컴포넌트 목록, 추상화 컴포넌트 구조, 탭(탭 이름, 계산 큐, 와이어 목록, 컴포넌트 목록), 현재 탭 이름, 카메라 위치, 다음 추상화 구조 아이디를 저장한다.
추상화 구조를 저장하는 것이 아무래도 가장 어려운 부분이었는데, 이는 현재까지 생성한 모든 추상화 구조를 담은 리스트를 새로 만들어 그 리스트에 있는 내용을 구현하는 것으로 만들었다. 문제는 추상화 목록을 삭제할 수 있다는 것이고, 따라서 직접 추상화 구조 목록과 추상화 컴포넌트 목록을 동기화해야 했다는 점이다. 이것은 추후에 사용되지 않는 메모리 점유로 이어질 수 있으며, 언젠가 더 좋은 방법을 생각해내야 하는 부분이다.
빠른 시일 내애 해결해야 하는 문제라고 생각되기 때문에 조만간 추상화 컴포넌트들의 리스트에서 추상화 구조를 얻어내는 방식으로 추상화 컴포넌트의 패킹을 진행해야 할 것이다.
아직 패킹된 프로젝트를 로드하는 기능을 구현하지 않았기 때문에, 다음 개발일에는 빨리 이 기능을 구현해야 할 것이다.
이 기능이 제대로 구현된다면 파일로서 다른 사람과 프로젝트를 공유할 수도 있고, 버전 관리를 가능하게 함으로써 더욱 거대한 사이즈의 프로젝트 활동이 가능하게 될 것이다.
이번 개발부터는 branch를 사용한 개발을 연습해보기로 했다. 사시 혼자서 하는 프로젝트이기 때문에 굳이 브랜치까지는 만들 필요가 없기야 하지만, 체리픽이나 여러가지 기능을 동시에 구현하는 것 등 버전 컨트롤을 연습하기 위해서 개인적인 프로젝트에서 버전 컨트롤을 사용해보기로 했다.