본문 바로가기

전체 글

(166)
[TIL] 24.01.16 1. 알고리즘 문제 해결 키로거(백준 5397): 자료 구조 기반 단순 구현문제. 커서 좌우 부분을 각각 스택으로 나누어 해결했다. 링크드 리스트로 해결해도 무난할 것 같다. PPAP(백준 16120): 처음에는 KMP 알고리즘이나 보이어-무어 알고리즘 같은 스트링 매치 알고리즘을 이용하려고 했다. 문자열 내에서 "PPAP"를 찾아 "P"로 변경하려는 생각이었다. 그런데 입력으로 들어오는 문자열의 최대 길이가 1,000,000인데, 변경된 문자열을 계속해서 탐색-변경 해줘야해서 시간 초과가 날 것 같았다. 그리고 문자열의 대부분이 같은 글자이고, 탐색해야 하는 Substring의 접두사와 접미사가 같기 때문에 스트링 매치 알고리즘들이 큰 효과를 보이지 않을 거 같기도 했다. 그래서 스택을 이용했다. 스택..
스타터 노트 내가 앱 트랙(iOS, Android)에 참여한 계기는 무엇인가요? - 평소에도 안드로이드 개발자를 희망하고, 혼자서 공부하고 있었습니다. 아무래도 독학을 하다보면, 협업 프로젝트나 협업 툴에 대한 경험이 부족해지고, 사용 중인 기술이나 구현 방식이 실무의 것과 동떨어져도 깨닫기 힘들다고 생각합니다. 내일배움캠프의 앱 트랙에서는 실무 경험이 있는 강사들의 멘토링을 받을 수 있고 협업 프로젝트도 경험할 수 있도록 과정을 제공한다고 했습니다. 이를 통해 제 부족한 부분들을 보완할 수 있을 거 같아서 지원하게 되었습니다. 내가 이해한 앱개발자는 어떤 역할을 하는 사람인가요? - 먼저 개발자는 요구되는 기능을 프로그래밍을 통해 공학적으로 구현해낼 수 있는 사람이라고 생각합니다. 앱개발자는 그런 개발자 중에서도 ..
[안드로이드 짤막공부] 23.09.30 카카오 API를 이용한 미디어 검색 앱을 만들던 도중, 오랜만에 오류를 겪었다. 대강 이런 오류였는데 아무래도 API를 통해 받아온 데이터를 바인딩하는 과정에서 오류가 나는 거 같았다. 유독 VideoItem의 playTime을 받아올 때만 오류가 발생했다. 처음에는 API의 response 값을 받아올 때 VideoItem에 대해 잘못된 값을 참조해서 존재해야 할 값이 없는가 해서 Postman으로 직접 API를 호출해 보니, response로 주어지는 인자들의 이름은 모두 제대로 SerializedName으로 처리해 둔 상태였다. 실제로 Retrofit 객체를 통해 전달받은 데이터들을 Log로 찍어 확인해 본 결과 모두 정상적으로 받아 오고 있었다. 그래서 문제가 발생한 ItemVideoBinding..
[안드로이드 짤막공부] 23.09.05 1. 위치 기반 서비스를 구현하기 위해서 구글의 FusedLocationProvider를 사용하는데, 자꾸 lastLocation 값이 이상한 곳으로 뜨는 문제가 있었다. 가상 머신에서만 유독 그런 오류가 생겨서 AVD 세팅 문제인 거 같아서 좀 헤맸다. 아무래도 AVD가 처음 구동되면 내가 설정해 둔 좌표로 기기가 제대로 인식되고 있지 않는 상태인 거 같았다. 현재 위치 기반으로 시간대를 자동으로 설정하게 해 두었는데 시간대가 맞지 않는 걸 보면.. 그래서 부팅 이후 AVD 설정 내에서 set location을 다시 하고 디바이스 내에서 위치 기능을 껐다가 킨 후, 구글맵에 들어가서 현재 위치가 제대로 뜨는 걸 확인했다. 이후 앱을 재실행했는데 그럼에도 lastLocation의 위도와 경도 값이 이상하..
[안드로이드 짤막공부] 23.09.02 1. 오랜만에 버그가 생겨서 한참 고생했다. 평소처럼 액티비티 클래스와 레이아웃 생성 후, 해당 액티비티를 생성하는 Intent 인스턴스를 만들어 startActivity()를 이용해 실행하려 했다. 그런데 디자인 해둔 레이아웃이 존재함에도 불구하고 계속 흰 화면만 나왔다. 로그를 찍어 확인해보니 startActivity() 위 아래의 코드 모두 정상적으로 진행되고 있었고, 레이아웃 문제인가 싶어 확인해보아도 딱히 특별할 것 없는 ConstraintLayout이었다. 차라리 앱이 저 순간에 죽거나 에러라도 띄운다면 문제를 쉽게 해결하겠는데 전혀 문제가 발생하지 않아서 원인 찾기가 더 힘들었다. 문제가 있는 액티비티의 onCreate() 내에 로그를 찍게 하고 확인하니 해당 로그가 전혀 찍히지 않았다. 아..
[안드로이드 짤막공부] 23.08.22 1. 안드로이드 13을 탑재한 가상 머신의 오디오가 정상적으로 출력이 되지 않는 문제가 있었다. 더 낮은 레벨의 안드로이드 머신들에서는 정상적으로 출력되는데, 처음에는 디바이스 세팅 문제인가 싶어 꽤 헤맸다. 도저히 내 문제가 아닌 거 같아서 찾아보니 꽤나 오래 묵은 문제인 거 같았다. 그래서 포기하고 더 낮은 API레벨의 안드로이드로 테스트하려던 찰나에 마침 오늘자 당장 몇 시간 전 코멘트로 저런 게 있길래, 안드로이드 스튜디오 내에서 sdk를 업데이트해 주고 새 기기를 만들어 실행하니 오디오가 정상적으로 출력됐다. 코멘트가 올라온 타이밍이 예술이었다. 2. Foreground Service와 Notification을 이용한 음악 플레이어를 구현하고 있었는데, 만든 Notification에 대해 set..
[안드로이드 짤막공부] 23.08.21 1. 요즘 강의를 새로 듣고 있어서 혼자 고민할 부분이 적다보니 딱히 블로그에 쓸만한 오류가 발생하지 않았다. 그러던 차에 오랜만에 오류가 생겼다. ActivityCompat.requestPermissions( this, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE), REQUEST_READ_EXTERNAL_STORAGE ) 외부 저장소 읽기 권한 요청을 발생시키는 위 코드가 기대한대로 동작하지 않았다. 리스너를 달아둔 버튼을 아무리 클릭해도 묵묵부답. 로그를 찍어 확인해봤지만 분명히 클릭 리스너와 메소드 진입은 정상적으로 일어나고 있었다. 혹시나 권한 요구 창을 이미 무시했나싶어 앱 재설치도 여러번 해봤는데도 결과는 같았다. 공식문서를 뒤져보니..
[안드로이드 짤막공부] 23.08.01 1. 요새는 이론 위주로 보고 있어서 딱히 오류가 생기거나 하는 게 잘 없었는데 오랜만에 에러와 맞닥뜨렸다. 'compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version. ... 이런 에러였는데, 아무래도 내 컴파일 환경이랑 kapt 메소드가 동작할 수 있는 환경 조건이 맞지 않는 거 같았다. 해결 방법은 간단했다. build.gradle(Module) 내의 저 옵션들을 모두 버전 17로 맞춰주니 바로 해결되었는데 하나 이상한 건 발생한 에..