일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kotlin
- Java8
- ActivityResult-API
- Dva
- socket-client
- git-push
- Android
- git
- firebase-storage
- JNI
- Flavors
- 오즈뷰어
- mqtt
- gradle
- Firebase
- socket.io
- BottomSheetDialog
- google-login
- cloud-firestore
- OZViewer
- AWS
- 워치
- hung-up
- mosquitto
- ozd
- TIZEN
- NoSuchMethodError
- firebase-database
- Galaxy Watch
- socket-server
- Today
- Total
목록개발/Android (58)
Hyeyeon blog
5장 객체 생성 33. 생성자 대신 팩토리 함수를 사용하라 34. 기본 생성자에 이름있는 옵션 아규먼트를 사용하라 35. 복잡한 객체를 생성하기 위한 DSL을 정의하라 6장 클래스 설계 36. 상속보다는 컴포지션을 사용하라 37. 데이터 집합 표현에 data 한정자를 사용하라 38. 연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라 39. 태그 클래스보다는 클래스 계층을 사용하라 40. equals의 규약을 지켜라 41. haseCode의 규약을 지켜라 42. compareTo의 규약을 지켜라 43. API의 필수적이지 않은 부분을 확장함수로 추출하라 44. 멤버 확장 함수의 사용을 피하라 33. 생성자 대신 팩토리 함수를 사용하라 * 팩토리 함수: 생성자 역할을 대신 해주는 함수 * ..
🤓 AGP 7.4.0 이상에서 발생하는 문제로, 아래와같이 build.grale(app)에 JVM 대상의 JDK 버전을 명시하여 해결할 수 있다. kotlin { jvmToolchain(17) } android { kotlinOptions { jvmTarget = JavaVersion.VERSION_17.toString() } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } }
3장 재사용성 19. knowledge를 반복하여 사용하지 않기 20. 일반적인 알고리즘을 반복해서 구현하지 않기 21. 일반적인 프로퍼티 패턴은 프로터피 위임으로 생성하기 22. 일반적인 알고리즘은 제네릭 함수로 구현하기 23. 타입 파라미터의 섀도잉을 피하기 24. 제네릭 타입과 variance 한정자(out, in) 활용하기 25. 공통 모듈로 추출해서 여러 플랫폼에서 재사용하기 4장 추상화 설계 26. 함수 내부의 추상화 레벨을 통일하라 27. 변화로부터 코드를 보호하려면 추상화를 사용하라 28. API 안정성을 확인하라 29. 외부 API를 랩(wrap)해서 사용하라 30. 요소의 가시성을 최소화하라 31. 문서로 규약을 정의하라 32. 추상화 규약을 지켜라 19. knowledge를 반복하여 ..
2장 가독성 11. 가독성을 목표로 설계하기 12. 연산자 오버로드를 이름의 의미에 맞게 사용하기 13. Unit?을 리턴하지 않기 14. 변수 타입을 명확하게 지정하기 15. 리시버를 명시적으로 참조하기 16. 프로퍼티는 동작이 아닌 상태를 나타해야함 17. 이름있는 아큐먼트를 사용하기 18. 코딩 컨벤션 지키기 코틀린은 간결성이 아닌 가독성을 개선하는 데 목표를 두고 설계된 언어임. 간결성은 가독성을 목표로 두고 반복되는 코드를 짧게 쓸 수 있기 때문에 발생한 부가적인 효과임. 11. 가독성을 목표로 설계하기 인지 부하 감소, 즉 코드를 읽고 이해하는 속도를 줄이도록 작성해야함. 인지 부하가 있더라도, 가치가 있는 경우라면 사용해도 괜찮음. 이를 위해 어떤 구조들이 어떤 복잡성을 가져오는지 파악이 필..
이펙티브 코를린을 읽고 내용을 정리해봅니다. 나도모르게 사용하고있는 안티패턴을 경계하려는 마음을 한가득 담아... 🥹 1장 안정성 가변성 제어하기 변수의 스코프 최소화 플랫폼 타입 사용 지양하기 inferred 타입으로 리턴하지 않기 예외를 활용하여 코드에 제한걸기 사용자 정의 오류보다 표준 오류 사용하기 결과 부족이 발생한 경우, null과 Failure 사용하기 적절하게 null 처리하기 use를 사용하여 리소스 닫기 1. 가변성 제한하기 (가변지점 제한): val, immutable 클래스/프로퍼티 사용 변경이 필요한 대상은 immutable data class로 만들고 copy() 활용 컬렉션의 상태 저장할 시에는 읽기전용 컬렉션 사용 mutable 객체는 private으로 사용 (외부노출X) m..
JNI의 .cpp 파일에서 std::string을 사용하기 위해 include 을 추가했더니 오류가 발생했다. ㅠ.ㅠ 😵 오류 내용 : Execution failed for task ':mid:stripAllDebugDebugSymbols'. > 1 exception was raised by workers: org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/Users/hyeyeon/Library/Android/sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-strip'' 😇 해결 방법 : 1..
1. Docker Desktop 다운로드 및 설치 Docker 홈페이지 에서 Docker Desktop을 다운받아 설치합니다. Docker: Accelerated, Containerized Application Development Docker is a platform designed to help developers build, share, and run modern applications. We handle the tedious setup, so you can focus on the code. www.docker.com 설치 후 Docker Desktop을 실행하면 아직 컨테이너가 없기 때문에 아래와 같은 화면이 표시됩니다. 2. "act" 설치 터미널로 아래의 명령어를 실행하여 act를 설치합니다...
1. DataBinding 설정 build.gradle(Module)에 DataBinding 설정을 추가합니다. plugins { id 'com.android.application' id 'kotlin-android' } android { ... // 설정 추가 buildFeatures { dataBinding = true } } 2. RecyclerView의 아이템 layout 생성 1) 리스트의 아이템으로 사용될 layout의 xml을 생성합니다. - 전체 레이아웃을 태그로 감싸게 되면 레이아웃 이름의 카멜형태로 데이터바인딩 객체가 생성됩니다. - list_item.xml으로 만들면 ListItemBinding 객체가 생성됩니다. 2) 이미지와 텍스트로 구성된 아이템으로 상단에 표시할 텍스트를 변수명..