본문 바로가기
반응형

분류 전체보기246

Scoped Storage 에 관한 총정리 # Shared Storage 외부저장소 Android10 버전부터 앱에서 앱 외부 파일에 접근하는 방법에 큰 변화가 오게 되었습니다. ScopedStorage때문인데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 1. 과거 Storage 구성 먼저 과거의 Storage 구성에 대해서 알아보도록 하겠습니다. 이 부분은 기존구조의 History를 알고 Scoped Storage의 필요성을 이해하기 위한 부분으로, Scoped Storage에 대해서 바로 알고 싶은 분들은 아래 2로 바로 넘어가셔도 됩니다. 과거에 Storage는 다음과 같이 크게 2가지로 구분해서 사용하고 있었는데요. 구분 내용 앱내 Private Directory (app-specific directory) 외부 앱에서는 접근할 수 없고, 내부앱에서만 접근해서 사용하는 영.. 2021. 12. 28.
Dagger를 통한 Dependency Injection 구현 오늘은 Dependency Injection에 대한 지난 글에 이어서, Dagger를 통해서 어떻게 이를 구현하는지 정리해 보려고 합니다. 혹시 이전 글을 읽지 못하신 분들은아래 글의 링크를 참조해 주세요. Dependency Injection(DI)에 대해서 알아보자 Dagger1은 Retrofit등 유명한 라이브러리를 개발한 Square사의 작품이구요. 현재 사용되는 Dagger2는 구글에서 포크하여 개발하고 있습니다. 무조건적인 신뢰는 좋지 않습니다만, 이들 회사의 네임밸류와 포트폴리오 만으로도, 라이브러리에 대한 믿음이 생기는 건 어쩔수가 없네요. 그럼 Dagger를 구현하는 방법에 대해서 정리해 보도록 하겠습니다. 1. dagger2를 통한 구현준비 1-1. 라이브러리 Implement 라이브러.. 2021. 12. 22.
Pug 또는 Jade 설치 및 기초적인 문법들 정리 # NodeJS NodeJS의 UI템플릿 엔진으로 pug를 사용하고 있는데요. Jade로 알려져 있던 것이, 이름에 대한 권리 때문에 Pug로 바뀐것으로 알고 있습니다. 오늘은 이 pug의 문법을 기초부터 하나씩 정리하기보다는, 자주 사용하는 것들을 위주로정리하고, html변환기의 도움을 받아서 빠르게 문법을 작성하는 방향으로 정리해 보겠습니다. 다만, NodeJS와 Express등에 대한 사용법은 이 글에서 생략되어 있습니다. 1. Pug설치하기 본격적으로 pug에 대해서 알아보기 전에, 간단히 설치하는 방법에 대해서 정리해 보도록 하겠습니다. 먼저 아래 명령어로 pug를 설치해 줍니다. npm install pug --save 프로젝트로 폴더에서 views디렉토리에 index.pug라는 이름의 파일을 생성해 줍니다... 2021. 11. 25.
OAuth 2.0 을 구현하기 위해 알아야 할 것들 # Access Refresh Token 오늘은 OAuth를 구현하기 위해서 알아두어야 할 것에 대해서 정리해 보도록 하겠습니다. 1. OAuth 미국의 IETF라는 인터넷 표준화기구에서 만든 문서에 그 Framework이 정의되어 있는데요. 3rd 파티 앱에서 SNS서비스업체인 Resource를 가지고 있는 서버에 제한적으로 접근할 수 있는 방법에 대한 Framework을 정의한 것 입니다. Google, Facebook, Kakao 그리고 Naver 까지 모두 Oauth서비스를 하고 있구요. 개발 Guide들도 이 Framework의 방식을 대부분 따르고 있습니다. OAuth를 이용하는 방법은 앱마다 다르겠지만, 가장 중요한 유저 인증과 보안을 대신하는 수단으로도 많이 사용하게 됩니다. 개발자가 유저의 아이디와 비밀번호를 인증하고 그것에 대.. 2021. 11. 16.
Cheerio 와 Bent 이용한 HTML 파싱과 Scraping NodeJS에서 HTML을 파싱하여서 Scraping하기 위한 모듈로 Cheerio가 있습니다. 오늘은 이 모듈을 이용해서 HTML을 파싱해서 가져오는 방법에 대해서 정리해 보도록 하겠습니다. 1. Cheerio와 Request 모듈 설치 아래 코드를 터미널에 입력해서 해당 프로젝트내에서 Cheerio모듈이 설치되도록 해 줍니다. npm install cheerio --save 이번에는 bent 모듈을 설치해 보겠습니다. 사실 예전에는 request모듈을 사용하였습니다. 그렇지만, request는 deprecated되었구요. 개발자는 bent를 새로운 프로젝트로 개발하고 있다고 하여서, bent로 작업을 해 보았습니다. 이제 설치한 모듈을 해당 파일내에서 import해 주어야 하는데요. 아래와 같이 해 .. 2021. 10. 15.
소규모 서비스를 위한 호스팅 서버 준비하기 # 가상서버 리눅스 호스팅 오늘은 앱서비스개발을 위해서 최소한의 비용으로 서버를 준비하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Why Hosting? 호스팅서비스의 경우 비용을 제어할 수 있다는 장점이 가장 큰 것 같습니다. 월 얼마정도로 맞추어놓고 그에 맞게 사용하면됩니다. 저처럼 개인개발자의 경우, 사용한만큼 과금되는 형태는 분명 신경이 쓰여지는 부분입니다. AWS에서도 EC2같이 호스팅서비스를 제공하고 있습니다. 하지만 매번 환율에 따라 가격도 달라지고 이런저런 작은 비용들이 붙습니다. 게다가, AWS의 UI가 편하다고 생각된 적은 한번도 없었구요. 국내업체에서 가상서버호스팅을 사용할 경우, 설치비와 매월 얼마씩해서 결재해놓으면 그것으로 요금에 대해서는 걱정 끝입니다. Docker가 생긴 요즘같은 시대에 서비스가 커.. 2021. 10. 15.
Linux 유저 권한 설정 및 그룹 1. Linux의 유저시스템 Linux는 여러 사용자가 접속할 수 있는 OS시스템입니다. 모든 권한을 가진 root가 존재하구요. 나머지 사용자들에 대해서는, 그룹에 포함시켜서 관리를 하게 됩니다. 1. group group에 관한 정보들은 "/etc/group"에서 볼 수 있습니다. 나오는 정보는 다음과 같은 순서로 나오는 것을 볼 수 있습니다. 비밀번호는 "x"로 나와서 가려지구요. 그룹에 속한 사용자 이름도 가려지는 경우가 많습니다. 그룹명: 비밀번호: 그룹ID: 그룹에 속한 사용자 리스트(","로 구분) /etc/passwd에서 사용자에 대한 정보가 기술되어 있습니다. 가장 처음에 나오는 사용자는 root이구요. ID도 0입니다. 사용자명: 비밀번호: 유저ID: 소속된 그룹의 ID: 전체이름: 홈.. 2021. 9. 30.
LifeCycle과 ViewModel 그리고 LiveData에 대해 정리해 봅니다 오늘은 구글의 Architecture Components에 들어가 있는, LifeCycle과 ViewModel 그리고 LiveData에 대해서 정리해 보겠습니다. 양으로 보면 각각의 컴포넌트에 대해서 하나의 글로 정리하는 것이 좋지만, 서로 연결되어 있는 부분들이 많아서 같이 정리하는 것이 효율적일 것 같네요. 1. LifeCycle과 ViewModel 그리고 LiveData 이 세가지 Component를 사용하는 방법은 다음과 같은데요. View를 담당하는 UI컨트롤러인 Activity나 Fragment를 최대한 가볍게 하고, 뷰의 데이터에 대한 부분은 ViewModel에게 맡기게 한다음, 데이터의 변화값을 관찰하고 변경하는 LifeData에게 맡기기 위함입니다. 이 과정에서 LifeCycle을 고려하.. 2021. 9. 24.
Android 주요 라이브 러리들 Release 버전 중요한 라이브러리인 AndroidX나 Retrofit 혹은 OkHttp, Realm, Firebase 등은 매우 많이 사용되는 라이브러리인데요. 많은 라이브러리를 개인 개발자가 팔로우 하기가 쉽지많은 않은 것이 사실입니다. 다만, 이들이 저희가 비즈니스 로직에만 집중할 수 있도록 도와주므로, 최소한의 Release버전 팔로우, 예정된 Deprecation에 대해서는 알고 있어야 할텐데요. 이 글에서는 주요 라이브러리에 대한 업데이트 링크를 한 페이지에서 관리해서, 팔로우 하기 쉽도록 매주 최신 버전을 확인해 갱신하고자 합니다. 1. AndroidX(1.0.0) AndroidX의 ReleaseNote링크는 다음과 같습니다. 1.0.0 이 메인을 이루지만, 모듈별로 각각 다른 버전을 가지고 있으므로, 아래 .. 2021. 8. 25.
Mongoose Document 생성과 CRUD 구현 # NodeJS mongoDB 오늘은 MongoDB로 CRUD를 구현하는 방법에 대해서 정리해 보도록 하겠습니다. MongoDB를 설치하고 실행하는 방법은 아래 글을 참조해 주세요. >> MongoDB 설치 및 실행 총정리 # MongoDB NodeJS 1. MongoDB의 Database 와 Collection 그리고 Document Mongoose에 대해서 알아보기전에, MongoDB의 Database, Collection 그리고 Document의 관계에 대해서 간단히 보고 가겠습니다. Database 는 MongoDb의 가장 큰 단위인데요. Database에는 MySQL에서의 Table과 비슷한 Collection이 있습니다. 그리고 그 Collection에는 Binary Json인 Bson Documents가 저장되어 집니다... 2021. 5. 26.
MongoDB Database 와 Collection 그리고 Document CRUD 하기 오늘은 MongoDB에서 가장 기본을 이루는 구조에 대해서 정리해 보려고 합니다. Database와 Collection 그리고 Document인데요. 이들을 생성해보고 조회해 보는 방법에 대해서 정리해 보도록 하겠습니다. MongoDB의 설치와 실행방법은 아래 글을 참조해 주세요. >> MongoDB 설치 및 실행 총정리 # MongoDB NodeJS 1. MongoDB의 구조 1-1. BSON, Documents, Collection, Database MongoDB는 documents로 데이터를 저장합니다. 정확히는 BSON이라고 하는 documents인데요. 여기서 BSON은 Binary JSON인데요. JSON형태의 문서를 바이너리형태로 저장한 것인데, MongoDB는 JSON을 Binary형태로 .. 2021. 5. 15.
Bit, byte 그리고 16진수에 관한 정리 # ASCII 코드 오늘은 프로그래밍에 있어서 중요한 기본이라고 할 수 있는, bit, byte 그리고 16진수와 ASCII 코드에 대해서 정리해 보도록 하겠습니다. 1. Bit Bit는 Binary Digit의 약자입니다. 컴퓨터에서 사용하는 가장 작은 단위의 데이터이기도 하구요. Binary라는 것이 2개를 의미하며, digit은 자리를 의미하는데요. 즉, 2개의 자리수라는 뜻입니다. 그리고 그 2개의 수는 0과 1입니다. 10진수를 이용하여 수를 이해하는 것이 익숙하고 편한 인간에 비해서, on/off로 data를 이해하는 컴퓨터는 0과1로 모든 데이터를 표현합니다. 100은 1100100이라고 컴퓨터는 이해합니다. Nbit라고 하면 N개의 0과 1을 이용하여 데이터를 표현할 수 있는 수를 의미합니다. 비트수 표현 가.. 2021. 5. 14.
MongoDB 설치 및 실행 총정리 # MongoDB NodeJS 오늘은 NoSQL의 대표주자인 MongoDB를 설치하고 설정하여서 실행하는 방법을 정리해 보도록 하겠습니다. 참고로 이 글은 Mac에서의 설치를 중심으로 작성되었습니다. 추후에 Linux에서의 설치 방법도 업데이트하도록 하겠습니다. 1. MongoDB MongoDB를 설치할 파일을 다운로드 받기 위해서 홈페이지로 이동합니다. >> www.mongodb.com/ 아무래도 사업의 중심이 Cloud이다보니, 어디로 가야할지 조금 어려우실텐데요. 저희처럼, MongoDB를 서버에 설치해서 사용할 사람들은 아래 메뉴를 이용해서 이동하면 됩니다. Software > Community Server 로 이동해 줍니다. 나오는 화면의 우측에 Download할 OS를 선택하도록 되어있는데요. 선택해서 다운로드 받아줍니다... 2021. 5. 11.
Docker Compose로 NodeJS, Nginx 를 한번에 설치하기 # YAML 오늘은 Docker를 이용해서, NodeJS, NGINX를 설치하고 서버를 실행하는 방법을 정리해 보도록 하겠습니다. 이 글에서는 NGINX나 Docker의 기초에 대해서는 다루지 않고 있는데요. Docker에 관한 글은 아래 글을 참조해 주시구요. >> Docker와 DockerHub를 이용한 배포 와 실행 # NodeJS Dockerfile NGINX에 관한 글은 아래 글을 참조해 주세요. >> NGINX에 대한 정리 #Upstream #Reverse Proxy #Proxy_pass 1. Docker Compose 이 글에서는, NodeJS컨테이너를 실행한 후에, NGINX컨테이너를 실행해 보려고 하는데요. 만약 NodeJS컨테이너 실행을 한 후에, NGINX컨테이너를 실행을 한다고 생각해 보겠습니다.. 2021. 5. 10.
Docker와 DockerHub를 이용한 배포 와 실행 # NodeJS Dockerfile 오늘은 요즘 서버나 웹쪽과 관련된 개발을 하시면, 누구나 한번은 들어보셨을 Docker의 사용방법에 대해서 정리해 보도록 하겠습니다. 어떤 Framework를 이용하느냐에 따라서 세부사항이 조금은 달라지지만, 여기서는 NodeJS를 기준으로 하도록 하겠습니다. 1. Docker 이제 Docker없이는 배포를 말하기 힘들정도로 매우 중요한 역할을 하고 있습니다. 단어 자체의 뜻은 부두에서 컨테이너를 싣는 것과 관련된 일을 하는 노동자를 뜻하는데요. 비유적으로 사용된 의미일 텐데, 컨테이너라는 것을 싣는 것과 무슨 관련이 있는 것 같습니다. 소프트웨어 배포를 하는데 왜 컨테이너라는 의미를 사용한 것 일까요? 각각 다른 환경에서 소프트웨어를 빌드하고 배포하는데 엄청난 비효율이 발생하기 때문에, 이를 컨테이너라.. 2021. 5. 10.
Linux 명령어 및 단축키 중 자주 사용하게 되는 것 정리 # 권한변경 오늘은 자주사용하게 되는 Linux명령어와 단축키에 대해서, 정리해 보도록 하겠습니다. 1. 프로그램의 설치 우분투의 리눅스 시스템에서 프로그램을 설치해주는 명령어는 아래와 같습니다. apt-get명령어가 우분투 프로그램 서버에서 실행파일을 다운받아 설치해 줍니다. 이 apt-get명령어는 root계정으로 사용해야 해서, sudo를 앞에 붙여서 사용합니다. sudo apt-get install 혹시 설치할 프로그램의 용량이 큰 경우는 설치할 것인지 한번 더 물어보게 되는데요. 아래와 같이 해 주면 yes가 되어서 자동으로 설치로 넘어갑니다. sudo ap-get install -y 참고로 update 명령어를 통해서 항상 update할 것이 있는지 확인해 주구요. 있다면 upgrade 명령어를 이용해 u.. 2021. 5. 8.
카카오톡이나 페이스북에서 사용하는 HashKey 얻어오기 #Android 오늘은 KakaoTalk이나 FaceBook의 API를 이용할 때 사용하는 HashKey를 얻는 방법에 대해 정리해 보겠습니다. 보통 Debug용과 Release용 해쉬키가 모두 필요한데요. 각각의 해쉬키를 어떻게 얻는지 하나씩 정리해 보도록 하겠습니다. 1. Debug용 해쉬키 카카오SDK의 경우 이러한 해쉬값을 구하는 함수를 제공해 주고 있는데요. SDK를 implement하였다면, 아래 코드를 실행시켜주면 값을 얻어올 수 있습니다. var mHash = Utility.getKeyHash(this) 카카오 SDK를 사용하지 않더라도 어렵지 않게 해쉬키를 얻을 수 있는데요. 아래 코드를 이용해서, Logcat에서 해쉬키값을 얻어오는 것 입니다. "HashKey:" 다음에 나오는 키값이 바로 Debug용.. 2021. 5. 7.
Dotenv 로 관리하는 환경변수 # NodeJS 오늘은 NodeJS를 개발하면서 Dotenv로 환경변수를 관리하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Dotenv 와 NodeJS의 환경변수 Production모드나 Dev모드를 변환하거나, DB의 password 나 API 액세스키 같은 값의 경우 환경변수로 저장해놓고 사용을 하게 되는데요. Dotenv는 환경변수를 ".env" 라는 파일에 저장해 놓으면, process.env로 로딩해주는 NodeJS의 편리한 모듈입니다. 2. 모듈 설치 모듈을 설치하기 위해서 다음 명령어를 입력해 줍니다. npm install dotenv --save 3. ".env"파일 생성과 환경변수 저장 제일 먼저 할 일은 ".env"파일을 만들고, 그안에 "NAME=VALUE" 형식으로 환경변수들을 집어넣어 주는 .. 2021. 5. 1.
Koa JS FrameWork을 이용한 RestAPI 만들기 # NodeJS 오늘은 Koa JS 프레임웍을 이용해서, UI없이 Get과 Post를 구현한 RestAPI서버를 만드는 방법에 대해서 알아보도록 하겠습니다. 먼저, Koa에 대해서 알아보도록 하겠습니다. 1. Koa Koa는 Express를 만들던 팀에서 개발한 새로운 웹프레임워크입니다. 좀더 경량의, 빠른 웹앱과 API를 지향한다고 하는군요. 공식페이지의 소개에도 나와있지만, Koa는 async function을 이용해서, 콜백헬에서 벗어나고, error핸들링을 원활하게 해준다고 합니다. Babel없이도 이용할 수 있는 async function과 await, 그리고 ES6를 바로 사용할 수 있는 프레임워크라는 점에서 매력적이라고 할 수 있을 것 같습니다. 위에서 언급한 것처럼, Expresss를 만들던 팀에서 만들었.. 2021. 5. 1.
async 와 await 로 작성하는 읽기쉬운 비동기코드 Javascript에서 비동기를 사용할 때 Promise라는 API를 정리해 보았었는데요. 오늘은 또다른 API인 aysnc와 await에 대해서 정리해 보도록 하겠습니다. 이 글은 Promise를 알고 계시는 것이 이해하는데 필요하므로, Promise에 대해 알고싶으신 분은 아래 글을 참조해 주세요. >> Javascript의 Promise를 알아보자 #ES6 1. async와 await promise로 chaining을 해서 잘 사용하고 있었는데, 왜 다른 것이 필요한 것일까요? async와 await는 비동기코드를 Promise의 Chaining을 하지않고, 좀 더 읽기쉽고 clean한 스타일의 코드로 작성할 수 있도록 도와줍니다. 그러니까, Promise를 좀 더 쉽게 사용할 수있도록 도와주는 A.. 2021. 4. 29.
WebStorm NodeJS Coding Assistance 활성화 방법 WebStorm을 이용해 프로젝트를 생성할 경우, NodeJS프로젝트로 생성할 때도 있지만, 그냥 Empty 프로젝트에 app.js만 생성해서 시작하는 경우도 있는데요. 이 때, NodeJS Coding Assistance 를 활성화하지 못하고 사용하는 경우는 어떻게 해야할까요? 오늘은 Coding Assistance를 활성화하는 방법에 대해서 정리해 보겠습니다. 1. Alt + Enter JetBrain 프로덕트들에서 가장 유용하게 쓰이는 단축키가 "alt+enter" 인데요. 이를 이용해서 CodingAssistance를 활성화 시킬 수 있습니다. 아래와 같이 모듈을 require해 주면되는데요. 꼭 path가 아니여도 되지만, 개인적으로 path를 많이 사용합니다. 자주 require하는 모듈중 하.. 2021. 4. 29.
NodeJS Get 과 Post 의 Parameter 와 QueryString 전달 방법 오늘은 NodeJS의 Get 과 Post의 Parameter를 전달하는 방법에 대해서 정리해 보도록 하겠습니다. 테스트시에는 Chrome Extention에 있는 postman을 사용하구요. NodeJS와 express가 설치되어 있다고 가정하겠습니다. NodeJS만 설치되어 있으신 분들은 아래 명령어로 express를 설치해 주세요. npm install express --save 1. Post Parameter받아오기 postParameter를 받아오기 위해서, body-parser를 사용합니다. >> https://github.com/expressjs/body-parser 아래 명령어를 터미널에 입력해서 body-parser를 설치해 줍니다. npm install body-parser --save .. 2021. 4. 28.
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 JavaScript의 모든 객체는 private property를 가지고 있는데요. 이 property는 prototype 객체에 대한 link를 가지고 있습니다. 그리고 그 prototype객체는 또한 그 자신의 prototype을가지고 있지요. 마치 러시아 인형 마트로시카처럼, 각 객체의 private property의 prototype 링크를 쭈욱 타고 올라갈 수 있습니다. 이런식으로 prototype링크를 따라가다가, 결국.. 2021. 4. 27.
Javascript의 Promise를 알아보자 #ES6 비동기코드 하면 나오는 단어중 하나가 콜백헬입니다. 코드의 많이 중첩되어서, 가독성이 매우 떨어지는 문제를 애기하는 것으로 JavaScript 에서도 여러가지 대안들이 나왔었습니다. 이에 대한 대안중 하나가 Promise인데요. 이것은 Javascript es6에 채택이 되었습니다. 오늘은 이 Promise에 대해서 정리해 보겠습니다. 1. Promise 비동기 이벤트의 처리의 완료 또는 실패를 나타내는 객체를 가르킵니다. 콜백헬에 빠지지 않고, 비동기 처리가 성공한 경우와 실패한 처리를 구분할 수 있는데요. Promise는 비동기 operation에 대한 상태들을 아래와 같이 정의하고 사용합니다. 상태 내용 pending Promise의 initial (초기)상태 fulfilled 성공적으로 수행이 된.. 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.
AWS Lambda 사용하는 방법 # Gateway와 연동 오늘은 AWS의 Lambda를 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Lamda의 단위는 함수 EC2의 경우는 한대의 서버인 Instance를 on/off시켜서 사용했었는데요. Lamda는 컴퓨터를 켜고 끄는 개념이 없으므로, 하나의 함수를 생성해서 그것을 사용하는 개념입니다. 하나의 기본단위를 Lambda라고 보면 되겠네요. 2. 요금 가장 중요한 요금 먼저 알아보도록 하겠습니다. 먼저 Free Tier의 경우를 보도록 하겠습니다. Free Tier의 경우는 아래까지는 무료로 사용할 수 있는데요. 구분 FreeTier해당건수 요청건수 월별 무료 요청 1백만 건 컴퓨팅 시간 월별 400,000GB-초 컴퓨팅 시간 요청 건수 또는 100밀리초당 시간당으로 요금을 측정합니다. 2. Lambd.. 2021. 4. 21.
ViewBinding 구현방법 정리 findviewById는 이제 오래된 유물같은 API가 되어버렸습니다. findViewById를 이용할 때 발생하던 NullException도 ViewBinding과 함께라면 더이상 걱정할 필요가 없게되었구요. 공식문서에서도 ViewBinding사용을 추천하고 있습니다. 오늘은 이 ViewBinding을 구현하는 방법에 대해서 보도록 하겠습니다. 1. Dependency설정 ViewBinding을 사용하기 위해서는 app레벨의 Build.gradle에서 설정을 해 주어야 하는데요. buildFeature를 아래와 같이 간단한 한줄을 추가하면, ViewBinding을 사용할 수 있게 됩니다. buildFeatures { viewBinding true } 2021. 4. 17.
DiffUtil 이용해서 업데이트 하는 RecyclerView 오늘은 DiffUtil에 대해서 정리해 보도록 하겠습니다. 1. DiffUtil 과 notifyDataSetChanged RecyclerView에 표현할 데이터를 업데이트하기 위해서 사용하는 것이 notifyDataSetChanged()라는 함수입니다. 표현할 데이터셋을 변경해주고 이것만 실행시키면 만사 오케이이기 때문인데요. 그런데, 뷰를 업데이트시키는 과정에서 비효율이 많이 발생합니다. 모든 데이터를 다시 그리기 때문인데요. 이를 개선하기위해, DiffUtil이 나왔습니다. 이것을 이용하면, 데이터들을 비교해서 변경된 부분만 효율적으로 업데이트 할 수 있습니다. 2. DiffUtil 구현 2-1. Adapter의 addAll 먼저 기존의 Adapter를 보겠습니다. 리스트에 뿌려줄 아이템들을 Acti.. 2021. 4. 15.
HILT 에 대해서 정리해 보겠습니다. # DI Dependency Injection 오늘은 Hilt를 이용한 Dependency Injection에 대해서 정리해 보도록 하겠습니다. Dependency Injection에 대해 경험이 없으신 분들이라면, 아래 글을 통해서 기본적인 개념에 대해서 이해해 보시면 도움이 될 것 같습니다. 특히 Dependency를 주입해준다는 말의 의미에 대해서 이해해 보아야 합니다. >> Dependency Injection(DI)에 대해서 알아보자 이제 DI에 대해서 이해가 가신다면, HILT에 대해서 알아보도록 하겠습니다. 1. HILT HILT는 Google의 Dagger를 기반으로 만든 Dependency Injection 라이브러리인데요. 공식문서에는 Hilt의 목표에 대해서 아래와 같이 정리하였는데요. Kolin이 Kotlin에 특화된 심플한 D.. 2021. 4. 14.