전체 글

전체 글

    안드로이드 - Jetpack Compose Navigation Test Code

    오늘은 Jetpack Navigation의 Test Code 작성하는 법에 대해 알아 보겠습니다! 우선 테스트 코드 작성을 위해 아래 의존성을 추가해 줍니다. dependencies { implementation("androidx.navigation:navigation-compose:$nav_version") androidTestImplementation("androidx.compose.ui:ui-test-junit4:$junit_version") } 테스트 코드 작성 시작하기 앞서 해당 테스트는 안드로이드 기기에서 실행되어야 하므로 /app/src/androidTest 폴더 안에 위치해 있어야 합니다. 우선 이해하기 쉽게 아래 두 화면과 NavHost가 정의되어 있다고 가정하겠습니다. sealed cl..

    옵저버 패턴 (Observer Pattern)

    옵저버 패턴 (Observer Pattern)

    옵저버 패턴이란? 옵저버 (관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 옵저버 패턴은 일대다(one-to-many) 의존성을 가지고, 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용된다. 다른 말로는 (발행/구독) 모델이라고도 부른다. 일상 생활에서 찾아보면 유튜브로 비유할 수 있다. 유튜브에는 유튜버 채널은 발행자가 되고 구독자들은 관찰자로 볼 수 있다. 구독자들이 채널 알림 설정을 해 놓으면 영상이 올라올 때 마다 알림을 받을 수 있는데, 이를 패턴 구조로 들여다 보면 구독자들은 해당 채널을 구독함으로써 채널에 어떠한 변화(영상을 올라왔을때)가 생기게 되면 알림을 받아 영상이 올라..

    Android Kotlin - DIP(Dependency Inversion Principle)이란?

    Android Kotlin - DIP(Dependency Inversion Principle)이란?

    DIP (Dependency Inversion Principle) → 의존 역전의 원칙 의존 관계를 맺을을 때 변하기 쉬운 것에 의존하기 보다는 변화하지 않는 것에 의존하라! 위의 말은 어떤 의미가 담겨 있을까요? 예를 들어 저희가 쇼핑물에서 사용자가 물건을 구입하면 구입한 내역을 알려주기 위해 알림 기능을 구현한다고 생각해 봅시다. 이메일로 사용자에게 알려주기로 결정을 했고 아래와 같이 기능을 구현 했습니다 class EmailMessenger { fun sendNotification(message: String): String{ println("Sending email: $message") } } class NotificationService { private val messenger = EmailM..

    Android - JUnit 단위 테스트

    Android - JUnit 단위 테스트

    유닛 테스트란? 소프트웨어 개발에서 가장 작은 단위의 코드를 독립적으로 테스트하는 접근 방법이다. 함수, 클래스, 메서드등과 같이 작은 코드 조각을 테스트하여 코드의 동작을 확인하고 검증하는 프로세스이다. 유닛 테스트를 하는 목적은 아래와 같다. 코드의 정확성 확인: 메서드의 입력과 예상되는 출력을 기반으로 테스트 케이스를 작성하고 실행함으로써 코드의 정확성 검증 버그 탐지: 코드의 작은 부분을 테스트하면서 예기치 못한 동작이나 예외 상황 또는 버그를 찾아낼 수 있다. 코드의 유연성 향상: 작은 단위로 테스트 코드를 작성하면 코드의 결합도가 낮아지고 모듈화된 구조를 가지게 된다. Junit? Junit은 자바를 위한 테스팅 프레임워크이다. 안드로이드에서 유닛 테스트를 수행할 때 가장 범용적으로 사용되는 ..

    SpringBoot - 구글 로그인 연동

    SpringBoot - 구글 로그인 연동

    구글 로그인을 위해서는 먼저 개발자 콘솔을 이용해서 프로젝트를 생성해야 합니다. https://console.cloud.google.com/ Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 위 페이지에 접속 후에 오른쪽 상단 새 프로젝트 생성 클릭 프로젝트 이름 설정 후 만들기 버튼 클릭 API 서비스 클릭 사용자 인증 정보 -> 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID -> 동의 화면 구성 클릭 애플리케이션 이름 지정 후 저장후 계속 다음 화면에 넘어가면 취소 눌러서 해당 화면 넘어오면 OAuth 클라이언트 ID 클릭 사진과 같이 작성 후 만들기 클릭 OAuth 클라이언트가 설정됨 프로젝트 내 구글 설정 프로젝트에 소셜 로그인..

    백준 - 색칠하기 13265 자바

    백준 - 색칠하기 13265 자바

    https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net 오차피 두가지 색상밖에 없으므로 시작노드 색깔을 1로 시작노드와 연결된 노드들을 -1로 설정 bfs 돌리면서 인접한 노드가 이미 색칠 되어 있고 현재 노드 색깔 + 인접노드 색깔이 0이 아니면 사이클이 있는거므로 impossible, bfs가 정상적으로 다 돌면 possible import java.io.*; import java.util.*; public class Main { static ArrayList list..