devlog of ShinJe Kim

[TIL] 2019-08-13 (화)

|

Today I Learned

  • 애플리케이션에 사용자가 들어오는 것을 유입이라고 하고, 유입된 사용자가 구매하는 것을 전환이라고 한다. 유입에는 두 가지의 경우가 있을 수 있다. organic은 사용자가 자발적으로 자연스럽게 들어오는 것을 말한다. 다른 하나의 경우는 광고/마케팅을 통해 들어오는 경우이다.
  • 안드로이드 ActionBar vs Toolbar
AppBar는 ActionBar와 Toolbar 두 가지로 구현할 수 있음.

- ActionBar: 액티비티 내부에 기본적으로 포함된 요소. 액티비티에 지정된 테마가 앱바를 지원하면, 액티비티의 레이아웃 XML에 액션바를 따로 추가하지 않아도 액션바를 액티비티의 앱바(App Bar)로 사용할 수 있음.

- Toolbar: 사용하기 위해서는 따로 추가해야 하고, 액티비티의 테마를 NoActionBar로 지정해서 기본 액션바가 사용되지 않게 만들어야 함. 
  • 안드로이드에서 이미지를 사용할 때 두 가지의 방법으로 비율을 맞추어 보았다. 1) android:scaleTypeCENTER_CROP속성을 사용하면 이미지를 뷰의 크기에 맞추어준다. 이미지의 원래 비율을 유지하여 뷰의 중앙에 위치하게 해주는데, 만약 이미지뷰의 크기가 이미지의 크기보다 더 작을 시에는 이미지를 중앙에 위치시키고 남은 부분을 crop하여 보여준다(마이너스 padding) 2) android:adjustViewBoundstrue로 지정하면 이미지가 포함된 뷰의 크기와 관계없이 본래 이미지의 비율을 유지시켜준다. 만약 이미지뷰(이미지가 담긴 뷰)의 크기/비율이 본래 이미지와 비슷하다면 딱 맞는 화면을 볼 수 있겠지만 이미지뷰의 비율이 맞지 않거나, 뷰의 크기가 너무 작거나 크다면 여백이 생길 수 있다. 3) 다양한 기기에 대응하기위해서는 이미지뷰의 height를 적당한 고정값으로 지정하고 android:scaleTypeCENTER_CROP으로 하는 것도 하나의 방법인 것 같다. 다만 이렇게 하면 이미지가 잘려나가는 부분이 생길 수 있다. 어떻게하면 디자이너가 만든 이미지 전체를 보여주면서 다양한 기기에 대응할 수 있을까..?? 이 부분에 대해 고민해보고 예제와 함께 글을 써보면 좋을 것 같다.
  • 프로젝트 파일을 압축할 때 projectname>build 디렉토리와 projectname>app>build 디렉토리를 삭제해야 용량이 작아진다.

[TIL] 2019-08-12 (월)

|

Today I Learned

  • Http Client 네트워크를 연동하기 위해 주로 사용하는 것 Android: OkHttp + Retrofit + Gson ios: Moya + Alamofire
  • 네트워크 통신 방식에는 크게 두 가지가 있음. 동기(synchronous)비동기(asynchronous)방식.
  • 동기/비동기 != blocking/non-blocking. 차이점 정리할 것
  • Kotlin에서는 람다에서 리턴을 사용할 때 기본적으로 비지역반환을 함. 함수형 프로그래밍을 할 때 for 루프에서 break가 작동하지 않는 문제점을 해결하기 위해서. 만약 지역반환을 하고싶다면 return@메소드이름을 하면 됨.
  • Kotlin에서는 기본적으로 null을 허용하지 않지만 아래와 같이 변수 타입 옆에 ?를 붙이면 nullable이 됨.

    var a: String? = "abc"

  • RecyclerView에서 각 아이템들에 마진을 준 채로 정렬을 하고 싶다면 GridLayoutManager를 사용하자(한 번에 보일 아이템들의 개수를 지정하고싶다면 spanCount속성을 사용하면 된다). 이 때 레이아웃매니저는 xml과 MainActivity.kt/java 모두에 지정해주어야 한다. 나는 코틀린 코드에 GridLayoutManager를 지정해야하는데 LenearLayoutManager로 지정되어있어서 한참을 삽질했다.

[TIL] 2019-08-09 (금)

|

Today I Learned

  • 특정 회사에서 개발한 기술은 해당 개발사에서 제작한 공식문서를 참조하는 것이 가장 좋다고들 한다. 그렇다면 특정 회사에서 개발한 기술이 아닌, 보편적인? 예를 들면 내가 지금 정리하고 있는 딥링크와 같은 기술은 어떤 자료를 참조하는 것이 가장 정확할까? 찾아봐야겠다.
  • 새로운 기술/개념이나 서비스를 접할 때, 이것이 어떤 문제를 해결하기 위해 나온 것인지, 이것의 장/단점은 무엇인지 생각하는 습관을 들이자.
  • 딥링크 개념 정리 완료. 관련 개념들이 혼재되어 설명된 자료가 많아 처음에 너무 헷갈렸다. 문제를 해결하기 위해 관련 기술들이 점점 발전해가는 것이 보여서 재미있었다.

[TIL] 2019-08-08 (목)

|

Today I Learned

  • 구름타법
  • 다른 사람의 지식을 곧이 곧대로 받아들이지 않고 한 번 더 생각해 볼 수 있는 힘을 기르자.
  • tools 속성(xmlns:tools=”http://schemas.android.com/tools”)에 대해 알게 되었다. 실제 개발하는 앱에는 반영되지 않지만 개발을 편리하게 하기 위해 쓸 수 있는 옵션들이 모인 속성이다. 주말동안 한 번 쭉 정리해야겠다.
  • 리사이클러뷰를 xml 코드만 사용하여 균등하게 정렬할 수 있는 방법이 없을까. 레이아웃매니저를 리니어나 그리드로 바꿔서 중간 정렬을 해도 반영이 안된다. 오기가 생겨서 자꾸 삽질을 하게 된다.

[TIL] 2019-08-07 (수)

|

Today I Learned

  • 박상권님 블로그를 보다가 알게된 사실. 안드로이드 공식 문서를 볼 때 언어를 한국어로 지정해놓으면 미처 번역이 다 되지 못한 부분은 누락되어 나타나기때문에 무조건 영어로 지정해서 보아야한다. 혹시 일부라도 한국어로 번역된 부분이 나올까봐 항상 한국어로 지정해놓고 있었는데 조심해야겠다. 다행히 예전에 보았던 문서들을 보니 누락된 부분은 없었다.
  • 코틀린 공부 계획을 세워 시작했다. Kotlin in Action책을 위주로 보며 개념을 정리하려고 한다. 책의 1장에 나온 코틀린의 개괄적인 특징을 정리했는데 코틀린이 왜 만들어졌고, 젯브레인의 개발자들은 왜 자바를 대체할 언어를 만드려고 했는지에 대한 부분을 더 찾아보고 정리해야겠다.
  • 안드로이듸 공식 문서의 Kotlin overview를 읽었고 Learn the Kotlin programming Language를 읽는 중이다. 코틀린 언어에 대한 주요 특징이 쉽게 설명되어있다.