전체 글

개발 블로그
·scrcpy
Android 휴대폰을 노트북에 무선으로 연결하기 전에 scrcpy가 설치되어 있어야 한다. 설치 방법은 아래 포스트를 참조하길 바란다. [Android] M1 Pro MacBook에 Mobile 기기 연결하기 scrcpy 설치와 andorid-platform-tools 환경변수 설정이 모두 완료되었다면 네트워크 설정만 해주면 된다. 노트북과 Mobile 기기 네트워크 환경 구성1. USB를 연결한 상태에서 'adb tcpip 5555' 를 입력한다2. 기기와 USB 연결을 해제한다3. 기기의 WiFi IP 주소를 확인한다기기의 IP 주소는 '설정 - 연결 - WiFi - 현재 네트워크' 로 들어가게 되면 아래와 같은 화면이 보이게 된다.4. IP주소와 이전에 만들었던 포트번호 '5555' 를 이용하여 ..
·scrcpy
해당 포스트를 보는 사람이라면 Android Studio는 기본적으로 설치되어 있을 것이라 생각한다. 그리고 Mac 사용자라면 Homebrew도 설치되어 있다고 생각하지만 혹시 그렇지 않은 사람들은 하단 포스트를 참고하기 바란다. [Mac] M1 Pro MacBook에 Homebrew 설치하기 Android 앱을 개발하다 보면 기기의 하드웨어를 필요로 하는 경우 Android Studio의 가상 기기로는 테스트함에 있어서 한계가 있다. 따라서 종종 실제 기기를 USB로 연결하여 디버깅하곤 했는데 scrcpy라는 프로그램을 알게 되었다. scrcpy?scrcpy는 휴대폰의 화면을 노트북에 연결하여 미러링 해주는 프로그램이다. (scrcpy 이름을 보자마자 strcpy가 생각이 났다)scrcpy 설치하기Ho..
·Java & Kotlin
Java는 Oracle이든 Azul이든 어디서 다운받든 상관없지만 Java 설치하기 위해 여러 블로그를 찾아본 결과 Oracle 보다는 Azul이 더 좋다는 얘기를 주워들은 적이 있어서 Azul의 Java를 다운받았다. Java 다운로드하는 방법 Azul에서 제공하는 OpenJDK가 Zulu인데, 이는 2가지 방법으로 다운로드할 수 있다. Homebrew를 이용한 다운 공식 홈페이지에서 다운 공식 홈페이지를 통해서 Java를 다운받아보겠다. 1. 공식 홈페이지를 통해서 다운받기 공식 홈페이지에 들어가 보면 Java 버전부터 시작해서 OS, Architecture 별로 여러 가지를 다운받을 수 있다. Java 버전은 가장 최근도, 엄청 오래된 버전도 아닌, 중간 버전인 17 LTS 버전을 다운받았다. in..
·Mac
Homebrew 설치하기 1. Homebrew 사이트에 접속해서 아래 코드 복사 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2. 터미널을 열고 위에서 복사한 코드 붙여넣고 엔터 3. Mac 비밀번호 입력 후 엔터 4. 설치가 완료되면 'Next Step'에 있는 코드 두 줄 차례로 실행 echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/사용자이름/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" 5. 위 과정까지 했다면 brew --version 으로 제대로 설치됐는지 확인 제대로..
·Java & Kotlin
클래스 상속 기본 규칙 슈퍼 클래스(부모, Base 클래스) 상속 시 슈퍼 클래스는 반드시 open class로 만들어야 한다. 단일 상속만 할 수 있다. Kotlin Class에 상속이 선언되어 있지 않다면 Any 클래스를 자동으로 상속받는다. private이 아닌 모든 속성과 함수를 상속받는다. 자식 클래스(sub, 하위 클래스)에서 함수나 속성을 재정의 시 override 키워드를 정의해야 하며 부모의 속성도 open 키워드를 사용해야한다. final 키워드 Kotlin은 기본적으로 final 이다. final class: 상속 불가 final 함수, 속성: override 불가 하위 클래스에서 override를 하면 자동으로 open 이 내장된다. final override는 하위 클래스들에 명시..
·Java & Kotlin
Delegates의 observable과 vetoable을 이용하여 속성 변경을 감지하고 변경될 때 동작해야하는 작업이 필요할 때 구현할 수 있다. 즉, observe 패턴을 쉽게 구현할 수 있다. Observable observable은 property를 observe 한다. 이를 이용하면 property의 값이 변경될 때마다 callback을 받을 수 있다. class PersonObservable(private val name: String) { var alias: String by Delegates.observable("First Alias", { _, oldValue, newValue -> println("$name 님의 Old 별명: $oldValue, New 별명: $newValue") })..
·Java & Kotlin
Property Delegate란? 코틀린의 특성 중 하나로 Property Delegate를 사용하면 Property의 접근자(getter, setter) 구현을 다른 객체에게 맡김으로써 기존 객체가 직접 작업을 수행하지 않고 객체를 위임받은 또 다른 객체가 해당 작업을 처리하게 된다. 이렇게 되면 반복적으로 사용되는 Property 행위를 추출해서 재사용함으로써 코드를 간결하게 만들 수 있다. 이를 구현하기 위해서는 객체에서 "by" 키워드를 이용해서 위임해주어야 한다. class Person { var name: String by PersonDelegate("null") val age: String by PersonDelegate("24") } class PersonDelegate(var value..
·Java & Kotlin
init을 이용한 초기화 - Kotlin은 속성을 선언하고 초기화 하지 않으면 기본적으로 Error이다. - init은 해당 class의 생성자를 호출하면 실행된다. class Person constructor() { // -> Default 생성자는 생략 가능 // 속성 선언 시 초기화를 진행하지 않을 시 Type을 반드시 선언해야한다. // lateinit 또는 delicate등을 이용 val name: String var age: Int val gender: Char init { name = "Hong GilDong" age = 32 gender = 'M' } } null 허용 타입으로 선언한 후 나중에 초기화 - null 허용으로 Type 선언 후 나중에 초기화 - 반드시 var Null 허용 타..
·Java & Kotlin
코틀린은 OOP Encapulation 되어 만들어진 State(Data, Field)에 접근할 수 있는 getter와 setter를 언어 기본 기능으로 지원한다. OOP에서 클래스는 캡슐화된 데이터를 메소드를 통해 제어 및 접근하는 것을 원칙으로 한다. Field에 접근하는 get/set(value)를 모두 포함해서 property라고 부른다. Property를 선언할 때 반드시 val 또는 var가 존재해야 한다. val: 읽기 전용(get) 속성만 갖는다. var: 읽기(get)와 쓰기(set) 속성을 갖는다. val, var로 선언된 property는 컴파일 시 private 접근지정자로 지정된다. Backing Field(뒷받침 필드) Kotlin에서는 Backing Field를 사용할 수 있는..
·Android
MVC와 MVP에서 View와 Model 간의 의존성은 없었지만 Controller 혹은 Presenter와 View 사이의 의존성은 여전히 존재했다. MVVM에서는 ViewModel이라는 새로운 개념을 도입하였고, ViewModel은 View를 참조하지 않기 때문에 의존성이 없다. 이는 ViewModel이 독립적인 존재라는 뜻이기 때문에 ViewModel과 View는 1:n의 관계를 가질 수 있다. MVVM (Model, View, ViewModel) Model MVC, MVP에서의 Model과 같은 개념이다. View 사용자가 보는 UI 부분이다. MVP처럼 레이아웃 파일(.xml)은 물론이고 Activity와 Fragment도 View로 분류한다. 보통 Command 패턴이나 DataBinding을..
wbnh09
devAndroid