Composable, 너의 위치를 알려죠! (OnGloballyPositioned)

컴포저블의 포지션은 어떻게 구할 수 있나 Android View로 애플리케이션 UI를 구현할 때는 root 에서 하위에 있는 view의 포지션을 구할 수 있었다. 하지만 컴포즈로 UI를 구현시에는 View는 ComposeView 하나만 존재하고, 캔버스에 필요한 Element들을 그리는 방식이다.  위의 이미지와 같이 특정 버튼(컴포저블) 위치에 맞춰 어떠한 팝업을 띄운다고 가정할 때 어떻게 포지션을 구할 수 더보기…

AGP 7.0 업데이트에 따른 CI 서버 대응

AGP 7.0 업데이트에 따른 CI 서버 대응 CI 서버 JDK 11설치 설치 가능한 jdk 확인 yum list java*jdk-devel jdk 11 설치 yum install java-11-openjdk-devel.x86_64 자바 버전 확인 java -version 자바 버전 변경 update-alternatives –config java update-alternatives –config javac 위 명령어 호출 후 원하는 버전 선택 수동으로 ~/.bash_profile 또는 /.bashrc를 변경해도 더보기…

Github에서 main(master) 브랜치에 merge 하는 실수를 방지하기

PR 머지 실수를 사전에 방지하기 Github > Repository로 이동 > Settings > branches탭 클릭 위의 경로로 이동하면 다음과 같은 화면을 확인할 수 있다. 기본 브랜치(Default branch)를 master가 아닌 다른 브랜치로 변경 하자  예) develop 기본 브랜치는 리파지토리내에서 기본값으로 설정되는 브랜치를 말한다. 특별한 브랜치를 선택하지 않는 한 모든 PR(Pull Request) 생성 더보기…

암호화와 관련된 키워드 공부하기

Encryption/Decryption 아직 암호화되지 않은 메시지를 평문(plaintext)이라한다. 암호화 된 메시지는 암호문(ciphertext)라고 한다. 평문과 암호문 사이에서는 두개의 기능이 존재한다. 바로 암호화와 복호화다. 암호화(Encryption)는 평문을 어떤 암호화 함수를 통해 암호문으로 바꾸는 것을 말한다. 복호화(Decryption)은 암호문을 어떤 복호화 함수를 통해 평문으로 바꾸는 것을 말한다. 암호의 작동방식 암호는 다음과 같은 두개의 주된 구성요소로 이루어진다. 치환(permutation) 더보기…

안드로이드에 클린 아키텍처를 도입한다면 어떻게 될까?

안드로이드와 클린 아키텍처 안드로이드 앱 아키텍처에 관심을 갖게 되면 필히 접하는 키워드, 클린 아키텍처에 대해서 알아보려고 한다. 클린 아키텍처 “If you want to go fast, if you want to get done quickly, if you want your code to be easy to write, make it easy to read” “빠르고 신속하게 코드작성을 더보기…

[오픈채팅방 공지사항]

찰스의 안드로이드 오픈채팅방 규칙 상업성 광고는 허용하지 않습니다.  구인광고 및 개인 앱 홍보는 자유롭게 하실 수 있습니다. 안드로이드 개발을 비롯한 모든 주제에 대해 자유롭게 질문 하실 수 있습니다. 질문 잘하는 방법은 이전 게시물을 확인해 주세요. 찰스의 안드로이드 오픈채팅방의 역할 오픈채팅방은 안드로이드 앱 개발자간 정보 공유를 통해 통찰력을 얻고, 가지고 있는 더보기…

플레이 스토어 콘솔없이 DFM을 로컬에서 테스트하기

DFM이란? DFM(Dynamic Feature Module)은 기본 모듈 앱(APK)로 부터 특정 기능이나 리소스를 분리하여 추후에 Play Feature Delivery를 통해 다운로드하고 설치 할 수 있다. 일반적인 DFM의 다운로드 경로는 Play store console에 업로드한 aab 파일로 부터 생성 된 별도의 apk로 진행되기 때문에, 앱번들로 빌드한 aab 파일을 콘솔에 업로드해야 한다. 하지만 개발시에 다운로드, 진행율 더보기…

안드로이드 프로젝트 import 시 구글 리포지토리에 연결되지 않을 때

IOException: https://dl.google.com/android/repository/addons_list-x.xml java.net.ConnectException: Connection refused (Connection refused) 안드로이드 스튜디오에서 위와 같은 메시지를 출력 할 때 조치해볼 수 있는 내용은 다음과 같다. 우선 안드로이드 스튜디오와 SDK 툴들을 최신 상태로 만든다.  AGP 7.0(Android Gradle Plug-in) 이후에는 Gradle JDK버전을 11 이상으로 설정해야 하니 유의하자. 그래도 엑세스가 안되면, 방화벽 문제일 수 있으므로 방화벽을 해제 더보기…

고전암호 구현해보기(시저 암호, 비즈네르 암호)

고전암호 고전암호(Classical cipher)는 과거에 사용되었으나 지금은 사용하지 않는 암호의 형태이다. 지금은 컴퓨터로 비트를 다루는 암호를 사용하지만 과거에는 사람이 암호화와 복호화를 해야했기 때문에 고전암호는 오늘날의 암호보다 훨씬 단순하다.  고전암호에서 가장 대표적인 스키테일 암호, 시저 암호, 비즈네르 암호에 대해서 알아보자. 스키테일 암호(Scytale cipher) 고대 그리스의 역사학자 플루타르크에 따르면 약 2,500년 전 그리스 더보기…