🐱 With All My Animal 🐶
💡 [ 13일차 10/26일 ] 💡
📌 오늘의 기술면접 질문 Q&A
계산을 수학적 함수의 계산으로 취급하고 상태와 변경 가능한 데이터를 피하는 것을 중시하는 프로그래밍 패러다임이다.
순수 함수를 사용하여 사이드 이펙트(프로그래밍에서 함수가 외부의 상태를 변경하거나 함수 내에서 외부 상태에 의존하는 것)가 없는 코드를 작성하며, 높은 수준의 추상화를 제공한다.
구현이 복잡하고 이해가 어렵다는 단점이 있다.
쉽게 설명하자면, 수학 문제를 풀 때 같은 함수에 같은 값을 넣으면 그 결과는 항상 같아야한다. 이런 방식은 코드가 예측 가능하게 만들어주고 버그를 줄여준다.
프로그램을 객체들의 집합으로 보고, 각 객체들이 상호작용하면서 작업을 수행하게 되는 패러다임이다.
코드 재사용성과 유지보수가 용이하다.
상태를 변경할 수 있는 능력 때문에 사이드 이펙트를 유발할 수 있다는 단점이 있다.
쉽게 설명하자면, 자동차라는 객체가 있다면, 그 자동차는 색상/ 모델/ 제조사 등의 속성을 가지고 있으며, 달린다/ 멈춘다/ 방향을 전환한다 등의 행동을 할 수 있다.
이러한 방식은 복잡한 문제를 작은 부분으로 나누어 해결하는데 도움을 준다.
사용자 인터페이스를 구성하는 컴포넌트이다.
사용자가 앱과 상호작용하는 화면을 나타낸다.
예시) 이메일 앱에서 메일 목록을 보여주는 화면, 메일 작성하는 화면 등
백그라운드에서 오래 걸리는 작업을 수행하는 컴포넌트이다.
사용자 인터페이스를 제공하지 않으며, 주로 네트워크 트랜잭션 처리, 음악 재생 등의 작업에 사용된다.
예시) 음악 재생 앱에서 음악 재생 서비스는 사용자가 다른 앱을 사용하거나 잠금화면이 나타나도 계속해서 음악을 재생한다.
안드로이드 세스템에서 발생하는 다양한 이벤트나 정보를 받아 처리하는 컴포넌트이다.
예시) 배터리 부족, 사진 촬영, 와이파이 연결 등의 이벤트를 감지한다.
앱 간의 데이터 공유를 관리하는 컴포넌트이다.
예시) 주소록, 사진, 파일 등의 데이터를 다른 앱에서 사용할 수 있도록 공유한다.
📌 Mypage에 유저 정보 불러오기
private fun loadUserData() {
val userId = Firebase.auth.currentUser?.uid
if (userId != null) {
val userProfileRef =
FirebaseDatabase.getInstance().getReference("users").child(userId)
.child("profile")
userProfileRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val userIdname = snapshot.child("userIdname").getValue(String::class.java)
val petName = snapshot.child("petName").getValue(String::class.java)
val birth = snapshot.child("birth").getValue(String::class.java)
val statsMessage = snapshot.child("statusMessage").getValue(String::class.java)
storageRef.child("profileImages").child("$userId.png").downloadUrl.addOnSuccessListener {
binding.imgMypageProfile.load(it)
}.addOnFailureListener {
}
binding.tvMypage.text = petName
binding.tvMypageNickname.text = userIdname
binding.tvMypageBirth.text = birth
binding.tvMypageMessage.text = statsMessage
}
override fun onCancelled(error: DatabaseError) {
Log.e("MypageFragment", "Error loading user data: ${error.message}")
}
})
}
}