본문 바로가기
앱 제작/키워드 알림 앱

1.1.1 패치 노트 (버그 수정)

by Kim Juhwan 2021. 8. 3.

 

 


 

 

마지막 업데이트를 한 지 벌써 4개월이 지났네요.

한 후배님께서 감사하게도 아냥이 내 버그가 발생한 부분을 이메일로 제보해주셨습니다!
제가 졸업생이다 보니 앱을 사용하지 않아 버그가 발생한 즉시 알아채기가 어렵습니다.
그러다 보니 버그 수정이 늦어졌습니다. 죄송합니다. 😥
앱 사용 중 문제가 생길 시 juhwan.dev@gmail.com로 문의주시면 정말 감사드리겠습니다!

 

 

 

연락처 무한 로딩 버그


양이 100마리 나와도 끝나지 않는 무한 로딩...

 

버그가 발생한 것은 6월 4일경 이후로 추정되고 있습니다.

아냥이 앱 내 연락처 검색 기능 사용을 위해 해당 페이지로 이동하면

위 사진처럼 무한 로딩이 걸리며 아무런 화면도 보여주지 않는 버그였습니다.

 

 

전화번호 안내 페이지 (수정 전)
전화번호 안내 페이지 (수정 후)

 

아냥이는 학교 웹사이트를 읽어와 전화번호 목록을 앱 내에서 가공한 뒤 사용하고 있었습니다.

문제는 전화번호 안내 페이지의 양식이 싹 바뀌어 더 이상 제가 짜 놓은 코드로는 전화번호를 가져올 수 없었다는 것이었습니다.

겉으로 보기에는 큰 변화가 없어 보이지만 코드는 다 갈아엎어야 하는 상황이었습니다.

 

이번에 다시 코드를 짜서 해결한다고 해도 문제는 다음에 또 전화번호 목록의 구조가 바뀔 수 있다는 것이었습니다.

쭉 지켜봐 온 결과 학교에서는 은근히 구조를 자주 바꾸었거든요.

그렇게 되면 제 코드는 다시 쓸모가 없어지게 되고 업데이트하는 동안 사용자분들은 또 똑같은 버그를 만나게 되니 다른 해결책이 필요했습니다.

 

 

데이터를 정리해서 엑셀에 저장

 

결국 모든 전화번호들을 사용하기 좋게 엑셀로 수정한 뒤 Firebase(DB)에 올려 사용하는 방식을 택했습니다.

이렇게 하면 다음과 같은 장점들이 있습니다.

 

  • 사용자의 핸드폰에서 전화번호를 가공하는 작업을 하지 않아도 됩니다.
    • 어떤 전화번호는 031-467-xxxx, 어떤 전화번호는 앞에 (직책)이 붙고, 어떤 전화번호는 ',' 혹은 '/'로 구분하고... 학교 웹사이트에는 정말 규칙성이라곤 찾아볼 수 없는 전화번호들이 가득했습니다. 기존에는 이를 앱 내에서 다 처리해주는 과정을 거쳤지만 이제는 제가 직접 가공한 전화번호를 올려두었기 때문에 단계를 생략할 수 있습니다.
  • 웹사이트의 구조가 바뀌어도 버그가 발생하지 않습니다.
    • 웹사이트와 직접 통신하는 것이 아닌 제 데이터베이스에서 전화번호 목록을 가져오기 때문에 더 이상 같은 버그가 발생하지 않습니다.

 

반면 다음과 같은 단점이 있습니다.

  • 부서 전화번호가 수정된 경우 대응이 되지 않습니다.
    • 이는 앱 내 연락처 페이지에 최종 확인일과 웹 페이지 링크를 걸어두는 기능을 따로 추가할 예정입니다. 부서의 전화번호가 바뀌는 일은 흔치 않기 때문에 큰 불편함은 없을 것으로 예상됩니다.

 

 

from pyfcm import FCMNotification
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

APIKEY = 'INSERT API KEY'
push_service = FCMNotification(APIKEY)

cred = credentials.Certificate('INSERT JSON PATH')
firebase_admin.initialize_app(cred,{
    'databaseURL' : 'INSERT URL'
})

def uploadContacts():
    col = ['대분류', '부서명', '위치', '업무직책', '전화번호']

    for i in range(INSERT DATA RANGE):
        temp = input()
        property = temp.split(',')
        dir = db.reference('contact/' + str(i))
        for j in range(5):
            dir.update({col[j]:property[j]})

uploadContacts()

연락처를 일일이 업로드하는 과정은 꽤나 귀찮기 때문에

파이썬 코드를 간단하게 작성해서 올렸습니다.

 

 

Firebase(DB) 내에 연락처가 저장된 모습

 

 

 

 

앱 강제 종료 현상


 

앱 강제종료 횟수를 나타내는 그래프

 

8월 1일 자에 갑자기 강제 종료 횟수가 11건이나 발생했고 이를 8월 2일에 확인하였습니다.

따로 건든 것이 없는데 갑자기 이러한 현상이 발생한 이유는 아주 사소했습니다.

 

 

기본적으로 비교과 프로그램 신청에 10개의 아이템이 들어갑니다.

 

아냥이 앱에서는 첫 화면에 10개의 비교과 프로그램을 보여주도록 설정해두었습니다.

비교과 프로그램이 너무 많기에 가장 최신 프로그램만 간추려 볼 수 있게 하기 위함이었습니다.

문제는 지금 시기가 학기가 다 끝나고, 방학도 다 끝나가는 시기라는 것입니다.

에러가 발생한 시기 이후로 제공되는 프로그램이 10개 미만으로 줄어들었고

저는 10개를 화면에 표시하도록 설정해두었기 때문에 에러가 난 것입니다. (OutOfIndex 에러)

 

에러를 확인하고, 프로그램의 개수가 10개 이상이면 10개만 출력하고 그 미만이면 프로그램 개수만큼 출력하도록 바꾸었습니다.

 

 

 

 

 

 

이번 버그들을 겪으면서 이렇게 사소한 부분이 치명적인 버그를 만들어낼 수 있구나...라는 것을 뼈저리게 느꼈습니다. 취업 준비를 하면서 동시에 혼자 개발과 유지 보수를 하려니 부족한 부분이 많습니다.
다시 한번 사과드립니다.
사실 아냥이를 꾸준히 사용해주시는 분들이 계실까 의문을 가졌었습니다.
비정상 종료 횟수와 버그 발생 이후 앱 삭제율(...)을 보니 많이 계시더라구요.
정말 감사드린다는 말씀드리고 싶고 취업 후 더 멋진 업데이트로 찾아뵙겠습니다. 감사합니다!
반응형

댓글