일일 회고 오늘의 키워드 리뷰 작성 flow 작성 flow 이미지를 가져오기 위해 갤러리 접근 권한을 얻는다. 이미지 및 리뷰 항목을 작성한다. 등록 버튼을 누른다. 이미지를 먼저 파이어 스토어에 저장한다. 저장을 성공하면 ReviewWritingModel의 imageUrl 값을 업데이트한다. (실제 접근할 imageUrl로 만듦) 업데이트 성공하면 firestore에 리뷰를 저장한다.(업데이트) 저장을 성공하면 CalendarUserModel의 isReviewed 값을 업데이트 한다 (리뷰가 작성된 상태로 만듦) 이미지를 가져오기 위해 갤러리 접근 권한을 얻는다.33 이상 버전은 READ_MEDIA_IMAGES, 이하 버전은 READ_EXTERNAL_STORAGE 권한을 통해 갤러리에 접근 할 수 있다..
일일 회고 오늘의 키워드 트러블 슈팅 원인 공공 데이터 api에서 가져온 image url의 로딩 속도가 너무 느림 실험 - LTE 기준 약 4분 +추가 - 다른 이미지도 로딩 속도가 낮에 비해 굉장히 느려졌음 (작성 시각 오전 12:30) 인터넷 문제였던 것으로 판단, 하지만 그래도 사용자 관점에서 보았을 떄,이미지가 로딩 되는 속도가 느렸음 해결 과정 캐싱이란? 캐싱은 파일 사본을 캐시 혹은 임시 저장소에 저장해서, 보다 빠르게 접근할 수 있도록 하는 하나의 프로세스 파일 또는 데이터 사본을 임시 저장하는 위치를 범용적으로 캐시라고 부름 디스크 캐시? 메모리 캐시? 디스크 캐시는 디스크(RAM)로부터 읽은 내용을 일부 보존해두는 메모리 영역을 말한다. 메모리 캐시는 보통 CPU 내부에 있는 작지만 빠..
일일 회고 바쁘다 바빠 오늘의 키워드 트러블 슈팅 원인 공공 데이터 api에서 가져온 image url의 로딩 속도가 너무 느림 실험 - LTE 기준 약 4분 +추가 - 다른 이미지도 로딩 속도가 낮에 비해 굉장히 느려졌음 (작성 시각 오전 12:30) 인터넷 문제였던 것으로 판단, 하지만 그래도 사용자 관점에서 보았을 떄,이미지가 로딩 되는 속도가 느렸음 해결 과정 캐싱이란? 캐싱은 파일 사본을 캐시 혹은 임시 저장소에 저장해서, 보다 빠르게 접근할 수 있도록 하는 하나의 프로세스 파일 또는 데이터 사본을 임시 저장하는 위치를 범용적으로 캐시라고 부름 사용하고 있는 이미지 라이브러리인 Coil의 Caching을 적용 class App : Application() { override fun onCreat..

일일회고 오늘의 키워드 구현 고민 트러블 슈팅 구현고민 행사의 참여자 수 자체를 제공하는 api는 없어, 어떻게 해야 인기 있는 행사를 가져 올 지에 대한 논리를 직접 생각 해봐야 했다. 처음 flow는 아래와 같이 생각하였다. SK API를 통해 데이터 제공 가능 여행지 목록을 가져옴 (123개의 여행지(시군구)) SK API를 통해 123개의 시군구 코드를 통해 월 별 추정 여행자 수를 가져옴 --> 매번 123개의 정보를 가져오는 것은 비효율적 -> 미리 저장 assets 상위 10개를 뽑아냄 상위 10개에서 도를 뽑아냄 행사 검색 api를 이번 달의 행사 정보를 가져온 후 상위 10개의 도 이름으로 필터링 한 후 앞의 10개를 가져옴 뿌려줌 그런데 sk 국내 여행자 수 api로 많이 월 별 추정 ..

일일 회고 기획 쭉 하고, UI 구현하고 있다. 쓸 시간이 정말 없다.... 오늘의 키워드 CI (Continuous Integration) 합쳐진 코드를 빌드하고, 코드가 컨벤션에 맞춰졌는지 일일이 확인하는 것은 굉장히 귀찮고 시간이 오래 걸리는 작업이다. 그래서 Pull Request를 할 시, 코드가 잘 빌드 되는지 코틀린 컨벤션은 맞춰졌는지를 테스트해보기 위해 간단한 CI를 구성하여 코드를 관리해보고자 하였다. CI란? CI(Continuous Integration) 지속적인 통합이라는 의미이다. 개발을 진행하면서도 품질을 관리할 수 있도록 하는 것으로 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미한다. CI가 없다면 한 사이클의 개발을 마치고 pul..
일일 회고 심화 프로젝트까지 마쳤다! 다음주부턴 최종 프로젝트이다. 5주짜리인만큼 확실히 해보자 오늘의 키워드 피드백 알고리즘 피드백 더보기 ViewPager2 사용 안하기.... 횡 스크롤 리사이클러뷰와 함께 사용하면 UX적으로 좋지않음 카테고리 비어있을 때, 디폴트 값을 주면 좋을 것 같음 or 선택 유도 UI 유튜브 댓글 정말 좋았음, 무한 스크롤 UI가 인상 깊었음 검색어 입력 시 키보드에 탭레이아웃이 따라오지 않도록 하면 좋을 것 같음 쇼츠 괜찮았음 시연이 길긴 했으나 내용이 많아서 좋았다. 알고리즘 [BOJ-17213][백준 17213] 과일 서리 [SILVER-2][Solved by Kotlin] 입력 및 출력 입력: 첫째 줄에 과일의 종류 수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄에..
입력 및 출력 입력: 첫째 줄에 과일의 종류 수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄에 훔치려 하는 과일의 개수 M(N ≤ M ≤ 30)이 주어진다. 출력: 첫째 줄에 훔칠 수 있는 경우의 수를 출력한다. 풀이 민건이는 N 종류의 과일을 재배 중이라고 하고있다. 이때, 지환이가 과일을 훔치게 되는데, 민건이가 가지고 있는 모든 과일을 하나씩 훔치면서, 훔칠 수 있는 경우의 수를 찾는 것이다. 입력 예시를 보자. 과일의 종류의 수가 3개이고, 훔치려는 과일의 개수가 10개이다. 모든 종류의 과일을 적어도 1개씩을 훔쳐야 하므로, 뽑은 과일의 종류를 또 훔치는 것이 허용된다. 이렇게 하여 총 10개를 뽑는 것이다. 결론지으면 3가지 종류 중 중복을 허락하여 10개를 뽑으라는 의미이다. 이것은 중복조..
일일 회고 시연 영상을 만들며 발표준비를 하였다. 영상만드는 것도 은근 재미있는 것 같다? .... (요즘 영상 편집 툴이 정말 좋은 것이 많아서 그런가.....) 오늘의 키워드 알고리즘 알고리즘 발표 준비하느라 따로 한 것이 없어서 알고리즘으로 대체... [programmers][Kotlin] JadenCase 문자열 만들기 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출 aaapple.tistory.com

문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상 200 이하인 문자열입니다. s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다. 숫자는 단어의 첫 문자로만 나옵니다. 숫자로만 이루어진 단어는 없습니다. 공백문자가 연속해서 나올 수 있습니다. 입출력 예 s return "3people unFollowed me" "3people Unfollowed Me" "for the last week" "..
일일 회고 프로젝트도 마무리 단계에 들어갔다. 오류를 찾아 조금씩 고치고, 발표 준비를 하면 될 것 같다! 잘 마무리해 보자 오늘의 키워드 BottomSheetBehavior BottomSheetBehavior 안드로이드 뷰 중에 가끔 보면 위에서 올라와서 다른 화면을 보여주는 것을 볼 수 있다 (ex) 유튜브 댓글 창) 이러한 동작은 안드로이드의 BottomSheetBehavior를 통해 구현을 할 수 있다. BottomSheetBehavior는CoordinatorLayout에서 자식 뷰에 대한 플러그인 중 하나이다. 자식 뷰의 app:layout_behavior에서 설정해 주면 하단에서 펼쳐지는 방식으로 자식 뷰가 동작하게 된다. BottomSheetDialog 나 BottomSheetDialogFr..