분류 전체보기

Language/Kotlin

Structured Concurrency in Coroutines

이번 글에서는 구조적 동시성(Structured Concurrency)의 특징을 정리해본다. 1. 모든 코루틴은 제한된 수명이 있는 위치에서 시작되어야 한다.가장 대표적인 예로 Activity가 될 수 있다. RxJava에서는 특정 시점에서 disposable을 모아 처리해야 하는데컴파일러는 개발자가 처리하는 코드를 작성하지 않아도 경고하지 않는다. 이렇게 clear 혹은 cancel의 과정이 없다면OOM(Out Of Memory) 에러 혹은 앱 크래시가 발생할 수 있을 것이다. 반면에 코루틴을 사용할 때 예시로 사용했던 코드를 보면 viewModelScope가 있다. 이 스코프는 ViewModel 수명에 엮여있다. 따라서 ViewModel이 수명에 따라 clear될 때,viewModelScope에서 실..

Android

Android Share Image File In 2way

이번 주제는 제목 그대로 이미지 파일을 2가지 방법으로 소개하는 것이다. 근데 굳이 2가지 방법을..?나도 굳이 같은 기능을 2가지 방법을 생각하면서 개발하고 싶지는 않았다. 처음 프로젝트에서 사용한 방법은 ShareCompat을 사용하는 것이었다. 최대한 Jetpack 라이브러리를 활용하고 싶었고 그 욕심이 철저히 반영된 코드였다. 물론 기능도 무사히 동작했다. 하지만 또다른 프로젝트는 android support 버전을 사용 중이다.(Jetpack이 없다는 말이다.) 따라서 Jetpack ShareCompat을 사용할 수 없었고, 그에 따라 기본 Intent를 사용해 처리해야만 했다. support library에도 ShareCompat은 있지만 해당 클래스의 동작이 동일하다는 보장을 하기 어렵다.(..

Android

Android add library using toml

toml 파일을 사용하게 된 계기이번 신규 프로젝트를 진행하게 되었는데,그에 따라 프로젝트 자체를 새로 생성하면서 build.gradle 언어를 Kotlin DSL로 설정했더니Android Studio Koala를 쓰는 나에게 toml이 포함된 프로젝트가 생성되었다. 여기저기 오픈소스 라이브러리에서 혹은 developer 사이트에서도 자주 볼 수 있는 녀석이라이번 기회에 써보기로 했다. Retrofit 추가해보기어차피 대부분 앱은 네트워크 작업이 필요하고 그에 따라 가장 대중적인 라이브러리는 단연 Retrofit일 것이다. 하지만, 기존 toml을 사용해본적 없는 나로서는 상당히 검색할 시간이 필요했다. 먼저 toml 파일 수정하기[versions]... //retrofit = "2.11.0"serial..

Android

Android QR Code Generation

기능 추가 배경QR코드를 통해 로그인 정보를 공유한다. 물론 로그인 정보는 민감한 정보이므로 암호화가 필요하다. 장점서버가 필요없다.OS간 직접 파일을 옮기는 것이 아니기에 플랫폼 제약이 없다. 단점길이에 제한이 있다.카메라만으로도 정보가 보일 수 있어 비교적 보안에 약한 편이다.(암호화를 한다고 해도 말이다.) 라이브러리 추가하기여기서 사용한 라이브러리는 이전 글에서도 등장한 적이 있다.https://github.com/journeyapps/zxing-android-embedded GitHub - journeyapps/zxing-android-embedded: Barcode scanner library for Android, based on the ZXing decoderBarcode scanner l..

Android

Android Watchdog 기능 추가하기(OS 9)

이번 글은 기능에 대해 소개하기 전, 먼저 OS 9(Pie)을 타겟으로 만든 기능임을 알린다. 기능 및 배경 소개우리가 어떤 프로그램이 지속 실행되어야하는 상황에 만약을 대비해 넣는 기능 중에 하나가한번쯤은 봤을만한 꺼지면 재실행하는 기능이다. 이 기능은 보통 Watchdog(와치독, 워치독)이라 불린다. 이번에 안드로이드 셋톱박스에 맞추어 앱을 제작하게 됐는데이 때, 꺼지지 않는 앱이 필요했고 만에 하나를 대비해 이 기능을 준비하게 되었다. Manifest 수정하기먼저 Foreground Service 권한을 설정해야 한다. 갑자기 무슨 Foreground Service인가 싶을 수 있다. Background Service에서 Activity를 실행할 수는 있지만(하위 OS이기에 가능하지만)OS에서 S..

Android

Android Phone Number Format(자동 하이픈 추가)

내가 지금까지 개발한 앱은 신기하게도 휴대폰 번호 입력 칸이 필요한 경우가 없었다. 하지만, 이번에 해당 UI가 필요해져 추가하다보니01011112222처럼 하이픈이 없는 텍스트로만 입력이 되었다. 팀장님은 입력된 길이를 기반으로 하이픈을 추가하면 되지 않냐고 하셨지만,안드로이드에서 제공하는 기능이 있을 것이라 생각했고 그렇게 찾은 기능을 공유해본다. 정말 간단한 적용법먼저 xml EditText의 inputType을 phone으로 설정한다. 그럼 아래와 같은 키보드 형식이 보이게 된다. 이후 TextChangedListener를 설정해준다.binding.editPhoneNumber.addTextChangedListener(PhoneNumberFormattingTextWatcher()) 결과 확인해보기영..

주저리주저리/음식점

수원 행궁동 행루즈수제버거

퇴근길에 수제버거가 너무 먹고 싶어진 나머지 결국 행궁동에 내려 버거집을 찾게 되었다. 장안문 근처에 유명한 곳은 이 곳과 치킨버거가 주 메뉴인 한 곳이 있었는데소고기 패티가 너무 땡기는 바람에 행루즈 수제버거로 왔다. 입구조명부터 분위기가 따뜻해서 좋았다. 주문하기네이버로 예약 시, 밀크쉐이크 쿠폰을 주셨는데주문은 자리에서 QR코드로 주문하기 때문에 사용할 수가 없었다. 그래서 카운터로 가 사장님께 네이버 예약했다고 말씀드리니 밀크쉐이크를 따로 주셨다. 식기도 저렇게 컵..?에 꽂아주시니 통일감이 좋았다. 메인 메뉴인 버거는 치즈버거를 주문했는데 내가 할라피뇨를 안 좋아해서 선택한 메뉴였다. 혹자는 할라피뇨 들어간 메뉴를 주문하면 할라피뇨를 빼달라고 하면 되지 않냐고 하겠지만,나는 모든 재료가 들어간 ..

Language/Kotlin

Coroutines 여러 개로 연산 속도 높이기

이번 글에서는 전에 다루었던 withContext로 스레드를 전환 후 연산 작업을 더 빠르게 수행해보려고 한다. 기존에는 팩토리얼 계산을 Default Dispatcher를 사용해 하나의 코루틴에서 연산을 수행했다.이번에는 여러 개의 코루틴에서 연산을 수행한다. 어떤 구조로 실행할까팩토리얼을 몇개의 코루틴으로 나눠 실행할지 정해야 한다.실행할 코루틴 갯수만큼 연산할 숫자의 길이를 동등하게 분배한다.작은 범위를 계산하는 서브 코루틴을 동시에 실행시킨다.모든 서브 코루틴이 종료되는 것을 기다린다.모든 서브 코루틴이 종료되면 fold 함수를 사용해 작은 범위들을 모두 곱한다. 코드suspend fun calculateFactorial( factorialOf: Int, numberOfC..

Language/Swift

Swift - 프로퍼티(Properties)

프로퍼티의 정의 및 사용프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다.(열거형 내부에는 연산 프로퍼티만 구현 가능) 연산 프로퍼티는 var키워드로만 선언 가능하다. 연산 프로퍼티는 읽기 전용으로는 구현 가능하지만, 쓰기 전용으로는 불가능하다. 읽기, 쓰기 둘 다 가능하게 하려면 get, set 블럭을 구현하면 된다. set 블럭에서 암시적 파라미터로 newValue를 사용할 수 있다. 종류저장 프로퍼티(Stored Properties)연산 프로퍼티(Computed Properties)타입 프로퍼티(Type Properties) 코드 예시struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String ..

주저리주저리/팝업스토어

수원 스타필드 포켓몬스터 팝업스토어

이번에 다녀온 팝업스토어는 핫하디 핫한 스타필드에서 진행한 팝업스토어였다. 수원 스타필드 1층에서 진행한 포켓몬스터 팝업이었는데,10월 초 징검다리 휴일이 있던 주에 연차를 쓴 날이 있었다. 그렇게 평일 오후에 가서 그런지 입장하는데 30분도 걸리지 않았다. 기다리기일단 알림톡 대기를 걸어두고 윗층 카페를 가서 자리를 잡았다. 천천히 공부할 내용을 살피다 보니 입장하라는 톡이 왔고,금방 돌아올 것을 예상했기에 그냥 가방을 두고 다녀왔다. 카페에 사람도 거의 없었기에 더욱 과감히 나올 수 있었다. 입장한 뒤가장 먼저 눈에 들어왔던 굿즈는 한국 느낌이 섞인 뱃지였다.이렇게 무난한 디자인과 달리 가격은 매우 사악해서 기억이 나지 않을 정도.. 물론 내가 뱃지를 사려는 생각이 없었기에 더욱 기억이 나지 않는 것..

BonusTrack02.dev
'분류 전체보기' 카테고리의 글 목록