반응형

전체 글 303

pk8, pem 파일을 jks로 변경하는 방법(Android)

Android APK 서명 .pk8 및 .pem에서 .jks로의 변환 과정 안드로이드 앱 개발 과정에서 APK 서명은 앱 배포의 필수적인 단계입니다. 이번 포스트에서는 .pk8 및 .pem 파일을 사용하여 APK에 서명하는 과정과, 중간에 발생한 에러 해결 방법까지 상세하게 다루려고 합니다. 1. 서명 파일 변환의 필요성 대부분의 안드로이드 개발자는 Android Studio에서 제공하는 기본 .jks 형태의 키스토어 파일을 사용합니다. 하지만 때때로 .pk8 및 .pem 파일만을 가지고 있어서, 이를 .jks 형태로 변환해야 하는 상황이 발생합니다. 2. 변환 과정 단계 1: PKCS12 형식으로 변환 첫 번째 단계는 .pk8 개인 키와 .pem 공개 키를 PKCS#12 형식으로 변환하는 것입니다. 이..

Android 2024.03.27

Android Emulator System uid App 빌드하기

안드로이드 애뮬레이터를 사용해서 시스템 앱으로 설치해서 테스트 해보고 싶은신적 있으신가요? 저희 회사는 안드로이드 단말기를 생산하는 회사라서 대부분 시스템 앱으로 빌드하여 배포합니다. 그래서 애뮬레이터에서 시스템 앱으로 돌리려고 삽질을 좀 했습니다. 1. 애뮬레이터 설치 애뮬레이터 설치 부터 신경써야 합니다. 아래 그림과 같이 Target 정보에 Google APIs 가 아닌 이미지를 선택해야 합니다. 그래야 AOSP 오픈소스에서 제공하는 platform key를 사용하여 apk를 시스템 앱으로 설치할수 있습니다. 2. 매니패스트의 system uid 입력 아래와 코드를 매니패스트 최상단의 입력되어야, 시스템 앱 권한으로 앱이 실행이 됩니다. 3. apk sign 애뮬레이터를 설치했다면 APK를 시스템 ..

Android 2024.03.26

함수 합성 관점에서의 모나드 법칙

오늘은 코딩 블로그에서 함수 합성 관점에서의 모나드 법칙에 대해 알아보려고 합니다. 모나드는 함수형 프로그래밍에서 굉장히 중요한 개념이며, 특히 코틀린에서 유용하게 사용됩니다. 모나드의 핵심 법칙들을 이해하는 것은 코드의 표현력을 향상시키고, 더욱 세련된 프로그래밍 패러다임을 구사할 수 있게 합니다. 모나드의 법칙 모나드(monad)의 법칙 모나드의 이해와 기본 법칙 함수형 프로그래밍은 순수 함수와 불변성, 고차 함수 등의 개념을 활용하여 보다 명확하고 예측 가능한 코드를 작성하는 것을 목표로 합니다. 이러한 패러다임에서 coding-food-court.tistory.com 모나드의 핵심 법칙들 모나드 법칙에는 주로 항등 법칙과 결합 법칙이 있습니다. 이 법칙들을 직관적으로 이해하기 위해, 함수 합성의 ..

모나드(monad)의 법칙

모나드의 이해와 기본 법칙 함수형 프로그래밍은 순수 함수와 불변성, 고차 함수 등의 개념을 활용하여 보다 명확하고 예측 가능한 코드를 작성하는 것을 목표로 합니다. 이러한 패러다임에서 모나드는 중요한 역할을 합니다. 본 글에서는 모나드의 기본적인 개념과 핵심 법칙에 대해 설명하고자 합니다. 1. 모나드 소개 모나드는 함수형 프로그래밍에서 자주 사용되는 패턴 중 하나로, 값과 함께 연산을 캡슐화하여 부작용이 있는 연산을 순수 함수적인 방식으로 다룰 수 있게 합니다. 모나드는 타입 안전성을 보장하면서 연산의 연결(체이닝)을 가능하게 하는 특성 덕분에 복잡한 함수 조합과 에러 처리, 상태 관리 등을 보다 수월하게 할 수 있습니다. 2. 모나드의 법칙 이해하기 모나드는 세 가지 기본 법칙을 만족해야 하며, 이 ..

메이비 모나드를 활용한 안전한 널 처리 (함수형 프로그래밍)

코틀린은 널 가능성을 타입 시스템에 내장하여 널 참조 오류(NullPointerException)를 줄이는 데 도움을 줍니다. 그러나 복잡한 데이터 구조에서 널을 처리하는 것은 여전히 도전적일 수 있습니다. 이 글에서는 메이비 모나드(Maybe Monad)를 사용하여 이러한 문제를 어떻게 해결할 수 있는지 살펴봅니다. 기본 예제: 중첩된 널 체크 먼저, 중첩된 클래스 구조에서 널을 처리하는 기본적인 방법을 살펴보겠습니다. class A1(val b: B1?) class B1(val c: C1?) class C1(val d: D1?) class D1(val value: String?) fun getValueOfD1(a: A1): String { val b = a.b if (b != null) { val c..

메이비 모나드와 리스트 모나드 (함수형 프로그래밍)

최근에는 코틀린을 활용한 함수형 프로그래밍이 개발자 사이에서 큰 관심을 받고 있습니다. 이번 포스팅에서는 함수형 프로그래밍의 핵심 개념 중 하나인 모나드를 코틀린을 통해 구현하는 방법을 살펴보겠습니다. 특히, 메이비 모나드(Maybe Monad)와 리스트 모나드(List Monad)의 구현에 초점을 맞췄습니다. 메이비 모나드란? 메이비 모나드는 함수형 프로그래밍에서 값의 존재 유무를 안전하게 다루기 위한 패턴입니다. 값이 있을 수도 있고, 없을 수도 있는 상황에서 유용하게 사용됩니다. 코틀린에서는 Maybe를 Just와 Nothing 두 가지 경우로 구현하여, 값의 존재 유무를 표현할 수 있습니다. sealed class Maybe { companion object { fun pure(value: V):..

책 [역행자]를 읽고

이 책을 읽을 당시 나는 자신감이 많이 떨어져 있고, 책은 자주 읽어서 자의식은 과잉인데 직접적인 실천은 하는 둥 마는 둥 하는 식이였다. 매일 같이 치열하게 무언가를 열심히 하는데, 결핍만 가득하고 내 인생이 달라질 수 있을까 하는 의문만 가득했고 노력에 비해 결과가 좋지 않으니 우울한 감정도 가득했다. 책을 읽고 새롭게 생각하게 된 것들 자의식을 해체 했다고 생각했던 나에게.. 나는 책을 많이 읽으면서 다양한 저자들의 이야기를 긍정적으로 받아들이는 편이다. 따라서 나는 고집이 강하지 않고 다양한 이야기를 다양한 각도로 바라볼 수 있는 사람이라고 생각하고 있었다. 그렇지만, 이 책을 읽고 그동안 내가 자의식 해체를 못하고 내 식으로만 생각하고 지레 포기하는 상황들이 생각났다! 유레카! 나는 ‘자의식 해..

독서 2024.02.03

repo init mirror 옵션 vs reference 옵션 차이

repo init 명령어에서 mirror 옵션과 reference 옵션이 있습니다. 두 옵션의 차이를 알아보아요. repo init --mirror는 git 저장소의 모든 브랜치와 태그를 그대로 복제하고, 원격 저장소와 동기화할 수 있는 옵션입니다. repo init --reference 는 이미 로컬에 있는 다른 저장소를 참조하여 필요한 데이터만 복제하고, 원격 저장소와 동기화할 수 없는 옵션입니다. 이렇게 하면 네트워크 트래픽과 저장 공간을 절약할 수 있습니다. 예를 들어, 다음과 같은 명령어를 실행하면 repo init --mirror -u {1} repo init --reference=/data/dtx340 -u {2} 위와 같이 명령어가 있을때, 첫 번째 명령어는 {1} 에 있는 모든 git 저..

Android 2024.01.31

피보나치 수열 (재귀 vs 비재귀)

아래는 피보나치 수열입니다. 1. 재귀 버전 이는 재귀 알고리즘으로 아래와 같이 구현 할수 있습니다. fib(n): if (n = 1 or n = 2) return 1 else return fib(n - 1) + fib(n - 2) 이는 재귀 알고리즘으로 구현한 치명적인 예 입니다. 시간이 너무 오래 걸립니다. 100번째 피보나치 수를 계산하기 위해서 fib(100)을 수행하면 평생 기다려도 결과를 볼 수 없습니다. 이렇게 엄청난 시간이 걸리는 이유는 한번 계산해 놓은 결과를 계속 호출하여 지수함수적인 중복을 일으키기 때문이다. 이 문제를 다음과 같이 수정하여 fib2(100)은 어마어마하게 시간을 단축 시킵니다. 2. 비재귀 버전 fib2(n) : f[1] ← f[2] ← 1 //f[2] ← 1과 f[..

Algorithm 2023.06.17

Activity orientation 상황에서 액티비티 재생성 방지

안드로이드 어플을 개발하다보면, 화면을 회전할 경우 액티비티를 없애고, 액티비티를 다시 그립니다. 그런데 회사에서 요청한 요구사항에 맞게 개발하다보면 액티비티를 다시 그리지 않고, 그대로 사용해야할 경우가 있습니다. 이걸 매니패스트 정의만하면, 액티비티 재생성을 막아주는 코드가 있어서 공유 합니다. 1. 코드 매니페스트에 'android:configChanges' 에다가 액티비티 재생성을 무시하고 싶은 경우를 넣어주면 됩니다. 이 속성을 추가하면 액티비가 재생성 되지는 않지만, 화면 회전시 화면을 회전하여 그려줍니다. 2. 안드로이드 공식 문서 참고 ▶안드로이드 공식 문서, 액티비티 재생성 방지

Android 2023.06.10
반응형