본문 바로가기

분류 전체보기81

[Jetpack Compose] Canvas 를 이용하여 원을 그리고 진행률을 나타내보기 요즘 한참 코딩 테스트 문제들을 푸느라 다른 공부들을 안해왔었는데, 문득 과거 면접 주제 중 하나였던 Canvas 를 이용하여 원을 그리고 그 안에서 진행율을 변화시켜주는 코드를 만들라던 문제가 생각나 이를 주제로 글을 하나 작성해보려고 한다.# Canvas 란?들어가기에 앞서 Canvas 에 대해 간단히 설명해보려고 한다.Canvas 란 Jetpack Compose 에서 직접 그래픽을 그릴 수 있는 도화지라고 보면 된다.이러한 Canvas 를 통해 개발자는 자신이 희망하는 그래픽을 생성하고, 이를 통해 UI 구성 중 하나로 사용할 수 있다. 이러한 Canvas 를 통한 그림 그리기 방법으로는 아래와 같은 방식들이 존재한다.drawLine() - 직선 그리기drawRect() - 사각형 그리기drawCi.. 2025. 5. 4.
[Computer Science] 복잡도 계산을 위한 빅오 표기법 (Big-O Notation) 에 대해 알아보자 코딩 테스트에서 결과물에 대한 채점을 표기할 때 주로 사용하는 빅오 표기법.평상시에는 이에 대해서 무지하였고 알 생각도 크게 없었으나, 요즘 들어 CS 에 너무 무지했던게 아니었나 싶어 짧게나마 공부하기 위해 글을 작성해본다.# 빅오 표기법 (Big-O Notation) 이란?알고리즘의 시간 복잡도 및 공간 복잡도를 표현하는데 사용되는 수학적 기법.주로 최악의 실행 시간을 표현하기 위해 사용되며 알고리즘의 성능을 입력 크기(n) 이 증가함에 따라 어떻게 변화하는지 나타낸다. # 빅오 표기법 알고리즘 성능1. O(1) - 상수 시간 (Constant Time) 입력 크기와 관계없이 일정한 시간이 걸리는 알고리즘[예시] 배열의 특정 인덱스 찾기# arr 이나 index 가 어떤 값으로 설정되더라도 배열 ar.. 2025. 3. 6.
[안드로이드] Intent 로 이메일 전송 기능 만들기 오늘 잠깐 플레이스토어를 보던 도중 개발자 계정에 경고 조치가 내려진 것을 확인하였다.내용은 AI 를 사용한 앱의 경우 내부적으로 개발자에게 신고하기 기능을 만들어야 한다는 것..하지만 내 앱의 경우 이러한 기능이 없었고 아주 예전에 만들었었던 Intent 를 통한 이메일 보내기 기능을 구현해보기로 하였다.fun sendReportImageData2(context: Context, fluxImageRes: FluxImageRes){ val intent = Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_EMAIL, arrayOf("testest@gmail.com")) put.. 2025. 3. 6.
[애드몹] Admob Ads.txt 추가 방법 및 Firebase 를 통해 광고에 필요한 Ads.txt 설정하는법 이전에 간단히 이미지 생성 앱을 만들어 플레이스토어에 배포하였었다.하지만 홍보를 하지 않았고 앱의 퀄리티가 좀 낮았던 터라, 이를 수정하고 커뮤니티 같은곳에 글을 올려 홍보를 하려고 하였고 이참에 광고도 승인을 받으려고 하였다. 그런데 문제가 생겼다.과거에는 Admob 에 앱을 등록하고 앱 내부 코드에서 광고만 실행하면 돈이 잘 들어왔었는데, 어느새인가 정책이 변경되어 app-ads.txt 라는 파일이 등록되어야 광고 수익을 얻을 수 있다는 것이다. 위와 같은 화면을 마주하여 인터넷에 이 해결 방법을 알아보았으나 Google 측 문서에는 다음과 같이 글이 작성되어있었다. 개인 도메인을 PlayStore App 에 연동하라는데 문제는 이 앱이 개인 웹서버를 사용하지 않고 아주 간단한 인증 절차만 필요하기에.. 2025. 2. 27.
[Kotlin] Coroutine Suspend 의 재개방식을 알아보자 (With CPS) 시작하기에 앞서 Thread 와 Coroutine 의 차이부터 알아보겠다.# Thread 란?프로그램이 메모리에 적재되는 순간 생성되는 실행단위인 프로세스 내부에서 실행되는 작업 단위로 여러 개가 실행 가능하고, 프로세스의 힙, 데이터, 코드 영역을 공유하며 각각 독립적인 스택 메모리를 보유하고 관리한다.쓰레드의 생성과 문맥 변환 (Context Switching) 은 상대적으로 오버헤드가 크며, 수천 개의 쓰레드를 동시에 생성하는 것은 실질적으로 많이 어렵다. 아래는 Context Switching 에 대한 설명이다.Context Switching 이란 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 복원(restore)하는 과정을 의.. 2025. 2. 26.
[Jetpack Compose] Composable Annotation 과 Composer, Slot Table, Memoization 에 대해 알아보자 최근 면접을 본 곳에서 Jetpack Compose 관련 질문을 엄청나게 받았다.해당 면접에서는 다른 기술들에 대해서는 대체적으로 물어보지 않고 Jetpack Compose 와 Coroutine 에 대해서만 물어보셨는데 대체적으로 내가 알지 못하거나, 실무에서는 적용하지만 이론적으로는 모르는 부분들에 대해서 많은 질문을 받았기에 꽤나 당황스러운 부분들도 있었다.아마 내가 이론적으로 Jetpack Compose 와 Coroutine 의 실행 과정에 대해 제대로 알고 있었다면 당황하지 않았을텐데하는 아쉬움이 있다. 이러한 마음에 며칠전부터 다시 읽고 있는 Jetpack Compose Internals 책의 일부 내용과 Composer 와 Slot Table 에 대해 자세히 설명되어 있는 블로그 글이 있어 이.. 2025. 2. 25.