본문 바로가기
반응형

분류 전체보기362

Route53을 이용해 도메인과 ELB 를연결하는 방법 #AWS 오늘은 AWS의 Route53을 이용해 도메인과 ELB 를연결하는 방법에 대해서 정리해 보도록 하려고 하는데요. 먼저 Route53에 대해서 알아보도록 하겠습니다. 1. Route53 Route53을 처음 키게 되면, 아래와 같이 Route53의 기능들을 설명한 선택 화면이 나오는데요. 크게는 첫번째인 DNS(Domain Name System)을 관리하는 기능과, Traffic을 관리하고 서버상태를 관리해주는 기능이 있구요. 마지막으로는 Domain을 구입할 수도 있습니다. 참고로 AWS에서 도메인을 구매하는 것은, 과정도 편하고 수수료도 비싸지 않은 편이어서, 환율이 낮을때는 특히나 괜찮은 것 같습니다. 게다가 Hosted Zone까지 자동으로 설정을 해 주니 더욱 좋네요. 이 글에서는 DNS를 관리하.. 2020. 5. 1.
DNS(Domain Name System)에 대한 총정리 #IP주소 #DNS Server 오늘은 Web의 DNS(Domain Name System)라는 것에 대해서 정리해 보도록 하겠습니다. 1. DNS 세상에 존재하는 모든 컴퓨터들은 그것이 작은 스마트 폰이던 거대한 서버컴퓨터 이던, 인터넷에 연결되어 있다면, 하나의 host라고 할 수 있습니다. 이 host들이 서로 커뮤니케이션 하기 위해서는 숫자를 이용합니다. 이 넘버들이 바로 IP주소(예> "3.242.23.132")라고 하는 것 인데요. 그런데 이 넘버들은 사람이 일일히 기억하고 구분하기 어렵습니다. 마치 홍길동씨 전화번호를 등록하고 홍길동씨로 검색하여 찾아서 전화를 걸듯이, 컴퓨터도 찾아갈때, 숫자로 구성된 IP주소보다는 "test.com"과 같이 Domain Name을 이용하도록 한 것이지요. 2. 본인의 컴퓨터에서 DNS구현 .. 2020. 4. 30.
RDS 백업과 복원하기 #AWS AWS에서 RDS쓰면서 해야하는 백업과 복원도 알아 두어야 하는데요. 오늘은 이 부분에 대해서 정리해 보겠습니다. 1. RDS 백업 먼저 Services > RDS에서 왼쪽의 Instances를 선택해 줍니다. 나오는 화면에서 백업하고자 하는 DB Instance 를 선택하고, Actions 드롭다운 메뉴를 선택해 줍니다. (혹은 Instance위에서 우측마우스 버튼을 눌러주어도 됩니다.) 나오는 메뉴 중 take snapshot을 아래 이미지와 같이 선택해 줍니다. 그럼 아래와 같은 이미지가 나오는데요. Snapshot의 이름을 정해주고, 우측하단의 take snapshot버튼을 눌러줍니다. 주의 해야할 것은, 백업을 하는동안 DB에 액세스가 되지 않을 수 있다는 사실입니다. 이제, RDS > Snap.. 2020. 4. 28.
EC2 시작시 사용할 Shell Script 및 Cloud-init 작성하기 #AWS 오늘은 EC2 최초 실행시에 사용할 Shell Script의 사용방법에 대해서 정리해 보겠습니다. 새로 부팅할 서버를 만들 때 마다, 서버에 접속해서 서버실행 명령어를 내리는 것은 비효율적일 수 있습니다. 이럴 때, Shell Script를 사용해 주어서 자동으로 필요한 패키지 설치등이나, 웹서버 실행을 해 주면 되는데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 본격적으로 Script를 작성하기 전에, EC2인스턴스의 이미지를 생성해서, EC2이미지로부터 생성할 때 스크립트를 적용하는 것에 대해서 정리해 보겠습니다. 참고로 EC2를 생성하는 구체적인 방법에 대해서는 아래글을 참조해 주세요. >> AWS EC2 서버 론칭하는 방법 정리 1. Image 생성 및 EC2 론칭 먼저 EC2 > Inas.. 2020. 4. 27.
Script를 실행하는 방법:Linux Bash Shell Script 오늘은 Bash 스크립트를 실행하는 방법에 대해서 정리해 보도록 하겠습니다. 1. 실행할 스크립트 작성 먼저 실행할 스크립트를 작성하겠습니다. 간단하게 "Hello World"를 출력하는 Script를 작성할텐데요. Shell Script파일 작성시 확장자는 다음과 같습니다. .sh 이번 테스트를 위해서, touch 명령어로 'test1.sh'라는 이름의 파일을 생성하겠습니다. touch test1.sh 파일을 생성하고 nano나 vi 에디터로 아래 코드를 작성해 보겠습니다. 첫줄의 "#!/bin/bash"는 실행하는데, bash 쉘을 이용한다고 선언하는 것 입니다. 나머지는 심플한데요. "TEST"라는 변수에 "Hello Test"라는 단어를 저장하고, echo명령어를 이용해서 TEST라는 변수에 담긴.. 2020. 4. 25.
ELB(Elastic Load Balancer) 생성해서 부하분산 적용하기 #AWS AWS를 이용하여 실제 서비스에 적용한다고 할 때, 필수적이라고 할 수 있는 부분 중 하나가, load를 분산해주는 Load Balancer 인데요. 트래픽이 늘어나거나, 줄어들었을 때, 그에 맞추어서 Instance의 수를 늘린다고 해결되는 것이 아니라, 유저의 트래픽을 늘어난 Instance에 분산시켜 주어야 하기 때문인데요. 오늘은 부하분산을(Load Balancing) 해주는, Elastic Load Balancer에 대해서 정리 해 보겠습니다. 1. ELB 생성 먼저 Services > EC2에서, Load Balancing> Load Balancers를 선택해 줍니다. 우측에 나오는 화면에서, 파란색의 create Load Balancer버튼을 눌러서 생성을 시작합니다. 그럼 아래와 같이 Lo.. 2020. 4. 24.
EC2에서 RDS서버에 접속하기 #MySQL Client #AWS EC2와 RDS Instance를 론칭하였다면, VPC내의 EC2에서 RDS에 접근할 수 있도록 해 주어야, 작업을 하는 것이 용이한데요. 오늘은 EC2에서 MYSQL이 설치된 RDS에 접근하는 방법에 대해서 정리해 보겠습니다. 참고로 RDS서버를 생성하는 방법은 아래 글을 참조해 주세요. >> RDS 관계형 데이터베이스 서버 생성하기 #Free Tier #AWS 1. MYSQL CLIENT 설치 EC2(Ubuntu)에서 MySQL서버에 접속해서 데이터를 보기위해서는, MySQL 클라이언트가 설치되어 있어야 하는데요. 먼저 Ubuntu에서 MySQL Client를 설치해 주겠습니다. 설치를 하기전에 apt-get update는 좋은 습관이지요. sudo apt-get update; 이제 mysql-cli.. 2020. 4. 23.
RDS 서버 생성하는 방법 정리 #관계형 데이터베이스 #Free Tier #AWS 오늘은 관계형 데이터베이스 서버인, AWS의 RDS를 생성하는 방법에 대해서 정리해 보겠습니다. 정리하면서 Free Tier에 해당하는 옵션을 설정할 수 있도록, 해당하는 옵션들에 대해서도 알아보도록 하겠습니다. 1. 자주 쓰이는 시스템 에러로그 먼저 콘솔화면에서 아래와 같이 Services > Database > RDS를 선택해 줍니다. 나오는 화면에서 왼쪽 메뉴에서 Databases를 선택해 주면 아래와 같은 화면을 볼 수 있는데요. 이제 Create database를 선택해 줍니다. 그러면, AWS에서 제공할 수 있는, 데이터베이스 서버 엔진의 종류와 옵션을 선택하라고 나옵니다. 한가지 중요한 것은 Amazon Aurora는 Free Tier가 적용되지 않는다는 점 인데요. 아래 이미지의 아랫부분을.. 2020. 4. 22.
NGINX에 대한 정리 #Upstream #Reverse Proxy #Proxy_pass 오늘은 웹서버인 Nginx에 대해서 정리해 보도록 하겠습니다. 1. NGINX 의 용도 주로 NodeJS같은 웹 애플리케이션 앞에 배치되어 사용되어 지는 NGINX는 주로 어떻게 사용되어 지는 것 일까요? 개인적으로 주요 용도는 아래 두가지를 볼 수 있을 것 같습니다. 1-1. 정적인 리소스를 Serve해 주는 것 유저로부터 어떠한 요청이 들어왔을 때, 이미지나 CSS같은 정적인 리소스(Static Content)에 대한 request들을 NGINX에게 맏기고, 동적으로 계산되거나 전달되어야 하는 것들은 NodeJS같은 애플리케이션 서버에게 맡깁니다. 마지막으로 데이터베이스에 대한 리퀘스트들을 위해서 DB서버를 사용하는 것이지요. 이렇게 분할해서 보다 효율적으로 서버를 관리하는 용도로 NGINX를 사용합.. 2020. 4. 21.
AWS EC2 서버 론칭하는 방법 정리 보통 AWS를 시작하고 제일 먼저 하는 것은, EC2서버를 론칭 해 보는 것인데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 1. EC2 론칭하기 FreeTier에 해당하는 Instance를 선택해서 EC2 서버를 론칭할 텐데요. (참고로 FreeTier에 대한 내용은 아래 링크를 참조해 주세요.) >>AWS 프리티어(Free Tier) 와 사용량 확인하는 방법 1-1. Launch Instance 먼저, 메인화면의 콘솔에서 Services> EC2를 선택해 줍니다. 클릭하면 아래와 같은 화면을 볼 수 있을 텐데요. 왼쪽 메뉴화면에서 Instances > Instances를 선택해 줍니다. 그리고 우측 화면에서 Launch Instance를 선택해 줍니다. (최근에 AWS콘솔화면이 자꾸 바뀌고 있.. 2020. 4. 16.
AWS사용시 MFA(멀티팩터인증) 사용하여 보안을 강화하는 방법 #2FA #Google OTP AWS와 관련해서 해킹으로 인하여 과하게 요금을 부과당하게 되었다는 이야기를 가끔 커뮤니티에서 보게 되는데요. 특히 일반적인 비밀번호만 설정하였을 경우 더욱 그렇습니다. 이에 대비해서 훨씬 안전한 멀티팩터인증을 사용해 좀 더 보안을 강화할 수 있는데요. 오늘은 이 방법에 대해서 간단히 정리해 보도록 하겠습니다. 1. MFA 설정 AWS를 많이 사용하지 않으신 분들에게는 어디서 이것을 설정할지 조금 어려울 수 있는데요. 이에 과한 설정은 "내 계정"에 있지 않구요. 내 보안 자격증명에 있습니다. 아래 이미지에서 가르키는 대로 내 보안 자격증명을 클릭하면 나오는 메뉴에서, 멀티 팩터 인증(MFA)를 클릭해 줍니다. 그럼 아래와 같이, MFA활성화 버튼이 나오게 되는데요. 이를 클릭해 줍니다. 그럼 어떤 MF.. 2020. 4. 15.
AWS FreeTier 와 사용량 확인하는 방법 #EC2 #RDS AWS를 시작하게 되면서, 가장 먼저 알아두어야 할 것이 바로 프리티어와 그 사용량입니다. AWS는 1년동안 무료로 사용할 수 있는 양을 정해서, 그 양을 벗어나면 과금을 하고 있기 때문인데요. 초기에 학습용으로 혹은 테스트 용도로 사용하고 있다면, 그 양을 벗어나지 않도록 주의를 해야 합니다. 오늘은 AWS FreeTier에 대해서 알아보고, 사용량을 확인하는 방법에 대해서 정리해 보겠습니다. 1. AWS FreeTier AWS 프리티어 제품들은 크게, 1년동안 무료인 제품과 항상 무료인 제품으로 나누어 볼 수 있는데요. 1년동안 무료인, EC2나 S3의 경우 잊지말고, 기간을 생각해 놓아야 합니다. 무료라고 항상 켜두면 되는 것이 아니고, 특정 크기나 조건의 인스턴스를 지정된 시간안에서 사용할 때만 .. 2020. 4. 13.
AWS에서 NodeJS 환경 구축하고 NPM 모듈 설치하기 오늘은 AWS에서 NodeJS를 사용할 수 있도록, 서버에 AWS를 설치하고, 필요한 설정을 하는 것에 대해서 정리해 보겠습니다. 설치 환경은 EC2 Instance의 Ubuntu를 기준으로 합니다. 1. NodeJS설치 아래 사이트에서는 NodeJS를 ubuntu에서 설치할 수 있는 방법이 안내되어 있는데요. (https://github.com/nodesource/distributions/blob/master/README.md) 아래와 같은 화면을 볼 수 있습니다. 현재 LTS인 12.x버전의 설치 방법에 대해서는 아래와 같이 나와있네요. 위에서 나온대로, 아래와 같이 명령어를 사용하겠습니다. curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash.. 2020. 4. 12.
Git 명령어 중 자주 사용하는 것들 모음 sourceTree같은 GUI프로그램만 사용하다 보면, 명령어가 가물가물 해지는데요. 오늘은 터미널에서 자주 사용하는 git명령어들에 대해 정리해 보도록 하겠습니다. 1. Git의 기본 명령어 Git을 사용할 때 git init과 같은 가장 기본적으로 사용하게 되는 명령어들을 먼저 정리해 보도록 하겠습니다. 1-1. git저장소 설정 git init명령어를 통해서, .git이라고 하는, git저장소 디렉토리를 생성해 줍니다. 프로젝트를 git으로 관리하고자 할 때, 가장 먼저 사용하는 명령어가 되겠지요. git init 프로젝트의 디렉토리에서 git init을 실행하면, 아래와 같이 Initilialize되었다는 문구를 보게 됩니다. 1-2. User이름과 이메일 설정하기 git에 유저의 이름과 이메일을.. 2020. 4. 10.
Google Font이용해서 CSS에서 Import하는 방법 #웹폰트 오늘은 GoogleFont를 이용해서, 여러 종류의 무료 폰트들을 CSS에서 Import해서 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Google Font 사이트 Google Font를 이용하면, 저작권이 오픈된 폰트들에 대해서 CSS에서 import 해서, 사용하는 것이 가능한데요. 대표적으로 배달의 민족으로 유명한 우아한 형제들의 주아체, 도현체 같은 폰트 그리고, 네이버에서 제공하는 나눔 고딕이나 명조같은 폰트들이 있겠습니다. 먼저 검색창에서 아래와 같이 검색을 합니다. 저는 Jua체를 검색해 보았네요. 나온 리스트 중에 Jua체를 선택해 주면 아래와 같은 UI를 보게 되는데요. 리스트에 보면 해당 폰트에서 선택 가능한 스타일들이 나옵니다. 우측에 Select this style을 선.. 2020. 4. 3.
A Record와 CNAME Record의 차이를 알아보자 AWS나 Firebase를 다루다가 보면 DNS서버와 관련해서, A record같은 용어를 접하게 되는데요. 오늘은 이 A record와 CNAME에 대해서 정리해 보도록 하겠습니다. 1. A Record A는 Address약자로 주소 기록이라고 할 수 있는데요. Domain 이름에 IP주소를 매핑시켜서 연결시킬 때 사용합니다. 32bit IPv4어드레스를 반환 하구요. 128bit IPv6어드레스타입의 ip주소를 반환하는 경우는 aaaa타입이라고 합니다. 아래와 같이 하나의 도메인에 하나의 IP주소가 연결되어 있습니다. testous.com => 113.232.132.13 2. CNAME Canonical name의 약자인데요. 우리말로 하면 기본형 혹은 원형의 이름이란 뜻이 될 것 같네요. 필요에 의.. 2020. 4. 2.
Firebase Storage Security Rule 에 대한 정리 #보안규칙 오늘은 Firebase Storage Rule에 대해서 알아보도록 하겠습니다. AWS의 S3를 쓰시는 분들도 많이 계시지만, Fireabse의 Stroage를 쓰시는 분들도 많이 계실텐데요. 오늘은 Firebase Storage를 사용할 때 가장 먼저 만나게 되는, Rule 정하는 코드에 대해서 알아보도록 하겠습니다. 1. Firebase Storage의 첫 화면 Firebase의 좌측 네비게이션에서 storage를 선택한 후 나오는 화면에서, 시작하기를 누르면 가장 먼저 보게되는 화면은 아래의 이미지와 같습니다. 시작하자마자, 보안규칙에 관한 안내가 나오는데요. 여기서 바로 바꿀 수는 없지만, 가볍게 보고 가도록 하겠습니다. 먼저 아래에 디폴트로 나오는 보안 규칙에 관한 코드에서, 가장 중요한 부분은 .. 2020. 3. 31.
Firebase 호스팅서비스 테스트 및 디플로이(Deploy) 오늘은 Firebase로 호스팅을 해서 디플로이 하는 방법에 대해서 정리해 보겠습니다. Firebase호스팅은 NodeJS를 기반으로 하고 있기 때문에, 패키지 설치방법과 같은 NodeJS에 대한 기본적인 사용법을 알고 있어야 하는데요. 이 글에서 NodeJS까지 다루기에는 너무 큰 주제이므로, Firebase를 시작해서 Deploy하는 부분에 대해서만 다루도록 하겠습니다. 1. Firebase생성하기 먼저 Firebase에서 새로운 프로젝트를 생성합니다. 아래 링크에서 Firebase로 접속하면 아래와 같은 화면을 보게 되는데요. >> https://console.firebase.google.com/ 2020. 3. 29.
Coroutine을 이용해 Parallel한 네트워크 호출 #Kotlin Kotlin의 Coroutine을 이용하여서 NetworkCall을 할 경우, 동시에 2개 혹은 3개의 네트워크 API를 호출해야 할 경우 어떻게 해야 할까요? 당연히 A를 먼저하고 끝나면 B를 하는 Sequential한 방법은 사용하지 않을 것이구요. Parallel하게 동시에 호출한 다음 return된 값들을 이용할 텐데요. 오늘은 이것의 방법에 대해서 정리해 보도록 하겠습니다. 1. async와 successHandler Paralllel하게 호출하여 비동기로 결과 값을 받기 위해서는, async 코루틴 빌더를 사용하여야 하는데요. 1-1. async와 successHandler의 사용 동시에 2개의 호출을 한다고 가정해 보겠습니다. 임의의 successHandler를 만들어서 async빌더에서 r.. 2020. 3. 28.
코틀린 Coroutine으로 네트워크 Retry 구현하는 방법 코틀린의 Coroutine으로 네트워크 호출을 할 경우, Retry는 어떻게 구현해야 할 까요. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 1. \ 2020. 3. 24.
undefined 와 null 의 차이점은 무엇인가요? #Javascript Java나 Kotlin같은 언어를 배운 후에, Javascript를 배울경우 생소하게 다가오는 타입이 undefined입니다. 오늘은 이 undefined가 Javascript에서 어떠한 의미를 가지고 있고, null과는 어떻게 다른지 정리해 보겠습니다. 1. undefined 먼저, Undefined에 대해서 알아보겠습니다. 우리말로 정의되지 않았다는 의미인데요. MDN의 공식문서를 참조해 보면, 아래와 같이 primitive타입중의 하나이면서, writable하지 않는 타입이라고 나와있습니다. Javascript의 변수를 선언해 놓고 아무값도 대입하지 않고도 로그를 찍어 보겠습니다. 나오는 값은 null이 아니라 undefined가 됩니다. 2020. 3. 23.
자바스크립트의 var, let, const 를 알아보자 JavaScript에서 ES6로 넘어오면서, let과 const 까지도 알아야하는데요. ES5,6는 거부할 수 없는 대세여서일까요, 예제 코드들을 보면 let과 const를 활용하고 있는 것이 대부분 입니다. 이제 유연한 var만으로는 버티기 어렵습니다. 오늘은 var 와 새롭게 나온 let, const에 대해서 비교, 정리해 보도록 하겠습니다. 1. 유연성의 대명사 var vs 깐깐한 let, const 유연하기로 유명한 var를 먼저 보기로 하겠습니다. 같은 변수에 var를 두번 선언하더라도 가장 마지막에 선언한 변수에 담긴 값으로 에러없이 출력됩니다. 결과는 역시 varTest2로 나오고 있습니다. 하지만 let이나 const를 두번 선언한 경우에는 아래와 같이 에러가 뜨게 됩니다. 2. var와는.. 2020. 3. 22.
NPM 의 package.json 을 이용한 효율적 설치 방법 #NodeJS NPM을 이용해서 express 같은 모듈을 설치하게 되는데요. 프로젝트를 생성할 때마다 자주 쓰는 모듈들을 일일이 설치하는 것이 여간 번거로운 일이 아닙니다. 오늘은 NPM의 기본명령어들을 살펴보고, package.json을 이용해서, 자주 쓰는 모듈을 한 번에 설치하는 방법에 대해서 정리해 보겠습니다. package.json 을 이용한 설치방법을 바로 보고 싶은 분들은, 3번 로 바로 이동하시면 됩니다. 1. npm 기본 명령어들 1-1. 버전 체크 먼저 npm --version 을 통해서, npm버전은 확인해 주시어야 합니다. npm --version 현재 버전은 9.6.7 이 나오는군요. 2020. 3. 21.
Android WebView 를 설정하고 로딩하는 방법을 정리해보자 때로는 안드로이드에서 web의 컨텐츠를 보여주어야 할 경우가 있습니다. 구글의 공식문서에는 가능하면 그냥 크롬같은 웹브라우저를 쓰라는 말도 적혀있지만, 경우에 따라서 유저들에게 해당 앱의 영역을 넘어가서, 관련 컨텐츠를 경험시키는 것이 부담스러울 때가 있기 때문이지요. 오늘은 webView를 구현하는 방법에 관해서 정리해 보도록 하겠습니다. 1. Manifest 선언 본격적으로 WebView에 대해 알아보기 전에 Manifest에 permission에 관해서 선언할 것 이 있습니다. "android.permission.INTERNET"인데요. WebView를 사용하기 전에, Manifest에 이 부분이 명시적으로 선언이 되어 있어야 합니다. 이제 준비가 되었으니, WebView를 사용해 보도록 하겠습니다.. 2020. 3. 19.
RadioButton과 RadioGroup에 대한 정리 #Android 오늘은 Android UI중에서도, RadioButton에 대해 정리해 보도록 하겠습니다. RadioButton은 검색필터 옵션 설정같이, 항상 하나의 옵션이 선택되 있어야 하는 경우에 사용하게 되는데요. 이를 구현하기 위해서는 RadioGroup과 RadioButton을 이용해 주어야 합니다. 1. RadioGroup과 RadioButton RadioButton을 사용하게 위해서는 이것을 감싸는 RadioGroup으로 감싸주어야 하는데요. 그 이유는 여러개의 RadioButton중 하나가 선택되면, 이전에 선택된 RadioButton은 해제해 주어야 하는데요. 이것을 RadioGroup이 해 주기 때문입니다. 그럼 RadioGroup의 HierArchy 를 보도록 하겠습니다. 다루기 쉬운 LinearL.. 2020. 3. 16.
Android Studio 에서 기억해야 하는 핵심 단축키 안드로이드 스튜디오를 사용할 때 코드사용에 큰 도움을 주는 단축키들이 많이 있습니다. 이런것들은 자주사용하면서 기억해두면 생산성이 높아지는데 큰 도움을 주는데요. 이 글에서 정리해 보도록 하겠습니다. 1. 선언 및 Usage 찾기 >> Cmd + B (Usage 찾기) 해당 코드가 선언된 곳이나 사용된 곳을 찾도록 도와줍니다. 2. 관련 Action 보여주기 >> Alt + Enter 예를 들어서, Kotlin에서 if문에서 return을 밖으로 꺼내는 것이나, expression body형태로 고칠 때, Action의 도움을 받아서 쉽게 코드를 수정할 수 있습니다. 2020. 3. 14.
Activity Manifest 설정에 대한 정리(launchMode, screenOrientation, configChanges 등) 안드로이드는 Activity라는 독특한 구조를 가지고 있는데요. 이 Activity를 launch할 때의 환경값이나, stack에 쌓이는 방법등을 정의할 수 있는 TAG가 있습니다. 오늘은 이것들에 대해서 정리해 보도록 할텐데요. 하지만, Manifest에 쓸 수 있는 attribute은 정말 많기 때문에, 그 중 project에 자주 사용할 만한 값들을 중심으로 정리해 보도록 하겠습니다. 1. screenOrientation 화면의 Orientation값을 설정해 줍니다. 보통 개발의 복잡도를 낮추기 위해서, 초기에는 아래와 같이 Portrait모드(세로 모드)를 많이 사용해 줍니다. 하지만, android studio3.6부터는 ignore태그를 아래와 같이 사용하지 않으면, fullSensor 혹은.. 2020. 3. 10.
Coroutine의 Async와 await 사용시 Exception Handling에 관하여 #Kotlin Coroutine을 사용하면서 한가지 주의해야 할 부분이 있는데요. Async와 await메소드를 사용할 때, Exception Handling에 관한 부분입니다. 오늘은 이것에 관해서 정리해 보겠습니다. 1. await와 Exception Handling Async와 await를 사용하면 예상하지 못한 방식으로 Exception이 catch가 되지 않고, app이 Crash가 나는 현상이 발생하는데요. 참고로 이것은 공식문서에서와 같이 GlobalScope를 사용하면 발생하지는 않는 문제입니다. 다만, GlobalScope를 실제 프로덕트에서 사용하는 경우는 많지 않을 것이기 때문에, 이경우는 제외하였습니다. 코드를 보면서 문제를 파악해 보도록 하겠습니다. 아래와 같이 async블록에서 IOExcept.. 2020. 2. 16.
Kotlin Exception 처리 방법 # RunCatching 과 try, catch 오늘은 Kotlin에서의 Exception처리에 대해서 정리해 보도록 하겠습니다. Java에서는 Exception처리를 위해서 Try Catch문을 사용했었는데요. Kotlin에서는 Try Catch 뿐만이 아니라, RunCatching API를 제공해 주고 있습니다. 오늘은 Kotlin의 Exception처리방법들인, Try Catch와 RunCatching에 대해서 정리해 보도록 하고 있습니다. 1. Classic한 Try와 Catch 그리고 finally 아래 이미지는 Java시절부터 사용해왔던 기본적인 try, catch 그리고 finally구조입니다. Try는 Exception 발생할 수 있는 코드를 감싸는 블록이구요. Catch는 Exception이 발생된 후 이를 핸들링 해주는 블록입니다. .. 2020. 2. 13.
WindowManager$BadTokenException 대응하기 Firebase의 CrashLytics에서 BadTokenException리포트를 받은 적이 있는데요. 오늘은 해당 Exception에 대해서 분석하고 대응해 보도록 하겠습니다. 1. 실제로 받은 BadTokenException 실제로 받아보았던 BadTokenException은 아래와 같은데요. 먼저 가운데에 at android.os.Handler.dispatchMessage(Handler.java:102)를 통해서, Handler객체가 Toast를 보여줄려고 했었다는 것을 알 수 있습니다. Toast를 보여주려고 하면서, view를 윈도우매니저에 add 하려고 하는데요. setView를 viewRoot에 하려고 하다가 BadTokenException을 받게 된 것이지요. 힌트를 더욱 얻기 위해서, E.. 2020. 2. 6.