본문 바로가기

전체 글

(91)
TIL 51일차 - 최종프로젝트 구글 Place Autocomplete구글 Places API에서 제공하는 장소 검색 자동완성 기능이다. 자동완성 뿐만 아니라 검색 필터링, 검색된 장소에 대한 세부정보 제공 등 여러 편리한 기능을 제공하기 때문에 최종 프로젝트에 사용하기로 했다. 그렇게 좋은점만 있는줄 알았는데...검색 창 UI 수정이 불가능하다EditText처럼 검색 창을 눌렀을 때 그 화면에서 키보드가 뜨는 것이 아니라, Autocomplete Fragment 자체 UI가 뜨고 거기에 키보드가 뜬다. 그러니까 굳이 따지자면 EditText가 아니라 Button이라고 봐야 한다... 그럼에도 제공되는 편리한 기능이 너무 압도적이여서 결국 사용하기로 결정했다
TIL 50일차 - 최종프로젝트 기존 앱의 초안으로는 기능적으로 조금 부실하다는 피드백을 받았다. 팀원과 회의한 결과 점수 계산 로직에 사용되는 API를 추가하고, 추천되는 장소의 카테고리를 맛집에 한정하지 않고 Spinner를 사용해 사용자가 선택한 카테고리에 따른 추천을 보여주도록 기능을 개선하기로 결정했다.여기서 약간의 문제가 있었는데, 점수 계산 로직에 사용되는 API가 이미 많아서, 다른 API를 더 끌어오기에는 앱이 무거워지고 복잡해지는 등의 문제가 있을 수 있다. 그래서 다른 방안을 찾아본 결과, Google Place SDK를 사용하면 여러 정보를 한 번에 받을 수 있기 때문에 대부분의 문제가 해결된다.Google Place SDKGoogle Maps Platform의 일부로, 장소 정보를 가져오고 활용할 수 있는 라이브..
TIL 49일차 - 최종프로젝트 Splash앱을 실행하게 되면 가장 먼저 잠깐 뜨는 화면사용자가 앱을 실행시켰을 때 빈 화면을 보면 로딩이 느리다고 인식하여 부정적 경험을 하게 되기 때문에 이를 방지하는 역할을 한다.dependency 추가dependencies { ... implementation ("androidx.core:core-splashscreen:1.0.0-rc01")}themes.xml에 style 추가 AndroidManifest.xml 코드 추가 Splash를 제외한 가장 먼저 보여질 Activity 파일에 코드 추가 override fun onCreate(savedInstanceState:..
TIL 48일차 - 최종프로젝트 DiffUtilDiffUtil은 oldItem, newItem의 두 데이터셋을 비교하여 값이 변경된 부분만을 RecyclerView에게 알려줄 수 있다 companion object { val diffCallback = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Place, newItem: Place): Boolean { return oldItem.address == newItem.address } override fun areContentsTheSame(oldItem: Place, newItem: Place): B..
TIL 47일차 - 최종프로젝트 트러블슈팅문제 : branch에서 작업 중 github 사이트에서 branch 이름을 수정한 이후 develop 브랜치에 PR을 할 때 There isn’t anything to compare. main and sim are entirely different commit histories. 라는 문구가 떴다 원인 : 로컬 브랜치를 업데이트 하지 않는 상태에서 개인 작업을 수행해서 생긴 문제, 때문에 커밋 기록이 develop 브랜치와 일치하지 않아 완전히 다른 commit histories를 가지게 되었기 때문에 브랜치끼리 비교 자체가 불가능하게 되었다 해결시도작업한 파일을 따로 로컬에 백업해둔다github의 프로젝트에서 develop 브랜치를 클론해온다기존의 github 프로젝트의 내 브랜치를 제거한다..
TIL 46일차 - 최종프로젝트 프로젝트명 : 한플 (한산한 핫플)목표 : 여행지의 위치와 날짜를 입력하면 미세먼지, 교통정보 등의 여러 API를 기반으로 계산하여 점수로 표시하고, 근처 음식점을 추천해주는 앱 (서울 한정)내용 :회원가입연동 로그인 - API 확인하기DB - 서버 필요메인 페이지: 정보 입력란 여러 페이지로 분리 (토스 회원가입처럼)가고 싶은 장소가 있으신가요?입력: 출발지, 도착지(검색), 날짜+시간 (캘린더) 입력창백그라운드 로직: 미세먼지, 교통 등 점수 계산출력: 여행지, 여행지 근처 음식점, [상세 점수] 버튼(response 조사 - 음식점 점수 상위 순으로 정렬)출력 2: 상세 점수(미세먼지, 교통 점수 등 상세히) - 점수 근거 보여주기이 곳은 어떤가요? - 위치 기반 추천 리스트이 장소는 이런 부분이 ..
TIL 45일차 트러블슈팅LiveData를 이용해 버튼을 누를 때 마다 새로운 List를 서버에서 전달받아 기존 List에 추가하려 했지만, 데이터를 전달받긴 하지만 기존 List가 갱신이 안되는 문제해결 1 :  MainActivity에서 RecyclerView랑 binding을 안해줬다 (초보적인 실수...) private fun initRecyclerview() { binding.mainRecyclerview.layoutManager = LinearLayoutManager(this@MainActivity) //추가한 코드 mainadapter = MainAdapter() binding.mainRecyclerview.adapter = mainadapter } 이렇게 하..
TIL 44일차 디버깅모든 소프트웨어에서 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정디버깅이 필요한 코딩 오류구문 오류: 컴퓨터 프로그램에 잘못 입력된 명령문이 있을 때 발생하는 버그. 워드 프로세싱의 오타 또는 철자 오류가 있다. 구문 오류가 있으면 프로그램이 컴파일되거나 실행 자체가 안되기 때문에 쉽게 찾을 수 있다의미론적 오류: 프로그래밍 명령문을 잘못 사용할 때 발생. 예를 들어 프로그램의 사칙연산 우선순위를 생각하지 않고 수식을 짰을 때 잘못 계산된 값에 의해 오류가 날 수 있다논리 오류: 프로그래머가 컴퓨터 프로그램의 단계적 프로세스나 알고리즘을 잘못 입력할 때 발생. 잘못된 if - when 결과가 이에 해당한다. 여러 가지 입력/출력 시나리오의 코드를 단계별로 살펴보면 논리 오류를 찾아낼 수 있다...