분류 전체보기 (68) 썸네일형 리스트형 브릿지패턴(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이다. Compose 성능 최적화 (Donut hole, 도넛홀) https://developer.android.com/jetpack/compose/performance/bestpractices?hl=ko#defer-reads 권장사항 준수 | Jetpack Compose | Android Developers 권장사항 준수 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 발생할 수 있는 일반적인 Compose 실수가 몇 가지 있습니다. 이러한 실수로 인해 코드가 잘 실행 developer.android.com 안드로이드 디벨로퍼 가이드에서 가장 중요한 개념은 "읽기 연기" 라고 보여집니다. 성능 최적화를 하려면 리컴포지션(recomposition)을 최소화 해야합니다. Composition Scope 안에서 Stable 한 변수가 있으면 .. CoroutineScope 의 cancel() 전파 Scope의 자식 Scope 에서 Exception 이 났을 때 동작 아무런 처리도 하지않았을 때 CoroutineScope(Dispatchers.IO).launch { launch(CoroutineName("child1")){ delay(1000) Log.d("dayun","${this} end") }.invokeOnCompletion { Log.d("dayun","child1 throwable = $it") } launch(CoroutineName("child2")){ throw Exception("test") }.invokeOnCompletion { throwable -> Log.d("dayun","child2 throwable = $throwable") } delay(1000) Log.d("day.. 이전 1 2 3 4 ··· 9 다음 목록 더보기