Programming
-
코틀린 함수 관련 개념Programming/Kotlin 2022. 5. 11. 01:51
일급 객체 일급객체는 다음과 같은 특징을 갖고 있습니다. 일급함수는 함수가 객체(변수)로 취급될 수 있습니다. (함수를 변수에 할당하거나 자료구조에 저장하는 것이 가능) 일급함수는 함수 객체를 인자로 넘길 수 있어야 합니다. 일급함수는 함수 객체를 반환값으로 반환할 수 있어야 합니다. 프로그래밍 언어에서 일급함수를 지원한다는 것은 고차함수를 사용할 수 있다는 것과 같습니다. 함수 리터럴 Literal은 어떤 값을 표기하는 방법을 뜻합니다. In computer science, a literal is a notation for representing a fixed value in source code. 컴퓨터 과학에서 리터럴은 고정된 값을 나타내기 위한 표기법입니다. 함수 리터럴이란 함수를 어떤 변수를 받..
-
RTMP (Real Time Messaging Protocol)Programming/Android 2022. 3. 31. 21:18
RTMP (Real Time Messaging Protocol) 어도비 스시템즈사의 독점 통신 규약이다. RTMP는 오디오, 비디오 및 기타 데이터를 인터넷을 통해 스트리밍 할 때 쓰인다. RTMP는 어도비 플래시 플레이어와 서버 사이의 통신에 이용된다. 현재는 플래시 뿐만 아니라 다른 응용프로그램에서도 쓰이고 있다. RTMP (기본): 1935번 포트 사용, 암호화되지 않은 RTMP, 혹시나 1935번 포트로 시도해서 실패하면 443 포트(RTMPS)나 80 포트(RTMPT)로 재시도함. RTMP 동작 순수 TCP 기반의 RTMP 프로토콜은 접속을 지속적으로 유지하는 데 기여한다. 또 실시간 통신을 한다. 더 큰 덩어리의 정보를 보낼 수 있는 동안, 부가적으로 비디오 및 오디오 스트림을 부드럽게 전달하..
-
동영상의 이해Programming/Android 2022. 3. 31. 21:17
동영상의 이해 동영상 영상 + 소리 정보를 가진 파일 해당 글에서는 영상 정보만 가진 파일을 말할 때는 “비디오”, ” 비디오 파일”, “비디오 스트림”으로 용어 정의를 함. 컨테이너 포맷 컨테이너 포맷은 비디오와 오디어를 담아두는 상자나 포장해둔 포장지 정도로 이해하면 됩니다. 아래 그림에서 비디오는 x264코덱으로 만들어 졌고, 오디오는 DTS코덱으로 만들어졌습니다. 컨테이너는 이렇게 비디오와 오디오를 하나의 파일로 만드는 역할을 합니다. 우리가 보통 파일의 정체를 확인하기 위해서는 확장자를 봅니다. 하지만 동영상을 판단할 때 확장자를 봐서는 단지 컨테이너가 무엇인지 알 수 있을 뿐이지. 상자 안에 들어있는 비디오와 오디오가 어떤 코덱으로 만들어져 있는지 알 수 없습니다. 동영상 파일의 확장자인 av..
-
[Design Pattern] Observer PatternProgramming/DesignPattern 2020. 12. 26. 17:19
Observer Pattern 옵저버 패턴은 데이터의 변경이 발생되었을 때, 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다. 예를 들어, 새로운 파일이 추가되거나 기존 파일이 삭제되었을 때 탐색기는 이를 즉시 표시할 수 있다. 탐색기를 복수 개 실행하는 상황이나 하나의 탐색기에서 파일 시스템을 변경했을 때는 다른 탐색기에게 즉각적으로 이 변경을 통보해야 한다. 다른 예로는 차량의 연료가 소진될 때까지 주행가능 거리를 출력하는 클래스, 연료량이 부족하면 경고 메세지를 보내는 클래스, 연료량이 부족하면 자동으로 근처 주유소를 표시하는 클래스 등에 연료량의 변화를 통보하는 경우가 있다. 이런 경우 연료량 클래스는 연료량에 관심을 가지는 클래스에 직접 의존하지 않는 방식으로 설..
-
Android ThreadProgramming/Android 2020. 12. 18. 14:15
안드로이드에서 Thread 기본적으로 한 어플리케이션 내의 모든 컴포넌트들은 같은 프로세스 내에서 동작해야 한다. 어플리케이션이 launch되면, 안드로이드 시스템은 해당 어플리케이션이 메인쓰레드를 생성한다. 메신 쓰레드는 UI위젯을 그리는 역할을 수행하기 때문이다. 또한 UI와 상호작용한다. 즉, 메인쓰레드는 UI와 상호작용하는 중요할 역할을 하고 있기 때문에 UI 쓰레드라고 한다. 안드로이드 시스템은 어플리케이션을 구성하는 각 컴포넌트 객체마다 쓰레드를 생성하지 않는다. 동일한 프로세스 내에서 실행되는 모든 컴포넌트들은 UI 쓰레드에서 인스턴스화 되며, 각 컴포넌트들에 대한 호출은 UI 쓰레드에서 실행된다. 결과적으로, 시스템 콜백에 응답하는 메소드들은 항상 프로세스의 UI 쓰레드에서 실행되는 것이다..
-
[Design Pattern] Command PatternProgramming/DesignPattern 2020. 12. 17. 18:02
커맨드 패턴(Command Pattern) 커먼드 패턴은 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에, 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용하다. 커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 클래스와 실제 기능을 실행하는 수신자 클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있도록 해준다. Command : 실행될 기능에 대한 인터페이스. 실행될 기능은 execute 메서드로 선언함. ConcreteCommand: 실제로 실행되는 기능을 구현. 즉, Command라는 인터페이스를 구현함. LampOnCommand , AlarmOnCommand Invoker: ..
-
[Design Pattern] State PatternProgramming/DesignPattern 2020. 12. 15. 20:15
State Pattern (스테이트 패턴) - UML 상태 머신 이해하기 - 상태를 캡슐화로 처리하는 방법 이해하기 - 스테이트 패턴을 통한 상태 변화 처리 방법 이해하기 - 새로운 상태를 추가할 수 있는 처리 방법 이해하기 상태(State)란? 객체가 시스템에 존재하는 동안, 즉 객체의 라이프 타임 동안 객체가 가질 수 있는 어떤 조건이나 상황을 표현한다. 예를 들면, 객체가 어떤 상태에 있는 동안 어떤 액티비티 등을 수행하거나 특정 이벤트가 발생하기를 기다리는 것이다. 형광등 예시 State Pattern을 사용하지 않고 형광등 클래스를 만든다고 할 때, 형광등의 상태(ON/OFF/SLEEP)에 따라 조건문을 걸어서 코딩을 해야한다. 이러한 방식은 작업을 수행할 때의 상태에 따라 상태 하나하나가 어떤..
-
[Design Pattern] Singleton PatternProgramming/DesignPattern 2020. 12. 14. 20:07
싱글턴 패턴의 이해 멀티 쓰레드 환경에서 싱글턴 패턴 싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. *Singleton: 하나의 인스턴스만을 생성하는 책임이 있으머, getInstance() 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업 수행한다. public class Printer { private static Printer printer = null; public static Printer getPrinter() { if (printer == null) printer = new Printer(); return printer; } } 위 코드를 보면, printer 변수와 getPrinter() 메서드..