GitHub Action의 세가지 구성요소 GitHub Actions는 Workflow, Job, Step 세가지 구성요소로 이루어진다. Step은 Job에 포함되고, Job은 Workflow에 포함된다. 즉, Workflow가 가장 큰 작업 단위이고, 그 아래 Job이 있고, Job 아래에는 Step이 있다. 이를 그림으로 나타내면 아래와 같다. 이 세가지를 잘 활용하면, 많은 작업들을 자동화 할 수 있다. 이제 이들 각각이 무엇인지 알아보자. Workflows Workflow는 GitHub Repository에 들어가는 작업 단위이다. 보통 Repository의 /.github/workflows/ 경로에 존재하며, 확장자는 .yml 이다. 예를 들어 위의 그림에서는 first_action.yml이라는..
분류 전체보기
Git Git은 소스코드의 변경을 관리하기 위해 만들어진 툴으로 VCS(Version Control System)라고도 불린다. 말 그대로 코드의 버전을 관리하는 시스템이다. Git은 코드를 관리하기 위해 다양한 기능을 제공한다. Commit이라 불리는 Snapshot을 생성하거나 Branch를 사용해 서로 다른 code version을 만들어낼 수 있고, checkout을 사용해 Branch간에 전환을 할 수 있다. 즉, Git으로 코드를 망가트리지 않고 특정 Code 스냅샷으로 이동하거나 할 수 있어 코드의 변경을 관리해야 될 때 주로 사용된다. Github Github는 Cloud 기반 Git 저장소를 제공하는 서비스이다. GitHub을 사용하면 로컬 Git을 Cloud에 보관할 수 있다. 이를 통..
로그를 사용한 디버깅의 필요성 Kotlin Coroutines는 같은 Coroutine Builder(launch, async 등) 의 중괄호 내부의 코드들이 다른 스레드에서 실행될 수 있다. 예를 들어 아래 코드에서 "task1 : start" 는 메인 스레드에서 실행되지만, "task1 : end"는 DefaultExecutor 스레드에서 실행된다. import kotlinx.coroutines.* fun main() = runBlocking { val task1 = launch(Dispatchers.Unconfined) { log("task1 : start") delay(100) log("task1 : end") } val task2 = launch { log("task2 : start") dela..
디버깅을 하기 위한 준비 Kotlin Coroutines는 일시 중단 후에는 다른 스레드에서 실행될 수 있기 때문에 디버깅을 하기가 매우 어렵다. 이 글에서는 디버깅을 하기 어려운 예 중에 가장 간단한 예시를 제시할 것이다. 다음의 코드를 보자. import kotlinx.coroutines.* fun main() = runBlocking { launch(Dispatchers.Unconfined) { println("launch1 Working Thread : ${Thread.currentThread().name}") delay(100) println("launch1 Working Thread : ${Thread.currentThread().name}") } launch { println("launch2..
Compose의 AnimatedVisiblity 란? AnimatedVisibility란 Jetpack Compose에서 나타짐과 사라짐을 애니메이션으로 처리하기 위해 제공되는 API이다. 가장 기본적이고 간단한 API이며, 동시에 가장 강력한 API이다. 왠만한 애니메이션들은 AnimatedVisibility 하나로 모두 처리할 수 있다. Animated Visibility 내부 살펴보기 AnimatedVisiblity 내부에는 visible, modifier, enter, exit, label, content 총 6가지 파라미터가 들어간다. @Composable fun AnimatedVisibility( visible: Boolean, modifier: Modifier = Modifier, enter..