본문 바로가기

개발 상식

(15)
브릿지패턴(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- 실시간 전송이 목표이고 낮..
RTMP와 WebRTC란? 요즘 회사에서 사용하고 있는 도메인이다.실시간 라이브 방송을 위한 두 개념적 차이에 대해서 알아보자.RTMPReal Time Message ProtocolTCP 기반으로 전송을 보장해주며 주어진 순서대로 데이터를 전송할 수 있다.확장성 기반으로는 RTMP는 수천 , 수백만명 이상의 청중에게 라이브 스트리밍을 제공하게 확장할 수 있다.WebRTCWeb RealTime Communication신흥기술로 서버와 같은 중간자를 거치지 않고 브라우저 간을 P2P로 연결하는 기술 -> 중개서버를 거치지 않기 때문에 빠른 속도가 보장프로토콜 그 이상UDP 기반으로 0.1초 미만으로 실시간에 가까운 레이턴시 제공양방향 회의에 적합대중적으로 천명 한도로 더 적은 청중에게 라이브 스트리밍을 제공하는데 사용한다.서로의 연결..
데이터베이스 정규화 정규화(Normalization)관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할어떠한 릴레이션이라도  데이터베이스 내에서 표현 가능하게 함데이터 삽입 시 릴레이션을 재구성할 필요성 감소효과적인 검색 알고리즘 생성 가능제 1 정규화 (1NF)테이블 칼럼이 원자값 갖게 분리하는 것이다.제 2 정규화 (2NF)제 1정규화를 진행한 테이블에 대하여 완전 함수 종속하도록 테이블을 분해하는 것이다.완전 함수 종속이라는 것은 기본키의 부분 집합이 결정자가 되어..
지능형 지속 위협(APT, Advanced Persistent Threat) 지능형 지속 위협 (APT, Advanced Persistent Threat) 다른 해킹 방식과 달리 공격자가 특정한 대상을 목표로 다양한 해킹 기술을 이용해 은밀하고 지속적으로 공격하는 행위 기업이나 기관의 중요 시스템에 대한 보안은 단단해서 처음부터 침투가 어렵기 때문에 회사 개인 PC를 먼저 장악한 후, 합법적인 권한을 획득하여 내부로 들어가는 방법을 주로 사용한다. APT의 공격 단계 1. 먼저 목표를 정하고 목표에 대한 사전 조사를 실시한다. 2. 조사를 바탕으로 개인 PC에 악성코드를 감염시킨다. 3. 내부 인프라로 서서히 침투하여 몰래 드나들 수 있는 백 도어 및 툴을 설치한다. 4. 내부인프라 접속 권한을 상승시키기고 정보를 탈취하기 시작한다. 5. 후에 내부인프라를 장악하고 더 많은 유출..
보일러플레이트 코드란?(Boilerplate code) 보일러플레이트란? 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드 흔히 말하는 찍어내는 코드를 말한다. (꼭 필요하고 간단한 기능이며 반복적인 기능) ex) java -> kotlin get/set이 코틀린에서 boilerplate 코드가 많이 줄어들었다. 보일러 플레이트 코드 제거하기 1. 어노테이션 프로세서 사용 2. Android Studio Plugin 사용 (Parcelable 구현, LiveTemplate, Loombok) 3. Kotlin 사용 (equals(), hashCode(), toString(), copy() 자동 생성) 4. 라이브러리 사용 (Dagger, Glide, Retrofit, Databindings) charlezz.medium.com/%EB..
가비지 컬렉션 원리 http://itmining.tistory.com/24 [JAVA] Garbage Collection의 기초 이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬 itmining.tistory.com 위 링크가 가비지 컬렉션에 대한 정리가 잘 되어 있는 것같아서 가져왔습니다. 프로그래밍 언어 C에서는 메모리의 할당, 반환을 수동으로 합니다. 그러나 자바에서는 GC에 의해서 자동으로 수행되는데 그 과정에 대해서 설명하겠습니다. 1단계 : Making 프로세스는 마킹을 호출해서 참조되는 객체와 참조되지 않는 객체로 스캔합니다. 모..
연결리스트(linked list) 연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 단방향 연결리스트에서 각 노드는 다음 노드를 가리킨다. java로 구현한 간단한 linked List class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next; } n.next = end; } } c로 구현한 연결리스트 typdef struct Node { int data; struct Node* next; // 다음 노드의 주소를 저장할 포인터 }Node;