데일리 스크럼 때 깃헙 팀 레포에 안드로이드 빈프로젝트를 만들고 각자 브랜치에 각자 소스파일을 올렸다. 분명히 별 거 아닌 일임에도 불구하고 폴더가 사라지고 에러가 터졌다. 항상 처음 환경 설정하는 부분이 어렵다. 팀원 한 명이 제대로 실행되는 버전을 올리고 거기서 pull로 땡겨와서 내 파일만 남기고 지워서 해결했다. 이 과정에서 분명히 패키지 이름도 맞춰줬는데 처음 실행할 땐 뭔 main.kt에서 클래스를 찾을 수 없다고 나오고, 다시 한 번 실행하니까 그때부터 됐다. 개발자가 멘탈 털린다는 "되는데 왜 되는지 모른다"였다... 그냥 안스가 어떻게든 해줬다는 것으로 넘어가겠다.
오늘은 대부분의 시간을 Lv7 배달 주문에 쏟았다. 10초마다 랜덤한 배달 주문이 들어오는 기능이다. 역시 비동기이므로 코루틴으로 작동시키고, 랜덤하게 주문을 만들어서 배달 주문 목록에 추가시켜야 한다. 키오스크 클래스가 갖고있기엔 성격이 맞지 않지만, 따로 클래스를 만들어서 얘가 배달 주문을 포맷팅해서 키오스크한테 날리고 키오스크가 이거에 대한 리스너를 굴려서 뽑아먹는 형태로 만들려니 너무나도 귀찮아서 그냥 키오스크에 작성했다. (그런데 이렇게 했는데도 오래걸렸다..)
배달 주문에 메뉴명, 금액, 위도, 경도가 포함되어 있으므로 배달 주문을 그저 아이템리스트가 아닌 별도의 클래스로 만들어줘야 했다. (TIL 쓰면서 문득 든 생각이, 배달 주문과 홀 주문의 공통 부모인 주문 클래스를 만들었어야 했나 싶다.)
다 만들어놓고 커밋하고 보니 막상 코드량은 많지도 않은데 왜 이렇게 오래 걸리는지 모르겠다.
val menus = ArrayList<Item>().apply {
for (i in 0..Random.nextInt(10)) add( // 메뉴 1~n개 랜덤
with(itemListList[Random.nextInt(itemListList.size)]) {
this[Random.nextInt(this.size())]
}
)
}
랜덤 주문 목록을 만드는 코드다. 아이템리스트리스트에서 랜덤, 그리고 그 안의 리스트에서 랜덤으로 뽑아와야 했는데, 중첩 배열에서 한 번 더 들어가서 랜덤으로 찾아오려니 상당히 골머리를 앓았다. with로 겉 배열에서 랜덤으로 하나 뽑고 그 놈의 스코프에서 this로 아이템리스트 클래스에 접근해서, 그 내부 리스트 접근을 위해 오버라이딩한 [] 인덱스 접근자와 size 함수를 사용해 그 안의 랜덤한 아이템을 뽑아올 수 있었다.
Lv6를 넘어가고 Lv7부터 했는데, Lv6는 별로 어렵지 않았다. 다만 구현 방법이 고민이었는데, 과제에서는 따로 메뉴 번호를 붙여서 쿠폰을 발급하라고 되어있었다. 하지만 실상황을 생각해보면 메뉴를 다 고르고 주문할 때 쿠폰을 적용하니까 과제의 요구를 거부하고 결제 시 체크하게 만들었다.
고객이 쿠폰을 갖고 있는 상황을 상정하고, 결제할 때 주문 금액이 3만원이 넘으면 '적용할 수 있는 쿠폰이 있다. 사용하겠나?' 물어서 할인 쿠폰이 적용되게끔 만들었다.
(근데 또 TIL을 작성하면서 생각해보니 쿠폰을 미리 찍어서 적용시켜놓고 주문하는 경우도 있을 수 있겠다. 쿠폰 발급이 아니라 쿠폰 적용(쿠폰 바코드 or 큐알 찍기)으로 메뉴를 만드는 쪽으로 변경해야겠다.)
오후 5시에 모여 코드 리뷰를 했다. (아직 용어 공부를 안해서, 이게 코드 리뷰가 맞는지 모르겠다.) 서로 코드를 보여주며 어떤 식으로 구현했는지 설명했다. 과제 진행률이 낮은 순서대로 진행했고 서로 피드백을 주고 받았다. 각자 구현한 방식이 모두 달랐고, 과제를 서로 다르게 이해한 부분도 있었다. 다른 관점의 방식들을 보며 생각을 넓힐 수 있는 좋은 시간이었다.
(내 코드를 설명하면서는 괜히 긴장이 되어서 목소리가 자꾸만 떨렸다.. 프리젠테이션 능력을 키울 필요가 있다.)
맥북을 처음 켠지는 좀 됐는데(일,월,화) 그동안 맥북 사용법을 공부하고 이런저런 프로그램을 받아 환경을 만드느라 데스크탑을 대체하지 못하고 있었다. (9to9은 내배캠 시간이어서 맥북을 별로 못만지기도 했고.) 어젯밤 맥북을 책상 메인 자리에 세팅하고 오늘 처음으로 실사용을 시작했다.
일단, 매우 불편하다. 그동안 윈도우에서 익숙하게 사용했던 각종 단축키가 맥과는 전혀 달랐고, 기본적인 UI부터도 너무 어색했다. 모니터보다 상대적으로 화면도 작아 불편했고, 여러 창을 띄워놓고 전환해가며 사용하는데 그 놈의 단축키와 어색한 트랙패드로 인해 자꾸만 벙쪘다. 그래도 안드로이드 스튜디오나 여러 프로그램은 맥의 최적화 덕분인지 아니면 그저 내 데스크탑보다 높은 사양때문인지 매끄럽게 동작하긴 했다. 동작성마저도 안좋았으면 이 맥북에 샷건을 갈겼을지도 모를 일이다. (을은 갑에게 훈련장비의 감가상액에 해당하는 배상을... 아마 새삥이라 120 정도를 그대로 물을꺼다. 아니, 인터넷 최저가보다 훨씬 높게 책정될 수도..) 아무튼 이런 기회가 아니면 언제 맥북을 접해보겠나 하는 마음으로 맥북을 메인으로 사용해볼 생각이다.