전체 글 (121) 썸네일형 리스트형 [Android] JUnit 테스트로 private 메서드에 접근하기 리플렉션 : 코드가 컴파일될 때 결정되지 않은 메서드, 클래스 또는 속성에 런타임에 접근할 수 있게 해주는 도구 CardDeck 클래스의 calculateTotalScore 메서드를 가져온다.두 번째 매개변수는 calculateTotalScore의 매개변수 타입val calculateTotalScore = CardDeck::class.java.getDeclaredMethod("calculateTotalScore", Entity::class.java) 메서드가 private 선언되었더라도 외부에서 접근할 수 있도록 설정calculateTotalScore.isAccessible = true invoke 메서드를 사용하여 calculateTotalScore 메서드를 호출.첫 번째 매개변수는 이 메서드.. [Android] DiffUtil.ItemCallback https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil.ItemCallback DiffUtil.ItemCallback | Android Developersandroidx.appsearch.builtintypes.propertiesdeveloper.android.com DiffUtil의 여러 콜백 함수 중 ItemCallback 함수는 리스트 내의 비어 있지 않은 두 항목 간의 차이를 계산하기 위한 콜백val diffUtill = object : DiffUtil.ItemCallback(){ override fun areItemsTheSame(oldItem: Root, newItem: Root): Boolean { .. [Android] Fragment add/hide/show Navigation Component는 화면 전환 시 replace 방식을 사용하기 때문에 생명주기 상 소멸되고 다시 생성된다.화면 전환을 해도 뷰의 정보를 유지하고 싶어서 다른 방법을 찾아봤다.Navigation Component를 커스텀하기ViewModel 사용하기Navigation Component를 포기하고 직접 화면 전환을 제어하기 (supportFragmentManager 사용)나는 3번의 방식을 선택했다.changeFragment()아래는 MainActivity 안에서 만든 메서드다.매개변수로 Fragment ID 값과 백스택에 저장할지(true)를 받는다.fun changeFragment(menuId: Int, addToBackStack: Boolean = false) { va.. 멤버십 Week-1 JUnit 테스트를 할 때, 테스트 할 메서드 안에 Log가 있어서 테스트 오류가 난다. android.util.Log 클래스는 안드로이드 환경에서만 동작하며, JUnit 테스트는 JVM에서 실행되기 때문에 Log 클래스가 실행되지 못 한다고 한다Robolectric을 사용해서, JUnit 테스트 환경에서 안드로이드 API를 사용해서 해결했다. testImplementation 'org.robolectric:robolectric:4.7'@RunWith(RobolectricTestRunner::class)class RaceGameTest { 다이얼로그를 사용하면서 setPositiveButton을 사용했다.MaterialAlertDialogBuilder(requireContext()) .setT.. 학습정리(day18,19) 소켓네트워크에서 통신하는 두 개의 프로그램 간의 연결을 설정하고 데이터를 전송하기 위한 인터페이스.IP주소와 포트 번호를 사용하여 네트워크 상의 특정 컴퓨터와 특정 서비스에 연결된다 소켓 통신소켓을 이용하여 두 프로그램(서버-클라) 간에 데이터를 주고 받는 과정. TCP와 UDP같은 네트워크 프로토콜을 사용소켓은 프로토콜,IP주소,포트 넘버로 정의된다. 서버 포트 vs 클라 포트서버 포트 번호 : 서버가 특정 서비스나 애플리케이션을 위해 대기하고 있는 포트 번호 (고정)클라이언트 포트 번호 : 클라에서 서버로 연결할 때 사용하는 로컬 포트 번호. 서버에서 세션 식별을 위해 부여한다. (동적 할당,임시 포트) 소켓 통신 흐름socket() 함수를 이용해서 소켓 생성bind() 함수로 ip와 port 번호.. 스레드 이름 출력 Thread.currentThread().name VM options -> -DKotlinx.coroutines.debug 학습정리(day16,17) 파일 시스템파일은 도서관에 있는 책과 같다. 도서관에서 책을 넣어둘 때도 특정 규칙에 맞게 넣어둔다. 파일도 마찬가지다.저장공간에 무질서하게 넣어둘 수는 없다. 파일을 관리하는 체계가 필요하다. 이걸 '파일 시스템'이라고 한다. 파일 시스템은 파일 이름과 파일 정보, 저장 공간을 관리하고 파일을 효율적으로 찾을 수 있도록 도와준다.윈도우는 FAT, NTFS, 리눅스는 ext, 맥OS는 HFS+, APFS 등의 파일 시스템을 사용한다. 파일 시스템은 파일의 내용과 파일 메타 데이터를 따로 나눠서 저장한다.이 메타 데이터를 이용해서 파일에 접근을 한다. 데이터베이스 기반의 파일 시스템은 최근에 등장한 새로운 개념의 파일 시스템이다. 파일을 계층 구조로 관리하지 않고 파일의 형식, 주제, 만든이, 내용과 같은.. 네부캠 3주차 회고 오늘 대한민국 배드민턴 국가대표 김원훈 선수가 경기를 잠깐 멈추고 토하는 영상을 봤다.토하는 장면을 보는데 더럽기는 커녕 코 끝이 찡해졌다..토할 정도로 그 경기에 모든 것을 쏟아붓는 김원훈 선수가 너무 멋있었다. 나는 토할정도로 어떤 일에 몰입한적이 있는가? 아직 없다.. 그래도 남은 한 주 김원훈 선수처럼 몰입하는 것을 목표로 세워본다.참고로 김원훈 선수는 토를 하고도 그 경기를 이겼다고 한다... 이번 주는 미션이 2개밖에 없었고, 대신 팀원들과 함께하는 시간과 코드 개선 시간이 많았다.학습과 구현을 짝과 같이 하는게 처음이라 어색했고, 짝이 나보다 잘해서 끌려가는 느낌이 들었다.그 과정속에서 나도 더 뒤처지지 않기 위해서 더 집중을 했고 이해가 안가는 내용은 바로바로 질문을 했다.이점은 잘 한것.. 이전 1 2 3 4 ··· 16 다음