본문 바로가기

분류 전체보기

(93)
연산자 오버로드를 할 때는 의미에 맞게 사용하기 연산자 오버로딩은 굉장히 좋은 기능이지만 굉장히 위험할 수도 있습니다 예를 들어 팩토리얼 구하는 함수를 생각해 봅시다fun Int.factorial(): Int = (1..this).product()fun Iterble.product(): Int = fold(1) {acc, i -> acc *1 }이 한수는 Int 확장 함수로 정의되어 있으므로, 굉장히 편리하게 사용할 수 있습니다.코틀린은 10*6! 코틀린은 이런 연산자를 지원하지 않지만, 다음과 같이 연산자 오버로딩을 활용하면, 만들어 낼 수 있습니다.operator fun Int.not() = factorial()print(10 * !6)  이렇게 사용할수 있지만 이렇게 사용해서는 안됩니다.  이렇게 사용하면 오해의 소지가 있습니다. 코틀린의 ..
API API 만드는 순서 필요한 라이브러리를 추가해 주고implementation("com.squareup.retrofit2:retrofit:2.9.0")implementation("com.squareup.retrofit2:converter-gson:2.9.0") 오브젝트 클래스와 인터페이스 클래스를 만든다인터페이스를 정의 해준다interface VideoInterface { @GET("videos") suspend fun getVideoData( @Query("key") key: String, @Query("part") part: String, @Query("id") id: String ): PopularData} 레트로핏 설정과 API를 호출한다private val retrofitBase = Retrofi..
ViewModel ViewModel 클래스는 비즈니스 로직 또는 화면 수준 상태 홀더입니다. UI에 상태를 노출하고 관련 비즈니스 로직을 캡슐화합니다.  비즈니스 로직 또는 화면 수준 상태 홀더 : 사용자 이벤트를 처리하여 데이터, 도메인 측에서 화면 UI로 데이터를 변환해주는 역할 또는 화면에 표시해야하는 항목을 들고 있어주는 (holder) 역할입니다   ViewModel은 UI 관련 데이터를 저장하고 관리해주는 역할을 합니다. 사용시 이점 : 구성 변경이 발생하게 되면 Activity는 없어졌다가 다시 만들어지게 되서 초기화 되지만 viewmodel은 구성 변경에도 UI 상태를 유지합니다.ViewModel 생성 과정ViewModelProvider를 생성한다.ViewModelProvider은 ViewModelStore..
LinearLayoutManager ,GridLayoudManager ,StaggeredGridLayoutManager ,getContext,requireContext LinearLayoutManager : 수평,수직으로 배치시켜주는 레이아웃 매니저입니다.GridLayoudManager : 그리드 화면으로 배치(2단,3단진열 등)시켜주는 레이아웃 매니저입니다.StaggeredGridLayoutManager : 높이가 불규칙한 그리드 화면으로 배치시켜주는 레이아웃 매니저입니다.   LinearLayoutManager의 수직(상하)으로 리스트  LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(linearLayoutManag..
android color #FF000000 #FFFFFFFF #FAFAFA #F5F5F5 #EEEEEE #E0E0E0 #BDBDBD #9E9E9E #757575 #616161 #424242 #212121 #FFEBEE #FFCDD2 #EF9A9A #E57373 #EF5350 #F44336 #E53935 #D32F2F #C62828 #B71C1C #FF8A80 #FF5252 #FF1744 #D50000 #FCE4EC #F8BBD0 #F48FB1 #F06292 #EC407A #E91E63 #D81B60 #C2185B ..
알고리즘 29 ,min 제일 작은수 제거하기문제 설명정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.제한 조건arr은 길이 1 이상인 배열입니다.인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.class Solution { fun solution(arr: IntArray): IntArray { var answer = intArrayOf() answer = arr.filter {it != arr.minOrNull()}...
디버깅, log 디버깅 이란디버깅은 모든 소프트웨어에서 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정소프트웨어가 예상대로 작동하지 않으면 프로그래머는 오류가 일어나는 원인을 알아내기 위해 코드를 분석합니다.디버깅 도구를 사용해 소프트웨어를 제어된 환경에서 실행하고 코드를 단계별로 확인하여 문제를 분석하고 수정합니다.디버깅이 중요한 이유컴퓨터 프로그래밍은 추상적이고 개념적인 활동인 만큼, 버그와 오류가 발생하기 마련입니다.컴퓨터는 전자 신호의 형태로 데이터를 조작합니다. 프로그래밍 언어는 사람이 컴퓨터와 더 효율적으로 상호 작용할 수 있도록 이 정보를 추상화합니다. 모든 유형의 소프트웨어에는 여러 가지 추상화 계층이 있으며, 애플리케이션이 정상적으로 작동하도록 여러 구성 요소가 서로 통신합니다.오류가 발생할 경우 문..
Retrofit 1. 서버와 클라이언트1.1. 서버와 클라이언트: 기본 개념서버 (Server): 데이터나 리소스를 제공하는 시스템. 사용자의 요청을 기다리고, 요청이 들어오면 그에 맞는 응답을 전송합니다.클라이언트 (Client): 사용자를 대표하여 서버에 정보나 서비스를 요청하는 시스템. 웹 브라우저, 모바일 앱, 데스크톱 앱 등 다양한 형태로 존재합니다.통신 과정: 클라이언트는 서버에 특정한 정보나 서비스를 요청하고, 서버는 해당 요청을 처리한 뒤 적절한 응답을 클라이언트에게 전송합니다.프론트와 백엔드?웹 개발자 직군에 대해서 찾아보게되면 처음으로 듣게 되는 용어가 프론트엔드와 백엔드 개발자 인데 프론트와 백엔드는 아키텍쳐에서 어떤 분야를 다루느냐에 따라 나뉜다클라이언트처럼 사용자가 눈으로 보고 UI클릭, 터치 하..