졸업프로젝트 week14
환경구축
건강상의 문제로 졸업프로젝트 참여에 많이 뒤쳐져 있던 터라 먼저 하기로 했던 환경구축을 하기로 했다. 지난번에 Ubuntu 15.04 버전으로 인해 구축 처음부터 에러가 나서 VMware에 Ubuntu 16.04 버전을 재설치하고 링크를 참고하여 AOSP 설치를 진행하였다.
평균 14시간 정도 repo sync 결과, 아래 캡쳐와 같은 에러가 떴다.
어떤 에러인지 검색결과도 잘 나와있지 않아서 해결하지 못하였다. 참고된 링크를 따라서 다른 분들은 정상적으로 AOSP가 설치되었는데 나만 에러가 난것으로 보아 뭔가 잘못했나싶어 설치과정을 처음부터 재진행하였다.
첫번째 설치 진행은 윈도우 자동 업데이트로 인한 날림, 두번째 설치 진행은 에러, 세번째 설치 진행은 중간에 SSD 빠짐으로 인한 VMware 및 우분투 먹통, 그로 인해 네번째 설치 진행은 VMware 및 우분투 재설치와 함께 더욱이 신경써서 참고링크를 따라 AOSP설치를 재시도 했으나 역시나 똑같은 에러가 났다. 설치에서 에러가 나 빌드 역시 하지 못하였다. 그렇게 3일 내내 컴퓨터를 끄지 못 하고 시간을 날렸다.
발생한 에러에 대해서는 멘토님께 문의 메일을 보내고 답변을 기다리는 중이다.
코드살펴보기
진행중인 팀원이 이전에 얘기를 나누었던 반복문이 많이 존재하는 살펴보아야하는 코드를 알려주었고 환경구축에 실패하여 AOSP 사이트에서 해당 코드를 보았다.
앞서 말했듯이 많이 뒤쳐져 있었기에 먼저 ContentProviderOperation.java 코드에 대해서 알아보았다.
ContentProviderOperation은 보통 여러개의 data에 대한 create, delete, update를 수행할 때 사용하며 수행율이 좋아지는 장점이 있다고 한다.(ex. 연락처) 이는 Builder를 사용하여 만들 수 있는데 newInsert, newUpdate, newDelete 라는 static build method를 제공한다.
이러한 정보를 바탕으로 코드에서 Builder 부분을 살펴보았고, 그 중 팀원이 지난주에 살펴본 해싱을 시도해보기 좋아보이는 withValue 함수를 보았다.
주석에 따르면 insert 하거나 update 할 값을 insert, update 또는 assert 유형의 Builder를 통해 처리하는 함수이다. 함수의 첫 if문을 보면 Builder의 타입검사 먼저 하는 것을 볼 수 있다.
value의 타입을 if-else문과 객체타입을 알아보는 instanceof() 함수를 반복적으로 사용하여 확인하고 put 함수로 값을 처리하는 것이 보이는데, 이 부분을 어떻게 개선할 수 있을까.
instanceof() 함수대신 객체를 비교하는 다른 함수인 .getclass() 사용이 아주 작은단위의 성능이라도 좋아질 수 있을까 찾아보았으나 참고된 링크에 따르면 테스트 결과 instanceof() 함수가 .getclass() 함수보다는 성능이 좋은편이라고 한다. 참고
해시테이블을 만들어 해싱하는 방식으로 생각해보아야하는데, 분명 해시에 대해 자료구조 때 배웠으나 무뇌가 되어버려 기억에서 사라져 해시와 해시테이블에 대해 찾아보았다. 추후 공부가 더 필요할 것 같다.
향후계획
환경구축 다시하기.
진행상황 더 파악하기.
테스트 어플 제작.
해싱 더 공부 및 코드 해싱.