본문 바로가기

전체 글

(70)
Android 멀티 모듈 도입기 신규 프로젝트를 하면서 화면 UI는 전체 컴포즈, 그리고 모듈은 멀티모듈로 작업했습니다.기존의 프로젝트에서 멀티모듈을 제대로 활용하지 못하고 있었는데요.그래서 이번 프로젝트는 멀티모듈을 잘 도입하고자 했습니다.1. ✅ 왜 멀티 모듈을 도입했는가?기존 문제점단일 모듈 구조에서 빌드 시간이 너무 길어짐기능이 많아지면서 의존성 관리가 어려움코드 변경이 전체 앱에 영향을 미침 (작은 수정 → 전체 리빌드)협업 중 충돌 발생 확률 증가도입 목적빌드 시간 단축기능 별로 독립적인 개발 및 테스트 가능책임 영역 명확화 (도메인 별로 나누기)병렬 개발과 CI/CD 효율화2. 🧩 모듈 구조 어떻게 나눴는가?기본 구조 예시app/ # 엔트리포인트 (presentation)core/ ..
키키(kiiikiii)의 첫 팬소통 라이브!!! 3월 24일 정식 데뷔한 키키의 첫 팬소통 라이브 다들 보셨나요?!키키의 라이브는 베리즈(berriz) 어플에서 진행되었는데요.갓기들답게 라이브도 너무 재밌게 진행되었어요!!❤️라이브에서만 공개된 숙소썰도 너무 재밌었고..!각자 닮은 동물을 이야기하는 것도 너무 귀여운 갓기들!키키가 아침에 일어나는 순서도 이야기해주고~키키의 공부방법까지!!📝아기들의 좋아하는 색도 알 수 있었던 값진 시간!!35분이지만 키키를 알기 너무 알찼던 시간이였습니다~~다들 원픽이 누군가요?5세대 대표 걸그룹 키키(kiiikiii)스타쉽 신입 걸그룹 키키의 첫 팬소통 라이브를 다시 보고싶으시면 아래 링크로!!키키의 첫 라이브 다시보기 놓칠 수 없죠!!🩵아래 링크를 꾸욱 눌러서 보러갑시다!https://berriz.in/appl..
브릿지패턴(Bridge Pattern) 브릿지(Bridge) 패턴은 GoF(디자인 패턴) 중 하나로, 구조(Structural) 패턴에 속합니다."구현부에서 추상층을 분리하여, 둘이 독립적으로 확장할 수 있도록 하는 패턴"입니다.🔧 쉽게 말하면?클래스들이 여러 방향(기능 + 플랫폼 등)으로 확장될 가능성이 있을 때,상속을 계속 늘리기보다는,기능 계층과 구현 계층을 분리해서 조합(composition)으로 해결하자!는 전략📦 구조 예시 (UML 개념) Abstraction | ------------------- | |RefinedAbstraction Implementor  Abstraction : 클라이언트가 사용하는 인터페이스 (추상화 계층)Implem..
라이브 프로토콜 (RTMP VS WebRTC) RTMP(저지연)WebRTC(실시간)과거 플래시 기반웹 브라우저 간에 플러그인의 도움 없이서로 통신할 수 있게 설계된 APIReal-Time Message ProtocolWeb Real-Time CommunicationTCP기반UDP 기반서버 - 클라이언트 방식으로 동작하여, 라이브 스트리밍에서 인코딩 후 CDN에 배포하는 방식중앙 서버 없이도 직접 통신할 수 있지만 NAT/방화벽 이슈로 TURN서버 필요5초 미만 딜레이300ms 미만 딜레이유튜브, 트위치 등 라이브 스트리밍구글 밋, 줌 RTMP- 서버기반 스트리밍이라 인코딩 과정을 거친 후 전송합니다.- 지연시간이 길어도 괜찮기 때문에 고압축률 설정이 가능합니다.- TCP 기반이라 패킷 손실 없이 전송합니다. WebRTC- 실시간 전송이 목표이고 낮..
코루틴 실수할 수 있는 부분 모음 안드로이드에는 라이프싸이클 스코프(lifecycle scope)라는게 존재합니다.해당 스코프를 이용해 릭이 나지않게 사용하는데요.Activity와 Fragment의 경우 lifecycleScope, viewLifecycleScope가 존재하죠. ViewModel의 경우 ViewModelScope가 있습니다.check 해야 할 포인트 1.Scope의 child Scope에서 취소가 될 경우 parent 까지 취소가 전파됩니다. 따라서 parent가 같은 child는 모두 취소가 됩니다.val testScope = CoroutineScope(Dispatchers.Main) fun testJob1() { testScope.launch { // 여기서 Cancell..
RTMP와 WebRTC란? 요즘 회사에서 사용하고 있는 도메인이다.실시간 라이브 방송을 위한 두 개념적 차이에 대해서 알아보자.RTMPReal Time Message ProtocolTCP 기반으로 전송을 보장해주며 주어진 순서대로 데이터를 전송할 수 있다.확장성 기반으로는 RTMP는 수천 , 수백만명 이상의 청중에게 라이브 스트리밍을 제공하게 확장할 수 있다.WebRTCWeb RealTime Communication신흥기술로 서버와 같은 중간자를 거치지 않고 브라우저 간을 P2P로 연결하는 기술 -> 중개서버를 거치지 않기 때문에 빠른 속도가 보장프로토콜 그 이상UDP 기반으로 0.1초 미만으로 실시간에 가까운 레이턴시 제공양방향 회의에 적합대중적으로 천명 한도로 더 적은 청중에게 라이브 스트리밍을 제공하는데 사용한다.서로의 연결..
데이터베이스 정규화 정규화(Normalization)관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할어떠한 릴레이션이라도  데이터베이스 내에서 표현 가능하게 함데이터 삽입 시 릴레이션을 재구성할 필요성 감소효과적인 검색 알고리즘 생성 가능제 1 정규화 (1NF)테이블 칼럼이 원자값 갖게 분리하는 것이다.제 2 정규화 (2NF)제 1정규화를 진행한 테이블에 대하여 완전 함수 종속하도록 테이블을 분해하는 것이다.완전 함수 종속이라는 것은 기본키의 부분 집합이 결정자가 되어..
코틀린 컬렉션 프레임워크 유용 함수들 1. List의 union 기능두 리스트를 병합하고 중복값을 제거한 고유한 값들만 반환한다.2. partition 함수원본 컬렉션을 컬렉션 썅으로 분할하는 것. 원본 배열의 조건이 참이 되는 아이템들을 가진 첫 번째 리스트와 조건이 거짓인 아이템을 두번 째 리스트를 한 쌍으로 분리한다.3. nullsLastkotlin에서 제공해주는 inline함수로 null이 가장 뒤로가게 정렬해주는 comparator이다.