본문 바로가기
반응형

전체 글389

Babel 을 Webstorm 과 터미널 에 적용하는 방법 # Compiler ES6 오늘은 Babel에 대해서 알아보구요. 이것을 Webstorm에 적용하는 방법에 대해 정리하려고 합니다. 먼저 Babel이 무엇인지부터 알아보도록 하겠습니다. 1. Babel Babel은 ES6로 작성된 파일을 예전버전의 브라우저나 환경에서 사용이 가능하도록, 컴파일해주는 Compiler입니다. 아래는 공식문서에 나오는 예 인데요. 아래와 같이, Lambda식으로 사용한 함수를 예전버전으로 컴파일 해주는 것 이지요. //Input [1, 2, 3].map((n) => n + 3); //Output [1, 2, 3].map(function(n) { return n + 3; }); 특히나 예전버전 브라우저에 대한 호환성을 만들어주는 코드로 컴파일해준다는 면에서, 저같은 개인개발자에게는 꼭 필요한 것이기도 합.. 2021. 4. 28.
Javascript Prototype 에 관하여 정리해 봅니다 # JS 상속 자바스크립트는 prototype을 베이스로 한 언어라고 하는데요. ES2015에서부터 class라는 단어가 나오기 시작하였지만, 여전히 Javascript는 prototype 베이스의 언어입니다. 오늘은 이러한 JS의 prototype에 대해서 알아보겠습니다. 1. prototype 과 prototype Chain 1-1. prototype 과 prototype Chain prototype을 이해하기 위해서 아래의 객체를 보도록 하겠습니다. students라는 객체에는 fullName이라는 속성만 지정되어 있는데요. 'students.' 이라고 입력하면, 본적없는 속성들이 IDE에 아래와 같이 나열되는 것을 볼 수 있습니다. 이렇게 객체만 만들어도 접근할 수 있는 property에는 다음과 같은 값들이 .. 2021. 4. 27.
Javascript의 Promise를 알아보자 #ES6 비동기코드 하면 나오는 단어중 하나가 콜백헬입니다. 코드의 많이 중첩되어서, 가독성이 매우 떨어지는 문제를 애기하는 것으로 JavaScript 에서도 여러가지 대안들이 나왔었습니다. 이에 대한 대안중 하나가 Promise인데요. 이것은 Javascript es6에 채택이 되었습니다. 오늘은 이 Promise에 대해서 정리해 보겠습니다. 1. Promise 미래에 발생할 비동기 이벤트의 처리의 완료 또는 실패를 나타내는 일종의 Future 객체를 가르킵니다. 콜백헬에 빠지지 않고, 비동기 처리가 성공한 경우와 실패한 처리를 구분할 수 있게 해주는데요. Promise는 비동기 operation에 대한 상태들을 아래와 같이 정의하고 사용합니다. 상태 내용 pending Promise의 initial (초기)상.. 2021. 4. 27.
Reverse Commit SourceTree 에서 되돌리는 Git 오늘은 커밋한 버전을 유지하면서, 과거로 되돌리는 Git Revert을 정리하려고 하는데요. SourceTree에서 사용하는 쉬운방법을 보도록 하겠습니다. 1. UI에서 Reverse Commit 1-1. 직전단계로 Reverse SourceTree의 커밋리스트에서 우측마우스버튼을 클릭하여 컨텍스트 메뉴를 보이도록 하면, 아래와 같이 reverse commit을 찾을 수 있습니다. 그럼 아래와 같이 확인창이 뜨고, OK를 눌러줍니다. 아래와 같이, Revert"돌아갈 커밋" 으로 Commit이 된 것을 볼 수 있습니다. 2021. 4. 23.
ViewBinding 구현방법 마스터하기 오늘은 ViewBinding을 구현하는 방법을 마스터해 보겠습니다. 1. Dependency설정ViewBinding을 사용하기 위해서,app레벨의 Build.gradle에서 설정을 해 주어야 합니다.buildFeature에 'viewBinding' 값을 'true'로  아래와 같이 설정해주면,ViewBinding을 사용할 수 있게 됩니다.  buildFeatures { viewBinding true }    2. Activity에서 사용하기2-1. XML파일이젠 Activity에서 findviewById를 대신해서 사용해 보아야 겠지요.먼저 Activity에서 사용할 xml파일을 보도록 하겠습니다.아래와 같이 "activity_main.xml" 파일로 되어 있습니다.  2-2. setContentView.. 2021. 4. 17.
DiffUtil 이용해서 업데이트 하는 RecyclerView 오늘은 DiffUtil에 대해서 정리해 보도록 하겠습니다. 1. DiffUtil 과 notifyDataSetChanged RecyclerView에 표현할 데이터를 업데이트하기 위해서 사용하는 것이 notifyDataSetChanged()라는 함수입니다. 표현할 데이터셋을 변경해주고 이것만 실행시키면 만사 오케이이기 때문인데요. 그런데, 뷰를 업데이트시키는 과정에서 비효율이 많이 발생합니다. 모든 데이터를 다시 그리기 때문인데요. 이를 개선하기위해, DiffUtil이 나왔습니다. 이것을 이용하면, 데이터들을 비교해서 변경된 부분만 효율적으로 업데이트 할 수 있습니다. 2. DiffUtil 구현 2-1. Adapter의 addAll 먼저 기존의 Adapter를 보겠습니다. 리스트에 뿌려줄 아이템들을 Acti.. 2021. 4. 15.
AWS Cognito 로 앱 로그인 구현을 준비하기 # UserPool 오늘은 AWS의 Cognito를 사용하는 방법에 대해서 알아보고, 추후 안드로이드 앱에서 적용할 수 있도록 설정해 보도록 하겠습니다. 먼저 Cognito에 대해서 간단히 알아보고 설정화면을 보도록 하겠습니다. 1. AWS Cognito 회원가입과 로그인 기능등의 유저인증기능을 서버에서 구현하는 것은 상당한 노력과 시간이 필요합니다. 그것을 AWS의 API를 이용해서 구현하여 보안문제에 들어가는 것을 시간과 인건비를 AWS의 요금과 바꾸는 서비스가 Cognito입니다. 큰 기업에서는 서버팀이더라도, 보안팀을 따로 두고 관리하는데요. 이 서비스를 이용하면, 꼭 이메일가입뿐만이 아니라, FaceBook등의 SNS서비스를 통한 가입도 구현이 가능해 집니다. 사실 Gmail서비스를 가지고 있는 Google의 Fi.. 2021. 4. 11.
S3 서비스에 대한 정리 # S3 버킷 AWS 오늘은 AWS의 S3서비스에 대해서 정리해보도록 하겠습니다. 1. S3 S3는 Simple Storage Service를 의미합니다. 간단한 저장 서비스라는 것이지요. 단순히 저장에 대한 서비스만 제공하는 것이 아니라, 저장한 데이터를 안전하게 분산하여서 99.999999999% Durability를 제공해준다고 합니다. 간단하게는 보면 S3는 우리가 저장하고자하는 파일과 폴더를 Bucket이라고 하는 단위에 저장하고, 이 Bucket은 여러 지역의 AWS서버들에 분산되어서 안전하게 저장되어집니다. 2. Bucket S3에서는 프로젝트별로 Bucket을 구분합니다. 각각의 Bucket안에 파일과 폴더들이 들어가게 되겠지요. S3의 공식문서를 보면, object라는 표현이 많은데요. S3에 저장하는 Fil.. 2021. 4. 10.
getLastLocation 으로 유저의 마지막 위치얻어오기 # Android 오늘은 Android의 location API중 유저의 마지막 위치를 알려주는 getLastLocation API와 주의할 점에 대해서 정리해 보도록 하겠습니다. 참고로 이 API를 이용하기 위해서는 위치권한을 동적으로 얻어야 하는데요. 위치권한관련해서 예전 Java시절의 권한얻는 글은 아래 링크를 참조해주시구요. 추후에 Kotlin으로 작성된 최근방식도 업데이트하도록 하겠습니다. >> Android 에서 동적 권한 얻기 #골치아픈 # Runtime Permission 1. getLastLocation 앱에서 위치정보를 필요로 할 때가 있는데요. 위치정보를 계속 실시간으로 업데이트 할 것이 아니라, 유저가 요청할 때 그때의 최신 위치를 기준으로 정보를 UI로 표현해주어야 할 때가 있는데요. 이 때 유용한.. 2021. 4. 7.
RecyclerView에서 고차함수 이용한 리스트아이템클릭 구현 인자로 함수를 받는 함수를 고차함수라고 하는데요. 영어로 HigherOrder Function이라고 하지요. 오늘은 이것을 이용해서 리스트의 아이템OnItemClickListener를 어떻게 이용하는지 정리해 보도록 하겠습니다. 먼저 기본적인 recyclerView를 설정하도록 하겠습니다. 참고로 여기서는 viewBinding을 사용하였습니다. viewBiding은 findviewById를 대체할 수 있는 방법인데요. 이와 관련해서는 다른 글에서 정리하도록 하겠습니다. 1. RecyclerView를 위한 기본적인 셋업 먼저 가장 기본적인 Recycler View를 세팅하도록 하겠습니다. 1-1. DataModel설정 먼저 Movie라고 하는 간단한 데이터클래스를 정의하겠습니다. 1-2. recyclerV.. 2021. 4. 2.
registerForActivityResult 구현방법 정리 # 예전 onActivityResult 오늘은 Activity간에 데이터를 주고받을 때 사용해야 하는 registerForActivityResult에 대해서 정리해 보도록 하겠습니다. 기존에는 사용하지 않던 API이어서 조금은 낯설지도 모르겠습니다. 1. 예전 구현방법 먼저, java로 작성한 예전구현 방법에 대해서 간단히 알아보고 가겠습니다. 이전 구현방법이 필요하지 않으시면 바로 2번의 새로바뀐 API구현 방법으로 가시면 됩니다. A액티비티와 B액티비티간에 데이터를 주고 받는다고 가정해 보겠습니다. 먼저 A액티비티에서, launch는 아래와 같이 했었습니다. startActivity가 아닌, startActivityForResult함수를 이용해서, intent와 임의의 RequestCode를 정의해서 두번째 인자로 전달해 주었구요. Int.. 2021. 4. 1.
자주 사용하는 ADB 명령어 정리 # logcat 오늘은 지난 ADB를 사용하는 방법에 대한 글에 이어서, 자주 사용하는 ADB명령어에 관해 정리해 보겠습니다. 참고로 지난 글은 아래 링크를 참조해 주세요. >> ADB(Android Debug Bridge)를 사용하는 방법 1. 앱 데이터 및 앱 삭제 1-1. 앱 데이터 삭제 앱 데이터 삭제는 아래명령어로 쉽게 할 수 있습니다. adb shell pm clear 1-2. 앱 삭제 adb uninstall 앱 데이터 삭제나 앱 삭제는 테스트를 위해서 자주 사용하는 명령어 인데요. 이렇게 삭제 함에도 불구하고, 안드로이드에서는 Cloud로 백업을 해서 SharedPreference값을 재설치해도 복원해서 사용하므로 데이터 값이 제거되지 않는 경우가 있습니다. 이럴 경우에는 Manifest에서 다음과 같이,.. 2021. 3. 9.
JSON to Kotlin Class 플러그인 통해 데이터 클래스 생성하기 API에 대한 작업을 하다보면, JSON형식의 데이터를 kotlin의 data클래스로 만들어야 하는 경우가 생깁니다. 비록 Kotlin이 Java에 비해 데이터 클래스의 코드길이를 상당히 줄여주었음에도, 이 단순 작업은 지루하면서도 시간이 걸리는데요. 이러한 단순작업을 간단하게 해주기 위해 플러그인을 사용할 수 있습니다. Kotlin Data 클래스를 위한 플러그인이 바로 Json To Kotlin Class플러그인 인데요. 오늘은 이것을 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Plugin 설치오기 안드로이드 스튜디오에서 플러그인을 얻어오기 위해서는 다음과 같은 과정을 거치면 되는데요. 가장 먼저 Preference창을 엽니다. 아래 이미지와 같이 좌측의 네비게이션 창에서 plugin을 .. 2021. 2. 21.
기존 프로젝트를 Bitbucket과 SourceTree로 올려보자 개발 과정에서 갑자기 아이디어가 떠올라,아무 생각 없이 안드로이드 프로젝트를 시작해 보다, 앱 출시를 목표로 본격적인 개발을 하게 되는 경우가 있습니다.  프로젝트 관리를 위해,기존 프로젝트 폴더를 Bitbucket과 같은 형상 관리 도구로 옮기는 작업이 필요한데요.오늘은 이 방법에 대해 정리하겠습니다. 1. 작업 순서기존 프로젝트를 bitbucket 으로 올려서 관리를 시작할 때는 다음과 같은 순서로 진행합니다.Repository를 생성기존 프로젝트에서 LocalRepository를 AddremoteRepository를 LocalRepository와 연결위의 순서대로 하나씩 보도록 하겠습니다. 1. remote Repository 생성먼저, https://bitbucket.org/에서 로그인을 해줍니다.. 2020. 10. 17.
targetSdkVersion 업데이트 Android10 Q API29 업데이트 강제사항 2020년 8월부터는 구글로부터 아래와 같은 이메일을 보신 분들이 있으실 텐데요. 추가로 해야할 테스트나 코드수정은 부담이지만, 정확히 2020년 11월 2일부터는 API29 이상을 타게팅하지 않으면 업데이트가 되지 않으므로 반드시 해 주어야 합니다. 따라서 미리부터 준비하고 테스트를 해서 유저에게 문제가 되지 않도록 해 주어야 할 텐데요. 오늘은 이것을 할 때 주의해야 할 점들에 대해서 정리해 보도록 하겠습니다. 1. targetSDKVersion수정 targetSdkVersion자체는 쉽게 수정할 수 있습니다. app레벨의 build.gradle을 아래와 같이 수정해 주기만 하면 되는데요. 먼저 targetSdkVersion을 29로 수정해 줍니다. compile시에 사용하는 SDK버전을 설정하는, .. 2020. 10. 9.
안드로이드앱 내부배포시 Play 프로텍트 문제 해결 # 내부 테스트 안드로이드 기기에 직접 배포해서 테스트를 할 때 Play프로텍트에 의해서 차단되는 문제가 발생하게 되는데요. 오늘은 이 문제를 해결하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Play 프로텍트 문제 아래는 안드로이드 기기의 download폴더에 apk파일을 저장해서 실행하면 나오는 화면입니다. 앱스토어에 정상적으로 배포되고 있는 앱이지만, 개발자계정의 GooglePlayConsole의 키가 포함되어 있지 않아서 생기는 문제입니다. 무시하고 설치해도 일부 기능은 사용할 수 있지만, 위치정보등이 정상적으로 동작하지 않으므로 제대로 테스트를 할 수 없는 경우가 많습니다. 2020. 10. 8.
Full Screen Intent Notificaiton 에 관한 정리 # 풀스크린 인텐트 오늘은 Full Screen Intent에 대해서 정리해 보도록 하겠습니다. 다만 Notification의 기본에 대해서는 다른 글에서 다루고 있으니, 이 글에서는 fullScreenIntent에 관한 부분만 다루도록 하겠습니다. 1. Full Screen Intent 전화가 오는 경우나 알람시계와 같이 특정시간에 즉시 그리고 분명하게 유저에게 알려야 하는 경우가있는데요. 스테이터스바에 노티를 보여주는대신에 해당 intent를 launch시켜주어야 할 때가 있습니다. 전체화면 노티라고 생각해 볼 수 있겠지요. 알람앱에게 있어서는 필수적인 부분이라고 할 수 있습니다. 알람이 울리는 즉시 사용자가 알아채고 알람을 Off시키는 노력을 해 주어야 하니까요. Notification.Builder클래스의 함수 AP.. 2020. 10. 2.
Android4를 지원하지 않는 라이브러리들 정리 # API21 이상 안드로이드 개발자들에게 많이 쓰이는 라이브러리인 OKHttp나 Retrofit에서는, 안드로이드5미만의 기기를 지원하지 않겠다고 합니다. 실제로 GalaxyS3같은 안드로이드4기기의 사용자들은 많이 줄어들고 있기는 한데요. 어떻게 해야할까요? 포기해야할까요? 우선 현재 기기들의 API별 분포부터 보도록 하겠습니다. 1. API21이하(Android5미만)를 포기해야 할까? Android Studio에서 Create New Project로 프로젝트를 생성하려고 하면, Minimum SDK를 설정해야하는 부분이 있는데요. 바로 아래에 Help me Choose라는 링크가 있는데, 이를 클릭하면 아래와 같이 가장 최신의 버전별 기기분포를 볼 수 있습니다. 일부 라이브러리들이 API 21이상을 지원하겠다고 하고.. 2020. 8. 5.