분류 전체보기

Language/Kotlin

Coroutines Dispatcher 알아보기

이번 글은 저번 CoroutineContext와 CoroutineScope를 소개한 것에 이어서 Dispatcher에 대해 알아보겠다. Dispatcher의 역할Dispatcher는 해당 코루틴이 어느 스레드나 스레드 풀에서 실행될지 결정한다. Dispatcher의 종류Dispatcher는 이미 정의된 몇가지가 있는데 이에 대해 짧막하게 알아보자. Dispatchers.MainMain Dispatcher는 오직 UI가 있는 애플리케이션에서만 사용할 수 있다. 안드로이드의 경우, UI 작업을 오직 메인 스레드에서만 허용하므로Main Dispatcher를 사용해 메인 스레드에서 실행할 수 있다. 해당 Dispatcher가 Main Looper와 연결된 Handler를 사용하기 때문이다. 우리가 Main Di..

Language/Kotlin

CoroutineContext와 CoroutineScope 알아보기

이번에는 CoroutineContext는 대체 무엇인지 알아보자. 그리고 간단히 CoroutineScope 구조까지 살펴보도록 하겠다. viewModelScope로 찾아보기viewModelScope는 CoroutineScope라는 인터페이스를 상속받아 만들어진 녀석이다. 그리고 CoroutineScope 인터페이스를 확인해보자.보다시피 CoroutineContext를 가지고 있는 걸 볼 수 있다. 그리고 다시 한 번 CoroutineContext가 무엇인지 들어가보자.문서 최상단을 읽어보면 CoroutineContext는 여러 Context Element를 포함하고 있다는 사실을 알 수 있다. 여기서 가장 중요한 Element에는 바로 Dispatcher, Job, ExceptionHandler, Nam..

Language/Kotlin

Coroutines on Main Thread(위험성에 대해 인지하기)

오늘은 코루틴을 메인 스레드에서 실행해보고 그 결과에 대해 생각해보는 시간을 가져보았다. 어떤 작업을 시킬까이번에는 단순한 연산을 시킬 예정이다. 아주 많이 팩토리얼(Factorial) 계산을 시켜보겠다. 코드를 보자.fun calculateFactorial(number: Int): BigInteger { var factorial = BigInteger.ONE for (i in 1 .. number) { factorial = factorial.multiply(BigInteger.valueOf(i.toLong())) } return factorial}여기서 BigInteger를 사용했는데 간단히 말하면Integer형으로 계산할 때 오버플로우가 날만한 범위까지도 계산이 가능한 클래스이..

주저리주저리/카페

수원 행궁동 카페 행궁 81.2

평일 퇴근길에 행궁동에 내렸다. 이날 저녁은 최대한 가볍게 샌드위치를 먹고 갔다.(아예 행궁동 카페를 가려고 마음을 먹었다.) 행궁동은 고개를 돌리면 보이는 것이 카페라 엄청 고민이 되었다. 그와중에 유독 큰 건물이 보였다. 조명이 운치도 있어보이고 무슨 이유에선지 돋보였다고 해야할까사진은 앞에 차가 엄청 크게 나왔는데 아무튼 그렇다 ㅋㅋ 일단 들어가자내가 가장 간과하는 부분인데 처음 가보는 카페는 매번 라떼를 주문하느라 사진 찍는 것을 까먹는다. 역시나 메뉴는 생략하고 내부 사진을 몇 장 가져왔다.올라가본건 3층까진데 여기 계단은 아주 역대급이었다. 지금까지 가본 카페 중 계단이 가장 가팔랐다. 넘어지면 정말 대형사고가 날 것 같은 느낌이었다. 하지만 다행이었던 건 각 층마다 반납대가 있었다. 계단이 ..

주저리주저리/컨퍼런스

SDC(Samsung Developer Conference) Korea 2023 후기

미루고 미뤄왔던 SDC Korea 2023 후기를 드디어 쓰게 되었다. 먼저 이번 달에 상당히 나태해진 나에게 따끔한 한마디를 다시금 전하며 9월부터는 다시 열심히 공부했으면 좋겠다. 참석 계기줄곧 개발자 행사(컨퍼런스, 밋업 등)를 직접 참가해보고 싶은 생각이 있었다. 타이밍이 매우 좋게 삼성전자에서 컨퍼런스를 하게 된다는 사실을 접했고 그대로 부장님께 외근 처리를 부탁드렸다. 생각보다 매우 흔쾌히 다녀오라고 하시며 동기와 선임도 데려가라고 하셨다. 그렇게 3명이 컨퍼런스를 가게 되었다.(동기는 iOS라 사실 매우 연관성이 있지는 않았다.) 일단 서초 사옥으로오전에 도착해 컨퍼런스가 열릴 위층으로 올라가는데역시나 동종 업계 사람들이 입구를 못 찾는 모습과 그걸 안내해주는 프론트 직원들의 모습이 눈에 띄..

Language/Kotlin

Extract retry logic into higher order function from previous Coroutine

이번 글에서는 저번 Coroutine retry 로직을 구현했던 것을 고차함수로 추출해내는 작업을 해볼 예정이다. Step1. 초안 작성하기fun retry(numberOfRetries: Int, block: () -> Unit) { repeat(numberOfRetries) { try { block() } catch (e: Exception) { e.printStackTrace() } } block()}초안을 작성해보면 위와 같은 코드가 된다. 얼핏 보기엔 문제가 없을 것 같지만, 파라미터 전달될 함수 리턴 타입을 알 수 없기에 Unit 하나로 제한해버리면 안된다. 이럴 때 생각나는 녀석이 하나 있는데 바로 제네릭(Generic)이..

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

프랭크버거 로스트아크 테마 매장 후기

나는 사실 팝업스토어같이 이벤트성 매장을 즐겨 찾지 않는 사람이다. 하지만, 이번에 갔던 프랭크버거는 단순히 음식을 판매하는 것이기도 하고기존에 내가 하던 게임에서 콜라보를 했던지라 갑자기 궁금해졌다. 그렇게 성수동을 처음 방문하게 되었다. 일단 예약부터해당 매장은 "나 갈래!"라고 해서 모두 갈 수 있는 것은 아니었다. 왜냐하면, 네이버에서 예약부터 해야했다.  실제로 현장에서 "여긴 지금 입장되나요?", "여긴 못 들어가나봐" 등 소위 입구컷을 당하는 사람들이 많았다. 입장하고 나서입장 시간이 되고 나서 입장하면서 부채, 엽서, 뽑기용 코인을 받았다.뽑기용 코인으로는 매우 높은 확률로 프랭크버거 콜라보 피규어를 받을 수 있었다. 나랑 같이 갔던 친구는 오히려 이 코인이 더 희귀하다고 뽑기를 안하고 가..

Android

Android Material Library Update Story(feat. BottomNavigationView)

글 작성 배경이 글을 적게 된 배경은 뭘까? 나는 시간이 어느 정도 지난 개인 프로젝트를 오랜만에 다시 만지고 있었다. 이 때, Material 라이브러리 버전과 targetSdk 버전을 동시에 올리면서BottomNavigationView 배경 색상이 내가 사용하지 않는 기본 색상으로 적용이 되었다. 샘플 앱을 대충 만들면 나오는 그 보라색 말이다. 나는 Material 라이브러리의 Color system을 사용하고 있었는데도 이런 현상이 발생했다. 문제 지점 찾기분명 라이브러리에서 BottomNavigationView의 background color를 정의하는 부분이 있을 것이라 생각했다. 그럼 라이브러리에서 어떤 color를 사용할까? 바로 Material 공식 사이트에서 확인할 수 있었다. 스크린샷..

프로그래머스

문자 개수 세기 코틀린(Kotlin)

이번 문제는 최근 포스팅한 AES 암호화 관련 글이 떠올라 풀어보았다. 문제문제의 요구사항은 영어 대소문자의 index를 가진 배열에문자열 안의 각 문자가 몇 번 포함되었는지 저장하는 것이다. 이 때, C언어를 배웠던 사람이라면 아스키 코드(ASCII Code)를 생각하지 않을까 싶다. 그리고 아스키 코드를 생각해낸 사람이라면 영소문자끼리 영대문자끼리 붙어있단 사실도 기억하고 있을 것이다. 그럼 이제 문제를 해결해보자. 풀이먼저 영대소문자를 모두 포함할 배열을 만들어준다. repeat 함수를 사용해 반복문을 대체했고문자열에서 각 index에 해당하는 문자를 숫자로 변환 후해당 정수 값으로 대소문자를 판별하고 배열 값을 1씩 증가시켜주었다. 그렇게 완성된 배열을 리턴해주면 된다. 실행 결과

프로그래머스

0떼기 코틀린(Kotlin)

오늘 이 문제는 기존에 사용해보지 않은 메소드를 사용해보는 겸 풀어보았다. 이번에 사용한 함수는 코틀린 표준 라이브러리에 있는 함수이다. 문제문제의 요구사항은 간단하다. 문자열 왼쪽의 0을 없애주면 된다. 여기서 문자열 왼쪽을 삭제하면서 자바엔 없는 함수를 사용해봤다. 풀이먼저 0이 몇개나 존재할지 모르기 때문에while문에서 startsWith로 문자열이 0으로 시작하면 문자열 앞의 0을 지워주었다. 그리고 removePrefix의 리턴을 다시 지역 변수로 넣어주었다. 지역 변수로 리턴된 문자열을 다시 넣어주지 않으면answer에 넣어둔 파라미터 값이 변하지 않기 때문에 while문에서 무한루프에 빠질 수 있다. 실행 결과

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