• iOS에서 배열의 범위를 넘어갔을 경우에 생길 수 있는 에러들.(iOS errors when array indexes out of bounds).

    클래스업(ClassUp)을 개발하다가 정말 오래되었지만 고치지 못한 고질적 에러가 한개 있었다. 바로… EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x11bc61a36dc800d3 그냥 메모리가 해제된 부분에 접근해서 생기는 부분인데… 도대체 이해가 되지 않았다. 왜냐하면 Crashlytics에서 알려주는 부분은 전혀 다른 부분이었기 때문이었다. 예를 들면 아예 함수정의 부분이라던가… 그래서 이번에 해결하게 되었는데, 위와 같은 에러는 배열의 범위를 벗어났을 때도 생길...


  • 엘라스틱서치 index health red case.(AlarmManager with Doze mode and Battery Optimization in Android).

    클래스업(ClassUp)에서 수업 검색을 위해서 ElasticSearch를 사용한다. 처음에는 schema를 직접 작성을 했지만, 여러 필드들이 추가되면서 자연스럽게 ElasticSearch에서 생성해주는 mapping을 사용하였다. 즉, 원래 맵핑이 아래와 같았다면, curl -XGET 'localhost/subjects/_mapping/subject?pretty' { "subjects_v3" : { "mappings" : { "subject" : { "properties" : { "@version" : { "type" : "keyword" }, "classProf" : {...


  • 클래스업 달력 모드.(Calendar mode in ClassUp).

    클래스업(ClassUp)을 시간표는 한국에 최적화된 시간표 화면을 가지고 있었다. 해외 사용자들은 시간표가 굉장히 유동적이다. 예를 들면 같은 수업이라도 매주 수업 시간이 다르다. 그래서 클래스업(ClassUp)의 시간표 화면을 달력형식으로 가져가기로 했다. 달력형식을 위해 필요한 부분은… 시간표의 무한 페이지 각 페이지 별 수업 무한 페이지를 위해서 iOS는 FSPagerView라는 라이브러리를 사용했고 안드로이드는 구글 Calendar 앱을...


  • 안드로이드 알람과 잠자기 모드 및 배터리 최적화.(AlarmManager with Doze mode and Battery Optimization in Android).

    클래스업(ClassUp)에서 수업 및 노트 알림을 위해서 AlarmManager를 이용하였는데 잠자기(Doze) 모드 및 Battery Optimization이 설정되어 있으면 울리지 않는 문제가 있다. 일단, 알람은 잠자기(Doze) 모드에 들어가면 어떻게 설정했는가에 따라 울리지 않는 경우가 있다. 잠자기 모드에 들어가면… 네트워크 접근이 정지된다. 시스템은 wake locks를 무시한다. AlarmManager의 알람(setExact() 또는 setWindow())은 다음 maintenance window로 지연된다. setAndAllowWhileIdle()...


  • Xcode duplicate symbol 에러.(duplicate symbol error in iOS).

    클래스업(ClassUp)을 개발하다가 아래와 같은 에러를 마주했다. duplicate symbol _direction in: .../Objects-normal/arm64/AViewController.o .../Objects-normal/arm64/BViewController.o ld: 1 duplicate symbol for architecture arm64 즉, 1개의 중복된 symbol이 있다는 것이다. 그래서 각각의 A, B ViewController를 조사해 보았지만 그 어디에도 잘못된 곳을 찾을 수 없었다. .h, .m 파일 모두 제대로 작성되어 있었다. StackOverflow에도 검색해 보았지만 나와...