TIL : 2023-11-01

이슬비·2023년 11월 1일
0

TIL

목록 보기
76/88
post-custom-banner

TIL : 스파르타코딩 Android 과정 7기

주의점

  • 매일 : TIL : today I learned 작성하기
  • github에 issue 꼼꼼히 쓰기
  • 주석 잘 적어 넣기
  • 단순 복붙이 아닌 내용을 전부 이해하기

오늘 계획 :

  • 오전
    • 09:00 ~ 10:00 : 오늘 계획 세우기
      • 오늘 계획 (Task)
        • 9시 : 데일리 스크럼
        • 9시 30분 : 팀회의
        • 10시 : 실전 프로젝트
        • 2시 : 면접 질문 2개 작성
        • 3시 30분 : 점심 회의
        • 19시 : TIL 작성하기
        • 19시 40분 : 디자인 피드백
        • 20시 : 마무리 회고
    • 10:00 ~ 12:00 : 실전 프로젝트
      • firebase에 최근 검색어 저장하기
      • firebase에 최근 검색어 삭제하기
      • firebase에서 최근 검색어 리스트 불러오기
      • 중복되는 최근 검색어 삭제하기
      • 최근 검색어 검색 시간 저장하기
  • 집중 코딩
    • 13:00 ~ 18:00 : 실전 프로젝트
      • 면접 질문 2개 작성
      • 점심 회의
  • 저녁
    • 19:00 ~ 20:00 : TIL 작성하기
      • 19시 40분 : 디자인 피드백
      • TIL 작성하기
    • 20:00 ~ 21:00 : 마무리 회고 진행
      • 팀 회의 : 마무리 회고 진행

사용 기능 :

// 최근 검색어 firebase에 저장하기
val user = FirebaseAuth.getInstance().currentUser
val userUID = user?.uid
if (userUID != null) {
            val nowTime = LocalDateTime.now()
            val inputTime = nowTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss"))
            val db = FirebaseFirestore.getInstance()
            val recentSearchCollection =
                db.collection("User").document(userUID).collection("recentSearch")
            val recentSearchData = hashMapOf(
                "searchWord" to searchWord,
                "inputTime" to inputTime,
            )
            recentSearchCollection.add(recentSearchData).addOnSuccessListener {
                Log.d("searchFirebase", "is success : $userUID")
            }.addOnFailureListener {
                Log.d("searchFirebase", "is fail : $userUID")
            }
        }

//최근 검색어 삭제 
if (userUID != null) {
            val db = FirebaseFirestore.getInstance()
            val ref = db.collection("User").document(userUID).collection("recentSearch")
            val query = ref.whereEqualTo("searchWord", searchWord)

            query.get().addOnSuccessListener { documents ->
                for (document in documents) {
                    document.reference.delete()
                }
            }.addOnSuccessListener {
                Log.d("searchFirebase", "is success : $searchWord")
            }.addOnFailureListener {
                Log.d("searchFirebase", "is fail : $searchWord")
            }
        }

//최근 검색어 리스트 불러오기
val db = FirebaseFirestore.getInstance()
        val recentSearchCollection =
            db.collection("User").document(userUID).collection("recentSearch")
        recentSearchCollection.orderBy("inputTime").get()
            .addOnSuccessListener { querySnapshot ->
                for (document in querySnapshot) {
                    val searchWord = document.getString("searchWord")
                    if (searchWord != null) {
                        viewModel.setRecentSearchItem(searchWord)
                    }
                }
                Log.d("recentSearchFirebase", "is success")
            }
            .addOnFailureListener { e ->
                Log.d("recentSearchFirebase", "is fail")
            }

실전 프로젝트 :

nbcamp-14-team

면접 질문 :

  1. 비동기 프로그래밍이 무엇인지, 왜 사용해야하는지 설명해주세요 (33번)

    답변 : 비동기 프로그래밍은 작업을 병렬로 수행합니다. 다른 작업이 끝날 때까지 기다리지 않고 실행하므로 시간을 절약할 수 있습니다.

  2. RESTful API를 사용하여 서버와 통신하는 방법에 대해 설명하세요 (34번)

    답변 : HTTP 메소드를 이용하여 상호작용합니다. URL을 이용하여 HTTP 요청을 보내면 응답합니다. 보내온 데이터는 JSON 또는 xml 파일이며 이 데이터를 파싱하여 활용합니다.

앞으로의 계획 :

  • search UI 변경하기
  • search 새로운 기능 추가하기
  • 최근 검색어 최대 10개까지
  • 사용자 약관 조사
profile
개발꿈나무
post-custom-banner

0개의 댓글