전체 글

우아한테크코스/Level 3 | Project

Android 프로젝트에 Firebase 추가하기

💡 Intro 3주차 데모데이 권장 요구사항으로 Firebase와 연동과 Firebase Analytics, Crashlytics 등 모니터링 환경 구축, Log 설계 이렇게 세개가 주어졌다. 아마 결국 사용자의 행동 사항이나 앱의 문제에 대한 모니터링을 어떻게 진행할 것이고 어떤 상황에 어떤 로그를 남겨 확인할 것인지의 전략을 정하라는 것이 아닐까 생각한다. 이번 글에서는 앱과 Firebase를 연동하는 방법에 대해 정리하려고 한다. ❓ ADB 설치 및 환경변수 설정 Android Debug Bridge (ADB)는 안드로이드 기기와 컴퓨터 간의 통신을 위한 도구다. 기본적인 개념은 Unix Shell에 대한 접근을 제공하는 클라이언트-서버 프로그램이라고 할 수 있다. ADB는 안드로이드 디바이스와 상..

우아한테크코스/Level 3 | Project

안드로이드 위치정보 가져오기 - LocationManager

💡 Intro 현재 진행하고 있는 프로젝트는 위치를 기반으로 하는 프로젝트다. 때문에 필수로 위치 정보를 가져와야 한다. 네이버맵 혹은 카카오맵에서 반환되는 값으로부터 간편하게 좌표를 받아올 수 있다. 네이버맵 혹은 카카오맵을 사용하는 액티비티에서 API를 이용하여 가져오는 방법이다. 하지만 우리는 지도를 사용하지 않는 뷰에서도 위치 좌표가 필요했고, 이 때는 위치 정보를 어떻게 받아올 수 있을까 고민했다. 현재 해결한 방법은 LocationManager를 이용한 방법이며 글을 정리하려고 더 자세하게 찾아본 결과 google-play service를 사용한다면 더 정확하고 효율적으로 위치 정보를 받아올 수 있을 것으로 예상된다. 일단은 사용했던 LocationManager에 대해 기록하고, 4주차 데모데..

우아한테크코스/Level 3 | Project

git fetch vs git pull

💡 Intro 지금까지 다른 사람과 협업을 해본 적이 없다. 개인 프로젝트만 진행했었고, git의 리포지터리 역시 혼자만 사용했었다. 그러니 git은 단지 코드를 올려놓는 곳으로만 사용했고, 명령어도 push와 pull만 사용했다. 이번에 우테코에서 프로젝트를 하면서 한 리포지터리를 팀이 같이 사용하게 되었고, git의 히스토리를 관리하는 것이 중요해졌다. fetch가 무엇인지, 언제 사용하는지 그리고 fetch와 pull의 차이는 무엇인가에 대해 알아보자. ❓Git이 커밋을 구성하고 저장하는 방식 일단 git이 커밋을 어떻게 구성하고 있고 저장하는지에 대해 간단하게 알아보자. 어떻게 보면 꼭 알아야 하는 내용은 아닐 수 있다. 그런데 나는 찾아보다보니 이것도 재밌어서 알아보게 되었다. Git git은 ..

우아한테크코스/Level 3 | Project

PR요청 시나리오 시뮬레이션

🔥 기능요청 PR 시나리오 1. remote 리포지터리를 로컬로 clone 해온다. 2. pull 을 해서 상태를 최신화한다. 3. 개인 로컬에서 feat/#이슈번호 브랜치를 생성한다. 4. 기능 구현을 완료한 뒤 origin에 새로운 브랜치(현재 작업하고 있는 같은 이름의 브랜치)를 생성하고 push 한다. 5. origin에 있는 feat/#이슈번호 브랜치를 dev로 Pull Request를 보낸다. (같은 분야의 크루를 모두 리뷰어로 등록) 6. 리뷰어는 리뷰를 마친 뒤 수정할 사항이 없는 경우 approve 한다. 7. 마지막 approve를 한 리뷰어는 squash merge를 한다. 1. remote 리포지터리를 로컬로 clone 해온다. 이 때 우리 리포지터리의 default 브랜치는 dev..

우아한테크코스/Level 2

Context?

💡 Intro 안드로이드에서 중요한 요소 중 하나인 컨텍스트. 컨텍스트가 없으면 안드로이드에서는 아무것도 할 수 없다. 그만큼 중요한 요소지만 나는 얼마나 알고있을까? 에 대해 생각해봤고, 깊은 이해가 있다고 생각되지 않기 때문에 정리하게 되었다. ❓ Context 공식문서를 보면 컨텍스트를 다음과 같이 정의한다. Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well a..

우아한테크코스/Level 2

[View] 0dp vs match_parent in ConstraintLayout

💡 Intro 우테코에 들어오면서 ContraintLayout을 처음 써봤고, 지금까지도 적응중이다. 많이 익숙해졌지만 아직까지도 실수하는 부분들이 많다. 그리고 더 깊게 알아보기 전까지 0dp == match_parent 이지만 ConstraintLayout에서는 0dp를 쓰는 것이 맞구나 했다. (아님) ❓ ConstaintLayout 아주 간단하게 ConstraintLayout이 무엇인지 알아보자. Constraint과 Layout을 합친 단어다. Constraint는 '제약 조건'을 뜻하는 단어이며 이에따라 뷰를 정렬하고 배치하는 레이아웃이다. 여기서 말하는 제약에는 어떤 것들이 있을까? Relative Positioning, Margins, Centering positioning, Circul..

우아한테크코스/Level 2

[Life Cycle] Activity LifeCycle

💡 Intro Activity, Fragment, View는 각각의 LifeCycle(생명주기)을 가지고 있다. 모두 다뤄볼 예정이며, 먼저 Activity LifeCycle에 대해 알아보자. ❓ 액티비티 상태 액티비티는 총 4가지의 상태를 가지고 있다. 각 상태의 명칭과 특징은 다음과 같다. 존재하지 않음(nonexistent) 액티비티가 아직 론칭되지 않았거나 소멸된 상태 액티비티 인스턴스는 메모리에 존재하지 않음 사용자가 보거나 상호작용하기 위한 뷰가 존재하지 않음 중단(stopped) 액티비티 인스턴스가 메모리에 존재함 액티비티가 화면에서 완전히 가려졌을 때의 상태(화면에 액티비티가 전혀 보이지 않음) 일시중지(paused) 액티비티가 포그라운드에서 작동하지 않음 액티비티 전체 혹은 일부가 화면에..

우아한테크코스/Level 2

[Inflation] Inflation?

💡 Intro 레벨 인터뷰를 준비하기 위해 Do It 안드로이드 앱 프로그래밍 책을 꺼내보았고, 인플레이션에 대해 설명하려고 보니 부족함을 느꼈다. 최근에 정리한 글들과 비교하면 기본적인 내용이라고 생각할 수 있지만, 기본이 가장 중요하다고 생각하기 때문에 이해한대로 정리해보려고 한다. ❓Inflation 단순히 XML레이아웃 파일을 만들었다고 소스코드에서 뷰를 참조할 수 없다. 왜? 아직 메모리에 올라가있지 않으니까!  그럼 어떻게 해야할까? 인플레이션은 XML레이아웃의 내용이 메모리에 객체화되는 과정이다. 일반적으로 액티비티나 프래그먼트가 생성될 때 setContentView 메서드로 XML레이아웃을 인플레이션하고 화면에 표시한다. 이 과정에서 XML레이아웃 파일에 정의되어 있는 뷰들은 해당 액티비..

Krrong
노는게 제일 좋아