본문 바로가기

전체 글

(11)
[ Tebah ] Tebah 앱 개발기 : 도메인 영역 이야기 개요 해당 글은 제가 Tebah 프로젝트를 진행하면서 팀원들과 공유한 내용으로 작성했습니다. 도메인 영역에 대해 서로 공유하고 논의할 필요를 느껴서 다음과 같은 글을 작성해 팀원들과 공유하였습니다. 지적할 부분이 많을 것 같습니다. 아낌없이 지적해주시면 후배 개발자로서 감사하게 생각하겠습니다. 감사합니다. Domain 영역이란? 안녕하세요 여러분. 어 은정 누나를 통해 많은 질문들을 받았는데, 개인적으로는 좀 정리가 안되어 있다고 느꼈어요. 현재 저 혼자 프로젝트를 진행하고 있기 때문에, 현재 개발 과정이나 앱을 만들어가는 관점들에 대해서 좀 명확히 하고 서로 공유해야할 필요성을 느꼈기 때문에 글을 쓰게 되었네요. 먼저 앱의 Domain 영역에 대해서 설명을 좀 하려고 합니다. Domain 영역이..
[ Tebah ] Tebah 앱 개발기 : 도메인 설계를 시작하며 안녕하세요. [ Tebah ] 카테고리에서는 제가 Tebah 앱을 개발하면서 느낀 점들을 정리하려고 합니다. Tebah 앱은 기본적으로 기독교 신자들을 대상으로 한 커뮤니티 앱입니다. Tebah 앱은 두가지의 목표를 가지고 있습니다. 첫째는 교회 내의 분산된 공지 채널을 하나로 합치는 것입니다. 교회 내에는 다양한 모임이 존재합니다. 하지만, 공지 채널이 하나가 아닌 경우가 많습니다. 카카오톡, 네이버 밴드 등 다양한 채널이 존재하기 때문에 공지가 흩어져 있는 단점이 있습니다. 저희 앱에서는 하나의 공지 채널로 이를 통일하려고 합니다. 두번째 목표는 기독교 커뮤니티를 활성화하는 것입니다. 교회 사람들은 보통 말이 많습니다. 하지만 의견을 나눌 수 있는 플랫폼이 별로 없습니다. 저희 앱에서는 ..
[ANDROID] 생각 정리...art 어쩌구 context 어쩌구... 안드로이드 개발을 하다보면 운영체제에 대한 궁금증이 계속 생기는 것 같다. ART는 뭔지, 시스템 서비스는 뭔지, 결국 컴퓨터라는 물리적 구조체가 어떻게 어떤 원리로 동작하는지 궁금해지는 것 같다. 뭐든, 원리를 밑바닥까지 파는 걸 좋아하는 성향이라 공부를 하다보면 자꾸 넓게가 아니라 깊게 가게 된다. 어쩔 수 없는 성향이라 치고, 평소에 궁금했던 OS와 ART를 좀 깊게 파보려고 한다. 머리도 식힐 겸 정리를 좀 해야겠다고 생각했다. private lateinit var auth: FirebaseAuth 파이어베이스는 내부적으로 SharedPreference를 사용해서 인증 정보를 저장한다. 이게 문제가 될 수 있다. 어떤 상황이였냐면 파이어베이스 에뮬레이터를 껐었는데도 앱은 여전히 자동 로그인을 처리..
[CS] 프로세스와 스레드 결국 컴퓨터란 OS다. OS가 일종의 주인 역할을 하는 소프트웨어다. OS가 하는 일 중 가장 중요한 일은 프로그램을 실행시키는 것이다. 프로그램은 결국 실행파일이다.  결국 OS와 실행파일의 합작품을 우리는 컴퓨터가 동작한다고 이야기하는 것이다. 최초의 실행파일은 BIOS이고 BIOS가 부트 로더를 메모리에 올린다.  부트 로더는 OS의 커널을 메모리에 올린다.  부트 로더가 커널을 메모리에 올리면 OS가 실행파일을 실행시킬 수 있는 환경이 마련된 것이다.  실행 파일이 OS에 의해 실행되면 메모리에 올라가 실행된다. 이것을 프로세스라고 한다.  - 프로세스에는 GUI 제공 여부에 따라 포그라운드 프로세스와 백그라운드 프로세스로 나뉜다.  하나의 앱은 기본적으로 하나의 프로세스이지만 Manifest 파..
[Android] JVM vs ART 개요나는 안드로이드 개발자가 되기 위해서 공부를 하고 있는 취준생이다. 문득 이런 생각이 들었다.  나는 무엇을 하고 있는가?  나는 그냥 학교에서, 인터넷에서 배운데로 안드로이드 스튜디오를 키고 무작정 코드를 따라 치고 있었을 뿐이었다.  나는 엘리트 안드로이드 개발자가 되고 싶기 때문에, 더 이상은 이렇게 하지 않을 것이다.  엘리트 개발자들을 모방하고 그들의 태도까지 싹 다 훔쳐올 것이다.  그러기 위해서 먼저 사고방식부터 바꾸기로 했다.  근본적인 질문을 던져보자. 나는 무엇을 하고 있는가?내가 하는 일과 컴퓨터가 하는 일결국 내가 하는 일은 코드를 작성하고 몇 가지 파일들을 알맞은 위치에 넣는 일이다.  간단하게 보면 그렇다.  거창하게 갈 필요가 없다. 사용자에게 가치를 제공하고 뭐 유지보수를..
[Android] Kapt Error 문제 상황오늘은 안드로이드 프로젝트에서 kapt를 사용할 때 발생할 수 있는 문제점에 대해 다루려고 합니다.  바로 오류 메세지부터 보시죠.java.lang.IllegalAccessError: superclass access check failed: class org.jetbrains.kotlin.kapt3.base.javac.KaptJavaCompiler (in unnamed module @0x48cd3d62) cannot access class com.sun.tools.javac.main.JavaCompiler (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.main to unnamed mo..
[Kotlin] 클래스를 상속받을 때 주의할 점 개요오늘은 코틀린에서 클래스를 상속받을 때 주의해야할 부분에 대해서 소개하겠습니다! 결론결론부터 말씀드리자면 상위 클래스를 설계할 때에는 생성자 또는 초기화 블록에서 선언되는 프로퍼티에는 open 키워드를 피하자 입니다. 예시를 보면서 이유에 대해 말씀드리겠습니다.  Animal 예제먼저 Animal 클래스를 만들어봅시다.open class Animal( open val legCount: Int = 4) { init { println("Animal Class") println(legCount) }} 위와 같이 Animal 클래스를 상속받을 수 있도록 class 앞에 open이라는 키워드를 붙여줬고요.  legCount 프로퍼티 역시 오버라이드할 수 있도록 val ..
[Jetpack Compose] Compose, 최적화를 위한 원칙 개요오늘은 Compose의 Recomposition을 최적화하기 위한 원칙들에 대해서 소개하고자 합니다.Smart Recomposition  Composition이란 뭘까요?  결론부터 말씀드리면 Composition은 Jetpack Compose의 핵심 개념으로 UI를 구성하는 상태 및 계층 구조를 나타냅니다. 쉽게 말해, 컴포저블 함수로 정의된 UI 트리의 동적인 상태를 관리하는 Compose의 내부 시스템입니다. 엄밀히 말하자면, Composition은 객체의 형태를 띠며 컴포저블 함수의 호출 결과로 생성된 UI 트리 및 그 상태를 유지하고 갱신하는 메커니즘입니다.  Compose의 성능은 이 Composition 혹은 Recomposition이라고 불리는 과정을  얼마나 효율화할 수 있냐에 달려있..