11월, 2022의 게시물 표시

실패할 권리를 보장해줘야 성장할 수 있다.

논어 위정편에 이런 말이 나온다 知之爲知之 不知爲不知 지지위지지 부지위부지 "아는 것을 안다 하고 모르는 것을 모른다 한다." 라는 뜻이다. 예전 시험 공부를 할 때 느낀 것이다. 고 득점을 위해서는 반복학습을 해야 하는데  인간의 마음이 간사해서 반복 하다 보면 아는 것에 눈이 간다. 모의고사를 풀어보면 아는 문제는 항상 맞추지만 틀린 문제는 항상 틀린다. 나는 이걸 깨우치는 데 1년 6개월이 걸렸다. 아는 것과 모르는 것을 구분한 다음 모르는 것에 집중하여 반복을 한다. 무엇을 배울 때는 실패 경험이 매우 중요하다. 그래야 만이 내가 모르는 것을 알 수 있다. 옛 성현들이 아는 것에 왜 밝을 명자를 썼는지 이제는 알 거 같다. 이제는 누군가를 가르쳐야 할 때가 왔다. 실패할 경험을 할 수 있도록...., 뒤에서 지켜 보며 그 실패가 문제로 확산되지 않도록 만 해주면 된다. 이부분에선 이러면 안되는데 하는 마음이 앞서지만 참아야 한다. 실패할 경험을 보장해줘야 하기 때문에....,

App Store Connect Operation Error 조치

이미지
KMM(Kotlin Multiplatform Mobile) 을 활용하여 앱을 제작하였습니다. 아이폰 쪽 앱을 스토어에 올리는데 오류가 납니다. 설마할까 하면서 그냥 올려 보았습니다. 통과 되었습니다. 이 오류는 그냥 무시해도 될거 같습니다.  

KMM 에서 XML 자료 가져와서 Parsing 처리방법

이미지
KMM 대단한 물건이다. 비지니스 로직 부분을 코틀린으로 통일만 하면 개발량이 확 줄어든다. 샘플로 제시된 코드는 JSON 형식이다. 하지만 공공데이터 형식이 XML 인 경우가 많다. 이것에 대한 매뉴얼도 물론 있다. 주석처리 된 부분이 매뉴얼에서 제공된 라이브러리이다. 결론부터 말하자면 안된다. shared -> build.gradle.kts 상단에 1.7.10 으로 추가하였다. 1.7.20이 최신파일인데 이게 또 compose 와 충돌이 나서 하위버전으로 낮추었더니 오류가 나지 않는다. androidMain 부분에 라이브러리를 추가해준다. iosMain  부분에도 라이브러리를 추가해준다. 제일 하단에 메모리 관련 설정을 추가해준다. Project 제일 상단 폴더의 build.gradle.kts 파일은 위와 같이 설정한다. 여기서도 버번을 1.7.20 으로 했다가 1.7.10 으로 하향 설정 하였다. 호출하는 부분의 모듈이다. 일단 String 으로 받아서 함수를 만들어서 구조체에 넣을 것이다. 결과 데이터를 담을 구조체는 이렇게 작성하였다.  결과 XML 은 대충 이렇게 내려온다. 문자열 추출하여 내용을 파악하는 함수를 작성하였다. 추출된 각 항목을 Item 으로 생성하여 리스트에 넣고 이를 각 구조체 내용에 추가하여 데이터를 완성하는 부분이다. 이제 이 함수를 사용해서 가져온 결과를 리턴하는 비동기 함수를 클래스에 추가한다. 안드로이드 소스에서는 이렇게 호출한다. 아이폰 소스에서는 이렇게 호출한다. 뒤에 오는 개발자에게 도움이 되었으면 하는 마음으로 작성하였다. 전체 소스 https://github.com/whenyourapprun/ElevatorKMM 

kotlin으로 retrofit2 사용하여 xml 자료 가져오기 실패

코틀린으로 retrofit2 를 사용하여 xml 자료를 가져와서 파싱하는 것으로 시도했다. 주로 3가지가 사용된다고 검색결과 나온다. 첫번째 simplexml 은 deprecated 경고가 뜬다. 이것도 시도했지만 xml 추출 부분에서 conveter 오류가 뜬다. 두번째 Tikxml 을 사용하라고 나오며 이에 대한 자료가 검색을 하면 꽤나 많이 나온다. 주어진 대로 시도 했으나 마찬가지로 conveter 오류가 뜬다. 세번째 JAXB 사용하라고 안드로이드 스튜디오에서 권장으로 뜬다. 역시 마찬가지로 conveter 오류가 뜬다. 혹시 파싱해서 모델에 추가하는 부분이 잘못되었나 싶어  이부분을 몇번이고 시도 했는지 모른다. 이제 더이상 검색에 나온 결과로 해볼 수 있는게 없다. 내 추측으로는 아마도 라이브러리에서 잘못되지 않았나 싶다. 원래 모듈이 자바로 volley 를 사용해서 gson 으로 파싱하여 xml 내용을 추출한 것이었다. 별수 없이 공공데이터 포털에서 주는 자료를 파싱하는 부분만 이전처럼 자바로 구성하였다. 결론은 XML 결과를 파싱하는 부분은 volley & gson 을 사용하도록 하자. 이것 때문에 주말을 전부 날린걸 생각하면 억울하다. 무조건 최신 라이브러리 적용보다 잘 되고 검증된 것은 그대로 유지하는게 낫다