일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Bitrise
- kotlin
- 2레벨
- 실버 4
- 피보나치 수 2
- github action
- keystore
- navigation component
- 실버2
- LazyColumn
- capitalize
- 백준
- 프로그래머스
- .github
- LazyRow
- 성빈랜드
- DB
- Activirty
- compose
- 데이터베이스
- 개발하는 정대리
- 브론즈1
- Android
- suspend programming
- 최댓값 최솟값
- 브론즈 1
- DB 기능
- gradlew
- 데이터베이스 첫걸음
- Myungpyo Shim
- Today
- Total
목록분류 전체보기 (47)
plzy의 개발 블로그
코루틴을 알기 전에 먼저 스레드에 대해 알아야 한다. 스레드란 하나의 프로세스 내에서 일하는 작업 단위라고 생각하면 된다. Android에서는 비즈니스 로직을 UI 스레드에 쓰면 안 되고 Work스레드에 써야 하는 건 다들 알 고 있을 것이다. 이때 Work스레드를 이용하는 방법에는 여러 가지가 있다. ex) rx , coroutine 하지만 정확히 말하자면 코루틴과 스레드는 다른 개념이다. 코루틴과 스레드의 차이 코루틴은 하나의 실행이 시작할 때부터 끝날 때까지의 주기를 나타낸다고 한다면 스레드는 그 일이 실행되는 곳이다. 그래서 하나의 스레드에 여러 코 루틴이 존재할 수 있다. 코루틴 이란. 코루틴을 처음 들었을 때 kotlin + 루틴 해서 코 루틴인 줄 아는 사람들이 있을 것이다. 하지만 그것은 ..
kotlin으로 프로그램을 만들다 보면 가변성으로 인하여 혼란을 겪은적이 있을 것이다. 가변성을 사용하면 프로그램을 디버깅하기 어렵다. 프로그램의 실행을 추론하기 어렵다. 프로그램을 테스트하기 어렵다. 상태 변경이 일어날 때 이러한 변경을 다른 부분에 알려야할 때가 있다. 예를 들어 정렬된 리스트에 가변 요소를 추가하면 요소를 추가할때마다 다시 정렬을 해야하는 문제점이 생긴다. 등등 이러한 문제점이 생긴다. 이를 막기위해 적절한 동기화를 사용해야 한다. 가변성을 제한하는 방법에는 총 3가지가 있다. 읽기전용 프로퍼티 만들기. 가변컬렉션과 읽기전용 컬렉션 구분하기 데이터 클래스의 copy 읽기전용 프로퍼티 읽기전용 프로퍼티 (val)은 이름과 다르게 값을 완전히 변경하지 못하는건 아니다. mutable를 ..
기존에 list 뷰를 만들려면 RecyclerView.Adapter, RecyclerView.ViewHolder 등을 만들어야 했다. 무척 번거로웠지만 compose에서는 어떻게 만들면 될까? LazyColumn LazyColumn이란 compose에서 list를 만들 때 쓰는 layout이다. 이름부터 볼 수 있듯이 세로형 list를 만들 수 있는 것인데 한번 코드를 살펴보자. @Composable fun Greetings(name: List = List(1000) { "${it}" }) { LazyColumn(Modifier.padding(vertical = 4.dp)) { items(name) { name -> Greeting(name = name) } } } items에 어떠한 데이터가 들어갈지 ..
Compose에서 쓰이는 기존 레이아웃 요소에는 Column Row Box 3가지가 있다. 각각 어떻게 쓰이는지 알아보자. Column column의 하위 요소는 세로로 그려진다. 이 코드를 봐보자. Column( modifier = Modifier .fillMaxWidth() .padding(24.dp) ) { Text(text = "hello.") Text(text = name) } 이 코드를 preview로 봐보면 이러한 상태가 되며 각 Text가 세로로 그려진다. Row row의 하위 요소는 가로로 그려진다. 이 코드를 봐보자. Row( modifier = Modifier .fillMaxWidth() .padding(24.dp) ) { Text(text = "hello.") Text(text = ..
이전 포스팅에서는 코틀린이 무엇인가 에 대한 포스팅을 해봤다. 이번 포스팅은 코틀린의 철학이다. java의 뒤를 나온 kotllin 어떤 철학이 있을까? 실용성 kotlin을 처음 만들 때 대규모 it 프로젝트를 경험을 바탕으로 만들어졌다고 한다. 또한 코틀린은 어떠한 패러다임에 의존하는 것이아닌 프로그래머의 스타일에 따라 자유자재로 변환하여 쓸 수 있다. 객체지향이나 함수형 등 취향에 맞게 쓰면 된다. 그리고 kotlin은 연구를 위한 언어가 아닌 다른 언어의 성공적인 해법과 기능을 의존한다. 그래서 좀 더 익숙하고 쉽게 배울 수 있다. kotlin은 인텔리 J의 IDE에 편리한 개발환경이다. 생산성이 뛰어나다. 간결성 코드를 쓰는 것보다 읽는것이 시간이 더 오래 걸린다고 한다. 버그를 수정할 때 많은..
협업을 하던중 merge후 자동으로 branch를 삭제하는 기능이 있었으면 좋겠다고 생각하던 찰나 같이 개발자는 팀원이 .gihub에 .yml를 추가하면 된다고 했다. 이렇게 편리한 기능이 있었다니. 어떤것들이 있는지 알아보도록하겠다. merge후 branch를 자동으로 삭제해주기. 이 기능을 사용하려면 .github에 delete-merged-branch-config.yml를 추가해주면 된다. exclude: - main - develop - release delete_closed_pr: true이 코드를 추가해주면 .merge 시 자동으로 branch를 삭제해 준다. pr시 자동으로 reviewr 추가해주기 이 기능을 사용할려면 .github에 CODEOWNERS 를 추가해주면 된다. /src/ @c..
Android 개발을 할 때 java언어에서 kotlin 언어로 변경되고 있는 추세이다. 어떤 이유에서 kotlin으로 변경되는 걸까? 그걸 알기 전에 kotlin먼저 알아보자. Kotlin 이란? kotlin이란 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다. 자바와 코드가 호환이 되며 코드가 간결하고 간단하다. 성능도 자바와 같은 수준이니 kotlin을 안 쓸 이유는 없다. 이 말은 죽순 java가 쓰이는 곳에 kotlin이 다 쓰일 수 있다는 것이다. ex) 구글, 트위터, 링크드인 등 java를 사용하고 있는데 kotlin을 쓰면 더 쉽게 개발할 수 있을 것이다. 정적 타입 언어 Kotlin은 Java와 마찬가지로 정적 타입 언어이다. 컴파일 시 타입을 검증해준다. 동적 타입 언어는 타입에 ..
기존 리사이클러뷰를 사용할 때 리사이클러뷰 어뎁터로 가져왔을 것이다. 데이터가 적다면 상관없지만 리사이클러뷰 아이템의 데이터가 1만 개, 10만 개 등등 커지면 어떻게 될까? 데이터를 불러오는데의 작업이 오래 걸리고 서버에 과부하가 될 수 있다. 이를 해결하기위해 Android에서는 paging이라는 라이브러리가 존재한다. paging이란? 페이징이란 network나 database에 있는 데이터를 불러올 때 page대로 데이터를 분리해서 가져오는 것이다. 기존 데이터를 한꺼번에 가져왔다면 page대로 가져와 리소스 관리에 효율적이다. Android에서는? Android에서 flow, liveData로 비동기 작업까지 쉽게 할 수 있다. 또한 하나의 page의 데이터에 끝에 도달했을 때 자동으로 adap..