Programming

    [Android] DataBinding

    DataBinding은 UI 요소와 데이터를 프로그램적 방식으로 연결하지 않고 선언적 형식으로 결합할 수 있도록 도와주는 Jetpack 라이브러리의 한 기능이다. 프로그램적 방식 vs 선언적 방식 프로그램적 방식 TextView에 문자열을 넣기 위해 코틀린 코드상에서 값을 집어넣는다. // findViewById val textView = findViewById(R.id.textView) textView.text = "hello" // ViewBinding binding.textView.text = "hello" 선언적 방식 코틀린 코드에는 로직만을 위한 코드를 만기고 뷰와 관련된 작업은 레이아웃 파일(XML)에 정의한다. 즉 dataBinding은 데이터와 뷰를 연결하는 작업을 레이아웃(XML)파일에서..

    [Android] ViewPager

    [Android] ViewPager

    ViewPager는 좌우 스크롤을 통해 화면을 넘겨볼 수 있는 기능을 제공해준다. 부분 화면 여러 개를 변환하여 보여주기 때문에 Fragment를 사용하여 구현하며, 여러 개 중 하나를 선택하는 형태의 위젯이므로 리스트뷰와 같이 어댑터를 사용하여 데이터를 분배해 주어야 한다.

    [Android] Retrofit2

    Retrofit은 안드로이드와 서버간의 REST API 통신을 도와주는 라이브러리로, okHTTP에 기반을 두고 있다. 높은 성능과 가독성으로 현재 가장 인기가 많은 통신 라이브러리 중 하나이다. Retrofit의 장점 1. 높은 성능 HTTP 통신을 지원하는 다른 라이브러리들과 비교했을 때 높은 성능을 보여준다. 2. 뛰어난 가독성 Annotation으로 HTTP 메소드를 정의함으로서 코드의 구현이 쉬워지며 개발자들은 행위를 손쉽게 알아볼 수 있게 되어 직관적으로 코드를 설계할 수 있게 된다. 3. 쉬운 유지보수 Retrofit은 서버 연동 시 주로 주고받는 데이터인 JSON, XML을 자동을 파싱해주는 Converter 연동을 지원해주기 때문에 개발자 입장에서는 유지보수가 매우 편리하다. 사용법 1...

    [Android] Glide

    Glide는 안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리이다. ImageView로 이미지 리소스를 넣을때 src로 바로 넣을 수 있지만, 사이즈가 큰 이미지의 경우 OOM을 발생시키기도 해서 Glide를 사용하는 것이 좋다. Glide를 사용하면 이미지가 타일형식으로 로드되어 로드 도중 OOM 문제가 발생되지 않는다. 또한 이미지 로딩 속도가 빠른 장점도 있고 drawable의 이미지 리소스 뿐만 아니라, url의 이미지를 가져오거나 GIF 같은 움직이는 이미지도 넣을 수 있고 여러가지 기능도 있어 유용한 라이브러리이다. 사용법 1. gradle에 dependencies 추가 dependencies { implementation 'com.github.bumptech.gli..

    train, test data split

    scikit-learn 라이브러리의 train_test_split 함수를 사용하면 train data와 test data를 원하는 조건으로 쉽게 분리 가능하다. from sklearn.datasets import load_iris # 샘플 데이터 로딩 from sklearn.model_selection import train_test_split # load sample dataset = load_iris() data = dataset['data'] target = dataset['target'] # train_test_split x_train, x_valid, y_train, y_valid = train_test_split(data, target, test_size=0.2, shuffle=True, st..

    ImageDataGenerator

    딥러닝 모델의 overfitting을 방지하고 성능을 높히는 가장 근본적인 방법은 학습 데이터의 다양성을 늘리는 것이다. Data Augmentation은 이 문제를 해결하기 위한 방법 중 하나로 원본 이미지 데이터를 다양한 버전으로 만들어 학습시키는 것이다. 대표적인 augmentation 기법으로는 원본 이미지를 수평 또는 수직 반전 시키는 방법, 회전시키는 방법, 일부를 짜르는(crop) 방법, RGB 채널 순서를 바꾸거나 픽셀값을 변경하여 원본 이미지의 색조를 변경시키는 것들이 있다. 사용법 generator 생성 train_datagen = ImageDataGenerator(rescale=1/255) validation_datagen=ImageDataGenerator(rescale=1/255) ..

    [Android] ViewBinding

    ViewBinding ViewBinding이란 findViewById를 대체하는 방식으로 findViewById 를 쓰지 않고, XML의 view component에 접근하는 object를 반환받아 view에 접근하는 방식이다. ViewBinding을 사용하는 이유 1. findViewById를 사용할 필요가 없다. 2. Type-Safe : 레이아웃 내에서 정확한 view type를 찾아 매핑해준다. 3. Null-safety : 레이아웃에 존재하지 않는 id를 findViewById 했을 때의 NullPointException을 방지할 수 있다. 4. findViewById보다 속도가 상대적으로 빠르다. 사용법 1. gradle 추가 android { ... viewBinding { enabled =..

    [Kotlin] 추상클래스와 인터페이스

    추상 클래스 추상 클래스 VS 인터페이스 추상 클래스 는 대략적인 설계의 명세와 공통의 기능을 구현한 클래스이다. 즉, 구체적이지 않은 것이다. 추상 클래스 를 상속하는 하위 클래스 는 추상 클래스의 내용을 더 구체화 해야 한다. 엄밀히 말하면 다르다. 인터페이스 역시 대략적인 설계 명세를 구현하고 인터페이스 를 상속하는 하위 클래스에서 이를 구체화하는 것은 동일하다. 하지만 인터페이스에서는 프로퍼티의 상태 정보를 저장할 수 없다. 다시 말하면 인터페이스 에서는 프로퍼티의 초기화 가 불가능하다는 것이다. interface Vehicle { val name : String val color : String val weight : Double } interface Pet { val name : String ..