-
[Android] Text To Sppech(TTS)
[Android] Text To Speech (TTS) TTS란? Text To Speech의 약자로 텍스트를 음성으로 출력해주는 것을 말한다. 본 예제는 안드로이드에서 기본적으로 지원해주는 Android.speech.tts 를 사용한다. 사용법 사용 방법은 초기화, 설정, 출력으로 매우 간단하다. 1. 초기화... Read More
-
[TIL] Android - Youtube Data API를 사용해서 동영상 검색하기(OAuth, Api key)
[Android] Youtube Data API - 동영상 검색(Oauth, Api key) 과거 유튜브 알람앱을 만들때에는 유튜브 동영상의 공유를 통해 아이디를 받아와서 사용하도록 했었지만 새롭게 출시할 앱은 앱 내에서 검색 기능도 추가할 겸 Youtube Data Api를 사용하는 방법을 알아보았다. 해... Read More
-
[Android] StartActivity in BroadCastReceiver
[Android] StartActivity in BroadCastReceiver 필요상황 알람앱을 제작중 AlarmManager를 통해 지정한 시간에 BroadCastReceiver를 실행하고 해당 Receiver에서 AlarmActivity를 실행하도록 했다. Android 12부터 제한사항... Read More
-
[Android] CoordinatorLayout + CollapsingToolbarLayout 사용 시 스크롤에 따른 색상 변경 없애기
[Android] CoordinatorLayout + CollapsingToolbarLayout 사용 시 스크롤에 따른 색상 변경 없애기 <CoordinatorLayout> <AppbarLayout> <CollapsingToolbarLayout ..... Read More
-
JSP와 MVC의 개요
템플릿 엔진 서블릿 덕분에 동적으로 원하는 HTML을 마음껏 만들 수 있다. 정적인 HTML 문서라면 화면이 계속 달라지는 회원의 저장 결과라던가, 회원 목록같은 동적인 HTML을 만드는 일은 불가능 할 것이다. 템플릿 엔진이 나온 이유 자바 ... Read More
-
웹 애플리케이션 이해
웹 서버와 웹 애플리케이션 서버 웹 애플리케이션 서버 (WAS - Web Application Server) HTTP 기반 동작 웹 서버 기능 포함 + 정적 리소스 제공 가능 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) ... Read More
-
웹 기본 지식 - HTTP 상태코드
상태코드 소개 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Err... Read More
-
웹 기본 지식 - HTTP 메서드 활용
클라이언트에서 서버로 데이터 전송 데이터 전달 방식의 큰 2가지 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입,... Read More
-
웹 기본 지식 - HTTP
모든 것이 HTTP HyperText Transfer Protocol 현재는 거의 모든 것을 전송이 가능하며, 대부분을 HTTP를 사용한다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML(API) 역사 ... Read More
-
웹 기본 지식 - HTTP 메서드
HTTP API를 만들어보자 요구사항 회원정보 관리 API를 만들어야한다. 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 1. API URI 설계 회원 목록 조회 /read-member-list... Read More
-
웹 기본 지식 - URI와 웹 브라우저 요청 흐름
URI(Uniform Resource Identifier) URI, URL, URN URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다. [ URI ] 자원을 식별하는 가장 큰 영역 [ URL ] Resource Locator 위... Read More
-
웹 기본 지식 - 인터넷 네트워크
IP(Internet protocol) 인터넷 프로토콜의 역할 지정한 IP 주소(Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터를 전달 인터넷 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 ... Read More
-
Spring 핵심 원리 - 스프링 빈 스코프
빈 스코프 빈 스코프란? 스프링 빈은 기본적으로 싱글톤 스코프로 생성된다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 빈 스코프의 종류 [ 싱글톤 ] 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. [... Read More
-
Spring 핵심 원리 - 스프링 빈 생명주기 콜백
빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리하거나 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하는 경우 객체의 초기화 혹은 종료 작업이 필요하다. 네트우크 연결을 가정한 예제 애플리케이션 시작 시점에 connect() 를... Read More
-
Spring 핵심 원리 - 의존관계 자동 주입
다양한 의존관계 주입 방법 1. 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. [ 특징 ] 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용된다. 외부에서 주입된 인스턴스에 대한 변경이 불가능 하도록 한다. ... Read More
-
Spring 핵심 원리 - 컴포넌트 스캔
컴포넌트 스캔과 의존관계 자동 주입 시작하기 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀 찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한 다. 의존관계도 자동으로 주입하는... Read More
-
Spring 핵심 원리 - 싱글톤 컨테이너
웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 얼마든지 개발 할 수 있다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 매번 새로운 객... Read More
-
Spring 핵심 원리 - 스프링 컨테이너와 스프링 빈
스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링... Read More
-
Spring 핵심 원리 - 객체 지향 원리 적용
새로운 할인 정책 개발 정률% 할인으로 변경 예를 들어서 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 1000원을 할인했는데, 이번에 새로 나온 정책은 10%로 지정해두면 고객이 10000원 주문시 1000원을 할인해주고, 20000원 주문시에 2000원을 ... Read More
-
Spring 핵심 원리 - 예제 만들기
비즈니스 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다... Read More
-
Spring 핵심 원리 - 객체지향설계와 스프링
스프링이란? 스프링이라는 단어는 문맥에 따라 다르게 사용된다. 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 핵심 개념 [ 왜 만들었는가?, 핵심 컨셉은? ] 자바 언어 기반의... Read More
-
Spring 입문6. AOP
참고 강의:https://www.inflearn.com/roadmaps/373 AOP AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶을때 공통 관심사항 VS 핵심 관심 사항 회원가입 시간, 회원조회 시간을 측정하고 싶다면? 시간을 측정하는 기능은 핵심 관심 사항이 아니다. ... Read More
-
Spring 입문5. 스프링 DB 접근 기술
참고 강의:https://www.inflearn.com/roadmaps/373 스프링 DB 접근 기술 H2 데이터베이스 설치 https://www.h2database.com 다운로드 및 설치 h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다. 권한 주기: chmod 755 h2.... Read More
-
Spring 입문 4. 스프링빈과 의존관계
스프링빈과 의존관계 참고 강의:https://www.inflearn.com/roadmaps/373 스프링 빈이란? 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트를 의미한다. 인스턴스화된 객체를 의미 기본으로 싱글톤으로 등록한다. (같은 스프링 빈인... Read More
-
Spring 입문 3.회원관리 예제(테스트 케이스 입문)
회원관리 예제 참고 강의:https://www.inflearn.com/roadmaps/373 비즈니스 요구 사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 위 서비스는 안드로이드의 유스케이스... Read More
-
Spring 입문 2.스프링 웹 개발 기초
스프링 웹 개발 기초 참고 강의:https://www.inflearn.com/roadmaps/373 웹을 개발한다의 간략한 설명 정적 컨텐츠 웰컴 페이지와 같은 서버작업 없이 웹브라우저에 파일 그대로 보여줌 MVC와 템플릿 엔진 JS... Read More
-
Spring 입문 1.프로젝트 환경설정
Spring 기본 스프링 세팅 도움 스프링 부트 기반으로 스프링 프로젝트를 만들어준다. Maven vs Gradle 라이브러리 저장소 및 빌드 라이프사이클 관리 과거에는 Maven을 이용하지만 최근에는 Gradle로 넘어가는 추세 Spring Boot snapsh... Read More
-
[TIL] Kotlin - 예외를 활용해 코드에 제한을 걸어라
예외를 활용해 코드에 제한을 걸어라 확실한 동작을 원하는 경우 예외를 걸어라. 코틀린에서 코드의 동작에 제한을 거는 방법 require 블록: 아규먼트를 제한할 수 있다. check 블록: 상태와 관련된 동작을 제한할 수 있다. assert 블록: 어떤 것이 true 인지 확인할 수 있다.(테스트 코드에서만 사용) E... Read More
-
[TIL] Kotlin - inferred 타입으로 리턴하지 말라(타입 추론)
inferred 타입으로 리턴하지 말라. 들어가기에 앞서.. 타입 추론(type inference)은 널리 알려진 코틀린의 특징이다. 자바는 자바10 부터 코틀린을 따라 타입 추론을 도입(코틀린과 비교 시 몇 가지 제약) 타입 추론을 사용할 때 주의할 점 특징 할당 때 inferred 타입은 정확하게 오른쪽에 있는 피연산자... Read More
-
[TIL] Kotlin - 최대한 플랫폼 타입을 사용하지 말라
최대한 플랫폼 타입을 사용하지 말라 들어가기에 앞서.. 코틀린의 주요기능으로는 널 안정성(null-safety)이 있다. 자바에서 자주 만나는 NPE를 코틀린에서는 거의 찾아보기가 힘들다. null-safety 메커니즘이 없는 자바, C등의 언어를 코틀린과 연결해서 사용하느 경우에는 이러한 예외가 발생할 수 있다.... Read More
-
[TIL] Kotlin - 변수의 스코프를 최소화하라
변수의 스코프를 최소화하라 스코프를 최소화하는 것이 좋다. 프로퍼티보다는 지역변수를 사용하는 것이 좋다. 최대한 좁은 스코프를 갖도록 변수를 사용하는것이 좋다. 반복문 내부에서만 변수가 사용되는 경우, 변수를 반복문 내부에 작성하는 것이 좋다. 💡 요소의 **스코프란** 요소를 볼 수 있는 영역(visible)... Read More
-
[TIL] Kotlin - 가변성을 제한하라
가변성을 제한하라 들어가기에 앞서.. 코틀린은 모듈로 프로그램을 설계한다. 모듈은 클래스, 객체, 함수, 타입별칭(type alias), 톱레벨 프로퍼티 등의 다양한 요소로 구성된다. 요소 중 일부는 상태(var, mutable)를 가질 수 있다. var age = 20 var ... Read More
-
[TIL] Kotlin - 공통 모듈을 추출해서 여러 플랫폼에서 재사용하라.
공통 모듈을 추출해서 여러 플랫폼에서 재사용하라. 들어가기에 앞서.. 기업이 하나의 플랫폼만을 대상으로 애플리케이션을 만드는 경우는 없다. ex)최소 서버와 클라이언트 애플리케이션끼리는 서로 소통하므로, 재사용할 수 있는 부분이 많다 특히 다른 플... Read More
-
[TIL] Kotlin - 제네릭 타입과 variance 한정자를 활용하라.
제네릭 타입과 variance 한정자를 활용하라. 코틀린의 타입파라미터 💡 코틀린의 제네릭은 기본적으로는 불공성이다. (한정자 가 없는 경우) 불공변성, 무공변성 (Invariant) 제네릭 타입으로 만들어지는 타입들이 서로 관련성이 없다를 의미 Exam<Int> 와 Exam<Number> ... Read More
-
[TIL] Kotlin - 타입 파라미터의 새도잉을 피하라.
타입 파라미터의 새도잉을 피하라. 섀도잉이란? class Programmer( private val name: String ) { fun addKeyboard(name: String){ ... } } 위 예시 처럼 프로퍼티(name)와 파라미터(name)가 동일한 이름을 사용하는 경우 지역 파라미터가 외부 스코... Read More
-
[TIL] Android - Compose 기본
[Android] Compose Codelab 컴포즈란? 안드로이드에서 UI 개발을 간소화하기 위해 설계된 최신 툴킷 UI 개발을 단순화 하며 반응형 프로그래밍모델을 사용한다. xml을 사용하지 않고 kotlin을 사용한다. 선언형 UI 프레임워크로 데이터를 UI 레이어로 변환해주는 일련의... Read More
-
[TIL] Kotlin - 일반적인 알고리즘을 구현할 때 제네릭을 사용하라.
일반적인 알고리즘을 구현할 때 제네릭을 사용하라. 제네릭의 이점 inline fun <T> Iterable<T>.filter( predicate: (T) -> Boolean ): List<T> { val destination = ArrayList<T>() for (element in t... Read More
-
[TIL] Kotlin - 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라.
일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라. 들어가기에 앞서.. 코틀린에서는 코드 재사용과 관련해서 프로퍼티 위임이란느 기능을 제공합니다. 대표적인 예시가 처음 사용하는 요청이 들어올 때 초기화 되는 지연 프로퍼티인 lazy 자바 등에서는 어노테이션을 많이 활용하지만 코틀린에서는 프로퍼티 위임을 통해 다양한 패턴들... Read More
-
[TIL] Kotlin - 일반적인 알고리즘을 반복해서 구현하지 말라.
일반적인 알고리즘을 반복해서 구현하지 말라 들어가기에 앞서.. 이번 아이템에서 다뤄볼 알고리즘이란 특정 프로젝트에 국한된 것이아니라, 수학적인 연산, 수집 처리와 같은 별도의 모듈 또는 라이브러리로 분리할 수 있는 부분을 의미합니다. ex)숫자를 특정 범위에 맞추는 간단한 알고리즘. ... Read More
-
[TIL] Kotlin - Knowlege를 반복하여 사용하지 말라.
knowledge를 반복하여 사용하지 말라. 필자가 말하는 큰 규칙은 다음과 같습니다. 프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. 흔히 말하는 DRY규칙(Don’t Repeat Yourself), WET안티패턴(개발자는 타이핑을 좋아하느모, 많은 사람의 시간을 낭비하게... Read More
-
[TIL] Android - Mac에서 APK 디컴파일 하기
[Android] Mac에서 APK 디컴파일 하기 암호화가 잘 적용이 됐는지 확인하기 위해 APK를 Decompile 해봐야할 때가 있다. 준비물 jd-gui apktool, dex2jar 확인하고자 하는 APK 1. jd-gui 준비하기 Clone받아서 b... Read More
-
[TIL] Android - AutoCompleteTextView With ArrayAdapter disable click(아이템 선택 안되도록 변경)
해당하는 아이템이 없는 경우 특정 텍스트 보여주기. AutoCompleteTextView + ArrayAdapter를 통해 검색어를 포함하는 항목을 보여주고 검색어가 없는경우 “해당하는 항목이 없습니다”이 뜨도록 해두었다. ... override fun getCount(): Int { val count = super.getCou... Read More
-
[TIL] Android - keystore
[Android] APK 키스토어 확인 APK의 서명된 fingerprint 확인 keytool -printcert -jarfile **app-debug.apk** keytool -printcert - jarfile [확인하고자 하는 APK] 키스토어의 fingerprint 확인 key... Read More
-
[TIL] Android - TextView에 클릭이벤트 추가하기 (Spanable)
필요성 로그인 화면과 같이 약관을 확인할 수 있는 화면에서 텍스트에 일정부분에만 밑줄과 함께 링크를 제공하거나 특정 액션을 취해야할 때가 있다. 방식 텍스트뷰의 확장함수를 통해 SpannableStringBuilder, ClickableSpan을 통해 액션을 추가한다. 아래 참고자료 링크... Read More
-
[TIL] Android - Fragment에서 Back Pressed 처리하기
[Android] Fragment에서 Back Pressed 처리하기. 필요성 최근에는 앱을 만들다 보면 필연적으로 Fragment를 사용하게 되고 기획이나 디자인에 따라 뒤로가기 시 동작을 현재 Fragment 별로 다르게 해야하는 일이 많습니다. 예전에는 interface를 통한 리스너나 braodcastr... Read More
-
[TIL] Android - MMS데이터 가져오기.
MMS 데이터 가져오기. SMS는 비교적 간단하게 가져올 수 있지만 MMS는 여러 테이블을 통해 가져와야합니다. 아래 예제는 Mms에서도 텍스트로 이루어진 MMS만을 가져온다. 필요 권한 Manifest.permission.READ_SMS 순서 TelePhony.Mms.Conten... Read More
-
[TIL] Android - ADB를 통한 액티비티 스택 확인하기
ADB를 통한 액티비티 스택 확인하기 adb shell dumpsys activity activities | grep -i "Hist" adb shell dumpsys activity | grep -i "PACKAGENAME" Read More
-
[TIL] Android - Room 의 @Ignore 사용 시 에러
문제 발생 Room에서 Entity의 프로퍼티 중 칼럼으로 사용하고 싶지 않은 경우 @Igore 를 사용하면 된다고 공식 레퍼런스에 나와있다. 하지만 단순히 @Ignore 어노테이션만 사용 시 error: Entities and POJOs must have a usable public constructor. You... Read More
-
[TIL] Android - Hilt with workmanager
WorkManager를 Hilt와 함께 사용하는 방법 1. 의존성 추가 dependencies { implementation("androidx.hilt:hilt-work:1.0.0") // When using Kotlin. kapt("androidx.hilt:hilt-comp... Read More
-
[TIL] Android - Navigation Component 사용 중 DialogFragment 결과값 받기
[Android] Navigation Component 사용 중 DialogFragment 결과값 받기 Navigation Component의 backStack을 활용해서 데이터를 주고 받는게 가능하다. 예시로 ExamFragment에서 ExamDetailDialogFragment로 navigate 한 경우 백스... Read More
-
[TIL] Android - ListAdapter.submitList로 뷰가 업데이트 되지 않는 이유(스크롤 해야 뷰가 업데이트 되는 이유)
[Android] listAdapter submitList로 뷰가 업데이트 되지 않는 이유(스크롤을 해야 뷰가 업데이트 되는 이유) 문제 발생 RecyclerView + ListAdapter로 리스트를 보여주고 있었다. 어떤 트리거에 따라 주기적으로 리스트를 업데이트 해야했는데 분명 데이터는 변경되었고 Lis... Read More
-
[TIL] Android - android.view.AbsSavedState$1 cannot be cast to 에러
[Android] java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState 문제 발생 커스텀뷰를 만들던 중 ClassCastException 가 발생하는 경우가 있... Read More
-
[TIL] Android - Hilt 정리
[Android] hilt 정리 Hilt란? 의존성 주입을 보다 편 하게 구현할 수 있도록 도와주는 라이브러리다. Android에 컴포넌트에 맞는 컨테이너 및 생명주기를 자동으로 관리 dagger를 기반으로 빌드됨 의존성 추가 buildscript { dependenci... Read More
-
[TIL] Android - RxJava (5) Subject
Subject Subject는 Observable과 Observer를 모두 구현한 추상 타입으로 하나의 소스로부터 다중의 구독자에게 멀티 캐스팅이 가능하며, Observer를 구현하므로 onNext(), onError(), onComplete() 등의 메서드를 수동으로 호출하여 이벤트를 구독자들에게 전달할 수 있습니다. Pu... Read More
-
[TIL] Android - RxJava (4) 배압과 Flowable
배압(BackPressure) RxJavad에서 Observable은 생성자(Producer)와 소비자(Consumer)로 나눌 수 있습니다. 생성자는 아이템을 발행하며, 소비자는 생산자가 발행한 아이템을 구독합니다. Observable에서 아이템을 빠르게 발행하는데, 구독자는 이를 빠르게 소비하지 못한다면 생... Read More
-
[TIL] Android - RxJava (3) 스케줄러
스케줄러 RxJava에서는 스케줄러(Scheduler)를 통해 멀티 스레드와 같은 비동기 작업을 돕습니다. RxJava에서는 Schedulers 클래스에서 제공하는 정적 팩토리 메서드를 통해 스케줄러를 설정할 수 있습니다. val ioScheduler : Scheduler = Schedulers.io() val comp... Read More
-
[TIL] Android - RxJava (2) 연산자
RxJava 연산자 RxJava에서는 특정한 작업을 수행하는 메서드를 연산자라고 합니다.대부분의 Observable 연산자는 Observable을 반환하므로 연산자의 결과가 다음 연산자에 영향을 미치기 떄문에 Observable의 체이닝 순서는 중요 합니다. Observable을 생성하는 연산자 just(),... Read More
-
[TIL] Android - RxJava (1)
RxJava란? ReactiveX(Reactive Extensions)를 자바로 구현한 라이브러리 이벤트 처리 및 비동기 처리의 구성에 최적화된 라이브러리 Observable 추상화 및 관련 함수에 중점을 둔 단일 JAR로 가벼운 라이브러리 왜 RxJava를 배워야 할까? 안드로이드는 사용자의 이벤트에 따라 ... Read More
-
[TIL] Android - Paging 3
최근에 사전과제를 진행하면서 처음으로 페이징 라이브러리를 사용하며 공부한 내용입니다. 페이징이란? 페이징은 대량의 데이터를 한 번에 불러오는 것이 아니라 필요한 만큼 일부분을 나눠서 가져오는 것을 의미합니다. API에 따라 limit(한 번에 보여줄 데이터의 수), offset(데이터의 인덱스) 등으로 페이징 ... Read More
-
[TIL] 동기와 비동기, Blocking, Non-Blocking
동기와 비동기, Blocking과 Non-Blocking을 많이 보고 듣게 되지만 해당 개념들을 생각해보자면 두루뭉술하게 안다고 해야 할까? 헷갈리기도 하고 명확하게 설명하기는 힘든 느낌이 들어 정리해보려 합니다. Blocking과 Non-Blocking 자신의 제어권이 관점입니다. Blocking... Read More
-
[TIL] Android - DI 라이브러리 Koin
최근에 개발하면서 DI의 필요성을 느끼게 되었고 DI를 지원하는 라이브러리 Koin, Dagger2, Hilt 중에 Dagger2를 먼저 알아보다가 러닝커브가 높다고 느껴져서 Koin 먼저 해보기로 했습니다 ㅠ.. 해당 예제는 깃헙에서 확인할 수 있습니다. koin 이란? Android 에서 주로 사용되는 의존선... Read More
-
[TIL]Android - BuildConfig 상수 추가
BuildConfig 앱을 빌드하면 BuildConfig 클래스가 생성 됩니다. 이 클래스를 통해 Application id, Build Type, Version code, Version Name을 확인할 수 있습니다. 해당 클래스에 정의된 상수들을 불러와 디버그시에만 로그를 찍는다든지 api 키값을 변... Read More
-
[TIL]객체 지향 프로그래밍 SOLID 원칙
SOLID 원칙(객체 지향 설계) SOLID 원칙은 5가지 원칙의 머리글자를 따와 만든 명칭입니다. 유지 보수와 확장이 쉬운 애플리케이션을 만들고자 할 때 이 원칙을 적용할 수 있습니다. 코드의 가독성을 높이고 확장이 쉬운 구조를 만드는 지침이라고 할 수 있습니다. Single Responsibility ... Read More
-
[TIL] Android - ndk 에러 java.lang.UnsatisfiedLinkError
최근에 개인앱을 업데이트 하기 위해 프로덕션에 새 버전을 만들어 올렸는데 검토중에 크래시리틱스 알람이 오는걸보니 구글에서 테스트 중에 발생한 것 같습니다. Fatal Exception: java.lang.UnsatisfiedLinkErrordalvik.system.PathClassLoader 발생 원인... Read More
-
[kotlin] 컬렉션 타입과 람다
컬렉션 타입과 람다 집합 연산 함수 forEach(), forEachIndexed() 함수명 기능 forEach() 컬렉션 타입의 데이터 개수만큼 특정 구문을 반복 실행할 때 유용 forEachIndexed() ... Read More
-
[kotlin] kotlin의 고차함수와 인라인 함수
고차함수(High-Order Function) 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말합니다. 고차 함수 내에서 매개변수로 함수 타입을 선언하고 고차 함수를 호출하는 곳에서 람다 함수를 전달하는 구조 입니다. 아래는 Int 타입 매개변수 두 개를 전달받아 결과로 Int 타입의 데이터를 반환하는 일반함수와 매개변수로 함수를 받는 예시 입니다.... Read More
-
[kotlin] 함수형 프로그래밍과 람다
함수형 프로그래밍 함수형 프로그래밍 정의 데이터의 흐름과 값의 변경에 따라 프로그래밍하지 않고 필요한 로직을 함수로 만들어서 함수들의 흐름에 따라 프로그래밍하자는 개념 입니다. 프로그래밍 패러다임으로서의 함수형 프로그래밍 절차지향 프로그래밍: 알고리즘과 로직 중심으로 문제 해결이 주목적 예)C,Pascal ... Read More
-
[kotlin] kotlin의 다양한 클래스
data class 흔히 객체지향 프로그래밍에서 VO(Valiew-Object)클래스라 부르는 클래스 내부에 특별한 로직의 함수 없이 데이터만을 포함하는 클래스로 더 편하게 이용하기 위한 클래스 입니다. class 앞에 data라는 예약어로 선언합니다. 주 생성자를 선언해야 하며 주 생성자의... Read More
-
[kotlin] kotlin의 추상클래스, 인터페이스
추상 클래스 abstract class 추상 클래스란 추상 함수를 포함하는 클래스를 의미 합니다. 추상함수, 추상 프로퍼티 추상 함수는 미완성 함수 혹은 실행 영역이 없는 함수를 의미합니다. 추상 함수는 반드시 함수 선언 부분에 abstract 예약어가 있어야 합니다. 추상 ... Read More
-
[kotlin] kotlin의 상속
상속 상속이란 클래스를 선언할 때 다른 상위 클래스를 참조해 작성하는 개념 입니다. 상위 클래스에 정의된 멤버(함수, 프로퍼티)를 하위 클래스(상속받아 정의 하는 클래스)에서 자신의 멤버처럼 사용할 수 있습니다. Any 클래스 코틀린의 모든 클래스는 Any 클래스의 서브 클래스 입니다. 클래스를 선... Read More
-
[kotlin] kotlin의 프로퍼티
프로퍼티 (Property) 코틀린에서는 클래스내의 변수(var, val 로 선언되는)를 프로퍼티(Property)라 부릅니다. 그 이유는 흔히 접근자라고 부르는 getter와 setter 함수가 내장되어 있습니다. 프로퍼티를 작성하는 형식 [] 대괄호는 생략 가능을 의미 var <propertyName&g... Read More
-
[kotlin] kotlin의 클래스
class 객체지향 프로그래밍의 기본은 클래스를 선언하고 클래스 내에 여러 구성요소를 담은 후 객체로 생성해서 사용하는 것입니다. 클래스 선언 코틀린에서 클래스를 선언하는 방법은 class 예약어를 이용합니다. 코틀린 소스는 확장자가 kt인 파일로 만들어지는데 그 파일 안에 클래스를 다양한 형태로 정의해서 사용 할 수 있습니다... Read More
-
[kotlin] kotlin의 흐름 제어 구문
조건문 if 표현식 조건에 맞으면 특정 영역을 실행하는 구문입니다. kotlin 에서의 특징으로는 if문이 표현식(expression) 이라는 점입니다. 일반적인 if문 ex) val max = 5 fun isMax(value : Int) : Boolean { return if(max <= value){ true }els... Read More
-
[kotlin] kotlin null 안전 연산자
Null 안전 연산자 코틀린 에서는 Null에 대한 처리가 엄격합니다. 그에따라 제공하는 연산자 입니다. 연산자 사용법 설명 ? val a: Int? 변수 a의 데이터타입을 N... Read More
-
[kotlin] kotlin 의 데이터 타입
데이터 타입 코틀린에서 모든 것은 객체(Object)입니다. 데이터 타입을 명시할 때 다른 언어(C나 자바)에서는 int, double 등의 기초 타입과 Integer,Double 등의 Wrapper 클래스로 구분해서 사용하지만, 코틀린에서는 기초 타입이 없습니다. ex) val intValue : Int = 10 val res... Read More
-
[Android] Android Context란?
Context 란? 안드로이드 개발을 하다 보면 자주 나오는 Context는 무엇일까요? 안드로이드 공식 레퍼런스 에서는 이렇게 나와있습니다. Interface to global information about an application environment. This is an abstract... Read More
-
[kotlin] kotlin 의 변수 및 함수
코틀린이란? intelliJ로 유명한 젯브레인의 오픈소스 그룹에서 개발한 프로그래밍 언어이다. 코틀린의 특징 자바, 안드로이드 100% 호환성 코틀린으로 개발된 코드는 자바 클래스로 빌드되어 JVM 에서 동작 한다. kt 파일은 자바의 class 파일로 바뀌어 실행 null... Read More
-
[Android] Tip - Mac에서 핸드폰 미러링 하기
나는 Mac으로 Android 앱개발을 하면서 에뮬레이터 보다는 실기기를 주로 사용을 하고있다. 코딩을 하다가 핸드폰을 들고 기능 확인을 한다던가 하면 이리저리 움직이는게 너무 불편해서 미러링 프로그램을 찾아보다 설치와 사용도쉬운 scrcpy를 찾았다. Mac OS 에서 설치법 패키지 관리자인 homebrew가 필요하다. 없... Read More
-
[Android] Adb 이용하여 Doze Mode 진입
Android 6.0(23)버전 부터 Doze mode가 도입 되었다. Doze 모드 진입 adb shell dumpsys battery unplug - 베터리 충전 중지(ACTIVE 상태에서 넘어가기위함1) 해당 기기의 스크린을 끈다 - ACTIVE 상태에서 넘어가기위함2 4번이 ... Read More
-
[TIL] Android - View 성능 올리기
View 성능 개선 방안 1. 오버드로우 줄이기 오버드로우를 줄이면 불필요한 GPU리소스를 줄이고 퍼포먼스를 끌어올릴 수 있다. 오버드로우(OverDraw)란? 같은 픽셀에 여려번 덧 칠하는 것을 의미한다. 1.1 불필요한 배경 중첩이 일어나는 경우 <LinearLa... Read More
-
[TIL] DI,의존성 주입
의존성 주입(Dependency Injenction) 의존성을 주입한다.. 라는게 뭘까요? 일단 의존성이 뭔지 알아야곘죠? 1. 의존성이란 무엇일까? class Keyboard{ fun typing(){} } class Computer{ val keyboard = Keyboard() fun me... Read More
-
[TIL] md파일 작성법
우연히 유튜브에서 드림코딩엘리님의 Markdown 작성법을 보고 블로그를 시작하게 하면서, 해당 영상의 내용을 정리해 보았다. Heading 1 - # Heading 1 Heading 2 - ## Heading 2 Heading 3 - ### Heading 3 Heading 4 - #### Heading 4 Heading 5... Read More