프레임워크 12

AWS EC2에 MySQL 배포하기

도커 컴포즈로 서버랑 같은 컴퓨터에 DB를 띄우려고 씨름하다가, 내가 왜 확장성도 없이 이런짓을 하나 싶어서 DB를 별도 인스턴스로 분리하기로 결정했다. 그리고 DB 설정 오류 잡는데에 3일이 걸렸다.한번 설정 꼬이면 에러가 산으로 가서 인스턴스를 몇번을 지웠다 만들었는지 모르겠다.삽질을 하며 알아낸 것은 아래 스텝을 무조건 지켜야한다는 것이다. 1. EC2 인스턴스 생성Amazon Linux 쓰면 괜히 꼬이는 것같아서 ubuntu 이미지를 사용하였다.그리고 도커를 사용할 계획이라면, t2.small 이상을 선택해야 시스템 오버헤드를 감당하는 것 같다. 좀 내리면 네트워크 설정이 나오는데, 우측 상단의 편집을 눌러서 인바운드 / 아웃바운드 모두 IP, 주요포트를 열어주자. 인바운드 주요포트- 22 : 우..

프레임워크/AWS 2025.03.27

AWS ECR로 개인 repository에 도커 이미지 관리하기

Docker는 컨테이너를 만들어내는 이미지라는 틀을 가지고 있다.그리고 모든 이미지는 Docker hub에 'docker push' 명령어로 올려서 모두와 공유할 수 있다.하지만 이미지를 우리 팀만 써야하는 경우라면 Github에서처럼 private repository가 필요해진다.도커에 돈을내고 private repository를 만들수도 있지만, 프리티어가 적용되는 AWS ECR이라는 대안도 있다.ECR에 이미지를 올리고, 또 다운받는 과정을 정리해보았다. 1. 개발 컴퓨터에서 이미지 빌드하기docker build --platform linux/amd64 -t 이미지이름:태그 실행위치먼저 위 명령어로 이미지를 생성한다. 각 옵션과 아규먼트를 자세히 설명하면 아래와 같다. -t : 이미지의 이름과 태그..

프레임워크/AWS 2024.12.23

AWS Elastic BeansTalk 삭제 후에도 요금 청구되는 경우

Elastic Beanstalk (aka EBS)는 백엔드 배포를 위한 AWS 자원을 자동으로 생성하여, 신속한 배포를 돕는 서비스이다.EBS 자체에는 요금이 청구되지 않지만, 얘가 생성하는 AWS 자원들이 매우 비싸고, 프리티어 적용이 안되기 때문에 요금이 부담되는 경우가 있다. 문제는, EBS 콘솔에서 삭제를 누른다고 해도 관련 자원들은 삭제가 되지 않아 요금이 계속 올라간다.이런 경우 직접 자원을 정리해줘야하는데, 그 방법에 대해 정리해보려고 한다. 1. 청구서에서 자원 종류 및 region 확인우측 상단의 내 계정 정보를 누르고, '결제 및 비용관리'로 들어간다.  그럼 이렇게 총 요금이 보이지만, 어디서 요금이 발생했는지는 알수 없다.좌측 탭에서 '청구서'를 누르거나 스크롤을 내려보자. [+] ..

프레임워크/AWS 2024.12.23

Dockerfile에서 bash 명령 사용하기 | RUN, CMD, ENTRYPOINT 차이

도커는 이미지라는 틀을 만들고, 이를 사용해서 가상 머신을 만들어내는 식으로 동작한다.이때 이미지를 정의하기 위해 Dockerfile을 문법에 맞게 적어줘야하는데, 여기서 쉘 명령어를 사용하기가 여간 까다롭지 않다.도커파일에서 쉘 명령어를 입력하는 형식과, 사용할 수 있는 커맨드의 종류 두가지를 모두 정리해보았다. 1. Shell form과 exec formDockerfile 예시를 읽다보면 똑같은 일을 하는 명령을 두가지 방법으로 적어놓은 것을 볼 수 있다.FROM centos:7# 컨테이너 실행 직후 컨테이너에 running... 이라는 문구를 두번 출력한다.CMD "echo 'Hello from shell form!'; exec bash" # shell formCMD ["/bin/bash", "-c..

compiler version error 원인

아래와 같은 에러가 발생했고, 세부적으로는 NoSuchMethodError 유형이라고 떴다. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner .GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction 더보기 java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.common.messages.MessageCollector.report$default(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.cli.common.messag..

Android와 이미지 형식

Bitmap과 Vector 사진을 컴퓨터에 저장하는 형식은 크게 비트맵/벡터로 나눌 수 있다. 1. 비트맵방식 (Bitmap) : 그림을 아주 작은 화소(픽셀)로 분해하고 각 화소의 색상과 위치를 기록해 저장하는 방식. 비트의 지도라는 뜻으로 픽셀을 하나씩 채워가면서 전체를 표현한다. ex) JPG, PNG, GIF, WEBP 2. 벡터방식 : 그림을 구성하고 있는 점이나 직선, 곡선 등의 위치와 기울기 등을 산술적인 데이터로 기록해 저장하는 방식. 파일 하나로 여러 화면 밀도에 대응할 수 있어 apk 크기를 줄일 수 있다. 복잡한 이미지는 표현할 수 없어서 간단한 도형이나 로고 등에 주로 사용한다. API 20 이상에서부터 Vector Asset Studio로 SVG, PSD를 프로젝트에 벡터 이미지로..

CoordinatorLayout에서 겹쳐진 뷰의 터치 이벤트를 처리하는 방식

BottomSheet를 구현하는 도중, BottomSheet 뒤에 가려진 버튼들이 클릭이 가능해지는 버그가 있었다. 스택 오버플로우의 글을 읽고 바텀시트에 clickable="true"를 추가해서 간단히 해결했지만, CoordinatorLayout에서 터치를 가로채는 방식에 대해서 정리해야겠다는 생각이 들었다. coordinatorLayout에서 상위 뷰가 하위 뷰의 터치를 가로채는 동작은 아래에 보이는 CoordinatorLayout.Behavior 를 상속받아서 구현한다. public class CoordinatorLayout extends ViewGroup implements NestedScrollingParent2, NestedScrollingParent3 { ... public static ab..

Jetpack Navigation Safeargs 사용법

navigation에서 argument는 프래그먼트에게 속성을 붙여주는 것과 비슷하다. fragment별로 앱바 종류를 argument에 저장해서 다른 앱바를 적용하게 할 수도 있고(Android10B MainActivity 참고) 다른 프래그먼트로부터 받을 데이터가 있으면 그걸 argument로 저장해서 받을 자리를 만들 수도 있다.(argument가 마치 우유 바구니같은 역할을 하는 것) 그러나 safe args를 통해 전달하는 데이터는 가능한 작은 값이어야한다. ex) 어떤 object를 줘야할 때, 오브젝트 대신 그 오브젝트를 찾을 수 있는 key 값이나 인덱스를 준다. 만약 대량의 데이터를 공유하는 화면인 경우 같은 뷰모델을 사용하는 것을 고려하자. 우리가 하는 디테일 정보 표시같은 경우 작은 ..