본문 바로가기

[GIT] 새 컴퓨터에서 GIT을 사용할 때 Github을 쓰던 기존 유저임을 증명하기 말이 좀 어렵게 되기는 하였는데, 상황으로 설명하자면 사용자가 새 컴퓨터를 샀고, 사용하던 레퍼지토리를 clone하여 쓰다가 변경사항을 브랜치에 push하였을 때, 별도의 인증절차가 없었다면 그 push가 본인이 한 것임에도 불구하고 github 계정과 다른 누군가로써 commit이 수행된 것을 볼 수 있을 것이다. 과거의 commit까지는 모르겠지만, 앞으로 이 새 컴퓨터에서의 commit및 push를 기존에 쓰던 github 계정의 push 기록으로써 남기고 싶다면 아래의 절차를 진행하자. (github 레퍼지토리가 private라면 아래 절차가 더욱 필수이어야 할 지도 모르겠다.) 아래는 맥북의 터미널에서 사용한 방식이고, 이는 윈도우에서도 git bash 창을 사용해 동일하게 진행이 가능하다. 1..
[안드로이드] 데이터바인딩(DataBinding)을 사용할 때 include한 레이아웃의 View 참조하기 기존 프로젝트의 레이아웃이 다수의 레이아웃이 include된 뷰를 포함하고 있었는데, 기존 코드가 include 된 레이아웃의 뷰를 참조하고 있었고, 이를 개별적으로 새로운 data binding 객체로 만들어 참조해 대체해보려 했지만 대실패하였다. 그런 한두시간의 삽질 뒤 찾은 대안이 있었는데, 대안은 아래와 같다. 1. include로 포함된 뷰를 가진 레이아웃의 data binding 클래스로부터 include된 레이아웃의 id를 우선 참조 예) private lateinit var mainActivityBinding : MainActivityBinding .. { ... mainActivityBinding = DataBindingUtil.setContentView(this, R.layout.mai..
[GIT] 비공개 repository와 터미널로 clone하기 새로운 맥북에 기존에 작업하던 안드로이드 프로젝트 저장소를 clone해 당겨오고자 했는데 clone하는 단계에서부터 repository not found라는 메세지와 함께 진행이 되지 않고 있었다. (비공개 레퍼지토리이기 때문에 찾지 못했다는 메세지가 나오는 것으로 보임.) 내가 찾아낸 해결 방법은 git clone하는 주소에 사용자 이름과 비밀번호를 적어 날리는 방안이었다. 기존 형태가 git clone https://github.com/저장소를판유저이름/저장소이름 이었다면 비공개 레퍼지토리를 clone할때는 git clone https://사용자의NAME:비밀번호@github.com/저장소를판유저이름/저장소이름 으로 바꾸어 clone을 하면 본래대로 cloning이 가능하다. 여기서 사용자의 NAME..
[안드로이드] 데이터바인딩을 Fragment에 적용할 때의 유의할 점. 신규 앱 프로젝트를 진행하면서 좀 더 효율적인 개발을 위해 데이터바인딩을 도입하게 되었다. 헌데 데이터바인딩을 활용한 Fragment를 구현할 때, Fragment의 뷰만 보이고 기능적인 요소들이 적용되지 않는 문제가 있었다. 해결점은 onCreateView에 있었는데, 기존에 view를 리턴해주던 default 코드를 binding.root로 변경해주어야만 하는 것이었다. (간단..)
[안드로이드] 사용자 기기의 글꼴 사이즈에 앱 대응하기 어떤 UI/UX 가이드라인에 맞추어 설계한 앱의 경우에도 사용자가 임의로 기기의 폰트 사이즈를 변경하거나, 혹은 크거나 작게 사용하고 있는 경우에는 기존의 의도와 다르게 앱의 몇몇 뷰들이 겹치거나 텍스트가 잘려보인다는 등의 현상이 발생하기 마련이다. 이와 같은 경우, constraintLayout으로 구성되어 있는 레이아웃들을 전부 손봐서 기본 폰트 사이즈의 경우 기존 UI/UX 가이드라인에 알맞게 보여지도록 하고, 큰 폰트 사이즈를 사용할 경우 잘려나가는 부분이 없도록 최소한의 조정을 하는 방안이 있었는데, 몇몇 뷰 요소에 엄격하게 들어가있는 width 값들이 있어 손대기가 조금 난해한 부분이 있었다. 그래서 다르게 생각하기로, 기존 가이드라인이 노령 연령대를 고려해 맞추어진 UI/UX라면 (큰 폰트사..
[안드로이드] API 버전에 구애받지 않는 Notification 설정하기 기존에는 NotificationManager에 넘겨주기 위한 Notification 객체를 Notification 클래스로 생성해 전달하고 있었는데, 이 클래스는 오레오(API 21) 아래로는 deprecated된 메소드들이 많았던지라 deprecated 메소드를 대체하려 약간의 시행착오를 겪다가 좀 더 근본적인 솔루션을 찾았다. Notification 클래스를 NotificationCompat으로 빌드한다. 이때 Notification 클래스와의 차이점이라고 한다면 NotificationCompat을 initialize하는 과정에서 채널 ID를 추가적으로 넘겨주어야 한다는 점이다. NotificationCompat.Builder(this, CHANNEL_ID) .setContentInte..
[안드로이드] Inconsistency detected. Invalid view holder adapter positionViewHolder 최근 크래시 리포트에서 RecyclerView와 관련된 오류가 하나 집계되었다. Inconsistency detected. Invalid view holder adapter positionViewHolder 찾아보니 삼성 디바이스에서 발생하는 이슈로 올라와있는 스택 오버플로우 질문이 있었고, 나와있는 해결책중에 개인적으로 덜 복잡하다고 생각되는 솔루션을 사용해보았다. 방법은 1. LinearLayoutManager를 상속받는 LinerLayoutManagerWrapper 클래스를 만든다. ... class LinearLayoutManagerWrapper: LinearLayoutManager { constructor(context: Context) : super(context) {} constructor(..
[안드로이드 | RxAndroid | Room] no suitable method found for createFlowable room 해결 Room DB의 쿼리 결과를 Flowable으로 받고 싶었는데 빌드 실행 후 no suitable method found for createFlowable room.. 와 같은 오류가 발생하였다. Room에 사용하는 Dao 파일을 IDE가 실제 사용하는 자바 코드인 DaoImpl로 만드는 과정에서 나타나는 오류였다. 해결법은 단순했는데, Flowable 사용이 가능한 room 관련 implementation을 추가적으로 build.gradle에 포함시켜야 하는 것이었다. 기존에는 room과 rxJava 관련 implementation이 이미 들어가 있었으나 implementation "android.arch.persistence.room:rxjava2:1.1.1" 아래와 같은 implementation이..